SaveMyCert
Log in
5 of 5 free questions left today·for unlimited practice
DP-700 practice

Free DP-700 practice questions

Drill exam-realistic Microsoft Certified: Fabric Data Engineer Associate questions by domain, with an explanation on every option — not just the right one. 5 fully worked examples are further down this page, answers included.

Question bank
200
across 3 domains
Free, no account
5/day
sign up free to remove the cap
Real exam
55 Qs
100 min · pass 700
Explanations
Every option
right and wrong

Build a practice session

Domains

How many?

Mode

Ready when you are

10 fresh questions drawn across all domains, in Learn mode.

Focused review

Every question you answer incorrectly, and every question you flag while practising, is saved here automatically. Finish a session and you can come back to re-drill just those.

5 sample DP-700 questions, fully explained

Real questions from the DP-700 bank, with the answer key and the reasoning behind every option. Read them, then go back up the page and try the rest.

Question 1Implement and manage an analytics solution

A data engineer opens a new notebook in a Microsoft Fabric workspace and needs a Spark session to start in seconds, without configuring any compute in advance. Which Spark compute option meets this requirement with the LEAST administrative effort?

Choose one.

  • a
    Use the workspace's starter pool. Correct

    Starter pools are prehydrated, always-ready Spark clusters that Fabric manages for you, so sessions typically start in seconds with zero configuration.

  • b
    Create a custom Spark pool with autoscale enabled.

    Custom pools give you control over node size and scale, but their clusters are provisioned on demand, so session startup takes minutes and they require configuration first.

  • c
    Create an Apache Airflow job to launch the notebook.

    Apache Airflow jobs orchestrate DAG-based workflows; they do not change how quickly an interactive notebook Spark session starts.

  • d
    Attach a custom environment with additional libraries to the notebook.

    Environments package libraries and Spark settings; attaching one with custom libraries can actually slow session startup because the pool must be personalized on demand.

The concept

Fabric offers two kinds of Spark pools: starter pools (prehydrated, Microsoft-managed live clusters) and custom pools (user-defined node size, autoscale, and executor settings).

Why that’s the answer

The starter pool is the default compute for a workspace and is kept warm by Fabric, so an interactive session begins in seconds with no setup — exactly the least-effort, fastest-start option. A custom pool must be defined first and its nodes are provisioned when the session starts, which typically takes a few minutes. An Airflow job is an orchestration tool and irrelevant to session startup speed, and attaching an environment with extra libraries adds personalization time rather than removing it.

How to reason it out
  1. Identify the requirement: instant session start plus no upfront compute configuration.
  2. Recall that starter pools are always-on, prehydrated clusters managed by Fabric with default medium node sizing.
  3. Recall that custom pools trade startup speed for control: they are created in workspace Spark settings and spin up on demand.
  4. Eliminate orchestration (Airflow) and library packaging (environments) because neither is a compute-startup feature.

Exam tip: Choose the starter pool for instant, zero-config Spark sessions; choose a custom pool when you need specific node sizes or scaling behavior.

Configure Microsoft Fabric Workspace Settings: Spark, Domains, OneLake, Airflow — the lesson that teaches this.

Question 2Ingest and transform data

A data engineer loads a 2 TB sales table from Azure SQL Database into a Fabric Lakehouse every night. Only about 0.5% of rows change each day, and the source table has a LastModifiedDate column that is reliably updated on every insert and update. Which loading pattern is MOST efficient?

Choose one.

  • a
    An incremental load that uses LastModifiedDate as a watermark column to select only rows changed since the previous run Correct

    Correct. With a reliable last-modified column, an incremental (high-water-mark) load copies only the ~0.5% of rows that changed, dramatically reducing data movement and load time compared with reloading 2 TB nightly.

  • b
    A full load that truncates the Lakehouse table and reloads all 2 TB every night

    Incorrect. A full load works but is wasteful here: it moves 2 TB nightly to refresh a fraction of a percent of the data. Full loads suit small tables or sources with no reliable change indicator, not this scenario.

  • c
    A streaming load that pushes every source transaction into an Eventhouse in real time

    Incorrect. This is a nightly batch requirement, and an Eventhouse targets real-time event and telemetry analytics with KQL. Introducing streaming infrastructure for a once-a-day batch copy adds complexity without benefit.

  • d
    A row-by-row comparison that hashes every source row and compares it with every destination row each night

    Incorrect. Full-table hash comparison still reads all 2 TB from the source every run to compute the hashes, so it does not reduce the expensive part of the load. It is a fallback for sources with no change-tracking column, which this source has.

The concept

Incremental loading with a watermark (high-water-mark) column copies only rows created or changed since the previous run, using a monotonically increasing column such as a last-modified timestamp or an incrementing ID.

Why that’s the answer

The source exposes a reliably maintained LastModifiedDate column, which is exactly the prerequisite for the watermark pattern. The pipeline stores the highest watermark value it has loaded, and each run filters the source with WHERE LastModifiedDate > <stored watermark>, moving only the changed 0.5% of rows. A full reload moves 2 TB to capture roughly 10 GB of change, hash comparison still scans the whole source, and streaming solves a latency problem this nightly batch job does not have.

How to reason it out
  1. Check whether the source has a reliably updated, monotonically increasing column (timestamp or ID); if yes, the watermark pattern applies.
  2. Persist the maximum watermark value loaded in each run, then filter the next extraction with WHERE watermark_column > stored_value.
  3. Merge or append the extracted delta into the Lakehouse Delta table, then update the stored watermark to the new maximum.
  4. Reserve full loads for small tables or sources with no trustworthy change indicator.

Exam tip: When a source has a reliable last-modified or incrementing column, use it as a watermark and load only the delta.

Fabric Loading Patterns: Full, Incremental, and Dimensional Model Loads — the lesson that teaches this.

Question 3Monitor and optimize an analytics solution

A data engineering team runs pipelines, Dataflow Gen2 refreshes, notebook jobs, and Spark job definitions across several workspaces in Microsoft Fabric. The team lead wants a single place to review the run history and current status of all of these activities without opening each item individually. Which Fabric surface should the team lead use?

Choose one.

  • a
    The Monitoring hub Correct

    Correct. The Monitoring hub is the centralized surface in Fabric that lists historical and in-progress runs for pipelines, Dataflow Gen2 refreshes, notebooks, Spark job definitions, and other items across workspaces, with filtering by status, item type, and time.

  • b
    The OneLake catalog

    The OneLake catalog helps you discover and govern data items (lakehouses, warehouses, semantic models) across the tenant; it is a discovery surface, not a run-history or job-status view.

  • c
    The Microsoft Fabric Capacity Metrics app

    The Capacity Metrics app reports compute consumption, utilization, and throttling at the capacity level. It shows which items consume capacity units, but it is not a per-run status and history list for operational monitoring.

  • d
    The workspace lineage view

    Lineage view shows the dependency relationships between items in a workspace (for example, which dataflow feeds which semantic model). It does not show run status or run history.

The concept

The Monitoring hub is Fabric's centralized operational monitoring surface. It aggregates run activity for pipelines, Dataflow Gen2, notebooks, Spark job definitions, and other supported items across the workspaces a user can access.

Why that’s the answer

The requirement is a single cross-item, cross-workspace view of run history and current status. That is exactly what the Monitoring hub provides: each row is a run (or refresh) with its status, start time, duration, submitter, and a drill-through link into the item-specific run details. The other options solve different problems: the OneLake catalog is for data discovery and governance, the Capacity Metrics app is for capacity-level consumption and throttling analysis, and lineage view is for dependency mapping — none of them lists job runs and their statuses.

How to reason it out
  1. Open the Monitoring hub from the Fabric navigation pane.
  2. Use the column filters to narrow by item type (pipeline, dataflow, notebook, Spark job definition), status, start time, or submitter.
  3. Select a run to drill into its item-specific detail page — for example, activity-level detail for a pipeline or the Spark application view for a notebook run.

Exam tip: For cross-item run history and status in Fabric, go to the Monitoring hub; use the Capacity Metrics app only for capacity-level consumption questions.

Monitor Fabric Items: Monitoring Hub, Refresh History, and Activator Alerts — the lesson that teaches this.

Question 4Implement and manage an analytics solution

A Spark workload in a Fabric workspace performs wide joins over large datasets and is spilling to disk because executors run out of memory. The team wants Spark compute with a memory-optimized node family and a larger node size. What should you configure?

Choose one.

  • a
    A custom Spark pool in the workspace Spark settings with the required node family and size. Correct

    Custom pools let you choose the node family (memory optimized) and node size (Small through XX-Large), which is exactly what this memory-bound workload needs.

  • b
    High concurrency mode on the starter pool.

    High concurrency mode shares one Spark session across multiple notebooks; it does not change node family or node size.

  • c
    A default environment that pins a newer Spark runtime version.

    An environment controls runtime version, libraries, and Spark properties, but the underlying node hardware profile comes from the pool, not the environment's runtime choice.

  • d
    A OneLake shortcut to reduce the volume of data read by the join.

    Shortcuts virtualize data locations to avoid copying data; they do not reduce the memory a join needs at execution time.

The concept

Custom Spark pools in Fabric workspace settings define the hardware profile of Spark compute: node family, node size, autoscale range, and dynamic executor allocation.

Why that’s the answer

Only a custom pool lets you pick a memory-optimized node family and a larger node size, directly addressing executor memory pressure. High concurrency mode is about session sharing, not sizing. An environment configures software (runtime, libraries, Spark properties), not hardware. A shortcut changes where data is read from, not how much memory the computation consumes.

How to reason it out
  1. Diagnose the problem as insufficient executor memory (disk spill during wide joins).
  2. Map the fix to compute hardware: node family and node size are pool-level properties.
  3. In workspace settings, open Data Engineering/Science > Spark settings and create a new pool with the memory-optimized family and a larger node size.
  4. Set the notebook or Spark job definition to use the new pool and re-run the workload.

Exam tip: Node family and node size are configured on a custom Spark pool — environments configure software, pools configure hardware.

Configure Microsoft Fabric Workspace Settings: Spark, Domains, OneLake, Airflow — the lesson that teaches this.

Question 5Ingest and transform data

A data engineer ingests a 3,000-row currency reference table into a Fabric Lakehouse once per day. The source system has no last-modified column, no change tracking, and rows can be updated or deleted at any time. Which loading pattern should the engineer use?

Choose one.

  • a
    A full load that replaces the destination table with the complete source table on every run Correct

    Correct. The table is tiny and the source offers no reliable way to identify changes or deletes. Reloading all 3,000 rows is trivially cheap, guarantees the destination exactly matches the source (including deletions), and keeps the pipeline simple.

  • b
    An incremental load driven by a watermark column

    Incorrect. The watermark pattern requires a reliably increasing change-indicator column, which this source does not have. It also cannot detect deletes, which occur in this source.

  • c
    Change data capture reading the source transaction log

    Incorrect. CDC would capture all changes including deletes, but it requires the source to support and enable log-based change capture. For a 3,000-row table, configuring CDC is unnecessary engineering overhead when a full reload takes seconds.

  • d
    An append-only load that adds the daily extract to the existing table

    Incorrect. Appending each daily extract would duplicate every unchanged row day after day and would never remove deleted rows, leaving the destination permanently incorrect.

The concept

Full loads replace the entire destination table each run. They are the right choice when the table is small, when the source offers no reliable change indicator, or when hard deletes must be reflected and cannot otherwise be detected.

Why that’s the answer

Incremental patterns depend on being able to identify what changed; this source has no watermark column and no change tracking, and it hard-deletes rows. A full daily reload of 3,000 rows is effectively free, is idempotent, and always leaves the destination as an exact snapshot of the source. The sophistication of CDC or watermarking buys nothing at this scale and the append option actively corrupts the data.

How to reason it out
  1. Assess table size and change-detection options: no watermark column, no CDC, deletes present, tiny table.
  2. Choose a full load: truncate-and-reload or overwrite the Delta table with each daily extract.
  3. Schedule the pipeline daily; the run cost is negligible at this row count.
  4. Revisit the pattern only if the table grows large enough that a full reload becomes expensive.

Exam tip: Small reference tables with no change tracking are best handled with a simple full reload, which also naturally handles deletes.

Fabric Loading Patterns: Full, Incremental, and Dimensional Model Loads — the lesson that teaches this.

The DP-700 question bank, by domain

The bank is built to the exam's own weighting, so the practice you get reflects the marks that are actually on offer — not whichever domain was easiest to write questions for.

Published DP-700 practice questions per exam domain
DomainExam weightTopicsQuestions
Implement and manage an analytics solution34%480
Ingest and transform data33%360
Monitor and optimize an analytics solution33%360
Total100%10200

How DP-700 questions are worded

Most DP-700 questions are not asking whether you can recall a definition. They describe a situation and ask which option satisfies it — so the skill being tested is reading the requirement precisely and eliminating options that fail it.

Single-response vs multiple-response

A single-response question has exactly one right answer. A multiple-response question tells you how many to pick ("Choose TWO") and there is no partial credit — getting one of the two right scores nothing. Read that instruction before you read the options.

Read the last line first

The final sentence is the actual question; everything before it is scenario. Read it first, then read the scenario knowing what you are looking for. It stops you from building an answer in your head that the question never asked for.

Hunt for the qualifier

Most scenarios turn on one word — MOST cost-effective, LEAST operational overhead, with the LEAST latency, without changing application code. Two options are frequently both technically correct, and the qualifier is the only thing separating them.

Eliminate, then choose

Distractors are almost always real Microsoft Azure services doing a real job — just not this job. Rule out the ones that break a stated constraint before you compare what's left. On a question you truly don't know, eliminating two options turns a guess into a coin flip.

Beyond DP-700 practice

DP-700 practice questions: your questions

Yes. You can answer 5 questions a day with no account at all, and creating a free account removes the daily limit entirely — the full 200-question DP-700 bank, with an explanation on every option.