Data Engineering Interview Guide
SQL challenges, ETL design questions, data modeling exercises, and system design scenarios specific to data engineering roles.
📄 Product Preview
Try the interactive reader and demo tools below, or get the full product with all content unlocked.
📖 Interactive Reader (Free Preview) ⚙ Try Demo Tools 📦 Download Free Sample📁 File Structure 8 files
📖 Documentation Preview README excerpt
Data Engineering Interview Guide
110+ technical interview questions with detailed answers covering SQL, ETL pipelines, data modeling, system design, and big data tools — everything you need to land a data engineering role.
Whether you're targeting your first DE position or preparing for a senior/staff interview loop, this guide gives you real questions asked at top companies — with thorough answers, working SQL, ASCII architecture diagrams, and a structured 4-week study plan.
Table of Contents
- [What's Included](#whats-included)
- [How to Use This Guide](#how-to-use-this-guide)
- [File Index](#file-index)
- [Question Difficulty Breakdown](#question-difficulty-breakdown)
- [Tips for Interview Day](#tips-for-interview-day)
- [FAQ](#faq)
- [Support](#support)
- [License](#license)
What's Included
| Category | Count | Description |
|---|---|---|
| SQL Challenges | 22 | Joins, window functions, CTEs, aggregations, query optimization — with worked SQL solutions |
| ETL Pipeline Design | 22 | Batch vs streaming, idempotency, incremental loads, orchestration, backfills, data quality |
| Data Modeling | 22 | Star/snowflake schemas, SCDs, normalization, dimensional modeling, partitioning strategies |
| Data System Design | 20 | End-to-end system design walkthroughs with ASCII architecture diagrams |
| Big Data & Tools | 22 | Spark internals, Kafka, file formats, shuffle optimization, distributed processing tradeoffs |
| Study Plan | 1 | 4-week structured prep plan with daily topics and practice milestones |
| Total questions | 108 | Every question includes a detailed answer, key points, and optional follow-ups |
How to Use This Guide
For Interview Prep (recommended)
1. Start with the study plan (study-plan/data-engineering-study-plan.md) — it maps out a 4-week schedule with daily topics
2. Assess your level — skim each topic file and note which difficulty levels you struggle with
3. Work through weak areas first — if SQL window functions trip you up, drill questions/sql-challenges.md before moving to system design
4. Practice explaining answers out loud — reading the answer is not the same as articulating it under pressure
For Quick Reference
- Jump directly to any topic via the [File Index](#file-index) below
- Each file is self-contained — no need to read in order
- Use
Ctrl+F/Cmd+Fto search for specific concepts (e.g., "SCD Type 2", "broadcast join", "idempotent")
For Mock Interviews
1. Pick a random file and question number
2. Set a timer: 5 minutes for conceptual questions, 15 minutes for SQL/code, 25 minutes for system design
3. Answer without looking at the guide
4. Compare your answer against the provided answer and key points
5. Note gaps — those are your study priorities
... continues with setup instructions, usage examples, and more.
📄 Content Sample questions/big-data-and-tools.md
Big Data Tools & Distributed Systems
22 interview questions on Spark internals, Kafka, file formats, distributed processing, and storage — with detailed answers, code examples, and real-world performance context.
Questions
Q1. Explain the core components of Apache Spark's architecture. What roles do the driver, executors, tasks, and stages play?
Difficulty: Junior
Answer:
Spark uses a master-worker architecture built around four key abstractions:
┌──────────────────────────────────────────────────────┐
│ SPARK APPLICATION │
│ │
│ ┌────────────┐ ┌──────────────────────────┐ │
│ │ DRIVER │ │ CLUSTER MANAGER │ │
│ │ │◄──────►│ (YARN / K8s / Standalone)│ │
│ │ SparkContext│ └──────────────────────────┘ │
│ │ DAG Sched. │ │
│ │ Task Sched.│ ┌───────────┐ ┌───────────┐ │
│ └─────┬──────┘ │ EXECUTOR 1│ │ EXECUTOR 2│ │
│ │ │ ┌──┐ ┌──┐│ │ ┌──┐ ┌──┐ │ │
│ └──────────────►│ │T1│ │T2││ │ │T3│ │T4│ │ │
│ │ └──┘ └──┘│ │ └──┘ └──┘ │ │
│ │ Cache │ │ Cache │ │
│ └───────────┘ └───────────┘ │
└──────────────────────────────────────────────────────┘
Driver — The JVM process that runs your main() function. It creates the SparkContext, converts your logical plan into a physical DAG of stages and tasks, and coordinates execution across executors. The driver also collects results for actions like collect() or count().
Executors — Worker JVM processes launched on cluster nodes. Each executor runs tasks, stores cached data in memory/disk, and reports status back to the driver. Executors persist for the lifetime of the application.
Stages — The DAG scheduler divides a job into stages at shuffle boundaries. Within a single stage, all transformations can be pipelined (e.g., map → filter → map) without exchanging data between nodes.
Tasks — The smallest unit of work. Each task processes one partition of data within one stage. A stage with 200 partitions produces 200 tasks, distributed across available executor cores.
# Observing stages and tasks in practice
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("ArchitectureDemo").getOrCreate()
*... and much more in the full download.*