Interviewfrage für Backend-Entwickler

Deine API liefert unter Last Timeouts, aber die Datenbank-CPU ist niedrig und die Queries sehen schnell aus. Wo schaust du hin?

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

Kurzantwort

Diese Kombination deutet auf einen erschöpften Connection Pool oder ein ähnliches Concurrency-Limit hin, nicht auf eine langsame Datenbank. Prüf die Wartezeit im Pool und aktive gegen idle Verbindungen: Requests stehen für eine Verbindung an, während jeder Halter sie zu lange behält, oft wegen eines langsamen externen Aufrufs innerhalb einer Transaktion, eines fehlenden Timeouts oder einer geleakten Verbindung, die nie zurückgegeben wird. Behe zuerst die Haltezeit, dann dimensionier den Pool bewusst.

Warum Interviewer das fragen

Es ist ein realistischer Incident, bei dem die naheliegende Metrik gesund aussieht, es testet also, ob du über den gesamten Request-Pfad nachdenkst. Der Interviewer will das Anstehen an einer Ressource hören, die Gefahr von Netzwerkaufrufen innerhalb einer Transaktion, und warum ein größerer Pool oft der falsche Fix ist. Zu wissen, dass sich die Poolgröße an der Kapazität der Datenbank orientieren sollte und nicht an der Anzahl der Instanzen, zeigt echte Betriebserfahrung.

So baust du deine Antwort auf

  • Formulier das Symptom um: Warten auf eine Ressource, nicht langsame Queries.
  • Nenn die Metriken, die es bestätigen: Poolwartezeit, aktive Verbindungen, Sättigung.
  • Zähl die üblichen Ursachen für langes Halten von Verbindungen auf.
  • Erklär, wie du den Pool dimensionierst und was passiert, wenn du ihn einfach hochsetzt.

Beispielantwort

Gesprochenes Beispiel, erste Person

Schnelle Queries plus langsame Requests heißt, die Zeit geht fürs Warten auf irgendetwas drauf, und der Pool ist der übliche Verdächtige. Ich würde mir die Poolwartezeit ansehen und wie lange Verbindungen gehalten werden, dazu auf Datenbankseite die Zahl der aktiven gegen die idle-in-transaction-Sessions. Ein Haufen idle in transaction ist der Verräter: irgendetwas hat eine Transaktion geöffnet und dann Arbeit gemacht, die keine Datenbankarbeit ist. Das ist fast immer die Ursache, ein HTTP-Aufruf zu einem Payment-Provider oder ein langsamer Serialisierungsschritt mitten in einer Transaktion, jeder Request hält also eine Sekunde lang eine Verbindung statt fünf Millisekunden, und der Pool läuft bei einem Bruchteil des Traffics leer. Der Fix ist, den kritischen Abschnitt zu verkürzen: den externen Aufruf vor oder nach die Transaktion legen, Statement- und Transaktions-Timeouts setzen und sicherstellen, dass jeder Pfad seine Verbindung auch im Fehlerfall zurückgibt. Erst danach fasse ich die Größe an, und vorsichtig, weil jede Instanz sie multipliziert. Den Pool zu erhöhen, ohne die Haltezeit zu beheben, verschiebt die Warteschlange nur auf die Datenbank und macht aus einem langsamen Endpoint einen globalen Ausfall.

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 die richtige Poolgröße für zehn Anwendungsinstanzen bestimmen?
  • Was bedeutet idle in transaction, und wie erwischst du es früh?
  • Wo hilft ein Connection-Proxy, und was löst er nicht?

Weitere Fragen für Backend-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