Собеседование на Data Engineer
Чем дата-инженер отличается от аналитика данных
Аналитик данных отвечает на вопросы бизнеса: считает метрики, строит дашборды, проверяет гипотезы. Дата-инженер создаёт инфраструктуру, благодаря которой аналитик вообще может работать с данными. Если аналитик — повар, то дата-инженер — тот, кто построил кухню, провёл воду и подключил газ.
На практике дата-инженер занимается тремя вещами:
Построение пайплайнов данных (ETL/ELT). Данные из десятков источников — базы данных, API, логи, очереди сообщений — нужно извлечь, трансформировать и загрузить в хранилище. Дата-инженер проектирует и поддерживает эти пайплайны: пишет код, настраивает оркестрацию, следит за качеством данных на каждом этапе.
Проектирование хранилищ данных. Data warehouse, data lake, lakehouse — дата-инженер выбирает архитектуру, проектирует схемы, оптимизирует хранение. Он решает, как партиционировать таблицы, какие форматы файлов использовать (Parquet, ORC, Avro), как обеспечить быстрый доступ к данным для аналитиков.
Обеспечение надёжности и масштабируемости. Пайплайн, который падает каждый день — бесполезен. Дата-инженер настраивает мониторинг, алерты, retry-логику, idempotent-обработку. Он думает о том, что произойдёт, когда данных станет в 10 раз больше.
Подробнее о разнице между ролями — в статье Типы аналитиков: отличия.
Этапы собеседования
Типичный процесс для дата-инженера — 3–5 этапов:
1. HR-скрининг. Мотивация, ожидания, общее понимание роли. Могут спросить: «Чем DE отличается от DA?», «С какими хранилищами работали?», «Какой стек у вашего текущего проекта?»
2. SQL-интервью. Отдельный этап, 45–60 минут. У дата-инженера проверяют не только аналитические запросы, но и знание DDL, оптимизации, работы с большими таблицами. Подробнее — ниже.
3. Python/код. Написать ETL-скрипт, разобрать задачу на обработку данных, работа с файлами и API. Могут попросить написать код на доске или в онлайн-редакторе.
4. System design. Спроектировать пайплайн данных для конкретной задачи: выбрать источники, трансформации, хранилище, оркестрацию, мониторинг.
5. Финальное интервью. Разговор с руководителем или командой о предыдущем опыте и культурном соответствии.
SQL: что спрашивают у дата-инженера
SQL на собеседовании дата-инженера принципиально отличается от SQL для аналитика. Аналитик пишет SELECT-запросы. Дата-инженер работает с полным циклом: создание таблиц, загрузка данных, оптимизация, миграции.
DDL и проектирование схем
На собеседовании могут попросить создать таблицу с нуля, объяснить выбор типов данных и ограничений:
CREATE TABLE events (
event_id BIGINT GENERATED ALWAYS AS IDENTITY,
user_id BIGINT NOT NULL,
event_type VARCHAR(50) NOT NULL,
payload JSONB,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
CONSTRAINT pk_events PRIMARY KEY (event_id)
);
CREATE INDEX idx_events_user ON events (user_id);
CREATE INDEX idx_events_created ON events (created_at);Частые вопросы: «Зачем TIMESTAMPTZ, а не TIMESTAMP?», «Когда использовать JSONB, а когда отдельные колонки?», «Как выбрать между BIGINT и UUID для первичного ключа?»
Партиционирование
Дата-инженер работает с таблицами на миллиарды строк. Без партиционирования запросы к таким таблицам будут выполняться часами.
CREATE TABLE events_partitioned (
event_id BIGINT,
user_id BIGINT NOT NULL,
event_type VARCHAR(50) NOT NULL,
created_at TIMESTAMPTZ NOT NULL
) PARTITION BY RANGE (created_at);
CREATE TABLE events_2026_01 PARTITION OF events_partitioned
FOR VALUES FROM ('2026-01-01') TO ('2026-02-01');На собеседовании спрашивают: «По какому полю партиционировать?», «Чем RANGE-партиционирование отличается от LIST и HASH?», «Как это влияет на план запроса?» Правильный ответ зависит от паттернов доступа к данным — универсального решения нет.
Оптимизация запросов
Дата-инженер должен уметь читать EXPLAIN ANALYZE и понимать, почему запрос медленный:
- Seq Scan vs Index Scan — когда планировщик выбирает полное сканирование и как этого избежать.
- Join-стратегии — Nested Loop, Hash Join, Merge Join. Когда какая эффективнее.
- Статистика и VACUUM — почему планировщик может выбрать неоптимальный план.
Типичная задача: «Запрос к таблице на 500 млн строк выполняется 40 минут. Что вы проверите?» Ожидаемый ход: проверить план выполнения, посмотреть наличие индексов, оценить селективность условий WHERE, проверить партиционирование, посмотреть статистику таблицы.
Базовые SQL-навыки (JOIN, GROUP BY, оконные функции) тоже проверяют — подготовиться можно в разделе SQL и подборке задач.
Python: ETL, Airflow, Spark
Обработка данных
На собеседовании дата-инженера Python — не про pandas и визуализацию. Это про надёжную обработку больших объёмов данных. Типичные задачи:
- Прочитать CSV/JSON-файл, трансформировать данные, загрузить в базу.
- Обработать данные потоково (без загрузки всего файла в память).
- Работа с API: пагинация, retry, rate limiting.
Пример задачи: «Напишите функцию, которая читает CSV-файл по чанкам и загружает данные в PostgreSQL, пропуская строки с невалидным email».
Apache Airflow
Airflow — стандарт оркестрации пайплайнов данных. На собеседовании проверяют:
- DAG, Task, Operator — базовые концепции. DAG — направленный ациклический граф задач. Task — отдельный шаг. Operator — тип задачи (PythonOperator, BashOperator, SqlOperator).
- Расписание и триггеры. Как настроить запуск по cron, по событию, по завершению другого DAG.
- Обработка ошибок. Retry, таймауты, алерты. Что произойдёт, если задача упала посреди выполнения?
- Идемпотентность. Если DAG запустить повторно за ту же дату — данные не должны задвоиться.
Частый вопрос: «Чем отличается backfill от обычного запуска?» Backfill — это запуск DAG за прошлые периоды, когда данные уже существуют, но пайплайн не был запущен.
Apache Spark (базовый уровень)
Не на всех собеседованиях спрашивают Spark, но для позиций middle+ это ожидаемый навык:
- RDD vs DataFrame vs Dataset — эволюция API. На практике все работают с DataFrame.
- Lazy evaluation — трансформации не выполняются, пока не вызвано действие (action).
- Партиционирование данных — как Spark распределяет данные по узлам кластера.
- Shuffle — самая дорогая операция. Когда происходит (JOIN, GROUP BY, repartition) и как минимизировать.
System design: проектирование пайплайнов
На кейс-интервью дата-инженеру дают задачу уровня: «Спроектируйте систему сбора и аналитики кликстрима для e-commerce с 10 млн пользователей в день».
Ожидаемая структура ответа:
- Источники данных. Веб-трекер, мобильный SDK, серверные логи. Формат событий, объём данных, частота.
- Ingestion. Kafka для потоковой загрузки. Почему Kafka, а не RabbitMQ? Kafka хранит данные, позволяет перечитывать, масштабируется горизонтально.
- Обработка. Spark Streaming или Flink для realtime-обработки. Batch-пайплайн на Airflow + Spark для ежедневных агрегаций.
- Хранилище. Raw-данные в S3 (data lake) в формате Parquet. Агрегированные данные — в ClickHouse или BigQuery для быстрых аналитических запросов.
- Качество данных. Валидация схемы на входе, проверки полноты после загрузки, мониторинг аномалий.
- Мониторинг. Алерты при задержке пайплайна, при росте ошибок, при отклонении объёма данных от нормы.
На собеседовании не нужно проектировать идеальную систему — нужно показать, что вы умеете декомпозировать задачу, выбирать технологии осознанно и думать о крайних случаях.
Как готовиться
SQL — приоритет номер один. Но готовьтесь не только к аналитическим запросам. Разберитесь в DDL, индексах, партиционировании, планах выполнения. Потренируйте написание запросов в SQL-тренажёре.
Python — не алгоритмы, а инженерные задачи. Потренируйтесь писать ETL-скрипты: чтение файлов, обработка ошибок, загрузка в базу. Если претендуете на middle+ — разберитесь с Airflow DAG на уровне написания с нуля.
System design — рисуйте пайплайны. Возьмите 3–4 реальных сценария (аналитика e-commerce, рекомендательная система, CRM-аналитика) и спроектируйте архитектуру данных от источника до дашборда. Продумайте, что сломается при росте нагрузки.
Разберитесь в форматах данных. Parquet vs CSV vs JSON vs Avro — когда что использовать, как это влияет на скорость чтения и размер хранения.
Если вы переходите из аналитики — у вас уже есть база в SQL и понимание данных. Осталось добрать инженерную часть: инфраструктуру, оркестрацию, оптимизацию. Подробнее о пути в аналитику — в статье Как стать аналитиком данных.
Читайте также
- Вопросы по SQL на собеседовании
- Задачи по SQL с собеседований
- Python для аналитика
- Типы аналитиков: отличия
- Подготовка к собеседованию аналитика
FAQ
Нужен ли дата-инженеру опыт в аналитике?
Не обязателен, но это сильное преимущество. Дата-инженер, который понимает, как аналитики используют данные, проектирует более удобные хранилища и пайплайны. Если вы переходите из аналитики в DE — подчёркивайте это на собеседовании, а не скрывайте.
Какой язык программирования учить — Python или Scala?
Python — стандарт индустрии для дата-инженерии. 90% вакансий требуют Python. Scala используется в командах, которые много работают со Spark, но даже там PySpark покрывает большинство задач. Начинайте с Python, Scala добавите позже, если понадобится.
Сколько времени нужно на подготовку?
Если у вас есть опыт в аналитике или разработке — 3–4 недели. Ключевые темы: SQL (DDL + оптимизация), Python (ETL-скрипты), Airflow (базовые концепции), основы system design. Если входите в область с нуля — 2–3 месяца с упором на SQL и Python.
Чем Data Engineer отличается от Backend-разработчика?
Backend-разработчик строит приложения, которые обслуживают пользователей в реальном времени: API, бизнес-логика, транзакции. Дата-инженер строит системы обработки данных: пайплайны, хранилища, трансформации. Backend думает о latency и user experience, DE — об объёмах данных, пропускной способности и консистентности. Технологии пересекаются (Python, SQL, Kafka), но задачи и метрики успеха — разные.
Потренируйтесь решать задачи для аналитиков — откройте тренажёр с SQL, Python и продуктовыми вопросами.