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++