Interviewfrage für Site Reliability Engineer

Wie machst du einen Schreib-Endpoint sicher wiederholbar?

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

Kurzantwort

Gib dem Client einen Idempotency Key, speicher ihn zusammen mit dem Ergebnis des ersten erfolgreichen Schreibvorgangs und gib bei jeder Wiederholung dieses gespeicherte Ergebnis zurück. Erzwing Eindeutigkeit auf Datenbankebene, damit gleichzeitige Duplikate kollidieren statt doppelt zu schreiben. Scope die Keys pro Kunde, lass sie nach einem sinnvollen Zeitraum verfallen und nimm den natürlichen Business-Key wie eine Bestell-ID als Dedup-Anker, wann immer es einen gibt.

Warum Interviewer das fragen

Jede Retry-Policy ist ohne Idempotenz gefährlich, diese Frage testet also, ob du den Kreis schließt. Interviewer achten auf den Unique Constraint auf Datenbankebene, denn Prüfungen auf Anwendungsebene verlieren das Rennen bei Nebenläufigkeit. Starke Antworten behandeln auch den laufenden Fall: Was der zweite Request tun soll, während der erste noch läuft.

So baust du deine Antwort auf

  • Führ den Idempotency Key ein und sag, woher er kommt.
  • Speicher Key, Request-Fingerprint und Antwort gemeinsam in einer Transaktion.
  • Erzwing Eindeutigkeit in der Datenbank, damit Races laut scheitern.
  • Sag, was bei einer Wiederholung passiert, während der erste Aufruf noch läuft.
  • Erwähn Scoping und Ablauf der Keys.

Beispielantwort

Gesprochenes Beispiel, erste Person

Der Client erzeugt einen Idempotency Key, meist eine UUID, und schickt ihn als Header. Serverseitig halte ich eine Tabelle mit Kunden-ID plus diesem Key als Unique Constraint, und ich schreibe Key und Antwort in derselben Transaktion wie den fachlichen Schreibvorgang. Eine Wiederholung läuft dann in den Unique Constraint oder findet die gespeicherte Zeile und spielt einfach die ursprüngliche Antwort ab, Retries sind also gratis. Zwei Details zählen. Erstens muss die Eindeutigkeit in der Datenbank leben, denn wenn du erst ein select und dann ein insert machst, kommen zwei gleichzeitige Retries beide durch die Prüfung. Zweitens musst du entscheiden, was passiert, wenn der zweite Request eintrifft, während der erste noch läuft. Wir haben 409 mit einem Retry-After zurückgegeben statt zu blockieren, was unseren Connection Pool gesund gehalten hat. Ich speichere außerdem einen Hash des Request-Bodys, damit ein wiederverwendeter Key mit anderem Inhalt abgelehnt wird, statt still die falsche Antwort zu liefern.

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

  • Was gibst du zurück, wenn derselbe Key mit einem anderen Payload ankommt?
  • Wie lange würdest du Idempotency Keys aufbewahren, und warum?
  • Wie funktioniert das, wenn der Schreibvorgang zwei Services umspannt?

Weitere Fragen für Site Reliability Engineer

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