Data Engineering Interview Questions: Data Lakes, Lakehouses & Medallion Architecture
Reviewed by Mark Dickie · Last updated
8 questions on this page you can answer and see marked on the spot. Go to the first one
Medallion architecture is a data design pattern that organizes data in a lakehouse into bronze, silver, and gold layers, each progressively more refined and trusted. For an interview, expect questions on how a data lake differs from a data warehouse and a lakehouse, why the medallion pattern exists, and what happens at each layer. You should be able to explain the trade-offs of schema-on-read versus schema-on-write, where Delta Lake or Apache Iceberg fit in, and when a lakehouse replaces a traditional warehouse setup.
What is the difference between a data lake, a data warehouse, and a lakehouse?
| Concept | What it is | Key trade-off |
|---|---|---|
| Data lake | Centralized store for raw data in any format, schema applied on read | Flexible ingestion, but hard to guarantee data quality |
| Data warehouse | Structured store with schema-on-write, optimized for SQL analytics | Strong consistency and performance, but rigid and costly to scale |
| Lakehouse | Open-table format (Delta, Iceberg, Hudi) over object storage, combining lake storage with warehouse-style transactions | ACID and schema enforcement on cheap storage, but adds engine complexity |
How do the medallion layers work?
- Bronze: raw, untransformed data landed from source systems, retaining the original format and history for reprocessing.
- Silver: cleaned and conformed data with duplicates removed, types enforced, and business rules applied.
- Gold: curated, aggregated data shaped for analytics and reporting, often star-schema or aggregate tables consumed by BI tools.
When should you choose a lakehouse over a data warehouse?
A lakehouse makes sense when your workloads span batch, streaming, and machine learning on the same storage, or when object-storage economics matter at petabyte scale. A warehouse is still the stronger pick when you need mature BI tooling and a mostly-SQL user base with strict workload isolation.
Key facts
- Tarmac's Data Engineering interview questions cover 19 questions at difficulty 1–5 of 5.
- Tarmac tracked 1,538 job postings asking for Data Engineering in September 2026.
- Roles asking for Data Engineering advertise a median base salary of £77,500, across 380 job postings as of September 2026.
- Tarmac last reviewed these Data Engineering interview questions on 14 October 2026.
At a glance
| Questions | 19 |
|---|---|
| Difficulty | 1–5 of 5 |
| Formats | Multiple choice, Fill in the blank, Short answer, Ordering, Multiple answer, Find the bug |
What you'll review
- data lake lakehouse
- medallion architecture de
Practice questions
Try one before you open the answer. Pick an option and press Check; it's marked on the spot.
A data lakehouse architecture combines key characteristics of which two data storage paradigms?#
Options
Show answer
A data lakehouse combines the data lake and the data warehouse. It brings warehouse features such as ACID transactions, schema enforcement, and fast SQL querying onto low-cost, open-format lake storage like Parquet or ORC, so data does not have to be copied between a lake and a separate warehouse.
A data lakehouse merges the data lake and the data warehouse. From the data lake it takes open-format, low-cost, scalable storage for structured, semi-structured, and unstructured data; from the data warehouse it takes ACID transactions, schema enforcement, and optimized query performance. The OLTP database and key-value store pairing, the message queue and stream processor pairing, and the data mart and operational data store pairing are not the paradigms a lakehouse is built from.
In a medallion architecture, which layer holds raw, unprocessed data landed directly from source systems in its original format?#
Options
Show answer
The Bronze layer holds raw, unprocessed data landed from source systems in its original format in a medallion architecture. It is the first landing zone and preserves the original schema and payload for traceability. The Silver layer cleanses and deduplicates that data, and the Gold layer holds business-level aggregates.
In the medallion architecture pattern, the Bronze layer is the first landing zone: it ingests data from source systems in its raw, untransformed form, preserving the original schema and payload for traceability. The Silver layer applies cleansing, deduplication, and conforming, and the Gold layer curates business-level aggregates and reporting-ready tables, so neither the Silver layer nor the Gold layer is the raw landing zone.
In the medallion architecture, the three data layers from lowest to highest refinement are _____, _____, and _____.#
Show answer
In the medallion architecture, the three data layers from lowest to highest refinement are Bronze, Silver, and Gold.
The medallion architecture names its three layers Bronze (raw landing zone), Silver (cleansed and conformed), and Gold (curated, business-level aggregates). Filling the blanks in that order gives Bronze, Silver, Gold, which runs from least to most refined.
A data lakehouse combines the flexibility of a data lake with the management features of a data warehouse. Which architectural component is responsible for enabling ACID transactions on data stored in object storage (e.g., S3) in a lakehouse architecture?#
Options
Show answer
A transactional metadata layer, such as Delta Lake, Apache Iceberg, or Apache Hudi, provides ACID transactions for data in object storage. It keeps commit logs and file-version tracking, which give atomic commits and snapshot isolation. Parquet files, replication, and query optimizers do not provide transactions on their own.
In a lakehouse, the data files sit on cheap object storage as Parquet or similar files, and object storage alone offers no multi-file transactions. What adds ACID guarantees is a transactional metadata layer such as Delta Lake, Apache Iceberg, or Apache Hudi, which maintains commit logs, file-version tracking, and snapshot isolation so that readers and writers are isolated and commits are atomic. A columnar file format like Parquet only defines how bytes are laid out within a file, replication only provides durability, and a query optimizer only chooses execution plans, so none of those three provides transactions.
In a data lakehouse built on object storage (e.g., S3), what single architectural component enables ACID transactions on otherwise immutable Parquet files? Name the component and briefly describe what it tracks.#
Show answer
A transactional metadata layer, such as Delta Lake, Apache Iceberg, or Apache Hudi. It maintains a commit log (transaction log) and snapshot metadata that records which Parquet files belong to each table version, so commits are atomic and readers see consistent snapshots.
Object storage is immutable at the object level and provides no multi-object transactional guarantees, and Parquet is only a file format. The component that provides ACID behavior is a transactional metadata layer (Delta Lake, Apache Iceberg, or Apache Hudi) that keeps a commit log and snapshot metadata mapping each table version to its set of data files. New commits are added atomically, which gives snapshot isolation and rollback. Neither the storage layer nor the Parquet format alone provides these properties.
In a medallion architecture for a data lakehouse, what is the primary purpose of the Silver layer?#
Show answer
The Silver layer holds cleansed, conformed, and integrated data. It is typically Bronze data that has been deduplicated, type-cast, and joined with reference dimensions, so it is ready for downstream analytics and for Gold-layer aggregation.
Bronze stores raw data as landed from the source with minimal transformation. Silver applies cleansing, deduplication, schema conformance, and integration across sources. Gold holds curated, business-level aggregates and metrics. The Silver layer's defining job is to produce a clean, conformed, enterprise-ready dataset, not raw landing data or final business aggregates.
Order these data assets by their progression through a medallion architecture pipeline, from earliest (closest to the source system) to latest (closest to the business consumer).#
Put these in order
Show answer
In a medallion architecture, data progresses from raw Kafka events (Bronze), to deduplicated, type-cast records joined with a user dimension (Silver), to daily active user counts by region (Gold). Bronze lands data untouched, Silver cleanses and conforms it, and Gold aggregates it into business metrics.
In a medallion architecture, data flows from Bronze (raw landing in original format) to Silver (cleansed, deduplicated, conformed, and joined with dimensions) to Gold (aggregated business-level metrics). Raw clickstream events landed from Kafka are Bronze, deduplicated and type-cast records joined with a user dimension are Silver, and daily active user counts by region are Gold. The order therefore runs raw events, then silver records, then daily active user counts.
The medallion architecture organizes data in a lakehouse into three quality tiers. The raw landing layer where source data is ingested with minimal transformation is called the _____ layer. The layer where data is cleansed, deduplicated, and conformed to a common schema is the _____ layer. The top tier holding curated, business-level aggregations ready for analytics and BI consumption is the _____ layer.#
Show answer
The medallion architecture organizes data in a lakehouse into three quality tiers. The raw landing layer where source data is ingested with minimal transformation is called the Bronze layer. The layer where data is cleansed, deduplicated, and conformed to a common schema is the Silver layer. The top tier holding curated, business-level aggregations ready for analytics and BI consumption is the Gold layer.
The medallion architecture (popularized by Databricks and Delta Lake) uses three named tiers in order of increasing quality: Bronze holds raw landing data with minimal transformation, Silver holds data that has been cleansed, deduplicated, and conformed to a common schema, and Gold holds curated business-level aggregates for analytics and BI. Each successive layer increases data quality and business readiness.
In a lakehouse architecture using open table formats such as Apache Iceberg, Delta Lake, or Apache Hudi, what is the primary mechanism that enables ACID transaction guarantees on top of otherwise immutable object stores like Amazon S3 or Google Cloud Storage?#
Show answer
A metadata layer / transaction log that tracks file-level snapshots and performs atomic, compare-and-swap commits to guarantee isolation and durability.
Open lakehouse table formats do not rely on a separate lock manager or row-level locking inside Parquet files. Instead, they maintain a metadata layer (Delta Lake's transaction log, Iceberg's catalog + manifest lists, Hudi's timeline) that records which data files make up each table snapshot. Writers perform atomic commits—often a single compare-and-swap operation on a metadata pointer—so that reads always see a consistent snapshot and concurrent writes are serialized, giving ACID guarantees without changing the underlying object store.
Order these data-processing stages in a medallion architecture lakehouse pipeline from earliest (first to execute) to latest (last to execute).#
Put these in order
Show answer
The correct order is: raw landing of source data in its original format, then schema enforcement and deduplication on ingested records, then conformed join of entities across sources with quality checks, and finally business-level aggregations and curated reporting tables. This follows the bronze (raw), silver (cleansed and conformed), gold (curated) flow that defines the medallion architecture.
In a medallion architecture, data flows from bronze (raw landing of source data in original format) through silver (schema enforcement and deduplication, then conformed joins across sources with quality checks) to gold (business-level aggregations and curated reporting tables). Raw data must be ingested before it can be deduplicated and schema-enforced; deduplicated records must be conformed and joined before they can be aggregated into business-ready reporting tables. This bronze → silver → gold sequence is the core design principle of the medallion pattern.
In the medallion architecture for a lakehouse, which statement correctly describes the primary responsibility of the Silver layer?#
Options
Show answer
Silver's primary responsibility is cleansing and conforming raw data. In the medallion architecture, the Silver layer deduplicates records, enforces schema, applies data quality rules, and aligns master data. This produces a trusted, reusable dataset built from raw Bronze inputs, which Gold layers then aggregate for analytics.
Silver is the refinement layer between raw ingest and business consumption. It takes the raw data landed in Bronze and applies deduplication, schema conformance, data quality rules, and master-data alignment to produce a cleansed, trusted, and reusable dataset. Landing data in its original format with minimal transformation is the Bronze role. Building business aggregates and dimensional models for reporting is the Gold role, which builds on Silver. Access control and catalog metadata are governance concerns, not a medallion layer's responsibility.
In the medallion architecture for lakehouses, the _____ layer stores raw, unmodified data ingested from source systems; the _____ layer applies cleansing, deduplication, and schema conformance to produce trusted datasets; and the _____ layer provides business-level aggregates and curated datasets for reporting and ML consumption.#
Show answer
In the medallion architecture for lakehouses, the Bronze layer stores raw, unmodified data ingested from source systems; the Silver layer applies cleansing, deduplication, and schema conformance to produce trusted datasets; and the Gold layer provides business-level aggregates and curated datasets for reporting and ML consumption.
The medallion architecture defines three layers: Bronze (raw ingest, minimal transformation, source fidelity), Silver (cleansed, deduplicated, schema-conformed, master-data aligned), and Gold (business-level aggregates, dimensional models, curated datasets for analytics and ML). Data flows Bronze to Silver to Gold, with each layer adding progressively more structure, quality, and business logic.
In a lakehouse built on Delta Lake or Apache Iceberg, concurrent writers do not take row-level locks from a lock manager. Explain which concurrency mechanism these table formats use to isolate concurrent writers and commit changes atomically, and describe the key trade-off of that mechanism compared with a traditional data warehouse's row-level locking.#
Show answer
Delta Lake and Iceberg use optimistic concurrency control (OCC) on top of atomic commits to a table metadata log (the Delta transaction log or the Iceberg metadata chain). A writer reads the current table version, stages its new data files in object storage, and then tries to atomically commit a new metadata entry (for example, writing the next Delta JSON log entry, or swapping the Iceberg metadata pointer). The storage layer must provide an atomic put-if-absent or rename so that only one writer succeeds for a given table version; the others detect the conflict, re-read the latest state, check whether their changes are still compatible, and retry or fail. This replaces a row-level lock manager and write-ahead logging. The trade-off is that conflict detection works at the granularity of files, partitions, or predicates recorded in the metadata, not individual rows. Two writers changing different rows that live in the same data file can conflict and one must retry, whereas a traditional warehouse could grant row-level locks and let both proceed. Under high contention on overlapping files, retries waste work and can lead to aborts, so the model suits append-heavy and batch-merge workloads better than frequent small updates to the same files.
The formats rely on optimistic concurrency control: writers stage data files without blocking each other, then compete in an atomic commit to the metadata log, where exactly one commit wins per table version and the others retry after re-validating against the latest state. The atomic-commit guarantee depends on the storage layer offering put-if-absent or atomic rename semantics. Because metadata tracks conflicts at file, partition, or predicate granularity rather than per row, writers touching different rows in the same file collide and one must retry, which a row-locking warehouse would allow. That is the key trade-off: cheap non-blocking writes and simple scaling for batch and append workloads, at the cost of retry overhead and possible aborts under contention on overlapping files.
You are designing a Delta Lake-based medallion architecture (Bronze → Silver → Gold) on a cloud object store. CDC events from an operational database are ingested into Bronze, cleansed and conformed in Silver, and aggregated for BI in Gold. Which of the following are correct design principles for the Bronze layer? (Select all that apply.)#
Options
Pick every one that applies.
Show answer
In a Bronze layer, the correct principles are append-only raw ingestion that preserves full CDC history, tolerating additive schema changes without failing writes, and retaining malformed records for audit and replay. Enforcing NOT NULL and referential integrity belongs in Silver, because rejecting records at Bronze would break replayability.
The Bronze layer is an immutable landing zone whose purpose is to capture raw source data with minimal transformation. Append-only writes preserve the full CDC event history for point-in-time replay, audit, and reprocessing. Allowing the schema to evolve (for example with mergeSchema) lets Bronze absorb additive upstream changes without blocking ingestion. Retaining out-of-contract and malformed records in raw form gives full-fidelity auditability and lets you reprocess from Bronze if downstream logic changes. Enforcing NOT NULL and referential integrity constraints belongs to the Silver layer, where data is cleansed, deduplicated, and conformed; applying them in Bronze would reject records at ingestion and break the capture-everything guarantee that makes Bronze a reliable replay source.
A Bronze-to-Silver job in a Delta Lake medallion architecture reads CDC events from Bronze. Each entity can have several events (an INSERT followed by one or more UPDATEs), and each event carries an updated_at timestamp. The Silver table must reflect the current state of each entity, so the most recent event per id must win. Counting the first line of the code below as line 1, which single line is the bug that can leave stale data in Silver? Answer with the line number.#
from pyspark.sql import functions as F
from pyspark.sql.window import Window
from delta.tables import DeltaTable
def upsert_silver(spark, bronze_df, silver_path):
# Deduplicate CDC events before merging
deduped = bronze_df.dropDuplicates(["id"])
silver = DeltaTable.forPath(spark, silver_path)
(silver.alias("t")
.merge(deduped.alias("s"), "t.id = s.id")
.whenMatchedUpdateAll()
.whenNotMatchedInsertAll()
.execute())Show answer
The bug is on line 7.
The bug is on line 7, deduped = bronze_df.dropDuplicates(["id"]). dropDuplicates keeps one row per id but does not guarantee which one, and it does not look at updated_at. When an entity has both an INSERT and a later UPDATE in the same batch, the retained row may be the older INSERT, and the MERGE then writes that stale state into Silver. The fix is to rank events per id by updated_at descending with row_number() over a window partitioned by id, keep rank 1, and merge only that row. The MERGE logic on lines 9 to 13 is correct once it receives the latest event per id.
In a Delta Lake medallion architecture (Databricks Bronze / Silver / Gold), describe the intended responsibility and key design principle of each layer, including how data quality and structure progress from Bronze to Gold.#
Show answer
Bronze is the landing zone: raw data from source systems is ingested in its original or near-original form with minimal transformation, preserving full history for traceability and reprocessing. The design principle is append-only persistence with schema-on-read flexibility so nothing is lost. Silver is the cleansing and conformance layer: records from Bronze are deduplicated, cleansed, standardized, and joined into a more normalized or curated enterprise-wide schema, enforcing data quality rules and business-level consistency. The key principle is filtering, transforming, and conforming data so it is trustworthy and reusable across use cases. Gold is the presentation or analytics layer: refined, business-ready tables organized for specific reporting, BI, ML, or downstream consumption, often aggregated or denormalized into star or snowflake-style structures. The principle is shaping data for direct consumption, performance, and business semantics. Data quality and structure increase progressively: Bronze is raw and unvalidated, Silver is cleansed and conformed to enterprise standards, and Gold is highly refined and consumption-ready.
The medallion architecture is a progressive refinement pipeline. Bronze is a raw ingestion layer that keeps source fidelity so data can be replayed and audited. Silver applies cleansing, deduplication, standardization, and conformance to produce a trusted enterprise dataset with consistent schemas. Gold reshapes data for specific analytical or operational consumers, often aggregating or denormalizing it for performance and business readability. Across the layers, quality and structure rise while data stays traceable: Delta Lake's transaction log provides ACID commits, versioning, and time travel, which support auditing and reprocessing of earlier layers.
The following PySpark pipeline implements a Bronze → Silver → Gold flow on Delta Lake. Line numbers are shown on the left. One line introduces a medallion-architecture anti-pattern that breaks the Bronze layer's intended purpose. Identify the line number and briefly explain why it is an anti-pattern.#
Show answer
Line 7, bronze_df = bronze_df.dropna(). The Bronze layer must preserve all raw source rows unmodified so the data can be audited and replayed. Dropping rows with nulls is a cleansing step that belongs in the Silver layer (lines 12–14 cast and conform types there), so filtering here permanently discards source records that Bronze was supposed to keep.
The Bronze layer's role in a medallion architecture is to land source data as a faithful, unmodified copy for auditability and replay. Line 7 calls dropna(), which removes every row containing a null before the Bronze Delta table is written on line 9, so rows present in the source are permanently lost before they ever reach storage. Null handling and type conformance are Silver-layer cleansing concerns, which the pipeline already performs on lines 12–14. The other lines are appropriate: lines 3 reads the raw source, line 9 writes Bronze unmodified, lines 12–14 cleanse in Silver, line 15 writes Silver, line 17 aggregates for Gold, and line 18 writes Gold.
In a Delta Lake medallion architecture (Databricks Runtime 14.x), the silver layer receives frequent MERGE-based upserts from bronze. The silver table was compacted with OPTIMIZE silver ZORDER BY (customer_id) to improve data skipping on customer_id point lookups. After several hours of upserts, file pruning drops from skipping ~95% of active files to ~20%. Which statement correctly explains this degradation and the appropriate long-term mitigation?#
Options
Show answer
Delta MERGE upserts write new, unclustered Parquet files instead of re-sorting existing ones, so customer_id ranges overlap across files and pruning drops. The long-term fix is Liquid Clustering on customer_id, which keeps the layout clustered incrementally as data is written, so OPTIMIZE only has to cluster the new files.
Delta Lake data files are immutable, so MERGE never edits rows inside an existing Parquet file. It writes new files holding the updated rows, in arrival order, and marks the old versions as removed in the transaction log. Those new files are not clustered on customer_id, so their min/max ranges cover most of the key space and cannot be skipped for a point lookup. As upserts accumulate, the share of well-clustered files shrinks and pruning degrades. Liquid Clustering addresses this by maintaining clustering keys on the table, and OPTIMIZE then clusters the newly written files incrementally rather than re-sorting the whole table. The other statements are wrong: MERGE does not rewrite files in place, ANALYZE TABLE only refreshes table statistics and does not change file layout, VACUUM only deletes unreferenced files and does not alter the clustering of active files, and Z-ORDER works on any sortable column, so cardinality is not the cause.
In a Delta Lake medallion architecture on Databricks, Bronze ingests CDC change events from an OLTP database via Structured Streaming with foreachBatch, appending raw events that carry a monotonically increasing event_id and an event_ts timestamp. Silver uses foreachBatch to MERGE Bronze events into conformed, deduplicated tables keyed by the business primary key. The merge is idempotent: replaying the same Bronze events yields the same Silver state. Silver's updated_at column is set from the source event's timestamp, not from the wall-clock time of the write. Gold maintains rolling aggregates (for example, daily revenue by store). Each Gold run reads only Silver rows whose updated_at is greater than the Gold table's stored high-water-mark last_gold_ts, and applies an incremental MERGE to update the aggregate. A transient Bronze write failure causes the streaming engine to replay the last Bronze micro-batch. After the replay, Silver is correct, but Gold shows stale aggregates for the affected keys and does not self-correct on later runs. Explain the underlying reason Gold stays inconsistent even though Silver is correct.#
Show answer
Gold's incremental design makes it depend on which Silver changes it has already consumed, not on Silver's current state. When Bronze replays, the Silver MERGE rewrites the affected rows with the same values and the same source-derived updated_at, which is at or before Gold's last_gold_ts. Gold's next run filters on updated_at > last_gold_ts, so it never selects those rows again and the stale aggregate persists. Silver is correct because the MERGE is idempotent on state, but Gold's watermark-based delta logic is not idempotent with respect to replays. Fixes include recomputing Gold from the full current Silver snapshot, rewinding the Gold watermark to cover the replay window (with an idempotent Gold MERGE), or consuming Silver's Change Data Feed so Gold receives actual change records instead of inferring changes from timestamps.
The root cause is that Gold's incremental logic relies on a timestamp high-water-mark over Silver's updated_at. Silver's MERGE is idempotent, so a replayed Bronze batch leaves Silver correct, and because updated_at comes from the source event time, the replayed rows carry timestamps at or before last_gold_ts. Gold's next run selects only rows with updated_at greater than last_gold_ts, so it skips those keys and the aggregate stays stale. The inconsistency is therefore a property of Gold's change-detection design: Gold is not a deterministic function of Silver's current state but of the sequence of changes it has already consumed.
Related interview questions
Job market
See data-engineering salaries and hiring demand from live job postings.
Practise these until they stick
That's every question we hold on this topic, and the page marks what you pick. What it can't do is remember. A free account keeps every answer, and what you miss comes back until it's right: after a day, then at longer gaps.
Free · the whole bank · 100 marked answers per 30 days · written feedback on the paid plan