Un endpoint idempotent produit le même résultat qu'il soit appelé une fois ou cinq fois avec la même entrée. GET, PUT et DELETE sont naturellement idempotents ; POST ne l'est pas. On rend un endpoint de création idempotent en faisant envoyer au client une clé d'idempotence unique, en stockant cette clé à côté de la ressource créée dans la même transaction, et en renvoyant le résultat d'origine à chaque répétition.
Pourquoi les recruteurs posent cette question
Les reprises sont partout : les clients reprennent, les répartiteurs de charge reprennent, les files redistribuent. Le recruteur veut savoir si vous concevez pour une livraison au moins une fois au lieu de supposer que chaque requête arrive exactement une fois. Il écoute le motif de la clé d'idempotence, le détail que la clé et l'écriture doivent être validées ensemble, et la conscience de la course quand deux requêtes identiques arrivent au même instant.
Comment structurer votre réponse
- Définissez l'idempotence en termes d'appels répétés, pas d'appels en lecture seule.
- Expliquez pourquoi POST a besoin d'aide et PUT non.
- Décrivez le flux de la clé d'idempotence de bout en bout.
- Couvrez le cas du doublon concurrent avec une contrainte d'unicité.
Exemple de réponse
Idempotent veut dire que l'appeler deux fois laisse le système dans le même état que l'appeler une fois. PUT est idempotent parce que vous énoncez l'état final ; POST ne l'est en général pas, parce que chaque appel veut dire en créer un de plus. Pour un endpoint de création, je fais générer une clé par le client, en général un UUID, et l'envoyer dans un en-tête. Côté serveur, je stocke cette clé dans une table avec une contrainte d'unicité, et je l'écris dans la même transaction que la ressource elle-même, parce que si ces deux validations peuvent diverger tout le dispositif est décoratif. Si la même clé revient, je la retrouve et je renvoie la réponse d'origine avec le statut d'origine. Ce que les gens ratent, c'est le cas concurrent, où deux reprises arrivent dans la même milliseconde. L'index unique s'en occupe : la seconde insertion échoue, j'attrape la violation et je relis le gagnant au lieu de renvoyer une erreur. J'ai construit ça pour un endpoint de paiement après qu'on a facturé quelqu'un deux fois pendant une coupure réseau.
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
- Combien de temps garderiez-vous les clés d'idempotence ?
- Quel code de statut renvoyez-vous sur une requête rejouée ?
- Et si la reprise envoie la même clé mais un corps différent ?
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