Évitez la ruée avec du single flight : la première requête en échec de cache prend un verrou court et recalcule pendant que les autres attendent brièvement ou servent la valeur périmée. Combinez ça avec du stale while revalidate, pour qu'une entrée expirée soit encore servie pendant qu'un rafraîchissement tourne en arrière-plan, et ajoutez du jitter aux durées de vie pour que les clés créées ensemble n'expirent pas ensemble. Pour les clés chaudes connues, rafraîchissez de façon proactive avant l'expiration.
Pourquoi les recruteurs posent cette question
Les questions de cache séparent ceux qui ont ajouté un cache de ceux qui en ont exploité un. Le recruteur veut le mode de défaillance précis, une ruée au moment de l'expiration, et les parades standard. Ça ouvre aussi la discussion plus difficile sur l'invalidation, la tolérance à la péremption et ce qui se passe quand le cache lui-même tombe, ce qui est le moment où une base sous-dimensionnée s'écroule.
Comment structurer votre réponse
- Nommez le mécanisme : de nombreux échecs de cache simultanés sur une clé chaude.
- Donnez le verrou single flight et ce que font ceux qui attendent.
- Ajoutez le stale while revalidate et l'expiration avec jitter.
- Mentionnez le scénario du cache froid et le dimensionnement des capacités.
Exemple de réponse
Le motif, c'est une ruée : une clé chaude expire et toutes les requêtes concurrentes échouent au même instant, donc elles exécutent toutes la même requête coûteuse. La correction de base, c'est le single flight, où le premier échec acquiert un verrou de courte durée sur la clé et fait le travail, et tous les autres attendent le résultat ou obtiennent brièvement la valeur périmée. J'associe ça à une expiration souple : je stocke une date logique de rafraîchissement dans la valeur et je garde la durée de vie dure plus longue, donc une entrée dépassant sa date de rafraîchissement est encore servie pendant qu'un travailleur la recalcule en arrière-plan. Les utilisateurs ne voient jamais la latence. Ensuite le jitter, parce que si un déploiement préchauffe mille clés avec la même durée de vie de cinq minutes, elles expirent ensemble et j'obtiens la ruée sur tout le cache d'un coup. La question plus large qui suit, c'est ce qui se passe quand le cache est complètement vide, après un redémarrage ou une bascule. Je veux que la base y survive, alors je fais au moins une fois un test de charge avec le cache désactivé.
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 marcheQuestions de relance à prévoir
- Comment implémenteriez-vous le verrou single flight de façon sûre entre de nombreuses instances ?
- Comment invalidez-vous une valeur en cache quand la donnée sous-jacente change ?
- Qu'arrive-t-il à votre service si le cluster de cache tombe complètement ?
Autres questions pour Développeur backend
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