Setz explizite Connect- und Read-Timeouts auf dem Client, denn mehrere Java-HTTP-Clients warten per Default unendlich, und ergänze ein Gesamt-Timeout für den Request. Begrenz den Connection Pool für diesen Host, wiederhol nur idempotente Calls mit Backoff und Jitter, und setz einen Circuit Breaker davor, damit anhaltende Fehler schnell scheitern. Entscheid den Fallback vorher: ein gecachter Wert, eine degradierte Antwort oder ein klarer Fehler statt eines hängenden Requests.
Warum Interviewer das fragen
Der Interviewer will wissen, ob dich eine Default-Konfiguration schon mal verbrannt hat. Zu benennen, dass manche Clients ewig warten, und dass ein geteilter Connection Pool plus ein langsamer Host der Weg ist, wie eine Abhängigkeit unbeteiligte Endpoints lahmlegt, zeigt operative Erfahrung. Nachfragen zielen darauf, wie du den Fehlerfall testest, was meist auf einen Fault-Injection-Proxy oder einen Stub mit verzögerten Antworten hinausläuft.
So baust du deine Antwort auf
- Setz jedes Timeout explizit und trau keinem Default.
- Isolier die Abhängigkeit mit einem eigenen begrenzten Connection Pool.
- Ergänze Retries nur, wo es sicher ist, mit Backoff und einem Circuit Breaker.
- Definier das degradierte Verhalten und implementier es.
Beispielantwort
Ich gehe von der Annahme aus, dass die Defaults falsch sind, denn mehrere Clients warten bei einem Read fröhlich ewig, und genau so wird aus einer langsamen Abhängigkeit ein Zustand, in dem jeder Thread meines Service geparkt ist. Also kurzes Connect-Timeout, ein Read-Timeout auf Basis ihrer tatsächlichen Latenzverteilung statt einer runden Zahl, und obendrauf ein Gesamt-Timeout für den Request, weil sich Retries und Redirects stapeln können. Dann Isolation: diese Abhängigkeit bekommt einen eigenen Connection Pool mit Maximum, damit sie bei Degradierung nicht die gesamte Kapazität frisst, die andere Calls brauchen. Retries nur bei idempotenten Operationen, gedeckelt auf zwei Versuche mit exponentiellem Backoff und Jitter, und ein Circuit Breaker davor, damit ich ab einer Fehlerrate über der Schwelle sofort scheitere und eine Abkühlphase abwarte, statt Requests auf etwas zu stapeln, das ohnehin schon kämpft. Das letzte Stück ist, was der Nutzer bekommt, und das wird vorher entschieden. Bei einer Integration für Versandkosten haben wir gecachte Tarife mit einer Veraltungsmarkierung ausgeliefert, statt den Checkout scheitern zu lassen, und damit wurde aus einem Ausfall beim Anbieter ein kleines Genauigkeitsproblem statt verlorener Bestellungen. Ich teste das mit einem Proxy, der Verzögerungen einbaut.
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 würdest du den Wert für das Read-Timeout wählen?
- Was ist Bulkheading, und wie passt es hier rein?
- Wie testest du, dass dein Fallback-Pfad tatsächlich funktioniert?
Weitere Fragen für Java-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