Question d'entretien pour Développeur Python

Qu'est-ce que la build free-threaded du PEP 703 change pour le code que vous écrivez ?

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

Réponse rapide

La build free-threaded, livrée comme interpréteur optionnel depuis CPython 3.13, supprime le GIL pour que plusieurs threads puissent exécuter du bytecode Python en parallèle. Votre code devient réellement concurrent, ce qui veut dire que les conditions de course que le GIL masquait deviennent bien réelles. Il vous faut des verrous explicites autour de l'état mutable partagé, et vous devez vérifier que chaque extension C dont vous dépendez la prend en charge.

Pourquoi les recruteurs posent cette question

Cela sépare ceux qui lisent les notes de version de ceux qui ont arrêté d'apprendre à Python 3.8. Le recruteur vérifie si vous savez que le GIL est retiré en option plutôt que supprimé purement et simplement, si vous mesurez le coût pour l'écosystème des extensions natives, et si vous comprenez que du code qui semblait sûr sous l'ancien verrou peut se mettre à corrompre de l'état partagé dès que les threads tournent vraiment en même temps.

Comment structurer votre réponse

  • Précisez que c'est une build optionnelle, pas celle par défaut.
  • Expliquez quel parallélisme elle débloque.
  • Nommez la nouvelle charge de correction sur l'état partagé.
  • Mentionnez la question de compatibilité des extensions.

Exemple de réponse

Exemple parlé, à la première personne

Le free threading est arrivé comme build expérimentale en 3.13 et mûrit depuis, et le point clé est que c'est un interpréteur séparé que vous choisissez, pas quelque chose qui a changé en silence pour tout le monde. Sans le verrou, deux threads peuvent exécuter du bytecode sur deux cœurs à la fois, donc un pool de workers limité par le CPU passe enfin à l'échelle sans payer le démarrage des processus ni le coût du pickling. La contrepartie, c'est la correction. Sous l'ancienne build, beaucoup de code approximatif s'en tirait avec des mises à jour de dictionnaires non synchronisées parce qu'une frontière de bytecode tombait rarement au mauvais endroit. Maintenant ce sont d'honnêtes conditions de course et il vous faut un Lock ou une file. Je l'ai essayée sur un job de scoring qui répartissait le travail sur quatre processus, et les threads ont donné un débit comparable avec une empreinte mémoire bien plus faible puisque le modèle restait chargé une seule fois au lieu de quatre. Le blocage pour la production, c'étaient les extensions. Tout ce qui a une couche C doit être recompilé contre l'ABI free-threaded, donc avant de livrer j'auditerais l'arbre de dépendances et je vérifierais ce que les mainteneurs ont publié.

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 trouveriez-vous une condition de course dans du code Python ?
  • Quel est le coût de cette build sur les performances monothread ?
  • La livreriez-vous en production aujourd'hui ?

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