Question d'entretien pour Développeur full stack

Expliquez comment vous mettriez en cache une réponse d'API JSON au niveau HTTP.

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

Réponse rapide

Posez Cache-Control avec un max-age explicite et une portée : public pour un cache CDN partagé, private pour des données par utilisateur. Ajoutez stale-while-revalidate pour que les clients servent des données légèrement anciennes pendant qu'ils rafraîchissent en arrière-plan. Incluez un ETag ou Last-Modified pour que la revalidation soit un 304 peu coûteux plutôt qu'un corps complet. Pour tout ce qui est propre à un utilisateur, posez Vary sur Authorization ou Cookie pour qu'aucun cache ne croise les fils entre comptes.

Pourquoi les recruteurs posent cette question

Le cache, c'est là que les développeurs full stack font vraiment économiser de l'argent ou font fuiter les données des autres, donc le recruteur sonde à la fois l'instinct de performance et l'instinct de sûreté. Il veut voir que vous connaissez la différence entre caches navigateur, CDN et origine, que vous savez nommer les en-têtes plutôt que de les évoquer vaguement, et que vous pensez immédiatement au mode de défaillance des données privées sans qu'on vous le demande.

Comment structurer votre réponse

  • Nommez l'en-tête qui pose la politique et ses directives clés.
  • Expliquez la revalidation avec ETag et la réponse 304.
  • Couvrez le cas des données privées et Vary.
  • Mentionnez comment vous invalidez quand les données changent.

Exemple de réponse

Exemple parlé, à la première personne

La première question que je pose, c'est qui a le droit de détenir cette réponse. Si elle est identique pour tout le monde, public avec un vrai max-age laisse le CDN absorber le trafic et l'origine ne voit presque rien. Si elle est par compte, elle doit être private, et je pose Vary sur Authorization pour qu'un cache partagé ne puisse pas servir la charge utile d'un utilisateur à un autre. Cette erreur est silencieuse et catastrophique, donc je la vérifie explicitement. Ensuite j'ajoute un ETag, parce qu'un 304 coûte quelques centaines d'octets au lieu du corps complet, et stale-while-revalidate pour qu'un utilisateur n'attende jamais un rafraîchissement. Pour tout ce qui doit être à jour, je bascule sur un max-age court plus de la revalidation plutôt que no-store, puisque no-store jette le gain facile. Sur la dernière API sur laquelle j'ai travaillé, passer un endpoint public de tarifs de no-cache à soixante secondes en public avec stale-while-revalidate a réduit les requêtes vers l'origine d'environ 90 pour cent, et personne n'a remarqué une minute de fraîcheur en moins.

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 purgeriez-vous le CDN quand les données sous-jacentes changent ?
  • Quelle est la différence entre no-cache et no-store ?
  • Comment mettez-vous en cache des assets statiques hashés différemment des réponses d'API ?

Autres questions pour Développeur full stack

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