Top Databricks Interview Questions & Answers (2026)
17 questions Databricks Data Engineer interviewers actually ask, with the strong answer, the weak one, and the follow-up that comes next.
- Data EngineerRole
- $114K-$138KTypical US pay
- 4-5 roundsInterview loop
- Nice to haveCert in hiring
- UsuallyHands-on test

Table of Contents
Databricks data engineers are hired by companies running a lakehouse on AWS, Azure or Google Cloud: retailers, banks, insurers, media, healthcare and the consultancies that build platforms for them. The work is building and running pipelines in PySpark and SQL, governing data in Unity Catalog, and keeping jobs reliable and affordable. Interviews typically include a coding round in SQL or PySpark, a platform deep dive on Delta Lake and Spark behaviour, a pipeline design conversation and a behavioural round.
The Data Engineer Associate certification shows you know the platform's current building blocks, from Auto Loader and Lakeflow Connect to Lakeflow Jobs, bundles and Unity Catalog permissions. It does not prove you can read the Spark UI to fix a skewed stage, design for late and duplicate data, or keep a cluster bill sensible. That is where interviewers spend their time, so prepare stories and reasoning, not just definitions.
What the Databricks Data Engineer interview loop looks like
Most Databricks Data Engineer hiring runs 5 rounds. Each one is testing something different, so prepare for each separately.
The 17 questions, with answers
Each card shows the question as it is usually asked, what the interviewer is really checking, a strong answer, the weak answer they hear most often, and the follow-up that comes next. Say the strong answers in your own words — a memorised script sounds memorised.
- Basic · 4
- Core · 5
- Advanced · 3
- Scenario · 3
- Behavioural · 2
What does Delta Lake add on top of Parquet files?
What they are testing: Transaction log understanding, not just a feature list
Delta Lake stores data as Parquet files plus a transaction log in the _delta_log folder. Every write is a commit recorded in that log, listing which files were added or removed. That gives ACID transactions, so readers never see half-written data and concurrent writers are handled with optimistic concurrency. Because the log keeps history, I get time travel to query or restore earlier versions, an audit trail with DESCRIBE HISTORY, schema enforcement so bad writes are rejected, and operations plain Parquet cannot do safely, like MERGE, UPDATE and DELETE. The log also stores file-level statistics, which allows data skipping. VACUUM removes files no longer referenced once they are older than the retention period, seven days by default.
Explain the medallion architecture. What belongs in bronze, silver and gold?
What they are testing: Practical layer responsibilities rather than buzzwords
Bronze is raw data landed as close to the source as possible, append-only, with ingestion metadata like file name and load time, so I can always reprocess. Silver is cleaned and conformed: types fixed, duplicates removed, bad records quarantined, keys standardised, often merged to current state. Gold is business-ready: aggregates, dimensional models, or feature tables built for a specific use, like daily revenue by region for BI. The point is separation of concerns and replayability. If a silver transformation has a bug, I fix it and rebuild from bronze without re-pulling from the source. I do not treat it as dogma; small pipelines might collapse layers, but keeping raw data immutable is the part I would never skip.
What is Unity Catalog and how is it organised?
What they are testing: Three-level namespace, managed vs external, and why governance moved to the account level
Unity Catalog is the governance layer for data and AI assets across workspaces. Objects sit in a three-level namespace, catalog dot schema dot table, under a metastore attached to the workspaces in a region. Besides tables and views it governs volumes for files, functions and models. Permissions are granted with SQL, GRANT and REVOKE, to users, groups and service principals, and inherit downward from catalog to schema to table. Managed tables have their storage managed by Unity Catalog, so dropping them removes the data after a retention period; external tables point to a path I control through an external location and storage credential. It also captures lineage and audit logs, which helps when someone asks where a number came from.
Which compute would you choose for scheduled ETL, interactive development and BI queries?
What they are testing: Matching compute types to workloads and cost models
For scheduled production ETL I use job compute or serverless compute for jobs, so the cluster exists only for the run and is billed at job rates, and the configuration lives with the job. For interactive development, an all-purpose cluster with auto-termination set short, or serverless notebooks if the workspace allows them, so idle clusters do not burn money. For BI and ad hoc SQL from many analysts, a serverless SQL warehouse with autoscaling, because it starts quickly and handles concurrency well. The common mistake is running production jobs on an all-purpose cluster: it costs more, shares resources with whoever is developing, and makes failures harder to reason about.
How does Auto Loader work, and how does it handle schema changes?
What they are testing: Incremental file discovery, checkpoints and schema evolution modes
Auto Loader is the cloudFiles source for Structured Streaming. It discovers new files in cloud storage incrementally, by directory listing or file notifications, and records processed files in the stream's checkpoint, so each file is processed once even after restarts. I usually run it with an availableNow trigger from a scheduled job, which processes everything new and then stops. For schema, I set a schemaLocation so it can infer and track the schema. In the default addNewColumns mode, when a new column appears the stream fails, updates the schema, and continues on restart, which is why I run it as a job with retries. Data that does not fit lands in the _rescued_data column instead of being silently lost.
How do you implement an upsert into a Delta table, and how do you deal with duplicates in the source batch?
What they are testing: MERGE semantics and the classic multiple-match error
I use MERGE INTO target USING source ON the business key, with WHEN MATCHED THEN UPDATE and WHEN NOT MATCHED THEN INSERT, and optionally WHEN NOT MATCHED BY SOURCE for deletes. The trap is duplicates: if two source rows match the same target row, MERGE fails because it cannot decide which update wins. So I deduplicate the batch first, typically with a window function, ROW_NUMBER over the key ordered by event timestamp descending, keeping row one. For streaming, I run the MERGE inside foreachBatch so each micro-batch is deduplicated and merged. I also make sure the merge condition can use data skipping, for example including a date range, otherwise MERGE scans the whole target table.
What are Lakeflow Declarative Pipelines and when would you use them instead of notebook jobs?
What they are testing: Awareness of current naming and declarative trade-offs
They are the declarative pipeline framework formerly called Delta Live Tables, now built on Apache Spark Declarative Pipelines. I define streaming tables and materialized views in SQL or Python, and the framework works out dependencies, orchestration, retries, incremental processing and infrastructure. Data quality is built in through expectations: warn and keep the record, drop the row, or fail the update. I would use them for standard ingestion and transformation flows, especially bronze to silver with quality rules and change data capture, because there is much less code to maintain. I would still use notebook or Python tasks in Lakeflow Jobs for unusual logic, API calls, or steps that do not fit the declarative model.
How do you orchestrate a multi-step pipeline in Lakeflow Jobs?
What they are testing: Task graphs, triggers, retries, parameters and conditional logic
I define a job with tasks forming a DAG: for example an ingestion pipeline task, then notebook or SQL tasks for silver and gold, then a dashboard refresh. Dependencies decide order, and tasks can run in parallel where independent. Each task gets retries with a sensible count and timeout, so transient failures recover but a stuck task does not run forever. For triggers I choose between a schedule, a file arrival trigger when data lands unpredictably, or a table update trigger when the job should run after an upstream table changes. I use job parameters and task values to pass dates or flags between tasks, if/else condition tasks for branching, and for-each tasks for looping. Failure notifications go to a channel the team watches.
How would you restrict a sensitive column and limit rows by region in Unity Catalog?
What they are testing: Column masks, row filters, group-based logic and least privilege
For the column, I create a SQL function that returns the real value when is_account_group_member of an authorised group is true and a masked value otherwise, then attach it to the column with ALTER TABLE SET MASK. For rows, I create a filter function that returns true only for rows the user's group may see, for example by joining region to a mapping, and apply it with SET ROW FILTER. Everyone queries the same table and sees what they are entitled to. At scale, attribute-based access control policies let me tag columns, like PII, and apply masking centrally rather than table by table. Underneath, grants follow least privilege: groups not individuals, and USE CATALOG and USE SCHEMA before SELECT.
A Spark job has one task running for ten minutes while the rest finish in seconds. Diagnose and fix it.
What they are testing: Recognising skew in the Spark UI and knowing which fix applies
That pattern is data skew. In the Spark UI I open the slow stage and look at the task summary: if the max shuffle read is many times the median, one key is dominating a partition. Next I check whether it is a join or an aggregation. For joins, adaptive query execution can split skewed partitions automatically, and if one side is small I can broadcast it so there is no shuffle at all. For an aggregation on a hot key, AQE's skew-join handling does not help, so I salt the key: add a random suffix, aggregate partially, then aggregate again without the salt. Adding more executors does not help because one task still holds the giant partition.
Partitioning, Z-ordering or liquid clustering: how do you lay out a large Delta table today?
What they are testing: Current layout guidance and the problems with over-partitioning
For new tables my default is liquid clustering: CLUSTER BY on up to four columns that match common filters, like event date and customer ID. It is incremental, so OPTIMIZE only rewrites what needs it, and I can change keys later with ALTER TABLE without rewriting existing data immediately. It cannot be combined with Hive-style partitioning or Z-ordering on the same table. On Unity Catalog managed tables with predictive optimization, CLUSTER BY AUTO can pick keys and run OPTIMIZE and VACUUM for me. Traditional partitioning I reserve for very large tables with a low-cardinality column that is always filtered on, because over-partitioning creates thousands of tiny files and slows everything down.
How do you promote pipelines from dev to test to prod on Databricks?
What they are testing: Git folders, bundles, parameterisation and secrets handling
Code lives in Git; I develop in a Databricks Git folder on a feature branch and open a pull request. Jobs and pipelines are defined as code in Declarative Automation Bundles, formerly Databricks Asset Bundles: a databricks.yml with resources plus targets for dev, test and prod, using variables and target overrides for things like catalog names, cluster sizes and schedules. CI runs databricks bundle validate and tests, then deploys to test; after approval, the same bundle deploys to prod, usually as a service principal. Secrets never go in the YAML or notebooks: they come from secret scopes, or from environment variables in CI, such as BUNDLE_VAR prefixed variables. That way prod is reproducible and nobody edits jobs by hand.
Analysts report yesterday's gold numbers are double what they should be. Walk me through it.
What they are testing: Calm debugging using table history and pipeline lineage
First I confirm scope: which tables, which dates, and whether it is exactly double, which hints at a duplicated load. I check DESCRIBE HISTORY on the gold and silver tables to see which operations ran yesterday, then compare against the job run history, looking for a retried task that appended twice, a backfill run on top of the normal run, or a MERGE replaced by an append. I trace back to bronze to see whether source files were delivered twice. Once I find the cause, I restore the affected tables to the last good version with RESTORE or rebuild the partition from silver, rerun downstream, and tell analysts what was affected. Then I make the step idempotent so a retry cannot duplicate data.
We need to ingest tables from Salesforce and a SQL Server database, plus JSON files from a vendor. How would you design it?
What they are testing: Choosing ingestion methods by source type, governance and maintenance cost
For Salesforce and SQL Server I would first check Lakeflow Connect managed connectors, because they handle incremental extraction and schema changes, land data in Unity Catalog tables and save us maintaining custom code. If a source is not supported, a partner tool or a JDBC read in a job is the fallback. For vendor JSON files arriving in cloud storage, Auto Loader into a bronze table with a schema location, rescued data column and file arrival trigger. All three land in bronze schemas in one catalog with ingestion metadata, then shared silver logic standardises keys and types. I would define everything in bundles, add freshness and row-count checks, and agree with the vendor what happens when their format changes.
Our Databricks bill rose 50% in two months. How would you find and fix the cause?
What they are testing: Cost diagnosis with system tables and lasting controls
I start with the billing system tables, joining usage to jobs, warehouses and clusters, to see which workloads grew. Typical culprits: all-purpose clusters left running with long auto-termination, production jobs running on all-purpose compute, oversized clusters for small jobs, a streaming job left continuously running when hourly availableNow would do, or full table rewrites where incremental processing would work. I fix the worst offenders first and measure. Then I add guardrails: cluster policies limiting sizes and enforcing auto-termination, tags so cost maps to teams, budgets with alerts, and a monthly review with the team leads. I report results to whoever raised the alarm with before and after numbers.
Tell me about a pipeline you made more reliable. What was failing and what did you change?
What they are testing: Ownership, root-cause thinking and measurable outcomes
Template, fill it with your own story. Situation: a nightly ingestion job failed several times a month, usually because the vendor added fields or sent duplicate files. Task: make it reliable without manual reruns. Action: I moved it to Auto Loader with a schema location and rescued data column, ran it as a job with retries, deduplicated before MERGE, and added expectations to quarantine bad records rather than fail the run. I also set failure alerts to the team channel. Result: manual interventions dropped from several a month to almost none, and analysts stopped asking whether the data was current. Use your real numbers and say what you would still improve.
Describe a time you disagreed with a data scientist or analyst about how data should be modelled.
What they are testing: Collaboration and balancing platform standards with user needs
Template, fill it with your own story. Situation: a data science team wanted direct access to raw bronze tables to move faster, bypassing our silver layer. Task: support their speed without creating unmanaged copies of sensitive data. Action: I listened to what they actually needed, which was a few fields we had not yet modelled and lower latency. I added those fields to silver within the sprint, gave them a sandbox schema in Unity Catalog with read access to silver, and agreed a fast path for new field requests. Result: they got what they needed in days, governance stayed intact, and two of their features later became shared gold tables. Keep the tone collaborative.
Get the theory airtight before the interview
Interviewers build follow-ups on the fundamentals. ExamCert AI has exam-style Databricks Data Engineer Associate questions with an explanation for every option, so the basics stay automatic when the questions get harder.
Practise on ExamCert AIDatabricks Data Engineer Associate practice questionsThe practical task
Expect some version of this. Companies vary the details, not the shape.
JSON order events land in cloud storage throughout the day. Some files are duplicated, some events arrive late, and the vendor occasionally adds fields. Build a pipeline on Databricks Free Edition or a trial workspace that lands raw data, produces a clean orders table with the latest state per order, and a daily revenue gold table. Explain orchestration, data quality, how reruns stay safe, and how you would deploy it to production.
- Ingest with Auto Loader into bronze with a schema location, rescued data column and file name and load time columns.
- Build silver: cast types, flatten nested lines, dedupe with ROW_NUMBER by order ID and event time, then MERGE.
- Add quality rules, for example expectations or explicit checks, and quarantine failing rows instead of dropping silently.
- Build gold daily revenue; show how a late event updates a past day correctly.
- Orchestrate with a Lakeflow Job: file arrival or schedule trigger, retries, timeouts and failure notification.
- Describe a bundle with dev and prod targets, and what you would monitor in production.
Hire vs no-hire:A hire's pipeline is idempotent, handles late and duplicate data, and separates raw from clean with visible quality checks. A no-hire overwrites tables each run, ignores duplicates and cannot rerun safely.
Questions to ask them
"Do you have any questions for us?" is still being scored. Four that land well for a Databricks Data Engineer role:
Mistakes that sink candidates
What the Databricks Certified Data Engineer Associate does and does not prove
What the Databricks Certified Data Engineer Associate gets you
The Data Engineer Associate appears as preferred in many Databricks data engineering postings, and Databricks consulting partners actively value certified staff. Because the exam was refreshed in 2026 around Lakeflow, bundles and Unity Catalog, a recent pass signals current platform knowledge, which is useful for candidates moving from Hadoop, on-premises ETL tools or another cloud warehouse.
What it does not prove
It is a 45-question multiple-choice exam, so it does not prove you can write production PySpark, read the Spark UI under pressure, design idempotent pipelines, or control costs. Interviews test these through coding rounds and design discussions. A small end-to-end project in Free Edition with a bundle, tests and a short write-up is the best complement.
Pay:Range is ZipRecruiter's mid-2026 25th to 75th percentile for US Databricks data engineers (average about $130K), as cited in KORE1's 2026 salary guide. BLS puts database architects' May 2025 median at $139,500. Streaming, Unity Catalog migration and consulting experience push pay higher.
Still sitting the Databricks Data Engineer Associate?
Pass it first time and walk into the interview with the credential on your CV. ExamCert AI has exam-style Databricks Data Engineer Associate questions with an explanation for every option.
Practise on ExamCert AIDatabricks Data Engineer Associate practice questionsFAQ
Do Databricks interviews expect PySpark or SQL?
Usually both. Many coding rounds let you choose, but you should be comfortable with DataFrame operations in PySpark and with Spark SQL, including joins, window functions, deduplication and exploding arrays. Platform rounds assume you can read and reason about either. If you are stronger in SQL, say so, but show you can at least read and adjust PySpark code.
How deep do Spark internals questions go?
For most data engineer roles, expect practical depth: what causes a shuffle, why a broadcast join helps, how to spot skew and spill in the Spark UI, what adaptive query execution does, and why small files hurt. You rarely need to explain Catalyst rules in detail, but you should connect a symptom in the UI to a concrete fix.
Is the Data Engineer Associate enough, or do I need the Professional?
The Associate is a solid signal for junior to mid-level roles. Senior roles and consultancies often like the Professional, but experience and design ability weigh more than a second exam. If you have the Associate, invest next in a real project or two that shows production habits like tests, bundles and monitoring.
What should I study about Unity Catalog before an interview?
Know the three-level namespace, managed versus external tables, storage credentials and external locations, granting privileges to groups, row filters and column masks, and lineage. Many companies are mid-migration from the legacy Hive metastore, so be ready to discuss how you would migrate tables and permissions with minimal disruption.
How do I prepare for the system design round?
Practise designing one pipeline end to end out loud: sources, ingestion choice, bronze, silver and gold, orchestration, quality checks, deployment and cost. Then stress test it: late data, duplicate files, schema changes, a failed task at 3am. Interviewers care most about how you handle those failure cases, not about naming every product feature.
Sources
Figures on this page come from Databricks and the other primary sources below:
- Databricks Certified Data Engineer Associate (Databricks)
- Data Engineer Associate exam guide, August 2026 (Databricks)
- Databricks engineer salary guide 2026, citing ZipRecruiter (KORE1)
- Database administrators and architects, Occupational Outlook Handbook (BLS)
- Configure schema inference and evolution in Auto Loader (Databricks docs)
- Use liquid clustering for tables (Databricks docs)
- Manage data quality with pipeline expectations (Databricks docs)
Checked November 4, 2026. Fees, outlines and eligibility rules change — confirm with Databricks before you book.
