Question d'entretien pour Développeur backend

Vous devez remplir une nouvelle colonne sur deux cents millions de lignes existantes en production. Comment lancez-vous ça ?

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

Réponse rapide

Jamais avec une seule instruction update. Ajoutez la colonne en nullable sans réécriture par défaut, puis remplissez par petits lots triés par clé primaire, en validant chaque lot, avec une courte pause entre eux et une vérification du retard de réplication. Rendez le travail reprenable en enregistrant la progression, lancez-le en heures creuses, et faites écrire la nouvelle colonne par l'application pour les lignes créées et modifiées, pour que la reprise n'ait à traiter que l'historique.

Pourquoi les recruteurs posent cette question

C'est une question opérationnelle déguisée en tâche de données, et il est très facile de la rater. Un update géant peut tenir des verrous, gonfler le journal des écritures, faire exploser le retard de réplication et mettre le site à terre. Le recruteur veut du traitement par lots, une régulation basée sur un signal en direct, de la reprenabilité, et la stratégie de double écriture qui permet une bascule sûre. Ça montre aussi si vous prévoyez l'étape de vérification.

Comment structurer votre réponse

  • Expliquez pourquoi un seul gros update est dangereux : verrous, gonflement, retard de réplication.
  • Décrivez le travail par lots reprenable et son signal de régulation.
  • Faites écrire la nouvelle valeur par l'application pour l'avenir.
  • Définissez la vérification et la bascule vers la lecture de la nouvelle colonne.

Exemple de réponse

Exemple parlé, à la première personne

Un update touchant deux cents millions de lignes tient des verrous, génère une quantité énorme de journal des écritures, et pousse les réplicas si loin derrière que les lectures se mettent à servir des données périmées, donc le site souffre même si rien n'a planté. À la place, j'ajoute la colonne en nullable, ce qui est peu coûteux sur un Postgres moderne parce qu'il ne réécrit pas la table, et je déploie d'abord le changement applicatif qui la remplit à chaque insertion et à chaque mise à jour. Ça veut dire que la reprise n'a que l'historique à traiter, et l'historique ne bouge pas. Ensuite le travail parcourt la clé primaire par lots de quelques milliers, valide chaque lot, enregistre le dernier identifiant terminé pour pouvoir reprendre après un redémarrage, et fait une pause si le retard de réplication ou la charge de la base dépasse un seuil. Je le lance avec une limitation de débit plutôt qu'à fond. Quand il finit, je vérifie par comptages et sondages qu'il ne reste rien à null, puis je bascule les lectures vers la nouvelle colonne derrière un flag, et seulement après j'ajoute la contrainte not null, validée séparément pour ne pas prendre un verrou long.

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 ajouteriez-vous une contrainte not null sans verrou long ?
  • Sur quel signal régulez-vous, et à quel seuil ?
  • Comment vérifiez-vous que la reprise était correcte, et pas seulement complète ?

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

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