Interviewfrage für Softwareentwickler

Eine Drittanbieter-API, von der du abhängst, läuft sporadisch in Timeouts. Was machst du?

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

Kurzantwort

Grenz es zuerst ein: Setz ein aggressives Timeout, damit ihre Latenz nicht zu deiner wird, wiederhol mit exponentiellem Backoff und Jitter nur bei idempotenten Aufrufen, und setz einen Circuit Breaker davor, damit du nicht weiter auf etwas einhämmerst, das ohnehin schon unten ist. Dann entscheide, wie degradiertes Verhalten aussieht: Arbeit für später einreihen, einen gecachten Wert ausliefern, oder dieses eine Feature scheitern lassen, während der Rest des Produkts weiterläuft.

Warum Interviewer das fragen

Jedes echte System hängt von etwas ab, das es nicht kontrolliert, und der Interviewer will wissen, ob du dafür designst, dass dieser Anbieter einen schlechten Tag hat. Er hört auf Timeouts, die am häufigsten vergessene Kontrolle, auf Retry-Disziplin gebunden an Idempotenz, auf Circuit Breaking, damit du den Ausfall nicht verschlimmerst, und auf Produktdenken zu sanfter Degradierung statt einen 500 an den User durchzureichen.

So baust du deine Antwort auf

  • Setz ein Timeout, damit ihr Problem ihr Problem bleibt.
  • Wiederhol nur, was sicher ist, mit Backoff und Jitter.
  • Setz einen Circuit Breaker davor, um nicht nachzulegen.
  • Definier die degradierte Erfahrung für die User.

Beispielantwort

Gesprochenes Beispiel, erste Person

Als Erstes prüfe ich, ob wir überhaupt ein Timeout haben, denn der Default in vielen HTTP-Clients ist praktisch unendlich, und genau so füllt ein langsamer Anbieter deinen Worker Pool und legt Endpoints lahm, die nichts mit ihm zu tun haben. Also ein aggressives Timeout, enger als mein eigenes SLA. Dann Retries, aber nur bei Aufrufen, die sicher wiederholbar sind, mit exponentiellem Backoff und Jitter, denn synchronisierte Retries von jeder Instanz machen aus ihrem Brownout einen kompletten Ausfall. Davor kommt ein Circuit Breaker, sodass wir nach einer Serie von Fehlern eine Weile nicht mehr aufrufen und schnell scheitern, statt uns aufzustauen. Dann die Produktfrage, die die interessante ist: Was soll der User sehen? Bei einem Aufruf zur Adressvalidierung würde ich die Bestellung durchlassen und sie zur Prüfung markieren. Bei einer Zahlungsautorisierung kann ich das nicht faken, ich reihe den Versuch also ein und sage es dem User ehrlich. Und ich wäre die ganze Zeit mit Request-ids in ihrem Support-Kanal.

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 entscheidest du über den Timeout-Wert?
  • Wie würdest du testen, dass dein Circuit Breaker wirklich funktioniert?
  • Was würdest du überwachen, um das vor den Kunden zu bemerken?

Weitere Fragen für Softwareentwickler

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