Question d'entretien pour Développeur frontend

Comment concevez-vous la différence entre état serveur et état client dans une application frontend ?

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

Réponse rapide

L'état serveur, ce sont des données que vous ne possédez pas : elles vivent dans une base, elles peuvent être périmées dès leur arrivée, et elles ont besoin de cache, de revalidation, de reprises et de déduplication. L'état client, ce sont des données que vous possédez, comme l'onglet ouvert ou ce qui est saisi dans un formulaire, et il est synchrone et toujours correct. Traitez-les différemment : un cache de requêtes pour l'état serveur, un état local de composant ou un petit store pour l'état client.

Pourquoi les recruteurs posent cette question

Le recruteur veut savoir si vous pousseriez encore les réponses d'API dans un store global en écrivant des drapeaux de chargement à la main. Séparer les deux est l'idée derrière les bibliothèques de données modernes, et ça prédit combien de complexité accidentelle porte votre code. Ça ouvre aussi des relances sur l'invalidation de cache, les mises à jour optimistes et ce qui se passe quand deux composants ont besoin des mêmes données.

Comment structurer votre réponse

  • Définissez les deux catégories en termes de propriété.
  • Listez ce dont l'état serveur a besoin et pas l'état client.
  • Nommez l'outil que vous utilisez pour chacun et pourquoi.
  • Donnez un symptôme de ce que ça donne quand on se trompe.

Exemple de réponse

Exemple parlé, à la première personne

L'état serveur, c'est une copie en cache de quelque chose que je ne contrôle pas. Il arrive de façon asynchrone, il peut être périmé, deux composants peuvent le vouloir en même temps, et il a besoin de revalidation, de reprises et de déduplication. L'état client est à moi : l'accordéon ouvert, le brouillon dans un formulaire, le filtre sélectionné avant que je l'applique. Il est synchrone et n'est jamais périmé. Une fois que j'ai commencé à les traiter comme deux problèmes différents, beaucoup de code a disparu. Les données serveur vont dans un cache de requêtes clé par leurs paramètres, qui gère les états de chargement et d'erreur, déduplique les requêtes concurrentes et refait la requête au retour du focus. L'état client reste en état local de composant jusqu'à ce que plus d'un composant en ait besoin, et seulement là il passe dans un petit store partagé. Le symptôme de l'erreur est très reconnaissable : un store global plein d'entités, des booléens de chargement écrits à la main sur chaque écran, et un bug où deux composants récupèrent le même utilisateur et ne sont pas d'accord dessus. J'ai maintenu cette application et je ne la reconstruirais pas comme ça.

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

  • Comment gérez-vous une mise à jour optimiste que le serveur rejette ?
  • Quelle est votre stratégie d'invalidation après une mutation ?
  • Quand l'état client a-t-il vraiment besoin d'être global ?

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