Interviewfrage für Java-Entwickler

Dein Service ruft eine Drittanbieter-API auf, die gelegentlich langsam wird. Wie konfigurierst du den Client, damit dich das nicht mit runterzieht?

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

Kurzantwort

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

Gesprochenes Beispiel, erste Person

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 es

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

Ü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