Подборка вопросов

Вопросы по Kafka

Топики и партиции, producer и consumer, репликация, гарантии доставки.

42вопроса
8Junior
19Middle
15Senior
  1. 01Чем Kafka принципиально отличается от RabbitMQ?

    Kafka — распределённый журнал: сообщения хранятся заданное время независимо от чтения, потребители сами двигают offset и могут перечитать. RabbitMQ — классический брокер очередей…

    Middle
  2. 02Как на стороне consumer-а добиться доставки at-least-once и почему при этом появляются дубли?

    Сначала обработать, потом зафиксировать offset (или подтвердить сообщение). Если упасть между обработкой и фиксацией, сообщение придёт снова — отсюда дубли, и обработка должна…

    Middle
  3. 03Как consumer group в Kafka масштабирует потребление?

    Партиции топика делятся между участниками группы: каждая партиция в группе читается ровно одним потребителем. Добавили потребителя — партиции перераспределились.

    Middle
  4. 04Чем отличаются at-most-once, at-least-once и exactly-once?

    At-most-once — не повторяем: возможны потери, дублей нет. At-least-once — повторяем до подтверждения: потерь нет, дубли возможны. Exactly-once — эффект ровно один раз: достигается…

    Middle
  5. 05Что такое topic, partition и offset в Kafka?

    Топик — именованный поток сообщений. Партиция — упорядоченный журнал, часть топика. Offset — номер сообщения внутри партиции.

    Junior
  6. 06Какая гарантия порядка в Kafka является базовой?

    Kafka гарантирует порядок только внутри партиции. Чтобы события одного заказа шли по порядку, у них должен быть одинаковый ключ (order_id) — тогда они попадут в одну партицию.

    Middle
  7. 07Что произойдёт, если потребителей в consumer group больше, чем партиций в топике?

    Лишние потребители простаивают: одна партиция в группе читается только одним потребителем, поэтому параллелизм группы не больше числа партиций.

    Senior
  8. 08Когда стоит выбирать Kafka?

    Kafka — когда нужны журнал событий с хранением и перечитыванием, большая пропускная способность, много независимых потребителей одного потока и порядок по ключу.

    Middle
  9. 09Какие основные компоненты Kafka?

    Брокеры хранят партиции и обслуживают клиентов; клиенты — продюсеры и потребители; контроллер управляет метаданными кластера и выборами лидеров партиций — с Kafka 3.3+ на KRaft…

    Middle
  10. 10Как Kafka producer выбирает партицию для сообщения?

    С ключом — партиция = murmur2(key) % число партиций: одинаковый ключ — всегда одна партиция и порядок. Без ключа — sticky partitioner: пачка уходит в одну партицию, следующая — в…

    Middle
  11. 11Что означают acks=0, acks=1 и acks=all у Kafka producer?

    acks=0 — не ждём подтверждения: максимум скорости, потери возможны. acks=1 — ждём запись лидером: потеря при падении лидера до репликации. acks=all — ждём все синхронные реплики…

    Senior
  12. 12Что даёт идемпотентный Kafka producer (enable.idempotence=true)?

    Продюсер получает producer id, нумерует пакеты по партициям; брокер отбрасывает повтор с уже записанным номером и не допускает пропусков. Дубли из-за повторов и перестановки…

    Senior
  13. 13Чем commitSync() отличается от commitAsync() у Kafka consumer?

    commitSync блокирует и повторяет до успеха или неустранимой ошибки — надёжно, но медленнее. commitAsync не ждёт и не повторяет — быстро, но ошибки нужно обрабатывать в callback.

    Senior
  14. 14Что делает настройка auto.offset.reset=earliest?

    auto.offset.reset действует, только когда у группы нет сохранённого offset (новая группа или offset удалён по сроку). earliest — читать с самого раннего доступного, latest …

    Middle
  15. 15Что такое Kafka rebalance и почему он опасен для обработки сообщений?

    Ребаланс — перераспределение партиций при входе или выходе участника группы. При eager-протоколе все отдают партиции и ждут нового назначения — обработка стоит; незакоммиченная…

    Senior
  16. 16Чем Kafka Streams отличается от обычного Kafka Consumer?

    Consumer API — низкоуровневое чтение: опрос, коммит, обработка вручную. Kafka Streams — библиотека потоковой обработки поверх Kafka: преобразования, агрегации, соединения потоков…

    Senior
  17. 17Зачем нужна Schema Registry в Kafka-экосистеме?

    Schema Registry хранит версии схем сообщений (Avro, Protobuf, JSON Schema) и проверяет совместимость новых версий. Сообщение несёт id схемы, а не саму схему.

    Middle
  18. 18Что вы выберете для очереди фоновых задач, а что для шины событий между сервисами — RabbitMQ или Kafka?

    Очередь задач — RabbitMQ (или SQS): подтверждение каждого сообщения, повторы, DLX, приоритеты, отложенная доставка, медленная задача не блокирует остальные. Шина событий — Kafka…

    Middle
  19. 19Что такое ISR (in-sync replicas) в Kafka и какую роль он играет?

    ISR — реплики партиции, которые не отстали от лидера дольше replica.lag.time.max.ms. Подтверждение acks=all ждёт ISR, а новым лидером может стать только реплика из ISR.

    Middle
  20. 20Как min.insync.replicas работает вместе с acks=all?

    min.insync.replicas — минимум реплик в ISR, при котором брокер принимает запись с acks=all. Если синхронных реплик меньше — продюсер получает ошибку NotEnoughReplicas.

    Senior
  21. 21Что такое high watermark в Kafka и как он связан с видимостью сообщений для consumer-а?

    High watermark — offset, до которого запись реплицирована на все реплики ISR. Потребители видят сообщения только до него: иначе прочитали бы данные, которые могут исчезнуть при…

    Middle
  22. 22Чем опасен unclean leader election (unclean.leader.election.enable=true) в Kafka?

    Разрешает стать лидером отставшей реплике вне ISR, когда все реплики ISR недоступны. Партиция снова доступна, но подтверждённые сообщения теряются, а потребители могут увидеть…

    Middle
  23. 23Чем session.timeout.ms отличается от max.poll.interval.ms у Kafka consumer-а?

    session.timeout.ms — сколько ждать heartbeat от фонового потока: ловит «мёртвый» процесс. max.poll.interval.ms — максимум времени между вызовами poll(): ловит «живой, но…

    Senior
  24. 24Producer настроен с retries и несколькими запросами в полёте одновременно. Чем это грозит порядку сообщений и как решается?

    С несколькими запросами в полёте пакет 1 может упасть и уйти на повтор, а пакет 2 уже записан — порядок нарушен. Идемпотентный продюсер сохраняет порядок при max.in.flight ≤ 5 за…

    Senior
  25. 25Чем неблокирующий повтор через отдельные retry-топики лучше повтора прямо в обработчике?

    Блокирующий повтор в обработчике держит партицию: одно проблемное сообщение задерживает все следующие. Retry-топики уносят сообщение на повтор с задержкой, а партиция продолжает…

    Senior
  26. 26Что делает log compaction в Kafka и для чего применяется?

    Compaction удаляет старые записи по ключу, оставляя последнее значение каждого ключа. Топик становится снимком состояния, который можно перечитать и восстановить.

    Middle
  27. 27Зачем нужен Kafka Connect, если те же данные можно перекладывать своим сервисом?

    Kafka Connect — платформа для типовых интеграций: source-коннекторы из баз и систем в Kafka, sink-коннекторы из Kafka в хранилища. Масштабирование, хранение позиций, перезапуск и…

    Middle
  28. 28Consumer lag стабильно растёт. Что это означает и с чего начать разбор?

    Lag растёт — потребление медленнее производства. Разбор: всплеск входящего потока или замедление обработки; все партиции или одна (горячий ключ); ребалансы и повторы.

    Middle
  29. 29Что произойдёт с гарантией порядка при увеличении числа партиций в существующем топике?

    Партиция для ключа — hash(key) % N. Сменили N — новые сообщения ключа идут в другую партицию, а старые ещё могут обрабатываться: порядок по ключу на переходе нарушается.

    Senior
  30. 30Что такое offset в Kafka?

    Offset — порядковый номер записи в партиции. По нему потребитель знает, что уже прочитал: группа фиксирует offset в служебном топике __consumer_offsets.

    Junior
  31. 31Что делает producer в системе обмена сообщениями?

    Продюсер отправляет записи в топик. Получателей он не знает и обработки не ждёт — только подтверждения записи брокером.

    Junior
  32. 32Зачем потребителей объединяют в consumer group?

    Группа потребителей делит партиции топика между участниками: каждое сообщение обрабатывается одним участником группы.

    Junior
  33. 33Зачем партиции реплицируются между брокерами?

    Копии партиции на других брокерах защищают от потери данных и недоступности при падении брокера: лидером становится реплика из ISR.

    Junior
  34. 34Для чего нужна Schema Registry?

    Schema Registry — централизованное хранилище схем сообщений с проверкой совместимости: контракт между производителем и потребителями проверяется автоматически.

    Junior
  35. 35Что показывает метрика consumer lag?

    Lag — разница между последним записанным offset и зафиксированным группой: сколько сообщений ещё не обработано. Главный показатель здоровья потребителя.

    Junior
  36. 36Что такое zero-copy и почему Kafka так быстро отдаёт данные?

    Обычная отдача файла: диск → page cache → буфер приложения → буфер сокета → сеть: 4 копирования и 4 переключения режима. sendfile передаёт данные из page cache в сокет внутри ядра…

    Senior
  37. 37Что важно задавать при отправке через KafkaTemplate?

    Задавать ключ (порядок и партиция по сущности), сериализатор и формат, обрабатывать результат отправки — она асинхронная; для надёжности — acks=all и идемпотентный продюсер (по…

    Middle
  38. 38Как @KafkaListener связан с listener container и offset commit?

    @KafkaListener — метод, который вызывает listener container: контейнер крутит цикл poll() в своих потоках, вызывает метод для записей и коммитит offset по AckMode. По умолчанию…

    Senior
  39. 39Как в Spring Kafka обычно строят retry и dead letter topic?

    Два способа: блокирующий — DefaultErrorHandler с BackOff и DeadLetterPublishingRecoverer (повторы на месте, партиция ждёт); неблокирующий — @RetryableTopic: запись уходит в…

    Senior
  40. 40Когда в Spring выбрать AMQP/RabbitMQ, а когда Kafka?

    RabbitMQ (Spring AMQP) — очередь задач: подтверждение каждого сообщения, гибкая маршрутизация, приоритеты, отложенная доставка, задачи разной длительности. Kafka (Spring Kafka) …

    Senior
  41. 41У топика 6 партиций. Что даст параметр concurrency = 3 у @KafkaListener и что произойдёт при concurrency = 10?

    concurrency = 3 — три потребителя в группе внутри экземпляра, по 2 партиции на каждого. При concurrency = 10 и 6 партициях 4 потребителя простаивают: партиция в группе читается…

    Middle
  42. 42Что делает аннотация @KafkaListener?

    @KafkaListener(topics = "orders", groupId = "billing") объявляет обработчик: цикл poll(), десериализацию, вызов метода и коммит offset берёт на себя контейнер Spring Kafka.

    Junior
Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования