Перейти к содержимому
На этой странице

Потоковая обработка данных

Все темы Data Engineer

Как поверх at-least-once избежать повторного эффекта?

At-least-once допускает повтор после сбоя между эффектом и подтверждением. Повторный эффект убирают устойчивым event ID и атомарным INSERT ... ON CONFLICT, dedup-таблицей либо идемпотентным upsert. Offset или checkpoint фиксируют вместе с результатом, если sink поддерживает общую транзакцию; иначе нужна согласованная recovery-схема. Kafka transactions дают exactly-once для Kafka-to-Kafka, но не делают произвольный внешний API транзакционным. Гарантию формулируют вместе с границей состояния, источником, sink и поведением при восстановлении после сбоя.


Как Kafka распределяет партиции внутри consumer group?

Внутри одной consumer group каждая partition в данный момент назначена не более чем одному consumer, а один consumer может читать несколько partitions. Поэтому параллелизм группы ограничен числом partitions; лишние consumers простаивают. Порядок Kafka гарантирует только внутри partition. Вступление, выход или сбой участника вызывает rebalance, поэтому обработчик должен корректно завершить работу, зафиксировать offset и пережить повторную доставку. Гарантию формулируют вместе с границей состояния, источником, sink и поведением при восстановлении после сбоя.


Как устроены event-time окна и watermark?

Tumbling windows не пересекаются, sliding могут перекрываться, session объединяют события до разрыва активности. Окна считают по event time из события, а watermark выражает оценку, насколько далеко поток продвинулся, и позволяет закрывать окна и очищать state. Allowed lateness определяет обработку опоздавших событий до этой границы. События за watermark могут быть отброшены, обновлены или отправлены отдельно, в зависимости от engine и output mode.


Что ограничивает join двух потоков?

Stream-stream join требует ключа и конечной временной связи, например событие B в пределах часа от A. Без границы движок вынужден бесконечно хранить прошлые строки. Event-time constraints и watermarks позволяют удалить state, когда совпадение уже считается невозможным. Цена зависит от cardinality ключей, skew и lateness. Очень поздние события могут не соединиться, поэтому нужен отдельный путь или более широкий state с большей стоимостью.


Чем micro-batch отличается от record-at-a-time streaming?

Micro-batch накапливает события за короткий интервал и запускает пакетный план, обычно получая высокий throughput и задержку не ниже длительности триггера и обработки. Record-at-a-time engine продвигает каждое событие непрерывно и может дать меньшую latency, но имеет другую стоимость планирования и checkpoint. Гарантии при сбое определяются источником, state и sink, а не одним названием модели. Гарантию формулируют вместе с границей состояния, источником, sink и поведением при восстановлении после сбоя.


Что нужно Kafka для безопасной работы в Kubernetes?

Broker требует стабильную identity, persistent volume и корректные advertised listeners; обычно это оформляет operator или StatefulSet-подобное управление. Реплики разносят anti-affinity по nodes и zones, задают disruption budget и аккуратный rolling update. Requests и limits учитывают page cache и disk throughput. Мониторят ISR, under-replicated partitions, controller, disk, request latency и consumer lag; один Kubernetes restart не должен уничтожать единственную копию данных.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

Эти вопросы встречались нам на реальных собеседованиях в 2025 году. Мы регулярно проходим собеседования и пополняем подборку новыми вопросами. Основы профессии и ключевые технологии остаются востребованными годами, а детали конкретных инструментов и версий стоит сверять с текущей документацией.

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: Data Engineer, ETL-разработчик. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.