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
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 esNachfragen, 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