Un interblocage exige quatre conditions à la fois : exclusion mutuelle, détention et attente, absence de préemption, et attente circulaire. Cassez-en une seule et il ne peut pas se produire. En pratique, vous cassez l'attente circulaire en acquérant toujours les verrous dans le même ordre global, et vous ajoutez des délais limites sur les verrous pour qu'une transaction coincée échoue vite plutôt que de rester suspendue. Garder les transactions courtes et toucher les lignes dans un ordre cohérent vous mène presque au bout.
Pourquoi les recruteurs posent cette question
Ça teste si vous connaissez la théorie et si vous savez la transformer en une règle qu'une équipe peut réellement suivre. Le recruteur veut l'intuition de l'attente circulaire et le correctif par l'ordre, plus la reconnaissance que les interblocages sont courants dans les bases et pas seulement dans le code à threads. Mentionner les délais limites sur les verrous, la reprise avec attente croissante, et le fait que la base choisira une victime et l'abandonnera, signale de l'expérience de production.
Comment structurer votre réponse
- Listez les quatre conditions qui doivent toutes être réunies.
- Choisissez celle que vous pouvez casser en pratique : l'attente circulaire.
- Donnez concrètement la règle d'ordre de verrouillage cohérent.
- Ajoutez délais limites et reprises comme filet de sécurité.
Exemple de réponse
L'interblocage a besoin de quatre choses ensemble, et celle que je peux réellement contrôler, c'est l'attente circulaire. La règle que je mets en place, c'est donc que chaque chemin de code prend les verrous dans le même ordre. Si un virement touche deux comptes, je trie par identifiant de compte et je verrouille le plus petit d'abord, et alors peu importe dans quel sens va l'argent, aucun cycle ne peut se former. Le second levier, c'est le temps. Je garde les transactions courtes, donc je ne tiens jamais un verrou de ligne pendant un appel réseau vers un prestataire de paiement, ce qui est une façon classique de transformer une transaction de cent millisecondes en une de cinq secondes. Ensuite je règle un délai limite sur les verrous et je reprends avec du jitter, parce que tôt ou tard la base détectera un cycle, choisira une victime et l'abandonnera, et je préfère que ce chemin soit traité plutôt que remonté en 500. Dans Postgres, les entrées de log d'interblocage nomment les deux instructions impliquées, et les deux fois où je m'en suis servi, le correctif était l'ordre.
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 la base détecte-t-elle un interblocage ?
- Qu'est-ce qu'un livelock et en quoi diffère-t-il ?
- Le verrouillage optimiste éviterait-il complètement ce problème ?
Autres questions pour Ingénieur logiciel
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