Interviewfrage für Frontend-Entwickler

Nutzer melden, dass die App langsamer wird, je länger sie geöffnet bleibt. Wie würdest du das aufspüren?

Worauf der Interviewer abzielt, wie du deine Antwort aufbaust und ein gesprochenes Beispiel zum Anpassen.

Kurzantwort

Dieses Muster deutet auf ein Leck oder unbegrenztes Wachstum hin. Nimm in den DevTools zwei Heap-Snapshots nach demselben Nutzerflow, vergleich die Retained Sizes und schau, was die abgetrennten DOM-Knoten festhält. Die üblichen Ursachen sind Listener und Subscriptions, die nie entfernt werden, Timer, die nach dem Unmount weiterlaufen, Caches, die nie etwas rauswerfen, und Closures, die große Objekte einfangen. Der Fix ist, alles abzubauen, was eine Komponente angelegt hat.

Warum Interviewer das fragen

Der Interviewer will einen methodischen Debugger, keinen Rater. Speicherprobleme lassen sich nicht durch reines Codelesen beheben, geprüft wird also, ob du das Werkzeug kennst: Heap-Snapshots, Allocation Timeline, abgetrennte Knoten und den Performance Monitor. Es prüft außerdem Lifecycle-Disziplin, weil die meisten Lecks in Single Page Apps von etwas kommen, das beim Mount aufgesetzt und nie aufgeräumt wurde.

So baust du deine Antwort auf

  • Bestätige das Symptom mit einer Speichermessung, nicht mit einem Bauchgefühl.
  • Beschreib den Vergleich über drei Snapshots entlang eines wiederholten Flows.
  • Nenn die üblichen Verdächtigen, die du im Code prüfst.
  • Erklär das Fix-Muster: jede Subscription bekommt ein Teardown.

Beispielantwort

Gesprochenes Beispiel, erste Person

Ich würde zuerst bestätigen, dass es Speicher ist und nichts anderes, ließe also den Performance Monitor offen und wiederhole den Flow, den die Nutzer beschreiben, mit Blick auf Heap sowie Listener- und Knotenzahlen. Steigen die und kommen auch nach einer erzwungenen Collection nicht zurück, ist es ein Leck. Dann nehme ich einen Heap-Snapshot, laufe den Flow zehnmal, nehme einen zweiten und vergleiche nach Retained Size. Abgetrennte DOM-Knoten sind der Verräter, und der Retainer-Pfad sagt mir, was sie festhält. In der Praxis ist es fast immer etwas, das ohne passendes Teardown aufgesetzt wurde: ein resize- oder scroll-Listener auf window, eine Socket-Subscription, ein Interval oder ein Observer, der die Komponente überlebt. Ich habe mal einen gefunden, bei dem eine Chart-Bibliothek pro Render einen Listener angehängt und beim Unmount nur einen entfernt hat, die Zahl wuchs also mit jeder Navigation. Das Fix-Muster ist langweilig, aber wirksam: alles, was in einem Effect entsteht, gibt sein Cleanup zurück, und jeder Cache bekommt ein Größenlimit statt ewig zu wachsen.

Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.

So funktioniert es

Nachfragen, mit denen du rechnen solltest

  • Was ist ein abgetrennter DOM-Knoten, und wie findest du heraus, was ihn festhält?
  • Wie würdest du diese Bugklasse im Code Review verhindern?
  • Wie unterscheidest du ein Leck von einem Cache, der schlicht groß ist?

Weitere Fragen für Frontend-Entwickler

Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.

Meine Fragen vorhersagen

Üb die harten Fragen, bevor sie gestellt werden

Trainier mit einem Live-Copiloten und geh dann vorbereitet rein. Ein $29 Session Pass bringt dich durch das Vorstellungsgespräch, ohne Abo und ohne Bindung.

GhostPilot holen