Question d'entretien pour Développeur Python

Quand choisiriez-vous les threads, les processus ou asyncio ?

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

Réponse rapide

Utilisez asyncio pour des entrées/sorties à fort volume où vous voulez des milliers d'attentes concurrentes dans un seul thread, les threads pour du travail d'entrées/sorties dont seules des bibliothèques bloquantes existent, et les processus pour du travail limité par le CPU qui a besoin de vrais cœurs. Les questions décisives sont de savoir si le travail attend ou s'il calcule, et si les bibliothèques dont vous dépendez offrent une interface asynchrone.

Pourquoi les recruteurs posent cette question

Les choix de concurrence sont l'endroit où les ingénieurs juniors brûlent des semaines. Le recruteur veut une règle de décision plutôt qu'une préférence, plus la conscience des coûts de chaque modèle : mémoire et sérialisation pour les processus, sûreté des threads et changements de contexte, et le fait qu'un seul appel bloquant négligent fige toute une boucle d'événements. Signaler que ces modèles se combinent, par exemple un thread pool executor dans asyncio, montre de l'expérience de terrain.

Comment structurer votre réponse

  • Commencez par séparer le problème entre attendre et calculer.
  • Associez chaque catégorie à un modèle de concurrence.
  • Nommez un coût pour chaque choix.
  • Donnez un exemple concret tiré de votre propre travail.

Exemple de réponse

Exemple parlé, à la première personne

Ma première question est toujours de savoir si le travail attend ou s'il calcule, parce que la réponse choisit l'outil. Attendre sur le réseau ou sur le disque, c'est asyncio si les bibliothèques clientes le permettent, puisqu'une boucle d'événements tient sans broncher dix mille sockets ouverts sur un cœur et que la mémoire par tâche est minuscule. Si le seul pilote disponible est bloquant, je prends un pool de threads, parce qu'un thread garé dans une lecture de socket relâche le verrou et ne coûte presque rien. Calculer, c'est les processus, ou passer par une bibliothèque native qui relâche elle-même le verrou. Sur un service sur lequel j'ai travaillé, nous avions les deux dans un même chemin de requête : un handler asynchrone qui interrogeait six API internes avec gather, et un appel run_in_executor qui enveloppait un vieux SDK bloquant que nous ne pouvions pas remplacer. Cette combinaison vaut la peine d'être citée en entretien parce que la plupart des vrais systèmes sont mixtes. L'erreur que je guette, c'est quelqu'un qui met une lourde transformation pandas dans une coroutine, parce que la boucle cesse alors de servir tout le reste pendant qu'elle tourne.

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

  • Qu'est-ce qui casse en premier quand vous montez un pool de threads en charge ?
  • Comment partagez-vous de l'état entre processus ?
  • Où un task group se place-t-il dans ce tableau ?

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