Microsoft Fabric interview questions in 2026 test whether you can run one SaaS analytics platform end to end: OneLake storage, lakehouses and warehouses, pipelines, Spark, real-time data, Direct Lake reports and the capacity that pays for all of it. Interviewers for Fabric data engineer and analytics engineer roles care less about the menu of items and more about your judgement: when to shortcut rather than copy, why a Direct Lake report fell back to DirectQuery, and what to do when the capacity starts throttling at month end. This guide collects 55 high-value questions with model answers, including 11 production scenarios.
How to use this guide
Fabric changes quickly, and several features are still in preview. Using current names (Real-Time Intelligence, Eventhouse, Activator, Fabric data agent, SQL database in Fabric, Fabric IQ) tells an interviewer your knowledge is recent. Where a feature's status matters, the honest answer is "check the current documentation". Generic Spark, Delta and modelling theory is covered in our data engineering interview questions, so this page stays on what is specific to Fabric.
- Freshers and career switchers: what Fabric is, the workloads, OneLake, the tenant to item hierarchy, capacities and F SKUs, lakehouse versus warehouse, and the SQL analytics endpoint.
- Mid-level Fabric data engineers: shortcuts and mirroring, table maintenance, choosing between pipelines, Dataflow Gen2, Copy job and notebooks, Spark pools, Eventstreams and Eventhouse, and Direct Lake behaviour.
- Senior engineers and architects: OneLake security, Git integration and deployment pipelines, smoothing and throttling, Synapse migration, data agents and governance with Purview, plus the scenario section.
- Fabric fundamentals (Q1βQ10)
- OneLake, shortcuts, mirroring and security (Q11βQ16)
- Lakehouse, warehouse and SQL (Q17βQ21)
- Data Factory: pipelines, Dataflow Gen2 and Copy job (Q22βQ25)
- Spark and notebooks (Q26βQ28)
- Real-Time Intelligence (Q29βQ32)
- Power BI and Direct Lake (Q33βQ37)
- Governance, CI/CD, capacity and AI (Q38βQ44)
- Real-world scenario questions (Q45βQ55)
- Key takeaways
- Interview preparation checklist
- FAQ
Fabric fundamentals
1. What is Microsoft Fabric, and how is it different from assembling separate Azure data services?
Answer: Microsoft Fabric is a software-as-a-service analytics platform that covers ingestion, transformation, warehousing, real-time processing, data science and BI on one shared storage layer (OneLake) and one shared compute model (capacities). The difference from a classic Azure build is integration and ownership. With separate services you provision a storage account, a data factory, a Spark service, a warehouse and Power BI, then wire up networking, identities, linked services and copies of data between them. In Fabric those experiences already sit on the same lake, the same Microsoft Entra identity, the same governance catalog and the same capacity bill, so a table written by Spark can be queried by T-SQL and read by a Power BI report without being copied.
2. What are the main workloads in Fabric?
Answer: Microsoft Learn currently lists these workloads:
- Data Factory: pipelines, Dataflow Gen2, Copy job, mirroring and connectors for ingestion and orchestration.
- Data Engineering: lakehouses, Apache Spark notebooks and Spark job definitions.
- Data Warehouse: the Fabric warehouse, a T-SQL relational warehouse that stores data as Delta tables.
- Real-Time Intelligence: Real-Time hub, Eventstreams, Eventhouse and KQL databases, Real-Time Dashboards and Activator.
- Data Science: notebooks, ML experiments and models, with built-in experiment tracking and a model registry.
- Databases: SQL database in Fabric and other operational databases, which replicate automatically into OneLake.
- Power BI: semantic models, reports and dashboards.
- Fabric IQ (preview): a newer workload for business semantics, with items such as ontology, planning, graph, data agent and operations agent.
3. What is OneLake?
Answer: OneLake is the single, logical data lake that comes with every Fabric tenant. There is one OneLake per tenant, built on Azure Data Lake Storage Gen2, so it supports a subset of the ADLS Gen2 and Blob APIs and tools that speak those APIs can read it. You do not provision it: creating a workspace and an item creates the folders. The idea is "one copy of data": every engine (Spark, the SQL engine, Analysis Services for Power BI, KQL) reads the same Delta and Parquet files instead of each workload keeping its own copy. Shortcuts extend that namespace to data that lives elsewhere.
4. Explain the hierarchy of tenant, capacity, workspace and item.
Answer: The tenant is the Microsoft Entra tenant, and it maps to the root of OneLake. A capacity is a pool of compute that you buy (an F SKU) and that every operation consumes. A workspace is a container for items, the unit of collaboration and access, and it is assigned to one capacity at a time. An item is a lakehouse, warehouse, notebook, pipeline, semantic model, eventhouse and so on. In OneLake the path follows the same shape: workspace, then item, then folders and tables.
Tenant (one OneLake) +-- Capacity F64 (compute + billing) | +-- Workspace: Sales-Prod | | +-- Lakehouse, Warehouse, Pipeline | | +-- Semantic model, Report | +-- Workspace: Finance-Prod +-- Capacity F16 (dev/test workspaces)
Interview tip: Point out that storage is tenant-wide but compute is per capacity, which is why you can isolate noisy workloads by moving a workspace to another capacity without moving data.
5. What is a Fabric capacity, and what does an F SKU mean?
Answer: A capacity is the compute resource pool that runs all Fabric operations in the workspaces assigned to it. F SKUs are purchased through Azure and named by their capacity units (CUs): F2 has 2 CUs, F64 has 64, and the range goes up to F8192. Every Spark job, warehouse query, pipeline run, report query and Copilot call consumes CU seconds from that pool. F capacities are billed per second with no commitment, can be paused and resumed, and can be scaled up or down; a yearly reservation is an option for steady workloads. Power BI Premium P SKUs are being retired, and Microsoft recommends F SKUs for new deployments.
One licensing detail interviewers like: on F SKUs smaller than F64, people who view Power BI content need a Pro or Premium Per User licence; from F64 upward, users with a free licence and the Viewer role can view it.
6. What is a lakehouse in Fabric?
Answer: A lakehouse is a Data Engineering item that stores structured and unstructured data in OneLake and exposes it to both Spark and SQL. It has two top-level folders. Tables holds managed Delta tables, which the lakehouse discovers and registers automatically. Files holds anything else (CSV, JSON, images, raw drops) with no table discovery. Delta gives ACID transactions, schema enforcement and time travel. Each lakehouse automatically gets a SQL analytics endpoint for read-only T-SQL, and lakehouses can be schema-enabled to group tables into schemas.
7. What is the SQL analytics endpoint, and what can you not do with it?
Answer: The SQL analytics endpoint is a system-generated, read-only T-SQL surface over the Delta tables of a lakehouse (mirrored databases and SQL databases in Fabric get one too). Analysts can connect from SSMS or the query editor and run full SELECT queries, and you can create views and table-valued functions there. What you cannot do is DML: no INSERT, UPDATE or DELETE, because the tables are owned by whatever writes them (usually Spark). If a team needs T-SQL writes and multi-table transactions, that work belongs in a warehouse.
8. What is the Fabric warehouse?
Answer: The warehouse is a Data Warehouse item for enterprise relational warehousing in T-SQL. It supports full DQL, DML and DDL, multi-table ACID transactions, views, functions and stored procedures. It separates compute from storage, manages its own workload and table layout (compaction, V-Order by default, optional data clustering), and stores data in open Delta format in OneLake, so Spark and Power BI can read the same tables. Data comes in through COPY INTO, INSERT, CREATE TABLE AS SELECT, pipelines, dataflows or cross-database queries.
9. Why does it matter that Fabric stores tables in Delta Lake and Parquet?
Answer: Because the format is the contract between engines. Parquet is the columnar file format; Delta Lake adds a transaction log on top that gives versioning, ACID commits, schema enforcement and time travel. Since lakehouses, warehouses, mirrored databases and SQL databases in Fabric all land data as Delta in OneLake, any engine that understands Delta can read it: Spark, the SQL engine, Direct Lake semantic models and external tools through the OneLake APIs. That is what makes "one copy, many engines" possible and reduces lock-in, because your data is not stuck in a proprietary storage format.
10. How does Fabric relate to Azure Synapse Analytics?
Answer: Fabric brings together experiences that previously lived in separate products, including Synapse-style Spark, SQL warehousing and Data Explorer (KQL) analytics, Azure Data Factory pipelines and Power BI, but as SaaS on OneLake rather than as a PaaS workspace you provision in Azure. Synapse remains an Azure service, and you should not tell an interviewer it has been retired; check the current Azure documentation for its status. What Microsoft Learn does provide is a set of documented migration paths into Fabric: the Fabric Migration Assistant for dedicated SQL pools, guidance for Synapse Spark pools, notebooks, Spark job definitions and Hive metastore metadata, pipeline migration guidance, and a path from Synapse Data Explorer to Eventhouse.
OneLake, shortcuts, mirroring and security
11. What is a OneLake shortcut?
Answer: A shortcut is an object in OneLake that points to data stored somewhere else, much like a symbolic link. It appears as a folder, so any engine that can read OneLake can read through it, and nothing is copied. Internal shortcuts point to other Fabric items (lakehouses, warehouses, KQL databases, mirrored databases, SQL databases, semantic models). External shortcuts point to ADLS Gen2, Azure Blob Storage, Amazon S3 and S3-compatible storage, Google Cloud Storage, Dataverse, OneDrive and SharePoint, and Iceberg tables; on-premises or network-restricted sources can be reached through the on-premises data gateway.
In a lakehouse, shortcuts in the Tables folder can only be created at the top level (or as schema shortcuts in a schema-enabled lakehouse) and are recognised as tables if the target is Delta. Shortcuts in Files can sit anywhere and point to any format. In a KQL database, a shortcut behaves like an external table queried with external_table().
Interview tip: Mention deletes. Deleting the shortcut does not delete the target, but deleting a file inside a shortcut does delete it at the source if you have write permission there.
12. When would you use a shortcut, mirroring or a copy?
Answer: Choose by where the data must live, how fresh it must be and who owns the layout.
| Option | Data movement | Typical use | Watch out for |
|---|---|---|---|
| Shortcut | None, data stays at source | Data already in a lake (ADLS, S3, GCS, another lakehouse), cross-team sharing | Source file layout and egress; performance depends on the source |
| Database mirroring | Continuous replication into Delta in OneLake | Operational databases (Azure SQL, SQL Server, Cosmos DB, PostgreSQL, Oracle, Snowflake and others) | Supported sources and limitations differ per connector |
| Copy (pipeline, Copy job, Dataflow Gen2, notebook) | Physical copy | Transformation on the way in, sources with no mirroring or shortcut support, reshaping grain | You own scheduling, incremental logic and table maintenance |
13. Whose identity is used when someone reads data through a shortcut?
Answer: For internal OneLake shortcuts, OneLake uses the identity of the calling user, so that user needs read permission on the target location as well. External shortcuts to ADLS or S3 use a cloud connection that is bound when the shortcut is created, and only users with permission on that connection can create shortcuts with it. One important exception: when a Power BI semantic model uses Direct Lake on SQL, or T-SQL runs in delegated identity mode, the caller's identity is not passed through to the shortcut target; the item owner's identity is used instead. Microsoft's documented fix is to use Direct Lake on OneLake or T-SQL in user identity mode.
Interview tip: This is a favourite senior question because it is where "it works for me but not for the business user" bugs come from.
14. How does shortcut caching help with multicloud data?
Answer: When OneLake reads files through certain external shortcuts (Google Cloud Storage, S3, S3-compatible and on-premises gateway shortcuts), it can store them in a workspace-level cache and serve later reads from the cache instead of the remote cloud. That cuts egress charges from the other cloud and latency. You switch it on in workspace settings on the OneLake tab and choose a retention period between 1 and 28 days, which resets each time a file is read. If the source has a newer version of a file, OneLake fetches it and refreshes the cache. Individual files larger than 1 GB are not cached, and you can reset the cache at any time.
15. What are the three types of mirroring in Fabric, and how is mirroring charged?
Answer:
- Database mirroring replicates whole databases or selected tables into Delta tables in OneLake in near real time. Sources include Azure SQL Database, Azure SQL Managed Instance, SQL Server, Azure Cosmos DB, Azure Database for PostgreSQL, Oracle, SAP, Snowflake and Google BigQuery, with some sources in preview.
- Metadata mirroring syncs only catalog metadata (catalogs, schemas, tables) and uses shortcuts to read data in place. Azure Databricks Unity Catalog mirroring is the main example.
- Open mirroring gives you a landing zone in OneLake; any application can write change data there in the documented format, and Fabric merges it into Delta tables.
Every mirrored database also gets a SQL analytics endpoint. On cost, describe it generally: for database and open mirroring, the background compute used to replicate is not charged to your capacity, and replica storage is free up to a limit that scales with capacity size. Querying the mirrored data from SQL, Spark or Power BI is charged normally, and mirroring needs a running capacity, so a paused capacity stops replication.
16. Explain OneLake security. How do you let a Viewer see only some rows?
Answer: Fabric separates two planes. The control plane (workspace roles and item permissions) decides what someone can do to an item. The data plane is OneLake security: roles defined on an item that grant Read or ReadWrite on specific tables, folders or schemas, optionally with row-level and column-level security, and enforced consistently across Fabric engines. Admins, Members and Contributors already have read and write access to all data in the workspace, so OneLake security roles mainly matter for Viewers and users who were given Read on an item. A lakehouse comes with a DefaultReader role that gives anyone with ReadAll access to the data; to restrict data, you edit or remove that role and create narrower ones.
So for a Viewer who should see only the Hyderabad branch rows, you would create a OneLake security role on the table with an RLS predicate, add the user's security group as a member, and make sure no broader role (such as DefaultReader) also grants them the table.
Lakehouse, warehouse and SQL
17. Lakehouse vs warehouse in Fabric: how do you choose?
Answer: Both store Delta tables in OneLake and share the same SQL engine, so the choice is about development style, data types and transactions, not about where the data ends up.
| Question | Lakehouse | Warehouse |
|---|---|---|
| Primary language | Spark (PySpark, Scala, Spark SQL, R) | T-SQL |
| Data types | Structured, semi-structured, unstructured files | Structured tables |
| Writes through T-SQL | No, the SQL analytics endpoint is read-only | Yes, full DML and DDL |
| Multi-table transactions | No (single-table Delta ACID) | Yes |
| Who manages table layout | You (OPTIMIZE, VACUUM, clustering) | The warehouse, automatically |
| Typical role | Bronze/silver engineering, data science | Gold serving layer for SQL-heavy teams |
Many real designs use both: a lakehouse for ingestion and Spark transformation, and a warehouse for a dimensional model that SQL developers maintain with stored procedures.
18. How do cross-database queries work in Fabric?
Answer: Because warehouses, lakehouse SQL analytics endpoints, mirrored databases and SQL databases in Fabric all sit on OneLake, you can join them in one T-SQL query using three-part names (item.schema.table) with no data copied. For example, a warehouse query can join its fact table with a dimension in a lakehouse:
SELECT f.PolicyId, d.BranchName, f.Premium
FROM SalesWarehouse.dbo.FactPremium AS f
JOIN CuratedLakehouse.dbo.DimBranch AS d
ON d.BranchKey = f.BranchKey;
Use it to avoid duplicate dimension tables. Keep an eye on permissions, because the caller needs access to every item in the query.
19. How would you implement a medallion architecture in Fabric?
Answer: Bronze, silver and gold describe how refined the data is, not which item type to use. A common layout is: bronze as a lakehouse fed by pipelines, Copy job, mirroring or shortcuts, keeping source fidelity; silver as a lakehouse where Spark notebooks clean, deduplicate and conform data; gold as either a lakehouse or a warehouse holding dimensional, business-ready tables that Direct Lake semantic models read. Many teams put each layer in its own workspace so they can secure and assign capacity per layer.
Production consideration: Microsoft's table maintenance guidance says to avoid building Direct Lake models on raw bronze tables and to apply V-Order to Spark-written tables mainly where Direct Lake is a primary consumer. Read-optimised layout belongs in gold.
20. What is SQL database in Fabric, and when would you use it instead of a warehouse?
Answer: SQL database in Fabric is an operational (OLTP) database based on the Azure SQL Database engine, created and managed inside the Fabric portal. Its data is replicated automatically, in near real time, into OneLake as Delta, with a SQL analytics endpoint for analytics. Use it for application back ends, operational data stores, reverse ETL targets (pushing curated results back to apps) and "translytical" apps that need transactions and analytics on the same data. A warehouse is for analytical workloads: large scans, aggregations and dimensional models. SQL database supports Git integration and deployment pipelines, and it supports vector data types for RAG-style application features.
21. What table maintenance does a lakehouse need?
Answer: Warehouse and database mirroring manage their own layout; lakehouse tables need an explicit maintenance strategy. Current Microsoft guidance for Spark-written tables:
- Use the newer Fabric Spark runtime defaults: adaptive target file size, file-level compaction targets and deletion vectors.
- Enable auto compaction so small files are compacted after writes; add optimize write for streaming or micro-batch writes.
- Run a one-time
OPTIMIZEfor an existing small-file backlog, and scheduleVACUUMseparately to remove unreferenced files, without shortening retention below what time travel and concurrent readers need. - Use liquid clustering when recurring filters benefit from file skipping; avoid partitioning by default.
- Apply V-Order (or the
readHeavyForPBIresource profile) when Direct Lake is a main consumer, not just for Spark or SQL endpoint performance.
Tables written by pipeline Copy activity or Dataflow Gen2 do not get Spark runtime defaults, so inspect their layout and schedule maintenance (for example with the lakehouse maintenance activity in a pipeline).
For SQL depth beyond Fabric, our SQL interview questions for data and AI cover window functions, query plans and modelling.
Data Factory: pipelines, Dataflow Gen2 and Copy job
22. Pipelines, Dataflow Gen2, Copy job or a notebook: how do you choose?
Answer:
- Copy job: Microsoft's recommended option for straightforward data movement, with bulk, incremental and CDC-based copy styles in one simple item. Use it when you are moving data without much logic.
- Pipeline: the orchestrator. Copy activity, notebook activity, stored procedures, scripts, loops, conditions, parameters, schedules and event triggers. Use it to sequence work and handle failure paths.
- Dataflow Gen2: low-code Power Query transformations, a good fit for analysts and for moderate volumes that need joins, cleansing and type fixes.
- Notebook (Spark): code-first transformation for large volumes, complex logic, testing and reuse.
- dbt job: SQL-based transformations with dbt models on Fabric data (check current status).
A sensible production pattern is: Copy job or mirroring to land data, notebooks or warehouse procedures to transform, and a pipeline to orchestrate and alert.
23. How do you implement incremental loads in Fabric?
Answer: In order of preference: mirroring if the source is supported (changes replicate continuously); Copy job with incremental or CDC delivery for supported sources; and otherwise a watermark pattern in a pipeline. The watermark pattern stores the last loaded timestamp or ID in a control table, passes it as a parameter to a Copy activity query, lands the delta in bronze and then applies a Delta MERGE into silver in a notebook. Whichever you choose, make loads idempotent (re-running a window must not duplicate rows), handle deletes explicitly, and record row counts per run so you can reconcile with the source.
24. What orchestration options exist besides scheduled pipelines?
Answer: Pipelines can run on schedules or on events, such as files arriving in storage or OneLake events surfaced through the Real-Time hub. Activator rules can start pipelines, Spark jobs or dataflows when a condition is met in streaming data or a report. For teams that prefer orchestration as code, Fabric has an Apache Airflow job item for Python DAGs, and Microsoft documents migrating from Azure Workflow Orchestration Manager to it. Our Airflow interview questions go deeper on DAG design.
25. A company has hundreds of Azure Data Factory pipelines. How do they move to Fabric?
Answer: Microsoft describes Data Factory in Fabric as the next generation of Azure Data Factory and documents two routes. The quick route is the Azure Data Factory item ("mount"), which brings existing ADF artifacts into a Fabric workspace so you can see and run them from Fabric while they continue to run in ADF. The longer route is an upgrade: plan with Microsoft's upgrade guide, then rebuild or convert pipelines as Fabric pipelines, replacing linked services with Fabric connections and adjusting activities that differ. Inventory first, migrate low-risk pipelines in waves, and run old and new side by side with reconciliation before you switch off the ADF triggers.
Spark and notebooks
26. Starter pools vs custom Spark pools: what is the difference?
Answer: Starter pools are prewarmed, Microsoft-managed Spark clusters with medium nodes. With no extra libraries or custom properties, sessions typically start in seconds. Microsoft describes this fast start as an optimisation, not a promise: if prewarmed capacity is not available, or the workspace uses private links or managed virtual networks, Fabric creates a cluster on demand, which takes minutes. Custom pools, created by workspace admins, let you choose node size, autoscale range and dynamic allocation, and take longer to start. Custom live pools keep dedicated clusters warm during an active window that you define, for predictable start times on scheduled jobs. You are billed for active sessions, not for idle pool time.
27. How does capacity translate into Spark compute?
Answer: One capacity unit equals two Spark vCores, and Spark can burst up to three times that. So an F64 has 128 Spark vCores, or up to 384 with the burst multiplier, and the node sizes and counts in your pools must fit inside that. Spark usage on the capacity is subject to smoothing and throttling like other workloads. If capacity admins enable Autoscale Billing for Spark, Spark switches to pay-as-you-go billing separate from the capacity, and bursting and smoothing no longer apply to Spark. That is useful when Spark spikes would otherwise throttle Power BI users on a shared capacity.
28. How do you manage libraries, and how do you read a shortcut from a notebook?
Answer: Use a Fabric environment item for libraries and Spark properties, attach it to notebooks or set it as the workspace default, and keep it in Git so it is versioned. Inline %pip install is fine for exploration but installs per session and is not reproducible. Custom libraries add session start time, which matters for scheduled jobs. Reading a Delta shortcut looks like reading any lakehouse table:
df = spark.read.format("delta").load("Tables/claims_s3")
recent = df.filter("claim_date >= '2026-01-01'")
recent.write.format("delta").mode("overwrite") \
.saveAsTable("silver_claims")
Real-Time Intelligence
29. What are the components of Real-Time Intelligence?
Answer:
- Real-Time hub: the tenant-wide catalog of data in motion: running streams, Microsoft sources (Event Hubs, IoT Hub, database CDC) and Fabric and Azure events.
- Eventstream: no-code ingestion, transformation and routing of events from sources such as Event Hubs, IoT Hub, Kafka, Kinesis, Pub/Sub, MQTT and CDC feeds.
- Eventhouse and KQL database: the store and engine for time-based event data, queried with KQL (and some T-SQL).
- KQL queryset: saved queries and exploration.
- Real-Time Dashboard and Map: low-latency visualisation, including geospatial.
- Activator: rules that detect conditions and take actions.
30. What can an Eventstream do with events before they land?
Answer: Eventstreams can filter, clean, transform, aggregate over windows and detect duplicates, then route events to different destinations based on content, for example raw events to an Eventhouse, aggregates to a lakehouse, and alert-worthy events to Activator. Derived streams publish the transformed output as a new stream in the Real-Time hub for other teams. Keep heavy business logic out of the stream: do light shaping in flight and leave complex joins and history to the Eventhouse or lakehouse. For Kafka-side design questions, see our Kafka interview questions.
31. Eventhouse or lakehouse for telemetry data? Show a KQL example.
Answer: Use an Eventhouse when the data is high-volume, append-heavy, time-stamped and queried interactively by time windows (logs, sensor readings, clickstreams), because it indexes and partitions by ingestion time and returns ad hoc queries quickly. Use a lakehouse for batch-oriented history, heavy Spark transformation and data science. You often want both, and you do not need two pipelines: turning on OneLake availability for a KQL database exposes its tables as Delta in OneLake for Spark, SQL and Direct Lake.
Telemetry
| where Timestamp > ago(15m)
| summarize avgTemp = avg(Temperature),
maxTemp = max(Temperature)
by DeviceId, bin(Timestamp, 1m)
| where maxTemp > 85
32. What is Activator, and what is a good use for it?
Answer: Activator (previously branded Data Activator) watches data in Eventstreams, KQL queries or Power BI reports and acts when a condition or pattern occurs: a threshold, a value staying high for a period, or the result of a KQL query. Actions include notifying people by email or Teams, running a pipeline, Spark job, dataflow or user data function, or starting a Power Automate flow. A good use is an operational alert that needs action rather than a dashboard nobody watches, such as a cold-storage temperature drift in a pharmacy chain. Design rules with a sustained-condition window so one noisy reading does not page the on-call engineer.
Power BI and Direct Lake
33. What is Direct Lake mode, and how does it compare with Import and DirectQuery?
Answer: Direct Lake is a Power BI semantic model storage mode that loads column data directly from Delta tables in OneLake into memory on demand, and then answers DAX queries with the same VertiPaq engine as Import mode. A Direct Lake "refresh" (called framing) only updates metadata to point at the latest Delta version, so it takes seconds instead of copying the data.
| Mode | Where data is read from | Refresh | Query engine |
|---|---|---|---|
| Import | A copy inside the model | Full or incremental data refresh | VertiPaq |
| DirectQuery | The source, at query time | None needed | The source database |
| Direct Lake | Delta files in OneLake, paged into memory | Framing (metadata only) | VertiPaq |
Direct Lake needs a Fabric capacity. Import is still a good choice for self-service models that need Power Query shaping, and models can mix Import and Direct Lake tables in some configurations.
34. What is the difference between Direct Lake on OneLake and Direct Lake on SQL?
Answer: Direct Lake on OneLake reads Delta tables from one or more Fabric items directly and never falls back to DirectQuery; it can be combined with Import tables. Direct Lake on SQL uses a single item's SQL analytics endpoint for table discovery and permission checks, and it falls back to DirectQuery when it cannot read a Delta table directly: for example when the table is a SQL view, when the endpoint enforces SQL row-level security, or when guardrails are exceeded. The model property Direct Lake behavior controls whether fallback is allowed. If you disable it, those queries fail instead of silently getting slower.
35. What are framing and automatic updates?
Answer: Framing is the Direct Lake refresh: the model records which Delta version (which set of Parquet files) each table should use. With automatic updates enabled, the model reframes when the underlying Delta tables change; alternatively you reframe programmatically at the end of an ETL run so users never see a half-loaded set of tables. Framing is cheap, but after it, column data is evicted and reloaded (transcoded) on the next queries, so the first queries after a refresh can be slower. Append-friendly update patterns help, because unchanged Parquet files can be reused through incremental framing.
36. What are Direct Lake guardrails, and what happens when you exceed them?
Answer: Each capacity size has per-table limits on Parquet files, row groups and rows, a limit on model size, and a memory ceiling for paging in data, and the limits rise with larger SKUs. Check the current table in the Direct Lake documentation rather than quoting numbers from memory. What happens when you exceed them depends on the mode: with Direct Lake on OneLake, refresh fails and the model cannot be queried until the Delta tables are brought within limits (for example by compaction); with Direct Lake on SQL, refresh succeeds with a warning and queries fall back to DirectQuery, slower but still answering. The right fix is usually table maintenance, not a bigger capacity.
37. How does security work with Direct Lake?
Answer: By default Direct Lake uses single sign-on, so the report user's identity must have access to the data (OneLake files for Direct Lake on OneLake, the SQL endpoint for Direct Lake on SQL). Alternatively you configure a fixed identity cloud connection, so the model reads data as one identity and you enforce access with semantic model RLS and OLS. Microsoft strongly recommends a fixed identity when you use semantic model RLS. A key subtlety: SQL-endpoint RLS is not applied by Direct Lake on OneLake (it reads files, not SQL), and with Direct Lake on SQL it causes DirectQuery fallback. Decide deliberately which layer enforces row-level security instead of stacking both by accident.
Governance, CI/CD, capacity and AI
38. What are the workspace roles, and what can each do?
Answer: There are four: Admin, Member, Contributor and Viewer. Admins manage the workspace, add any role, create a workspace identity and connect the workspace to Git. Members can add people with lower permissions and allow resharing. Contributors can create, edit, run and delete items and read and write data. Viewers can view items and query through the SQL analytics endpoint, but cannot read lakehouse data through Spark or OneLake APIs unless OneLake security grants it. Assign roles to Entra security groups rather than individuals, and give production business users item-level sharing or app access rather than workspace membership.
39. How do you govern Fabric, and where does Microsoft Purview fit?
Answer: Start with Fabric's built-in governance in the OneLake catalog: discovery, governance insights and recommended actions, domains to group workspaces by business area for federated ownership, endorsement (promoted and certified items), and lineage. Microsoft Purview adds protection and compliance: Information Protection sensitivity labels on Fabric items that stay with data on supported export paths, Data Loss Prevention policies for structured data such as lakehouses, warehouses, databases and semantic models, the Purview audit log for Fabric user activity, Insider Risk Management indicators, and governance of Copilot and agent interactions. In an Indian bank or insurer, labels and DLP are how you show that personal data is handled in line with obligations such as the DPDP Act.
40. How do Git integration and deployment pipelines work together?
Answer: Git integration connects a workspace to a branch in Azure DevOps, GitHub or GitHub Enterprise (cloud-hosted) and stores item definitions (notebooks, pipelines, warehouse and SQL database projects, semantic models and many more) as files, never the data. Developers work in their own feature workspaces or branches and merge through pull requests. Deployment pipelines promote content between two to ten stages (by default Development, Test, Production), pairing items across stages and applying deployment rules to rebind data sources or parameters per stage. A deployment plan (preview) can control order and run actions. A common pattern is Git for version control and review on the development workspace, plus deployment pipelines (or Fabric REST APIs from CI/CD) for promotion. Variable libraries help keep connection details out of item definitions.
The same release discipline applies to AI workloads, covered in CI/CD for AI applications.
41. What are bursting and smoothing?
Answer: Bursting lets an operation temporarily use more compute than the SKU provides so it finishes fast. Smoothing then spreads that operation's CU usage over future 30-second timepoints so a spike does not immediately throttle the capacity. Interactive operations (such as report queries) are smoothed over at least five minutes and up to about an hour depending on their size; background operations (such as Spark jobs, pipeline runs and most warehouse work) are smoothed over 24 hours. The practical effect is that a big nightly job is "paid for" across the next day, which is why a busy batch window can still be hurting interactive users the next afternoon.
42. Describe the throttling stages. How do you know throttling is happening?
Answer: Throttling is based on how much future capacity has already been consumed by smoothed usage:
| Future capacity used | Stage | Effect |
|---|---|---|
| Up to 10 minutes | Overage protection | No throttling |
| 10 to 60 minutes | Interactive delay | New interactive operations delayed by 20 seconds |
| 60 minutes to 24 hours | Interactive rejection | New interactive operations rejected; background still runs |
| Over 24 hours | Background rejection | All new requests rejected |
Operations already running are not throttled. Users see errors such as CapacityLimitExceeded; admins confirm it in the Microsoft Fabric Capacity Metrics app (throttling charts, overages, system events) and can set capacity threshold alerts. Real-Time Intelligence skips the 20-second delay stage, and eventstreams get reduced resources rather than being stopped.
43. What does Copilot in Fabric do, and what are its operational considerations?
Answer: Copilot experiences exist across workloads: generating and fixing notebook code (with a "Fix with Copilot" option for failed cells), building pipelines and dataflows from natural language, writing T-SQL in the warehouse and SQL database, writing KQL in Real-Time Intelligence, and creating report pages and summaries in Power BI. Operationally: Copilot is enabled by default on paid F2 or larger capacities and is not available on trial SKUs, it consumes capacity like any other operation, and for capacities outside the US and EU data boundary (including India) it needs the cross-geo processing tenant setting because prompts may be processed in another region. That setting is a data residency decision for compliance, not just a toggle. Treat generated code as a draft that needs review.
44. What is a Fabric data agent, and how is it different from Copilot?
Answer: A Fabric data agent (generally available) is a configurable conversational Q&A item that you build over up to five data sources: lakehouses, warehouses, Power BI semantic models, KQL databases, mirrored databases or ontologies. It converts questions to SQL, DAX or KQL, runs read-only queries with the asking user's permissions, and returns a summarised answer. You improve accuracy with agent instructions and example question-query pairs. Copilot is a built-in assistant for authors; a data agent is an artifact you publish to business users, including through Microsoft 365 Copilot, Copilot Studio, Microsoft Foundry and Teams, and it supports Git and deployment pipelines. Limitations matter: no unstructured documents, read-only, answers capped to a small number of rows, and data sources must be in the same region as the agent's capacity.
The newer Fabric IQ workload (preview) adds ontology items so agents share business definitions like "customer" or "active policy". The underlying pattern is the same as in our text-to-SQL agent project, and our Azure AI interview questions cover the Foundry side.
If you would rather build these pipelines, lakehouses and governed data foundations hands-on than only read about them, Cloudsoft's HORIZON Data Engineering & AI program covers modern data engineering together with the data work that AI systems depend on.
Real-world scenario questions
45. At month end, finance users get "capacity limits exceeded" errors on reports. What do you do?
Answer: Confirm it is throttling, find which operations filled future capacity, give immediate relief, then fix the cause. Consider a bank's GCC in Hyderabad where finance reports, nightly Spark loads and ad hoc data science all share one F64.
What I would check:
- Capacity Metrics app: the throttling charts (10-minute, 60-minute, 24-hour) to see which stage we reached, and the overages tab for carryforward and minutes to burndown.
- Drill into the timepoints: top operations by CU, split into interactive and background. A heavy month-end Spark backfill smoothed over 24 hours often explains interactive rejection hours later.
- Bad items: a semantic model doing large Import refreshes during business hours, DirectQuery fallback on a Direct Lake model, or a notebook stuck in a loop.
- Immediate relief: temporarily scale the F SKU up (more idle capacity burns down carryforward faster), or pause and resume only if the capacity can tolerate the interruption, because pausing bills accumulated usage and makes content unavailable.
- Structural fixes: move data engineering workspaces to a separate capacity, consider Autoscale Billing for Spark, reschedule backfills, optimise the offending items, and set capacity threshold alerts.
Production consideration: Microsoft's documentation notes that slow performance is often item design, not capacity. Fix the top consumers before buying a permanently larger SKU. General FinOps habits from cloud cost optimization for AI apply here.
46. A Direct Lake report that was fast last month now takes many seconds per visual. How do you investigate?
Answer: Determine whether queries are falling back to DirectQuery, whether the Delta tables degraded, or whether the model and DAX changed.
What I would check:
- Fallback: is the model Direct Lake on SQL? Did someone add a table based on a SQL view, enable SQL-endpoint RLS, or exceed a guardrail? Performance Analyzer or a trace shows DirectQuery events; refresh history shows guardrail warnings.
- Table layout: run
DESCRIBE DETAILfor file counts, and use Delta Analyzer for row groups. Streaming or frequent small appends create many small files and row groups, which raises transcoding cost and can hit guardrails. - V-Order: was the gold table rewritten by a new Spark job without V-Order, or by Dataflow Gen2 without any maintenance?
- Update pattern: a job that now overwrites the whole table each hour forces full re-transcoding after every reframe, whereas appends allow incremental framing.
- Memory: has the model grown past the capacity's memory ceiling, causing paging in and out?
- Model and DAX: new high-cardinality columns, bi-directional relationships or expensive measures.
Production consideration: Fix at the source: compact, apply V-Order or the read-heavy profile, prefer appends, and consider disabling fallback in testing so that problems fail loudly instead of quietly slowing down.
47. You are asked to migrate an Azure Synapse environment (dedicated SQL pool, Spark pools, pipelines) to Fabric. What is your plan?
Answer: Treat it as three migrations sharing one cut-over plan, and move by workload, not as a big bang.
What I would check:
- Inventory: databases, table sizes, stored procedures, Spark pools, notebooks, libraries, Hive metastore tables, pipelines, triggers, linked services, consumers and security model.
- Dedicated SQL pool: use the Fabric Migration Assistant for Data Warehouse (DACPAC upload or direct connection) to migrate schema objects, fix incompatible T-SQL in its "fix problems" step (Copilot can suggest fixes), then copy data with a Copy job. Known differences include SQL authentication (replace with Entra ID), column-level encryption, identity column behaviour, indexes and external tables.
- Spark: map Synapse pools to Fabric pools or starter pools, move libraries into environments, migrate notebooks and Spark job definitions, and migrate Hive metastore metadata, following Microsoft's Synapse Spark migration articles.
- Pipelines: follow the documented options for moving Synapse pipelines to Fabric pipelines and replace linked services with connections.
- Validation: run both platforms in parallel, reconcile row counts and key aggregates, compare report outputs, then repoint consumers.
Production consideration: Size the Fabric capacity from a measured pilot, not from the Synapse DWU number. Separate migration backfills from business-hours workloads so the first week does not end in throttling.
48. Design a real-time IoT monitoring solution for a manufacturer's plants on Fabric.
Answer: Consider a manufacturer with sensors on production lines in several plants, publishing to Azure IoT Hub.
IoT Hub --> Eventstream (filter, dedupe, enrich)
|--> Eventhouse (raw + 1-min aggregates)
| |--> Real-Time Dashboard, Map
| |--> OneLake availability --> Lakehouse
|--> Activator (sustained over-temp rules)
--> Teams alert / run pipeline
What I would check:
- Event schema and volume per plant, late and out-of-order events, and device ID quality.
- Eventstream processing: drop malformed events, deduplicate, enrich with a device reference table, and route raw and aggregated streams separately.
- Eventhouse design: retention and caching policies, materialized views for per-minute aggregates, and KQL functions shared by dashboards and agents.
- Activator rules on sustained conditions (for example, over threshold for several minutes) to avoid alert storms, with an owner per alert.
- History and ML: OneLake availability exposes Eventhouse tables as Delta for Spark-based predictive maintenance models.
- Capacity: streaming runs continuously, so place it on a capacity sized for steady load and monitor it separately from batch.
Production consideration: Decide what "real time" the business actually needs; many plants need alerts in seconds but reports every few minutes. See our time series forecasting interview questions for the modelling side.
49. An auditor finds that a Viewer can see all branches' data in a report, even though SQL row-level security is defined on the warehouse. Why, and how do you fix it?
Answer: The likely cause is a mismatch between where security is enforced and the path the report uses. If the semantic model is Direct Lake on OneLake, it reads Delta files directly and SQL-endpoint RLS is not applied. If it uses a fixed identity with no semantic model RLS, every user sees what that identity sees. A shortcut with delegated identity can produce the same effect.
What I would check:
- The model's storage mode and connection: Direct Lake on OneLake or on SQL, single sign-on or fixed identity.
- Whether semantic model RLS roles exist and the user is mapped correctly.
- Whether OneLake security roles restrict the underlying tables, and whether DefaultReader still grants broad access.
- Item permissions: did someone share the lakehouse with ReadAll?
Production consideration: Pick one enforcement layer per consumption path and document it: semantic model RLS with a fixed identity for reports, OneLake security for Spark and SQL consumers. Then test with a real Viewer account, not an admin.
50. A retailer keeps clickstream data in Amazon S3 and wants it in Fabric without duplicating it. What do you propose?
Answer: Create an S3 shortcut in a bronze lakehouse using a dedicated cloud connection with least-privilege AWS credentials. If the data is Delta, shortcut it into Tables; if it is raw JSON or Parquet files, shortcut it into Files and have Spark build silver Delta tables. Turn on shortcut caching for the workspace to reduce repeated egress from AWS, remembering that large files are not cached.
What I would check:
- File layout at source: many tiny files make every engine slow, and Fabric cannot compact files it does not own.
- Read frequency: if the same data is scanned many times a day, a curated silver copy in OneLake may cost less than repeated cross-cloud reads.
- Who can bind the connection, and whether the S3 bucket policy is scoped to the needed prefixes.
Production consideration: "Zero copy" is a starting point, not a rule. Copy when you change the grain or need a read-optimised layout; shortcut when you just need access. A comparable trade-off appears in our Snowflake interview questions around external tables.
51. Ten engineers in a GCC are overwriting each other's notebooks in one shared workspace. Set up a proper development process.
Answer: Move to Git-backed development with isolated workspaces and controlled promotion.
What I would check:
- Connect the shared development workspace to the main integration branch; each engineer branches out to a personal feature workspace connected to their own branch.
- Pull requests with review for notebooks, pipelines and warehouse projects; environment items in Git so library versions are reviewed.
- Variable libraries or parameters for connection details so the same definitions work in every stage.
- A deployment pipeline (Dev, Test, Prod) with deployment rules, or Fabric REST API calls from GitHub Actions or Azure DevOps, with approvals before production.
- Permissions: only admins can connect workspaces to Git; developers are Contributors in development, and production is restricted to a deployment identity plus a few admins.
Production consideration: Git stores definitions, not data. Plan test data and lakehouse rebinding separately, or "it worked in dev" will mean "it read dev data in prod".
52. Queries on the SQL analytics endpoint have become slow on a table that is written every few minutes by a pipeline. What is happening?
Answer: Frequent small writes from a pipeline Copy activity or Dataflow Gen2 create many small Parquet files and Delta log entries, and these writers do not apply Spark's auto compaction. Every query then opens thousands of files.
What I would check:
DESCRIBE DETAILandDESCRIBE HISTORY: file count growth against table size, and deletion vectors piling up from frequent merges.- Whether any maintenance runs at all; add a lakehouse maintenance activity after loads, or a scheduled notebook running
OPTIMIZE. - Whether the write frequency is really needed; batching every 15 minutes instead of every 2 may be fine for the business.
- Dataflow Gen2 incremental refresh destinations, which have documented restrictions on
OPTIMIZE; choose the destination design with maintenance in mind.
Production consideration: Add file count and average file size to your table health monitoring so you catch this before users do.
53. A data agent built for an insurer's finance team gives wrong totals for "premium by region". How do you improve it?
Answer: Treat it as a semantic and evaluation problem, not a model problem; you cannot change the LLM a data agent uses.
What I would check:
- Data source choice: point financial questions at the certified semantic model where "premium" is already a governed DAX measure, rather than at raw lakehouse tables where the agent must guess joins and filters.
- Agent instructions: define terms ("premium means written premium net of cancellations; region means sales region, not branch state") and route question types to sources.
- Example queries: add question and query pairs for the common questions (supported for SQL and KQL sources).
- Table selection: expose only relevant tables so the agent is not choosing between three similar region columns.
- Evaluation: a fixed test set of questions with expected answers, rerun after every change, plus diagnostics to see which query was generated.
Production consideration: Answers inherit the user's permissions and are read-only, which is good, but publish only after the test set passes, and keep a human route for high-stakes numbers. Our AI for data engineers guide covers the data foundations that make agents accurate.
54. Mirrored tables from Azure SQL Database have stopped updating overnight. Where do you look?
Answer: Check the capacity first, then the mirroring status, then the source.
What I would check:
- Was the capacity paused, scaled or deleted? Mirroring needs a running capacity, and a paused capacity stops replication.
- The mirrored database's monitoring page: replication status per table, errors and the last completed sync.
- Source changes: schema changes to a mirrored table, unsupported data types, a dropped or renamed table, network or firewall changes, or expired credentials on the connection.
- For gateway-based sources, the health and resources of the on-premises data gateway.
- Downstream: are reports reading the mirrored tables via Direct Lake and reframing, or is a dependent Spark job failing for its own reasons?
Production consideration: Monitor freshness explicitly (the latest change timestamp per table compared with now) and alert on it. "Near real time" without a freshness alert is a promise nobody checks.
55. Design a Fabric data platform for a mid-size insurer starting from scratch.
Answer: Consider an insurer with a policy admin system on SQL Server, claims files from third-party administrators, CRM in Dataverse, and a goal of governed BI plus an AI assistant for underwriters.
SQL Server --mirroring--> Bronze (mirrored DB)
TPA files --Copy job--> Bronze lakehouse (Files)
Dataverse --shortcut--> Bronze lakehouse
|
Spark notebooks (pipeline-orchestrated)
v
Silver lakehouse --> Gold warehouse (dims/facts)
| |
Data agent Direct Lake models --> Reports
\__ Purview labels, DLP, OneLake security __/
What I would check:
- Workspaces per layer and per domain (claims, policy, finance), grouped into Fabric domains, with environments for dev, test and prod.
- Capacities: separate data engineering from reporting so a backfill cannot throttle underwriters; size from a pilot and review monthly in the Capacity Metrics app.
- Security: Entra groups mapped to workspace roles, OneLake security for row and column restrictions on PII, sensitivity labels and DLP on gold items, and a fixed identity plus semantic model RLS for reports.
- Engineering standards: Git integration, deployment pipelines, table maintenance jobs, data quality checks in silver, and freshness monitoring.
- AI: a data agent over certified semantic models first, evaluated against a question set, before any wider rollout.
Production consideration: Start with one domain end to end (for example claims) and prove value before onboarding the rest. Platforms that try to land every source in the first quarter usually deliver none of them well.
Key takeaways
- Fabric is one SaaS platform: OneLake for storage, capacities for compute, workspaces for collaboration and items for work. Explain answers in that structure.
- Lakehouse versus warehouse is about language, transactions and who manages layout, since both store Delta in OneLake and share a SQL engine.
- Shortcuts, mirroring and copies are different tools. Copy when you change the data's meaning or need a better layout, not only because two engines need it.
- Direct Lake speed depends on table health: small files, row groups, V-Order, update patterns and DirectQuery fallback explain most slow reports.
- Smoothing and throttling are the core of Fabric operations. Know the stages, the Capacity Metrics app and the relief options.
- Security has two planes. Decide deliberately where row-level security is enforced for each consumption path.
- Copilot assists authors, while data agents are governed, read-only Q&A items for business users. Both need evaluation and capacity planning.
Interview preparation checklist
- Start a Fabric trial capacity and build one end-to-end project: land data with a Copy job or shortcut, transform with a notebook, model a gold layer, and publish a Direct Lake report.
- Write the same transformation once in Spark and once in warehouse T-SQL, and be able to explain why you would choose each.
- Create an Eventstream into an Eventhouse with a simple Activator rule, and write a few KQL queries with
summarizeandbin(). - Practise table maintenance: create a small-file problem on purpose, then fix it with
OPTIMIZEand check the result withDESCRIBE DETAIL. - Read the throttling and Direct Lake overview pages on Microsoft Learn and explain the throttling stages and fallback rules from memory.
- Connect a workspace to a GitHub repository and promote an item through a deployment pipeline.
- Prepare three scenario stories in "situation, what I checked, what I changed, result" form: a performance problem, a security or access problem, and a capacity or cost problem.
- Revise SQL and data modelling with our SQL interview questions, and, if the role includes ML on Azure, the Azure Machine Learning interview questions.
- If you are targeting a certification, read the current DP-700 or DP-600 study guide on Microsoft Learn, since both are being updated.
FAQ
What skills are needed for a Microsoft Fabric data engineer interview?
Strong SQL, PySpark basics, Delta Lake concepts, data modelling, and KQL for real-time work. Add hands-on experience with lakehouses, warehouses, pipelines, Dataflow Gen2 and Direct Lake, plus an understanding of capacities, throttling, workspace security and Git-based deployment.
How should I prepare for Microsoft Fabric interview questions?
Build one end-to-end project on a Fabric trial capacity, from ingestion to a governed Direct Lake report, and practise explaining every design choice. Then rehearse scenario answers on slow reports, capacity throttling and access control, because those questions separate candidates more than definitions do.
What are the DP-700 and DP-600 exams?
DP-700 is the exam for the Microsoft Certified: Fabric Data Engineer Associate certification, covering ingestion, transformation, security and monitoring of Fabric analytics solutions with SQL, PySpark and KQL. DP-600 is the exam for the Microsoft Certified: Fabric Analytics Engineer Associate certification, focused on preparing data and implementing semantic models. Microsoft Learn notes updates to the English versions of both in October 2026, so check the current study guides.
Is a Fabric certification necessary to get a job?
No. A certification can help your resume pass screening, but interviewers judge hands-on reasoning. A documented project and clear answers to scenario questions usually carry more weight than a certificate on its own.
Is Microsoft Fabric replacing Azure Synapse Analytics?
Fabric is Microsoft's SaaS analytics platform, and Microsoft Learn documents migration paths from Synapse dedicated SQL pools, Spark and pipelines into Fabric. Synapse is still an Azure service, so check current Azure documentation for its status rather than assuming it has been retired.
Do I need Power BI knowledge for a Fabric data engineer role?
You need working knowledge. Fabric data engineers are expected to understand semantic models, Direct Lake and how table design affects report performance, even if analysts build the reports. Analytics engineer roles need deeper DAX and modelling skills.
Should I learn Microsoft Fabric or Databricks?
Learn the shared foundations first, which are SQL, Spark, Delta Lake and data modelling, because they transfer between both platforms. Then follow the market you are targeting: organisations standardised on Microsoft 365 and Power BI often adopt Fabric, while others use Databricks, and some use both together through mirroring and shortcuts.
Is Microsoft Fabric a good career option for data engineers in India?
It can be a strong option, especially in GCCs and services firms in Hyderabad and Bengaluru that run Microsoft-centric data estates and are moving from Synapse, Azure Data Factory or Power BI Premium. Fabric skills combine well with Azure, SQL and Power BI experience you may already have.
Can I practise Fabric without a paid subscription?
Yes. Microsoft offers a Fabric trial capacity that lets you try Fabric experiences for 60 days. Some features, such as Copilot, are not available on trial capacities, so read the current trial terms before you plan your practice.
Ready to work on production data pipelines, lakehouses and the governed data foundations behind enterprise AI? The HORIZON data engineering and AI course combines hands-on pipeline engineering with AI data work, in classroom sessions in Ameerpet or live online. If you want a broader path across AI, ML, cloud and security, look at the APEX AI, ML, Cloud and Cyber Security program. Call +91 96660 19191 to book a free demo.



