Nimm Cookies nur, wenn der Server den Wert bei jedem Request braucht, und setz HttpOnly, Secure und SameSite für alles Sensible. Nimm sessionStorage für Zustand, der mit dem Tab sterben soll, localStorage für kleine synchrone Key-Value-Daten, die einen Neustart überleben, und IndexedDB für alles Große, Strukturierte oder Asynchrone. Leg niemals Tokens oder personenbezogene Daten in localStorage, weil jedes Script auf der Seite sie lesen kann.
Warum Interviewer das fragen
Das sieht nach einer Trivia-Frage aus, ist aber in Wahrheit eine Sicherheitsfrage. Der Interviewer will sehen, dass du weißt, dass localStorage von jedem eingeschleusten Script lesbar ist, dass localStorage synchron ist und damit den Main Thread blockiert, und dass Cookies bei jedem einzelnen Request Bandbreite kosten. Zu wissen, wann IndexedDB die Komplexität wert ist, signalisiert außerdem, dass du etwas Offline-fähiges gebaut hast und nicht nur CRUD-Masken.
So baust du deine Antwort auf
- Sortier die Optionen danach, was der Server braucht gegen das, was nur der Client braucht.
- Weise darauf hin, dass localStorage synchron und same-origin lesbar ist.
- Nenn die Token-Regel und die Cookie-Flags, die du setzt.
- Sag, wo IndexedDB seine Komplexität verdient.
Beispielantwort
Meine erste Frage ist, ob der Server es braucht. Wenn ja, ist es ein Cookie, und es bekommt HttpOnly, Secure und SameSite, was auch heißt, dass mein JavaScript es nicht liest. Braucht es nur der Client, geht es um Lebensdauer und Größe. sessionStorage für Dinge mit Tab-Gültigkeit, etwa einen Wizard-Schritt oder eine Scroll-Position, die ich nicht in einen anderen Tab lecken lassen will. localStorage für kleine dauerhafte Einstellungen, Theme, zuletzt genutzter Filter, solche Sachen, und ich halte es klein, weil es synchron ist, ein großer JSON-Blob beim Start geparst taucht also direkt in meiner Time to Interactive auf. IndexedDB, sobald die Daten groß oder strukturiert sind, zum Beispiel eine gecachte Liste von Datensätzen für den Offline-Betrieb, meist hinter einem kleinen Wrapper, weil die rohe API unangenehm ist. Die Regel, von der ich nicht abweiche, ist, dass Access-Tokens nicht in localStorage gehören, weil jedes eingeschleuste Script sie lesen kann; die leben in einem HttpOnly-Cookie oder nur im Speicher.
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 esNachfragen, mit denen du rechnen solltest
- Warum ist ein HttpOnly-Cookie für ein Session-Token sicherer als localStorage?
- Wie würdest du zwei offene Tabs mit demselben gespeicherten Zustand synchron halten?
- Mit welchen Speichergrenzen und Eviction-Regeln planst du?
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