Interviewfrage für Data Engineer

Ist Exactly-once-Delivery in Kafka tatsächlich möglich, und wie würdest du es in der Praxis erreichen?

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

Kurzantwort

Exactly-once-Delivery über ein Netzwerk ist nicht möglich, Exactly-once-Processing schon, in Grenzen. Kafka gibt dir einen idempotenten Producer plus Transaktionen, sodass ein Read-Process-Write-Zyklus innerhalb von Kafka Offsets und Output atomar committet. End-to-end muss der Sink trotzdem mitspielen, entweder über einen transaktionalen Write oder ein idempotentes Upsert auf einem stabilen Key. In der Praxis landen die meisten Teams bei At-least-once plus idempotenten Sinks.

Warum Interviewer das fragen

Das ist ein Tiefencheck auf verteiltes Denken. Schwache Antworten sagen enable.idempotence gleich true und hören da auf. Interviewer wollen die Unterscheidung zwischen Delivery und Processing hören, die Reichweitengrenze von Kafka-Transaktionen (sie decken nur Kafka-Topics und Consumer-Offsets ab) und die pragmatische Realität, dass idempotente Sinks das sind, was eine Pipeline end-to-end tatsächlich korrekt macht.

So baust du deine Antwort auf

  • Trenn Exactly-once-Delivery von Exactly-once-Processing.
  • Erklär den idempotenten Producer und welches Duplikat er entfernt.
  • Beschreib Transaktionen, die Output plus Offset-Commit atomar abdecken.
  • Nenn die Grenze: externe Sinks liegen außerhalb der Transaktion.
  • Lande bei At-least-once plus idempotenten Writes als praktischer Antwort.

Beispielantwort

Gesprochenes Beispiel, erste Person

Streng genommen nein. Du kannst Exactly-once-Delivery über ein unzuverlässiges Netzwerk nicht garantieren, weil ein Acknowledgment immer verloren gehen kann und der Sender zwischen erneut senden und verwerfen wählen muss. Was Kafka dir gibt, ist Exactly-once-Processing innerhalb von Kafka. Der idempotente Producer hängt eine Producer-ID und eine Sequenznummer an, sodass ein wiederholter Send kein Duplikat auf der Partition erzeugt, und Transaktionen erlauben dir, Output-Records und Consumer-Offsets atomar zu committen, sodass eine Read-Process-Write-Topologie bei Fehlern nicht doppelt zählt. Die Grenze ist die Reichweite. Sobald du nach Postgres oder S3 schreibst, liegt dieser Write außerhalb der Transaktion. Was ich also tatsächlich baue, ist At-least-once-Delivery mit idempotentem Sink, meist ein Merge auf einer Event-ID oder einem natürlichen Schlüssel. In einer Clickstream-Pipeline haben wir auf event_id mit einem Fenster von sieben Tagen dedupliziert, was billiger und leichter zu durchdenken war, als jeden Hop transaktional machen zu wollen.

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 macht transactional.id und warum ist das beim Neustart wichtig?
  • Wie würdest du einen Stream ohne unbegrenzten State deduplizieren?
  • Was kostet das Aktivieren von Transaktionen an Performance?

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