🚀 Free Technical Interview Prep — 700+ Questions

Interactive quizzes on SQL, Spark, PySpark, Hadoop, Networking, DSA and more. Instant answers, full explanations, zero signup. Used by 100+ engineers every day.

700+Questions
7Free Quizzes
100%Free
NoSignup Needed
🗄️ SQL ⚡ Apache Spark 🐍 PySpark 🐘 Hadoop 🌐 Networking 🧮 DSA ☁️ Kafka 📊 Data Engineering
Start a Quiz Now → Get 300Q PDF Bundle
✅ All quizzes are completely free  |  No registration  |  Works on mobile

Top 12 dbt Core v2.0 Interview Questions

Top 12 dbt Core v2.0 Interview Questions & Answers (2026) — Complete Guide

Top 12 dbt Core v2.0 & Fusion Engine Interview Questions & Answers (2026) — Complete Guide

📅 Updated: June 16, 2026 ⏱ 9 min read 🎯 Beginner to Senior 🔥 Announced at Snowflake Summit 2026

1. dbt Core v2.0 Fundamentals

1What is dbt Core v2.0, and what makes it different from v1.x?

Answer: dbt Core v2.0 is a ground-up rewrite of the dbt runtime, now powered by the Fusion Engine — a Rust-based execution layer that was previously exclusive to dbt Cloud. The key differences from v1.x are:

  • Single shared runtime: Open-source (Apache 2.0) dbt-core and the proprietary Fusion distribution both run on the same compiled runtime, closing the capability gap that existed in v1.x.
  • Performance: Parse times for large projects can drop by 50–100× because the Rust parser is non-blocking and parallelised.
  • Two distributions: dbt-core (free, OSS) and dbt (Fusion distribution, paid, adds column-level lineage, SQL comprehension, inline feedback).
  • New tooling: dbt lint, dbt Docs v2, and improved dbt State ship as part of the v2.0 ecosystem.

2Explain the two distributions of dbt in 2026 and when you'd choose each.

Answer:

  • dbt-core (Apache 2.0 OSS): Free CLI-based tool. All core transformation capabilities (models, tests, snapshots, seeds, macros) plus the Fusion-based runtime improvements for parse speed. Ideal for teams self-hosting orchestration (Airflow, Prefect, etc.) or running in cost-sensitive environments.
  • dbt (Fusion distribution): Proprietary build layered on top of dbt-core. Adds SQL comprehension, column-level lineage, and instant feedback/autocomplete while authoring. Primarily consumed via dbt Cloud's IDE. Choose this when developer experience and deep lineage metadata matter more than cost.
💡 Interview tip: Interviewers often ask about the OSS vs. commercial trade-off. Know the licensing boundary — the runtime is open; the intelligence layer is not.

2. The Fusion Engine Deep Dive

3What is the dbt Fusion Engine and why was it built in Rust?

Answer: The Fusion Engine is the new dbt runtime introduced in dbt Core v2.0. It replaces the Python-based parser and executor from v1.x. Rust was chosen for three reasons:

  • Memory safety without a garbage collector — no GC pauses during DAG resolution.
  • Native parallelism — Rust's ownership model makes safe concurrent parsing trivial, allowing the DAG to be parsed fully in parallel.
  • Compile-time correctness — many YAML and Jinja errors that were runtime surprises in v1.x are now caught at compile time.

In production benchmarks shared at Snowflake Summit, a 3,000-model project that took 45 seconds to parse with dbt 1.9 parses in under 2 seconds with v2.0.

4What is column-level lineage in the Fusion distribution, and why is it important?

Answer: Column-level lineage tracks how individual columns flow through transformations — from source tables through intermediate models to final marts. Fusion's SQL comprehension engine statically analyses SQL (including CTEs, JOINs, and window functions) to build this graph without executing any queries.

Importance:

  • Impact analysis: Before renaming a source column, you can see every downstream model affected.
  • Compliance / data governance: Prove to auditors that PII never leaves a secure schema.
  • Debugging: Trace a bad value in a dashboard all the way back to the raw source row.

3. New Features: lint, Docs v2, State

5What is dbt lint and how does it compare to SQLFluff?

Answer: dbt lint is a high-performance SQL linter built directly into the dbt platform (available for projects running the Fusion engine). Key differences vs. SQLFluff:

  • Speed: ~50× faster than single-threaded SQLFluff because it reuses the Rust-based Fusion parser.
  • SQLFluff-compatible: Uses the same rule IDs, so existing .sqlfluff config files migrate with minimal changes.
  • Context-aware: Understands dbt Jinja ({{ ref() }}, {{ source() }}), which SQLFluff v1.x historically struggled with.
# Run linting across all models
dbt lint

# Lint a specific model
dbt lint --select my_model

# Fix auto-fixable violations in place
dbt lint --fix

6Explain dbt Docs v2 and what problem it solves over the original dbt docs generate.

Answer: Classic dbt docs generate produces a manifest.json that can exceed 50 MB on large projects. The browser then loads and parses this entire file, making the docs site slow and unusable at scale.

dbt Docs v2 replaces the manifest with a compact binary index. The browser fetches only what the user navigates to (lazy loading), making initial page load nearly instant regardless of project size. It also ships with a refreshed UI, better search, and native column-level lineage graphs when used with the Fusion distribution.

7What is dbt State and how does it reduce pipeline runtime costs?

Answer: dbt State allows dbt to compare the current project manifest against a previous run's manifest (the state) and intelligently skip or clone models where nothing has changed:

  • state:modified — only runs models whose SQL, schema, or upstream sources changed.
  • state:modified+ — runs modified models plus all their downstream dependents.
  • Zero-copy cloning (with Snowflake / Databricks): instead of rebuilding an unchanged model, dbt clones the existing table at near-zero compute cost.
# Run only models that changed since last production run
dbt run \
  --select state:modified+ \
  --state ./path/to/prod_artifacts/

# List what would run (dry run)
dbt ls \
  --select state:modified \
  --state ./prod_artifacts/
💡 In CI pipelines this can reduce compute costs by 70–90% on large projects since untouched models are skipped entirely.

4. Architecture & Medallion Patterns

8How does dbt fit into the Medallion (Bronze / Silver / Gold) architecture?

Answer: The Medallion architecture organises data into three layers, and dbt is typically responsible for the Silver and Gold transformations:

  • Bronze (raw): Ingested as-is by tools like Fivetran, Airbyte, or custom Kafka consumers. dbt usually defines these as sources rather than models.
  • Silver (cleansed): dbt staging models rename columns to snake_case, cast data types, and add surrogate keys.
  • Gold (business-ready): dbt mart models apply business logic, denormalise for reporting, and enforce metrics definitions (via dbt Semantic Layer).

With dbt State, CI can isolate only the Silver or Gold models that changed and skip the rest — a natural fit for incremental CI strategies.

9What is the dbt Semantic Layer and how does it relate to v2.0?

Answer: The dbt Semantic Layer (introduced in v1.6, matured in v2.0) allows teams to define metrics and dimensions in YAML alongside their models. BI tools (Tableau, Looker, Hex, etc.) query the Semantic Layer via a standard API instead of writing raw SQL against mart tables.

# models/metrics/revenue.yml
metrics:
  - name: total_revenue
    label: Total Revenue
    model: ref('fct_orders')
    description: "Sum of all paid order amounts"
    type: simple
    type_params:
      measure:
        name: order_total
        agg: sum
    filter: |
      {{ Dimension('fct_orders__status') }} = 'paid'

In v2.0, Fusion's SQL comprehension can validate metric SQL against the actual column graph at compile time, catching broken metric definitions before they reach production.

5. Practical Code & CLI Examples

10How would you write an incremental model in dbt v2.0 for a high-volume events table?

Answer: Use the incremental materialization with a unique_key for idempotent upserts and a lookback window to handle late-arriving events:

-- models/silver/fct_page_events.sql
{{
  config(
    materialized = 'incremental',
    unique_key   = 'event_id',
    incremental_strategy = 'merge',
    cluster_by   = ['event_date'],
    on_schema_change = 'sync_all_columns'
  )
}}

with source as (
    select * from {{ source('raw', 'page_events') }}
    {% if is_incremental() %}
      -- Lookback 3 days to capture late-arriving events
      where event_timestamp >= dateadd('day', -3, current_timestamp())
    {% endif %}
),

cleaned as (
    select
        event_id,
        user_id,
        session_id,
        page_url,
        event_type,
        cast(event_timestamp as timestamp_ntz) as event_timestamp,
        date(event_timestamp)                  as event_date
    from source
    where event_id is not null
)

select * from cleaned

11Walk through a typical dbt v2.0 project folder structure and the purpose of each directory.

Answer:

my_dbt_project/
├── dbt_project.yml        # Project config: name, version, model paths, vars
├── profiles.yml           # Connection profiles (kept outside VCS ideally)
├── models/
│   ├── staging/           # Bronze → Silver: rename, cast, add surrogate keys
│   │   └── stg_orders.sql
│   ├── intermediate/      # Complex joins / business logic
│   │   └── int_order_items_joined.sql
│   ├── marts/             # Gold layer: final denormalised tables for BI
│   │   ├── core/
│   │   │   └── fct_orders.sql
│   │   └── finance/
│   │       └── fct_revenue.sql
│   └── metrics/           # Semantic Layer metric definitions
│       └── revenue.yml
├── tests/                 # Custom data tests (singular tests)
├── macros/                # Reusable Jinja macros
├── seeds/                 # Static CSV reference data
├── snapshots/             # SCD Type 2 history tracking
├── analyses/              # Ad-hoc SQL (not materialised)
└── docs/                  # Additional markdown docs for dbt Docs v2

6. Advanced & Senior-Level Questions

12You're migrating a large dbt 1.9 project to v2.0. What are the breaking changes and migration steps?

Answer: Key breaking changes in dbt Core v2.0 (per the official upgrade guide):

  • Python adapter adapters: Some community adapters built against the Python 1.x internals need updates for the Rust runtime's adapter protocol. Check dbt-core/docs/roadmap/2026-06-announcing-v2.md for the adapter compatibility matrix.
  • Jinja strict mode: Undefined Jinja variables now raise compile errors instead of silently rendering as empty strings. Audit all macros.
  • YAML validation: v2.0 enforces stricter schema.yml validation. Extra/unknown keys that were ignored in 1.x now raise parse errors.
  • Global project variables: The vars key in dbt_project.yml now requires typed declarations for variables used in compilation.

Migration steps:

  1. Run dbt debug with v2.0 installed and fix all parse-time errors.
  2. Run dbt lint and address any Jinja or SQL violations.
  3. Execute dbt compile (no warehouse connection needed) and compare compiled SQL to v1.9 output for regressions.
  4. Run the full project in a staging environment and compare row counts / key metrics to production baselines.
  5. Validate dbt Docs v2 generates correctly, especially if using custom doc() blocks.

✅ Key Takeaways

  • dbt Core v2.0 brings the Rust-based Fusion Engine to open source, delivering massive parse-speed improvements for free.
  • Two distributions exist: dbt-core (OSS/Apache 2.0) and dbt (Fusion, proprietary with column-level lineage & SQL comprehension).
  • dbt lint is ~50× faster than SQLFluff and now ships natively with dbt.
  • dbt Docs v2 uses a binary index instead of a massive manifest.json — instant load for large projects.
  • dbt State skips or clones unchanged models, cutting CI compute costs by up to 90%.
  • The Semantic Layer is now compile-time validated in v2.0, reducing broken metric incidents in production.
  • Migration from v1.9 requires auditing Jinja, YAML strictness, and adapter compatibility before cutover.

No comments:

Post a Comment

Context Engineering Quiz (2026) — Test Your Knowledge

Context Engineering Quiz (2026) — Test Your Knowledge 🧠 Context Engineering Quiz (2026) Test your understanding of...

🚫
Content Protected
Copying content from this site is not permitted.
© 2026 InterviewQuestionsToLearn.com