ACID décrit les garanties qu'une transaction vous offre. L'atomicité veut dire que toutes les écritures aboutissent ou aucune. La cohérence veut dire que la transaction fait passer la base d'un état valide à un autre, en respectant ses contraintes. L'isolation veut dire que les transactions concurrentes ne voient pas le travail partiel des autres, dans la mesure où le niveau d'isolation le promet. La durabilité veut dire qu'une fois le commit revenu, la donnée survit à un crash.
Pourquoi les recruteurs posent cette question
Presque tous les bugs de production touchant à l'argent, aux stocks ou aux doubles écritures remontent à un malentendu ici. Le recruteur veut vérifier que vous traitez ça comme des garanties données par la base plutôt que comme de la magie, et surtout que vous savez que l'isolation est réglable et que la valeur par défaut dans la plupart des systèmes n'est pas la sérialisabilité complète. Des définitions précises signalent que vous savez raisonner sur la justesse en environnement concurrent.
Comment structurer votre réponse
- Définissez chacune des quatre lettres en une phrase.
- Insistez sur le fait que l'isolation est un curseur, pas un réglage unique.
- Reliez une propriété à un vrai bug que vous avez vu.
- Mentionnez ce qui change une fois que vous êtes distribué.
Exemple de réponse
L'atomicité, c'est tout ou rien : si je débite un compte et en crédite un autre, soit les deux écritures sont validées, soit aucune. La cohérence veut dire que la transaction laisse la base en respectant ses contraintes, donc les clés étrangères et les contraintes de vérification tiennent de part et d'autre. L'isolation est la partie intéressante, parce que c'est un curseur plutôt qu'une promesse. La plupart des bases sont par défaut en read committed, ce qui autorise encore les lectures non répétables et les lignes fantômes, donc si vous supposez un comportement sérialisable vous finirez par livrer une course critique. La durabilité veut dire qu'une fois le commit revenu, l'écriture survit à une coupure de courant, en général parce qu'elle a atteint le journal d'écriture anticipée et a été vidée sur disque. L'endroit où ça m'a mordu, c'était un endpoint d'utilisation de coupon. On vérifiait les utilisations restantes puis on décrémentait dans deux instructions séparées en read committed, et deux requêtes concurrentes ont chacune vu une utilisation restante. Le correctif a été un seul update conditionnel avec une clause where sur le compteur restant, ce qui a rendu la vérification et l'écriture atomiques.
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
- Quel niveau d'isolation votre base utilise-t-elle par défaut ?
- Qu'est-ce qu'une lecture fantôme et quel niveau l'empêche ?
- Comment ces garanties changent-elles une fois que vous shardez sur plusieurs noeuds ?
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