Question d'entretien pour Développeur frontend

Vous devez persister quelque chose dans le navigateur. Comment choisissez-vous entre localStorage, sessionStorage, les cookies et IndexedDB ?

Ce que le recruteur cherche à évaluer, comment structurer votre réponse et un exemple parlé à adapter.

Réponse rapide

N'utilisez les cookies que lorsque le serveur a besoin de la valeur à chaque requête, et posez HttpOnly, Secure et SameSite pour tout ce qui est sensible. Utilisez sessionStorage pour l'état qui doit mourir avec l'onglet, localStorage pour de petites données clé valeur synchrones qui survivent aux redémarrages, et IndexedDB pour tout ce qui est volumineux, structuré ou asynchrone. Ne gardez jamais de jetons ni de données personnelles dans localStorage, puisque n'importe quel script de la page peut les lire.

Pourquoi les recruteurs posent cette question

Ça ressemble à une question de culture générale mais c'est en réalité une question de sécurité. Le recruteur veut voir que vous savez que localStorage est lisible par tout script injecté, que localStorage est synchrone et bloque donc le thread principal, et que les cookies coûtent de la bande passante à chaque requête. Savoir quand IndexedDB vaut sa complexité montre aussi que vous avez construit quelque chose capable de fonctionner hors ligne plutôt que seulement des écrans CRUD.

Comment structurer votre réponse

  • Triez les options selon ce dont le serveur a besoin par rapport à ce dont seul le client a besoin.
  • Soulignez que localStorage est synchrone et lisible par la même origine.
  • Énoncez la règle sur les jetons et les drapeaux de cookie que vous posez.
  • Dites où IndexedDB mérite sa complexité.

Exemple de réponse

Exemple parlé, à la première personne

Ma première question, c'est de savoir si le serveur en a besoin. Si oui, c'est un cookie, et il reçoit HttpOnly, Secure et SameSite, ce qui veut aussi dire que mon JavaScript ne le lit pas. Si seul le client en a besoin, ça se joue sur la durée de vie et la taille. sessionStorage pour ce qui est limité à l'onglet, comme une étape d'assistant ou une position de défilement que je ne veux pas voir fuiter dans un autre onglet. localStorage pour de petites préférences durables, le thème, le dernier filtre utilisé, ce genre de chose, et je le garde petit parce que c'est synchrone, donc un gros blob JSON parsé au démarrage se voit directement dans mon time to interactive. IndexedDB dès que les données sont grandes ou structurées, par exemple une liste d'enregistrements mise en cache pour un usage hors ligne, en général derrière un petit wrapper parce que l'API brute est désagréable. La règle sur laquelle je ne cède pas, c'est que les jetons d'accès ne vont pas dans localStorage, parce que tout script injecté peut les lire ; ceux-là vivent dans un cookie HttpOnly ou en mémoire seulement.

Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.

Voir comment ça marche

Questions de relance à prévoir

  • Pourquoi un cookie HttpOnly est-il plus sûr que localStorage pour un jeton de session ?
  • Comment garderiez-vous deux onglets ouverts synchronisés sur le même état stocké ?
  • Quelles limites de stockage et quelles règles d'éviction anticipez-vous ?

Autres questions pour Développeur frontend

Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.

Prédire mes questions

Répétez les questions difficiles avant qu'on vous les pose

Entraînez-vous avec un copilote en direct, puis présentez-vous prêt. Un Session Pass à $29 vous accompagne pendant l'entretien, sans abonnement et sans engagement.

Obtenir GhostPilot