Question d'entretien pour Développeur Python

Comment profileriez-vous un service Python devenu plus lent après une mise en production ?

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

Réponse rapide

Commencez par cerner où part le temps avant de toucher au code. Comparez le diff de la version, regardez le tracing ou les métriques de temps pour trouver l'endpoint lent, puis profilez ce chemin avec cProfile ou py-spy, qui peut échantillonner un processus vivant sans redémarrage. Regardez le temps cumulé pour trouver l'appel responsable, formulez une seule hypothèse, changez une seule chose, et mesurez à nouveau.

Pourquoi les recruteurs posent cette question

Les questions de performance séparent ceux qui mesurent de ceux qui devinent. Le recruteur cherche une méthode : reproduire, mesurer, isoler, changer une variable, vérifier. Il veut aussi de l'aisance avec les outils, en particulier un profileur par échantillonnage capable de s'attacher à un processus de production en cours, et le discernement de savoir que la plupart des lenteurs Python viennent de la base de données ou du réseau plutôt que de l'interpréteur.

Comment structurer votre réponse

  • Établissez ce qui a changé et où part le temps.
  • Nommez le profileur que vous attacheriez et pourquoi.
  • Lisez le temps cumulé, pas seulement le temps propre.
  • Changez une seule chose et mesurez la différence.

Exemple de réponse

Exemple parlé, à la première personne

La première question est ce qui a réellement changé, parce qu'une mise en production me donne une courte liste de suspects. Ensuite je veux des chiffres, pas des avis, donc les spans de tracing ou les temps par endpoint me disent quelle route a régressé et si le temps est dans la base, dans un appel amont ou dans le processus lui-même. Si c'est dans le processus, py-spy est mon premier réflexe parce qu'il s'attache à un conteneur en cours et échantillonne sans redémarrage, ce qui me laisse profiler la vraie charge de production plutôt qu'une charge synthétique. Un flame graph rend en général la chose évidente. Pour un cas local reproductible j'utilise cProfile et je trie par temps cumulé, puisque le temps propre cache l'appelant réellement responsable. Une mise en garde : profiler modifie les temps, donc je ne fais jamais confiance aux valeurs absolues, seulement à la forme relative. Puis je change exactement une chose et je remesure. La dernière fois, le coupable était un nouveau sérialiseur qui faisait une copie profonde par ligne, et supprimer cette copie a ramené l'endpoint de quatre cents millisecondes à quatre-vingt-dix.

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

  • En quoi py-spy diffère-t-il de cProfile ?
  • Comment profileriez-vous la mémoire plutôt que le temps ?
  • Et si la régression n'apparaît qu'en charge ?

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