Question d'entretien pour Développeur Python

Comment construiriez-vous un endpoint qui a besoin de données venant de trois services amont lents ?

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

Réponse rapide

Appelez-les en parallèle plutôt qu'en séquence. Dans un framework asynchrone, lancez les trois avec asyncio.gather ou un task group pour que la latence totale soit celle de l'appel le plus lent, pas la somme. Mettez un timeout sur chaque appel, décidez quelles réponses sont optionnelles pour pouvoir dégrader au lieu d'échouer, et mettez en cache ce qui est stable. Si le client peut le tolérer, renvoyez plutôt un identifiant de tâche.

Pourquoi les recruteurs posent cette question

C'est une question d'architecture système déguisée en Python. Le recruteur veut des instincts de concurrence, mais surtout il veut une réflexion sur l'échec : des timeouts sur chaque appel réseau, une dégradation partielle, et ce que voit l'utilisateur quand une dépendance est tombée. Les candidats qui répondent gather et s'arrêtent là n'ont jamais exploité quoi que ce soit qui dépende de services hors de leur contrôle.

Comment structurer votre réponse

  • Transformez les appels séquentiels en appels parallèles.
  • Mettez un timeout sur chaque appel sortant.
  • Décidez ce qui est optionnel et dégradez proprement.
  • Ajoutez du cache ou déplacez le travail dans une tâche de fond.

Exemple de réponse

Exemple parlé, à la première personne

En séquence ces trois latences s'additionnent, donc le premier geste est de les lancer ensemble. Avec httpx et un handler asynchrone je fais un gather des trois coroutines, ou j'utilise un task group pour qu'un échec annule proprement les autres, et l'endpoint coûte alors à peu près l'amont le plus lent au lieu de la somme. Chaque appel reçoit un timeout explicite, parce que la valeur par défaut de la plupart des clients revient à l'infini et qu'un seul socket bloqué épuisera le pool de workers. Ensuite je décide ce qui est essentiel. Si deux des trois sont décoratifs, je collecte les exceptions au lieu de les lever et j'affiche la page sans eux plutôt que de renvoyer une cinq cents, et j'émets une métrique pour qu'on sache quand même que c'est arrivé. Tout ce qui est stable va en cache, puisque même soixante secondes de cache enlèvent l'essentiel de la charge. Si le client le tolère, la meilleure forme est d'accepter la requête, de mettre le travail en file et de renvoyer un identifiant de tâche à interroger, ce qui sort complètement la latence amont du chemin de requête.

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

  • Que se passe-t-il si un amont reste bloqué au-delà de votre timeout ?
  • Comment propagez-vous l'annulation à travers ces tâches ?
  • Où placeriez-vous un disjoncteur ?

Autres questions pour Développeur Python

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