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

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

Junior · без опыта / до 1 года

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

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

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

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

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

1

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

Ответ

Структурированные имеют фиксированную схему и живут в строках и столбцах — таблица базы, CSV. Слабоструктурированные несут схему с собой и меняются от записи к записи — JSON, XML, Avro. Неструктурированные схемы не имеют вовсе: текст, изображения, звук. Различие определяет, где их можно хранить и как запрашивать, поэтому конвейер обычно переводит слабоструктурированный вход в колонковый формат до того, как его кто-то анализирует.

2

Чем GROUP BY отличается от PARTITION BY?

Ответ

GROUP BY схлопывает строки: вы получаете одну строку на группу и теряете детализацию. PARTITION BY внутри оконной функции сохраняет каждую строку и считает агрегат рядом с ней. Поэтому если нужен каждый заказ плюс сумма по клиенту, PARTITION BY даёт и то и другое за один проход, а GROUP BY заставляет присоединяться обратно к детализации.

3

Что такое оконная функция и чем она отличается от агрегатной?

Ответ

Агрегатная возвращает одно значение на группу; оконная возвращает значение для каждой строки, вычисленное по окну связанных строк. Обычные — ROW_NUMBER, RANK, LAG и накопительная SUM. Запрос ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY created_at DESC) нумерует заказы каждого клиента от свежего, и так берут последнюю строку в группе без самосоединения.

4

Чем WHERE отличается от HAVING?

Ответ

WHERE фильтрует строки до группировки, HAVING фильтрует группы после. Поэтому условие на обычный столбец место в WHERE, а условие на агрегат — в HAVING. Фильтр по обычному столбцу в HAVING сработает, но заставит движок сгруппировать строки, которые он потом выбросит, и на большой таблице это настоящие затраты.

5

Что такое индекс и когда он не помогает?

Ответ

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

6

Чем Data Lake отличается от Data Warehouse?

Ответ

Озеро хранит сырые данные в исходном виде и применяет схему при чтении; хранилище хранит смоделированные и очищенные данные со схемой, применённой при записи. Озеро дешевле и держит всё, включая то, о чьём использовании ещё не решили. Хранилище — то, что запрашивают аналитики. У большинства компаний есть оба, и хранилище питается из озера.

7

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

Ответ

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

🦎

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

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

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

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

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

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

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