Interviewfrage für Frontend-Entwickler

Wie denkst du über den Unterschied zwischen Server State und Client State in einer Frontend-App?

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

Kurzantwort

Server State sind Daten, die dir nicht gehören: sie leben in einer Datenbank, sie können in dem Moment veraltet sein, in dem sie ankommen, und sie brauchen Caching, Revalidierung, Retries und Deduplizierung. Client State sind Daten, die dir gehören, etwa welcher Tab offen ist oder was in ein Formular getippt wurde, und der ist synchron und immer korrekt. Behandle beides unterschiedlich: einen Query-Cache für Server State, lokalen Komponenten-State oder einen kleinen Store für Client State.

Warum Interviewer das fragen

Der Interviewer will wissen, ob du API-Antworten immer noch in einen globalen Store schieben und Loading-Flags von Hand bauen würdest. Beides zu trennen ist die Einsicht hinter modernen Datenbibliotheken, und es sagt voraus, wie viel zufällige Komplexität dein Code mit sich schleppt. Es öffnet außerdem Nachfragen zu Cache-Invalidierung, optimistischen Updates und dazu, was passiert, wenn zwei Komponenten dieselben Daten brauchen.

So baust du deine Antwort auf

  • Definier beide Kategorien über Eigentümerschaft.
  • Zähl auf, was Server State braucht und Client State nicht.
  • Nenn das Werkzeug, das du für jedes nutzt, und warum.
  • Gib ein Symptom dafür, dass es schiefgegangen ist.

Beispielantwort

Gesprochenes Beispiel, erste Person

Server State ist eine gecachte Kopie von etwas, das ich nicht kontrolliere. Er kommt asynchron an, er kann veraltet sein, zwei Komponenten wollen ihn womöglich gleichzeitig, und er braucht Revalidierung, Retries und Deduplizierung. Client State gehört mir: das offene Accordion, der Entwurf in einem Formular, der ausgewählte Filter, bevor ich ihn anwende. Er ist synchron und nie veraltet. Seit ich beides als verschiedene Probleme behandle, ist eine Menge Code verschwunden. Serverdaten landen in einem Query-Cache mit den Parametern als Key, das erledigt Lade- und Fehlerzustände, dedupliziert parallele Requests und lädt beim Fokus nach. Client State bleibt lokaler Komponenten-State, bis mehr als eine Komponente ihn braucht, und erst dann wandert er in einen kleinen gemeinsamen Store. Das Symptom, wenn man das falsch macht, ist sehr wiedererkennbar: ein globaler Store voller Entitäten, handgeschriebene Loading-Booleans auf jedem Screen, und ein Bug, bei dem zwei Komponenten denselben Nutzer laden und sich über ihn uneinig sind. Ich habe so eine App gewartet und würde sie nicht noch einmal so bauen.

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

  • Wie behandelst du ein optimistisches Update, das der Server ablehnt?
  • Was ist deine Invalidierungsstrategie nach einer Mutation?
  • Wann muss Client State wirklich global sein?

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