P
prepair.app
Пройти интервью →
EnglishУкраїнськаРусскийDeutsch
🗄️

Middle Data EngineerВопросы на собеседовании data engineer

Middle · 2–4 года опыта

Собеседование дата-инженера сильно опирается на SQL и на то, переживут ли ваши пайплайны запуск дважды, с опозданием или не по порядку. Будут и вопросы по моделированию, где нет единственно верного ответа. Ниже — вопросы, которые задают чаще всего, каждый с эталонным ответом. Middle: более глубокое понимание, оптимизацию и реальные рабочие ситуации.

Попробовать — без регистрации
Готовим вопрос…

Темы для подготовки

Продвинутый SQL
Моделирование данных и хранилища
ETL против ELT и оркестрация
Spark и распределённая обработка
Стриминг и Kafka
Качество данных

7 вопросов уровня Middle с ответами

1

Чем строчные форматы отличаются от колонковых?

Ответ

Строчные вроде CSV или Avro хранят запись целиком, что удобно для записи и чтения записей полностью. Колонковые вроде Parquet и ORC хранят вместе каждый столбец, поэтому запрос, трогающий три столбца из пятидесяти, читает только эти три. Колонковые к тому же куда лучше сжимаются, потому что в столбце лежат похожие значения. Плата — дорогая запись одной строки, поэтому колонковые для аналитики, а не для транзакций.

2

Что значит идемпотентность batch-джобы и как сделать идемпотентной вставку?

Ответ

Идемпотентность означает, что второй запуск оставляет тот же результат, что и первый, — а это важно, потому что повторы случаются: от планировщика, от сбоя, от человека. Для вставки обычные ответы — merge или upsert по бизнес-ключу, удаление целевой партиции перед записью, либо уникальное ограничение, из-за которого дубль падает безвредно. Обычный INSERT в повторённой джобе молча удваивает данные.

3

Чем схема «звезда» отличается от «снежинки»?

Ответ

В звезде измерения денормализованы в одиночные таблицы, присоединённые прямо к факту. В снежинке измерения нормализованы в дополнительные таблицы. Звезде нужно меньше соединений и она быстрее в запросах; снежинка экономит место и избегает аномалий обновления. Аналитика обычно выбирает звезду, потому что место дёшево, а время аналитика нет.

4

Что такое ленивые вычисления в Spark и чем трансформация отличается от действия?

Ответ

Трансформации — map, filter, join — строят план и не выполняют ничего. Действие — count, collect, write — запускает весь план. Ленивость позволяет оптимизатору увидеть всю цепочку и переставить её, протолкнув фильтры вниз и схлопнув шаги. Практическое следствие: замер времени трансформации не измеряет ничего, а ошибка, которую вы ждали на третьей строке, появляется на действии.

5

Чем широкая зависимость отличается от узкой и почему это важно?

Ответ

При узкой зависимости каждая входная партиция питает одну выходную — map или filter, вычислимые на том же узле, где лежат данные. Широкая требует данных из многих партиций, а значит shuffle по сети. Shuffle определяет время большинства джоб, поэтому groupBy или join — первое, куда смотрят, когда что-то медленно.

6

Когда применять broadcast join?

Ответ

Когда одна сторона достаточно мала, чтобы поместиться в память каждого исполнителя, — таблица измерений против большой таблицы фактов. Её рассылка убирает shuffle целиком, а это обычно разница между минутами и часами. Ограничение — память: разошлёте слишком большое, и заплатит каждый исполнитель, поэтому порог лучше знать, а не угадывать.

7

Что такое Change Data Capture и когда он вместо полной перезаливки?

Ответ

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

🦎

Прочитать ответы недостаточно

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

Пройти интервью Middle Data Engineer →
Бесплатно · 3 интервью в месяц

Другие уровни — Data Engineer

Junior Data EngineerSenior Data EngineerВсе вопросы Data Engineer

Другие специализации

🔍Middle QA Manual🤖Middle QA AutomationMiddle Java Backend🐍Middle Python Backend🐘Middle PHP Backend🦫Middle Go Backend🟢Middle Node.js Backend💎Middle Ruby on Rails🟣Middle .NET Backend Developer🔷Middle C++