Interviewfrage für Softwareentwickler

Was heißt es, wenn ein Endpoint idempotent ist, und wie machst du einen Create-Endpoint idempotent?

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

Kurzantwort

Ein idempotenter Endpoint liefert dasselbe Ergebnis, egal ob er einmal oder fünfmal mit derselben Eingabe aufgerufen wird. GET, PUT und DELETE sind von Natur aus idempotent, POST ist es nicht. Einen Create-Endpoint machst du idempotent, indem der Client einen eindeutigen Idempotency Key schickt, du diesen Key in derselben Transaktion wie die erzeugte Ressource speicherst und bei jeder Wiederholung das ursprüngliche Ergebnis zurückgibst.

Warum Interviewer das fragen

Retries sind überall: Clients wiederholen, Load Balancer wiederholen, Queues stellen erneut zu. Der Interviewer will wissen, ob du für At-least-once-Zustellung designst statt anzunehmen, dass jeder Request genau einmal ankommt. Er hört auf das Idempotency-Key-Muster, auf das Detail, dass Key und Write zusammen committen müssen, und auf das Bewusstsein für die Race Condition, wenn zwei identische Requests im selben Moment eintreffen.

So baust du deine Antwort auf

  • Definier Idempotenz über wiederholte Aufrufe, nicht über lesende Aufrufe.
  • Erklär, warum POST Hilfe braucht und PUT nicht.
  • Beschreib den Idempotency-Key-Ablauf von Anfang bis Ende.
  • Deck den Fall gleichzeitiger Duplikate mit einem Unique Constraint ab.

Beispielantwort

Gesprochenes Beispiel, erste Person

Idempotent heißt, zweimal aufrufen hinterlässt das System im selben Zustand wie einmal aufrufen. PUT ist idempotent, weil du den Endzustand angibst; POST ist es meistens nicht, weil jeder Aufruf mach noch eins bedeutet. Für einen Create-Endpoint lasse ich den Client einen Key erzeugen, typischerweise eine UUID, und ihn als Header schicken. Serverseitig lege ich diesen Key in einer Tabelle mit Unique Constraint ab, und ich schreibe ihn in derselben Transaktion wie die Ressource selbst, denn wenn diese beiden Commits auseinanderlaufen können, ist das ganze Verfahren Dekoration. Kommt derselbe Key noch mal, schlage ich ihn nach und gebe die ursprüngliche Antwort mit dem ursprünglichen Status zurück. Was viele übersehen, ist der gleichzeitige Fall, in dem zwei Retries in derselben Millisekunde landen. Der Unique Index löst das: Das zweite Insert schlägt fehl, ich fange die Verletzung ab und lese den Gewinner zurück, statt einen Fehler zu werfen. Ich habe das für einen Payment-Endpoint gebaut, nachdem wir jemanden bei einem Netzwerkaussetzer doppelt belastet hatten.

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 lange würdest du Idempotency Keys aufbewahren?
  • Welchen Statuscode gibst du bei einem wiederholten Request zurück?
  • Was, wenn der Retry denselben Key, aber einen anderen Body schickt?

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

Ü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