Figez le comportement actuel avant de le changer. Écrivez des tests de caractérisation à une frontière stable, en fournissant de vraies entrées et en affirmant ce que le code fait aujourd'hui, bugs compris, pour avoir un filet qui détecte le changement. Ensuite refactorez par petites étapes avec ces tests au vert, en extrayant la logique à toucher vers quelque chose de testable. Ce n'est qu'une fois la couture en place que vous changez le comportement, et chaque changement obtient son propre test.
Pourquoi les recruteurs posent cette question
L'essentiel du travail d'ingénierie se fait sur du code que vous n'avez pas écrit, et ça révèle si vous foncez ou si vous construisez d'abord la sécurité. Le recruteur écoute les tests de caractérisation, le test à une frontière stable plutôt que des tests unitaires sur une implémentation que vous allez supprimer, et la séparation entre refactoring et changement de comportement pour que, quand quelque chose casse, vous sachiez immédiatement lequel des deux en est la cause.
Comment structurer votre réponse
- Refusez de changer de la logique non testée sans filet.
- Écrivez d'abord des tests de caractérisation à la frontière de l'API.
- Séparez le refactoring du changement de comportement.
- Utilisez de vraies données de production pour valider.
Exemple de réponse
Je ne change pas de la logique que je ne peux pas vérifier, donc l'étape un, c'est un filet. J'écris des tests de caractérisation à la frontière stable la plus haute, en général le handler HTTP ou un point d'entrée de service, et j'affirme ce que le code fait à l'instant présent, y compris des choses que je soupçonne d'être des bugs. Le but n'est pas la justesse, c'est de détecter le changement. Si j'ai accès à la production, je capture quelques centaines de vraies paires requête et réponse, parce que des entrées faites main ratent les cas bizarres et que ce sont les cas bizarres qui cassent. Ensuite je refactore par petites étapes avec les tests au vert tout du long, en tirant la logique que j'ai réellement besoin de toucher vers une fonction que je peux appeler directement. Ce n'est qu'alors que je change le comportement, et chaque changement vient avec un vrai test plus une décision sur le fait de savoir si l'ancien comportement était intentionnel. Sur un service de tarification hérité, j'ai fait exactement ça et le trafic capturé a exposé deux chemins d'arrondi qui se contredisaient, ce que personne ne savait. C'est le genre de chose qu'on trouve avec un filet et qu'on détruit sans.
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 gérez-vous un bug dont les clients dépendent désormais ?
- Feriez-vous tourner l'ancien et le nouveau chemin en parallèle ?
- Comment empêchez-vous le refactoring de gonfler en périmètre ?
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