SaveMyCert
Log in
5 of 5 free questions left today·for 30 a day
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
400
across 3 domains
Free, no account
5/day
a free account allows 30 a day
Real exam
55 Qs
100 min · pass 700 / 1000
Explanations
Every option
right and wrong

Build a practice session

5 free questions left today.

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 Fabric workspace for ad hoc exploration and wants the Spark session to be ready within seconds. The workspace admin has not configured any compute for the workspace yet. Which compute choice meets this need with the least administrative effort?

Choose one.

  • a
    Create a custom Spark pool with autoscale as the workspace's default pool.

    A custom pool must be configured first and its nodes are provisioned on demand, so sessions take minutes (about three) to start rather than seconds.

  • b
    Run the notebook on the starter pool created along with the workspace. Correct

    Correct. Every workspace gets a starter pool automatically: prehydrated, medium-size live nodes that start a session in roughly 5-10 seconds with nothing to configure.

  • c
    Create a single-node custom pool for the notebook to cut the nodes to start.

    Single-node custom pools are real, but they are still custom pools: the node is provisioned when the session starts, so fewer nodes does not mean a prewarmed start.

  • d
    Attach an environment with the team's extra libraries to the new notebook.

    Environments add libraries, not speed. Installing custom libraries personalizes the session at startup, which makes the session slower to become ready, and it is extra setup work.

The concept

Fabric creates a starter pool for every workspace: a prehydrated live pool of medium nodes that starts Spark sessions in seconds. Custom pools trade that speed for control over node size, family and scaling.

Why that’s the answer

The deciding facts are 'within seconds' and 'nothing configured'. Only the starter pool is already warm and needs no setup. Any custom pool, even a single-node one, is provisioned when a session starts and takes minutes. Attaching an environment with extra libraries adds work and lengthens startup because the libraries are installed into the session.

How to reason it out
  1. Identify the requirement: interactive work, session ready in seconds, no prior setup.
  2. Recall which compute is prehydrated: only the starter pool.
  3. Rule out custom pools of any size, since they cold-start.
  4. Rule out library customization, since it adds setup and startup time.

Exam tip: Seconds to start with no setup = the starter pool; any custom pool or custom-library install costs startup time.

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

Question 2Ingest and transform data

A data engineer copies a 2 TB sales table from Azure SQL Database into a Fabric Lakehouse every night. About 0.5% of rows are inserted or updated each day, and the source's LastModifiedDate column is set on every insert and update. The Lakehouse table must reflect each night's inserts and updates. Which loading pattern is MOST efficient?

Choose one.

  • a
    Truncate the Lakehouse table each night and reload every row from the source table, including LastModifiedDate

    A full reload is correct but moves 2 TB each night to capture roughly 10 GB of change. It suits small tables or sources with no change indicator; this source has a reliable one.

  • b
    Copy only the rows whose LastModifiedDate is later than the value stored after the previous run, then merge them Correct

    A watermark load filters on the maintained LastModifiedDate column, so each run moves only the changed rows, and merging applies updates in place instead of duplicating them.

  • c
    Append the rows whose LastModifiedDate falls on the current calendar date to the Lakehouse table each night

    Filtering on the calendar date instead of a stored watermark misses rows changed after the previous run but before midnight, and appending updated rows creates a second copy of each one instead of updating it.

  • d
    Hash every source row each night and compare the hashes with the Lakehouse rows to find which ones changed

    Hash comparison still reads all 2 TB from the source every run, so it does not reduce the expensive part of the load. It is a fallback for sources with no change indicator, and this source has one.

The concept

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

Why that’s the answer

The source has a LastModifiedDate column that is set on every insert and update, which is the prerequisite for the watermark pattern. The pipeline stores the highest value it has loaded, extracts rows above it, and merges them so updated rows replace their earlier versions. A full reload and a hash comparison both read the whole 2 TB table, and a calendar-date append both misses late changes and duplicates updated rows.

How to reason it out
  1. Check whether the source has a reliably maintained, increasing change column; here LastModifiedDate qualifies.
  2. Store the highest LastModifiedDate loaded so far in a control table.
  3. Each run, extract rows above the stored value and merge them into the target on the business key.
  4. Save the new maximum LastModifiedDate from the extracted rows for the next run.

Exam tip: Large table + reliable change column = watermark incremental load; reserve full reloads for small or change-opaque sources.

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 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.

  • b
    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.

  • c
    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.

  • d
    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.

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 nightly Spark job in a Fabric workspace performs wide joins and spills to disk because each executor runs short of memory. Adding more executors has not helped. The workspace uses its default compute, and the capacity allows workspace-level pool customization. What should the workspace admin change?

Choose one.

  • a
    Turn on high concurrency so the job shares a session with other notebooks.

    High concurrency shares one session across notebooks to save startup time; it gives no executor more memory, and sharing would add memory pressure.

  • b
    Pin a newer Spark runtime in the workspace default environment for the job.

    The runtime version changes Spark, Delta and library versions, not the memory available to each executor.

  • c
    Create a custom pool with a larger node size and run the job on that pool. Correct

    Correct. Executor memory follows node size. A custom pool lets the admin pick a larger (memory-optimized) node so each executor has more memory, which is what a spilling wide join needs.

  • d
    Raise the starter pool's maximum node count and maximum executor count.

    Admins can raise a starter pool's maximum nodes and executors, but its nodes stay medium. More executors of the same size has already failed to stop the per-executor spill.

The concept

Starter pools use fixed medium nodes (admins can only adjust their maximum nodes and executors). Custom pools let the admin choose the node family and size, which sets the memory available to each executor.

Why that’s the answer

The symptom is per-executor memory, and the stem rules out scaling out. Only a bigger node gives each executor more memory, and node size can only be chosen on a custom pool, which the capacity permits here. Raising starter-pool limits adds more medium executors; high concurrency and runtime versions don't change executor memory.

How to reason it out
  1. Classify the problem: each executor lacks memory (scale up), not too few executors (scale out).
  2. Note that the stem says scaling out has not helped.
  3. Recall that node size is fixed on the starter pool and selectable on a custom pool.
  4. Confirm the capacity allows workspace custom pools, then create one with larger nodes.

Exam tip: More memory per executor = bigger nodes = a custom pool; starter pools only scale out on medium nodes.

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 from a vendor API that returns the complete current list. The list has no last-modified column, and currencies can be renamed or removed at any time. After each run, the Lakehouse table must match the vendor list exactly. Which loading pattern should the engineer use?

Choose one.

  • a
    Append each day's complete extract to the Lakehouse table and filter on the latest load date at query time

    Appending works only if every query filters on the latest load date, so the table itself never matches the list, and it grows by 3,000 rows a day for no benefit.

  • b
    Overwrite the Lakehouse table with each day's complete extract from the vendor API Correct

    For a small table with no change indicator, a full load that replaces the table is simple, cheap and self-healing: removed currencies disappear and renamed ones are corrected every run.

  • c
    MERGE each day's complete extract on CurrencyCode, updating matched rows and inserting new ones

    This upsert updates and inserts correctly but has no action for currencies that are no longer in the list, so removed currencies stay in the table and it no longer matches the source.

  • d
    Copy the rows whose CurrencyCode sorts after the highest CurrencyCode already stored in the table

    A currency code is not a change indicator: renamed or removed currencies never sort after the stored value, so this filter misses every update and delete.

The concept

A full load replaces the destination with the complete source on every run. It is the right pattern when the source is small and offers no reliable way to detect change, because it captures inserts, updates and deletes without any change-tracking machinery.

Why that’s the answer

With 3,000 rows and no change column, reloading costs almost nothing and guarantees an exact copy. The tempting MERGE upsert handles inserts and updates but misses removals unless it also deletes target rows that are not in the source. A business-key "watermark" is not a change indicator, and appending daily snapshots never makes the table itself match the list.

How to reason it out
  1. Check the table size: 3,000 rows is trivial to reload.
  2. Check for a change indicator: there is none, so a watermark load cannot work.
  3. Check the delete requirement: removed currencies must disappear, which an insert-and-update MERGE does not do.
  4. Choose a full overwrite, which handles inserts, updates and deletes in one step.

Exam tip: Small table, no change indicator, deletes must be reflected = full load (overwrite).

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%4136
Ingest and transform data33%3132
Monitor and optimize an analytics solution33%3132
Total100%10400

Practise DP-700 one domain at a time

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.

Practise DP-700 from your browser

The SaveMyCert Chrome extension opens a daily drill of 5 DP-700 questions in the side panel, with the full explanation behind every answer. No account needed.

Get the Chrome extension (opens in a new tab)

Beyond DP-700 practice

DP-700 practice questions: your questions

Yes. You can answer 5 questions a day with no account at all, and a free account raises that to 30 a day across the full 400-question DP-700 bank, with an explanation on every option. Pro removes the daily cap entirely.

Source

Exam structure, domain weights and scoring on this page come from the official DP-700 exam guide.