Interviewfrage für Python-Entwickler

Wie würdest du einen Endpunkt bauen, der Daten von drei langsamen Upstream-Services braucht?

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

Kurzantwort

Ruf sie nebenläufig statt nacheinander auf. In einem async Framework startest du alle drei mit asyncio.gather oder einer Task Group, sodass die Gesamtlatenz der langsamste Aufruf ist und nicht die Summe. Gib jedem Aufruf ein Timeout, entscheide, welche Antworten optional sind, damit du degradieren statt scheitern kannst, und cache, was stabil ist. Verträgt der Client es, gib stattdessen eine Job-ID zurück.

Warum Interviewer das fragen

Das ist eine Systemdesign-Frage in Python-Kleidern. Der Interviewer will Nebenläufigkeitsinstinkte, aber vor allem Denken in Fehlerfällen: Timeouts auf jedem Netzwerkaufruf, teilweise Degradierung und was der Nutzer sieht, wenn eine Abhängigkeit ausfällt. Kandidaten, die nur mit gather antworten und dort aufhören, haben nichts betrieben, das von Services abhängt, die ihnen nicht gehören.

So baust du deine Antwort auf

  • Mach aus sequenziellen Aufrufen nebenläufige.
  • Setz ein Timeout auf jeden ausgehenden Aufruf.
  • Entscheide, was optional ist, und degradiere sauber.
  • Ergänze Caching oder verlagere die Arbeit in einen Background-Job.

Beispielantwort

Gesprochenes Beispiel, erste Person

Nacheinander addieren sich diese drei Latenzen, der erste Zug ist also, sie zusammen laufen zu lassen. Mit httpx und einem async Handler sammle ich die drei Coroutines mit gather ein, oder nehme eine Task Group, damit ein Fehler die Geschwister sauber abbricht, und der Endpunkt kostet dann etwa den langsamsten Upstream statt der Summe. Jeder Aufruf bekommt ein explizites Timeout, denn der Default in den meisten Clients ist praktisch unendlich und ein hängender Socket erschöpft den Worker-Pool. Dann entscheide ich, was essenziell ist. Sind zwei von dreien Dekoration, sammle ich Exceptions ein statt zu werfen und rendere die Seite ohne sie, statt einen Fünfhunderter zu liefern, und ich emittiere eine Metrik, damit wir es trotzdem mitbekommen. Alles Stabile wird gecacht, denn selbst sechzig Sekunden Caching nehmen den Großteil der Last weg. Verträgt der Client es, ist die bessere Form, den Request anzunehmen, die Arbeit in eine Queue zu legen und eine Job-ID zum Pollen zurückzugeben, was die Upstream-Latenz komplett vom Request-Pfad nimmt.

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

  • Was passiert, wenn ein Upstream über dein Timeout hinaus hängt?
  • Wie reichst du Cancellation durch diese Tasks durch?
  • Wo würdest du einen Circuit Breaker platzieren?

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