Interviewfrage für Backend-Entwickler

Erklär die Transaction Isolation Levels und welchen deine Datenbank standardmäßig verwendet.

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

Kurzantwort

Die vier Level sind read uncommitted, read committed, repeatable read und serializable, und sie tauschen Nebenläufigkeit gegen die Anomalien, die sie zulassen: Dirty Reads, Non-Repeatable Reads, Phantom Reads und Write Skew. PostgreSQL steht standardmäßig auf read committed, wo jedes Statement einen frischen Snapshot sieht; MySQL mit InnoDB steht standardmäßig auf repeatable read, wo die ganze Transaktion einen Snapshot sieht. Serializable ist das einzige Level, das garantiert, dass das Ergebnis irgendeiner seriellen Reihenfolge entspricht.

Warum Interviewer das fragen

Nebenläufigkeitsbugs in Backend-Systemen sind meistens Isolationsbugs, und sie zeigen sich erst unter Last, was sie teuer macht. Der Interviewer will wissen, ob du verstehst, was deine Datenbank tatsächlich garantiert, statt anzunehmen, eine Transaktion mache alles sicher. Den Default deiner Engine zu benennen und eine echte Anomalie zu beschreiben, etwa eine Guthabenprüfung, die zweimal durchgeht, zeigt, dass du das debuggt und nicht eine Tabelle auswendig gelernt hast.

So baust du deine Antwort auf

  • Zähl die Level auf und nenn jeweils die Anomalie, die sie beseitigen.
  • Nenn den Default der Datenbank, die du tatsächlich einsetzt.
  • Beschreib eine konkrete Anomalie, die dir passiert ist.
  • Sag, wie du sie behebst: höheres Isolation Level oder explizites Locking.

Beispielantwort

Gesprochenes Beispiel, erste Person

Sie gehen von read uncommitted bis serializable, und jeder Schritt beseitigt eine Anomalie, kostet aber Nebenläufigkeit. Read committed stoppt Dirty Reads, aber jedes Statement bekommt seinen eigenen Snapshot, dieselbe Query zweimal in einer Transaktion kann also unterschiedliche Zeilen liefern. Repeatable read fixiert einen Snapshot für die ganze Transaktion. Serializable garantiert zusätzlich, dass das Ergebnis äquivalent dazu ist, die Transaktionen nacheinander laufen zu lassen, was Postgres über Predicate Tracking löst, es blockiert also nicht, sondern kann eine Transaktion abbrechen, und du musst zum Retry bereit sein. Defaults sind wichtig: Postgres ist read committed, InnoDB ist repeatable read, was Leute beim Wechsel zwischen beiden überrascht. Der Bug, den ich wirklich hatte, war Write Skew auf einer Buchungstabelle: zwei Requests prüften jeweils, dass keine überlappende Reservierung existiert, beide sahen einen sauberen Snapshot, und beide haben eingefügt. Repeatable read half nicht, weil sie unterschiedliche Zeilen geschrieben haben. Wir haben es mit serializable plus Retry gelöst, später mit einem Exclusion Constraint, was billiger ist.

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 ist Write Skew, und warum lässt repeatable read das zu?
  • Wie gehst du im Anwendungscode mit Serialization Failures um?
  • Wann würdest du select for update nutzen, statt das Isolation Level anzuheben?

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