Interviewfrage für Python-Entwickler

Was ändert der Free-Threaded Build aus PEP 703 an dem Code, den du schreibst?

Worauf der Interviewer abzielt, wie du deine Antwort aufbaust und ein gesprochenes Beispiel zum Anpassen.

Kurzantwort

Der Free-Threaded Build, seit CPython 3.13 als optionaler Interpreter ausgeliefert, entfernt das GIL, sodass mehrere Threads Python-Bytecode parallel ausführen können. Dein Code wird echt nebenläufig, und damit werden Races, die das GIL früher versteckt hat, real. Du brauchst explizite Locks um geteilten veränderlichen Zustand, und du musst prüfen, ob jede C-Extension, von der du abhängst, das unterstützt.

Warum Interviewer das fragen

Das trennt Leute, die Release Notes lesen, von Leuten, die bei Python 3.8 aufgehört haben zu lernen. Der Interviewer prüft, ob du weißt, dass das GIL als Option entfernt und nicht ersatzlos gestrichen wird, ob du die Kosten im Ökosystem rund um native Extensions kennst und ob dir klar ist, dass Code, der unter dem alten Lock sicher aussah, geteilten Zustand zerschießen kann, sobald Threads wirklich gleichzeitig laufen.

So baust du deine Antwort auf

  • Sag, dass es ein optionaler Build ist und nicht der Standard.
  • Erklär, welche Parallelität er freischaltet.
  • Nenn die neue Korrektheitslast bei geteiltem Zustand.
  • Erwähn die Frage der Extension-Kompatibilität.

Beispielantwort

Gesprochenes Beispiel, erste Person

Free Threading kam in 3.13 als experimenteller Build und ist seitdem gereift, und der entscheidende Punkt ist, dass es ein separater Interpreter ist, für den du dich aktiv entscheidest, und nicht etwas, das sich klammheimlich unter allen geändert hätte. Ohne Lock können zwei Threads gleichzeitig Bytecode auf zwei Kernen ausführen, sodass ein CPU-lastiger Worker-Pool endlich skaliert, ohne Prozessstart und Pickling zu bezahlen. Der Preis ist Korrektheit. Unter dem alten Build ist eine Menge schlampiger Code mit unsynchronisierten dict-Updates davongekommen, weil eine Bytecode-Grenze selten an der falschen Stelle lag. Jetzt sind das ehrliche Data Races und du brauchst ein Lock oder eine Queue. Ich habe es an einem Scoring-Job probiert, der Arbeit auf vier Prozesse verteilt hat, und Threads haben ähnlichen Durchsatz bei deutlich kleinerem Speicherbedarf gebracht, weil das Modell einmal geladen blieb statt viermal. Der Blocker für Produktion waren die Extensions. Alles mit einer C-Schicht muss gegen das Free-Threaded ABI neu gebaut werden, also würde ich vor dem Ausrollen den Dependency-Baum durchgehen und prüfen, was die Maintainer veröffentlicht haben.

Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.

So funktioniert es

Nachfragen, mit denen du rechnen solltest

  • Wie würdest du ein Data Race in Python-Code finden?
  • Was kostet dieser Build an Single-Threaded-Performance?
  • Würdest du ihn heute in Produktion schicken?

Weitere Fragen für Python-Entwickler

Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.

Meine Fragen vorhersagen

Üb die harten Fragen, bevor sie gestellt werden

Trainier mit einem Live-Copiloten und geh dann vorbereitet rein. Ein $29 Session Pass bringt dich durch das Vorstellungsgespräch, ohne Abo und ohne Bindung.

GhostPilot holen