Interviewfrage für Full-Stack-Entwickler

Was löst eigentlich ein Re-Render einer React-Komponente aus, und warum ist das nicht dasselbe wie ein DOM-Update?

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

Kurzantwort

Eine Komponente rendert neu, wenn sich ihr eigener State ändert, wenn ein Context, den sie konsumiert, einen neuen Wert veröffentlicht, oder wenn ihr Parent neu rendert und ein neues Element für sie erzeugt. Rendern ruft nur die Funktion auf und erzeugt eine Beschreibung der UI. React diffed die dann gegen den vorherigen Baum und committet nur die DOM-Änderungen, die sich unterscheiden, die meisten Re-Renders fassen das DOM also gar nicht an.

Warum Interviewer das fragen

Viele Kandidaten greifen reflexhaft zu useMemo und useCallback, ohne zu wissen, was überhaupt Arbeit auslöst. Der Interviewer will Belege dafür, dass du Render- und Commit-Phase getrennt durchdenken kannst, dass du misst, bevor du optimierst, und dass du weißt, dass Memoization Kosten hat. Es ist außerdem ein stiller Test, ob du je eine echte React-App profiliert oder nur darüber gelesen hast.

So baust du deine Antwort auf

  • Zähl die drei Auslöser für einen Render auf.
  • Trenn die Render-Phase von der Commit-Phase.
  • Erklär, warum eine neue Objekt-Prop die Memoization bricht statt DOM-Arbeit zu erzwingen.
  • Sag, wie du misst, bevor du irgendetwas änderst.

Beispielantwort

Gesprochenes Beispiel, erste Person

Drei Dinge lösen es aus: ein State-Update in der Komponente, ein geänderter Context-Wert, den sie abonniert, oder ein Re-Render des Parents. Das Letzte überrascht die Leute, weil ein Parent-Render jede Kindfunktion neu ausführt, egal ob sich die Props im Wert geändert haben. Rendern erzeugt aber nur einen Element-Baum. React gleicht den gegen den vorherigen ab und committet die minimale Menge an DOM-Mutationen, ein Re-Render ist also oft billig und fasst das DOM gar nicht an. Teuer wird es bei großen Teilbäumen und schwerer Berechnung im Render-Körper. Als sich eine Seite in einem Produkt zäh angefühlt hat, habe ich den Profiler in den React DevTools geöffnet statt zu raten, und der Übeltäter war ein einzelner Context, der sowohl den aktuellen Nutzer als auch einen laufenden Suchstring hielt, jeder Tastendruck hat also die komplette eingeloggte Hülle neu gerendert. Das in zwei Contexts zu splitten hat es in etwa zehn Zeilen repariert. Zu memo greife ich erst, wenn der Profiler mir sagt, dass ein bestimmter Teilbaum das Problem ist.

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

  • Wann hilft React.memo wirklich, und wann ist es nur Overhead?
  • Wie verändert die key-Prop das Verhalten der Reconciliation?
  • Was würdest du statt Context für hochfrequente Updates nutzen?

Weitere Fragen für Full-Stack-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