Microsoft · Free Practice Questions · Last reviewed May 2026
30real exam-style questions organised by domain, each with the correct answer highlighted and a plain-English explanation of why it's right — and why the others are wrong.
You manage a Power BI workspace that contains a dataset refreshed daily from an on-premises SQL Server. Users report that the report shows data from two days ago. You verify that the scheduled refresh ran successfully this morning. What is the most likely cause?
The on-premises data source is misconfigured, causing the refresh to load data from an outdated source.
Correct. A misconfigured on-premises data source in the Power BI service — such as a gateway data source entry pointing to the wrong server, database, or folder, or using credentials for a different environment — can cause the refresh engine to successfully connect to and load data from an outdated or unintended location. Because the refresh completes without error, the service reports success even though the dataset is populated from the wrong source. This perfectly matches the scenario: a successful refresh that yields stale data.
The refresh took longer than expected and timed out.
The scheduled refresh is not set to refresh the dataset.
The on-premises data gateway is offline.
You need to deploy a Power BI report from a development workspace to a production workspace. You want to ensure that the report uses the production dataset connection string without manual changes. What should you use?
Manually update the data source in the production workspace after deployment.
Use a Power BI template (.pbit) and change the connection string before publishing.
Configure a deployment pipeline with parameter rules to override the data source.
Power BI Deployment Pipelines allow you to assign parameter rules (e.g., for data source parameters like Server and Database) that override values automatically when content is deployed from dev to test to production. This is the correct choice because it is the only option that truly meets the requirement of the report automatically using the production connection string without any manual adjustment. The rules are configured once in the pipeline and then applied consistently on every deployment, making the process repeatable and governed.
Publish the report directly to the production workspace and update the dataset.
You are deploying a Power BI solution to a customer. The customer requires that all report access be controlled via Microsoft Entra ID (Azure AD) groups. You have a single workspace with multiple reports. What is the best practice for managing permissions?
Create a Power BI group and add users to it.
Assign each user directly to the workspace role.
Share each report individually with users.
Add an Microsoft Entra ID group to the workspace role.
Adding an Microsoft Entra ID group to the workspace role is the correct, recommended approach for scalable access management in Power BI. When you assign the group to a role such as Viewer, Contributor, Member, or Admin, all current and future members of that group automatically receive the corresponding permissions on the workspace and its content. This centralizes identity governance in Microsoft Entra ID: adding or removing a user from the group instantly reflects in Power BI, with no per-workspace or per-report edits needed. It aligns with enterprise security best practices and simplifies auditing and compliance.
A user reports that a Power BI report is not refreshing data from a SQL Server database. The dataset uses Import mode. The gateway cluster shows all gateways are online. What is the most likely cause?
The report is using a scheduled refresh with a conflicting time.
The gateway version is incompatible with the SQL Server version.
The dataset uses DirectQuery mode which requires a live connection.
The data source credentials are incorrect or expired.
Incorrect or expired data source credentials are the most frequent cause of a Power BI scheduled refresh failure. When you configure a dataset for refresh, Power BI stores the authentication values—Windows credentials, database passwords, or OAuth tokens—and if those are changed or time out, the service cannot authenticate to the source and the refresh operation fails with an error. Updating the credentials in the dataset settings under 'Edit credentials' resolves the issue, and you should verify that the account still has the same permissions.
You manage a Power BI deployment that uses deployment pipelines. After promoting content from Development to Test, you notice that the Test workspace dataset uses a different data source than expected. What is the most likely reason?
The pipeline didn't deploy the dataset because it was already in Test.
The data source credentials were not applied during deployment.
The dataset parameters were not configured in the deployment pipeline rules.
Dataset parameters, such as server name or database name, can be overridden per stage using deployment pipeline rules. If no rule is configured for the relevant parameter, Test inherits the parameter values from Development, causing the dataset to keep pointing to the Dev data source. Creating a parameter rule that assigns the Test SQL server/database value for that parameter is the required fix. Without this rule, the pipeline will successfully deploy the dataset but still reference the wrong environment.
The Test workspace has a separate dataset that was manually created.
You need to ensure that a Power BI report uses the latest data from a cloud-based Azure SQL Database. The report is configured with scheduled refresh. What is the minimum required license for the dataset owner to configure a scheduled refresh?
Power BI Premium capacity
Power BI Premium Per User
Power BI Free
Power BI Pro
Power BI Pro is the correct minimum license because scheduled refresh in the Power BI service is a Pro-only feature. With a Pro license, you can create datasets, publish them to shared capacity, and configure a refresh schedule without needing Premium capacity or Premium Per User. A Pro license is sufficient for the standard, recurring data refresh scenario in shared capacity.
Want more Deploy and maintain assets practice?
Practice this domainA company uses Power BI to analyze sales data from a SQL Server database. The database contains a table 'Sales' with 10 million rows. The business analysts need to create daily reports that aggregate sales by region and product category. To optimize report performance, which data preparation technique should be applied?
Increase the row limit in Power Query to load all rows.
Remove unused columns from the query.
Import the entire table and aggregate in Power BI.
Perform aggregation in SQL before importing.
Performing aggregation in SQL before importing is a classic pushdown optimization that leverages the database engine to pre-summarize the sales data, so only the aggregated results are transferred to Power BI. This dramatically reduces the row count and the size of the imported dataset, leading to faster refreshes, lower model memory usage, and quicker report responses. It also offloads compute from Power BI to the SQL server, which is generally more scalable for large fact tables.
During data refresh in Power BI, an error occurs: 'The column 'OrderID' of the table 'Orders' contains a duplicate value and this column is part of a primary key.' The table 'Orders' is imported from an Azure SQL database. What is the most likely cause of this error?
The 'Orders' table was reordered in Power Query.
Data type mismatch between the source and Power BI.
A calculated column is referencing the 'Orders' table.
The source table has duplicate 'OrderID' values.
The 'Orders' table has a column designated as a key (likely OrderID) that must contain unique values for the model's relationships to work. When the refresh tries to load data, the VertiPaq engine checks uniqueness on that key; duplicate OrderID values in the source violate that constraint, causing the refresh to fail with a duplicate key error. This often happens when the source view or query returns repeated rows due to joins or missing DISTINCT, and it is the direct and primary cause of the reported error.
A data analyst needs to combine two queries in Power Query: 'Sales2023' and 'Sales2024', both with identical column structures. Which operation should the analyst use to append the rows from 'Sales2024' to 'Sales2023'?
Append Queries
Append Queries is the correct tool because it stacks rows from two or more queries vertically, creating a single output table that contains every record from each input. In Power Query, this operation—equivalent to UNION ALL in SQL—is used when the inputs share a common column schema, such as merging January and February sales records. Appending does not alter existing rows or add columns; it simply lengthens the dataset.
Merge Queries
Group By
Pivot Column
A Power BI report contains a table with a column 'Date' of type date. The report users need to filter data by fiscal year, which starts on April 1. What is the best practice to support this requirement during data preparation?
Create a separate date table in Power Query with a fiscal year column.
A separate date table created in Power Query is the recommended way to handle fiscal-year reporting because it provides a clean, continuously dated calendar dimension that can be marked as the date table in your model. You can add a fiscal year column with a simple conditional formula that adjusts the calendar year based on your fiscal year start month. This supports DAX time intelligence functions like TOTALYTD and DATEADD, and keeps the date dimension independent from fact tables.
Split the date column into year, month, and day columns.
Use a DAX calculated table to generate fiscal year dates.
Add a calculated column in the existing table using DAX.
Which TWO actions can improve data refresh performance in Power BI?
Merge all queries into a single query.
Add calculated columns in Power Query instead of DAX.
Disable load for intermediate queries used only for reference.
Disabling load on intermediate queries prevents their result sets from being materialised into the dataset, eliminating unnecessary storage and refresh work. Only the final query's output is loaded, so the refresh engine processes less data and completes faster, directly improving refresh performance.
Filter rows at the source to reduce data volume.
Filtering rows at the source reduces the volume of data transferred and processed during each refresh, directly satisfying the performance constraint in the stem. Less data means shorter extraction, transformation and load times, particularly valuable for large or wide tables where unnecessary historical rows inflate refresh duration.
Keep all columns from the source data to avoid re-importing.
A company has a Power BI dataset that imports data from a SQL Server database. The dataset includes a table with 10 million rows. The data model uses a single table and does not include any calculated columns or measures. The report users report that the dataset refresh takes too long. Which action should you take to improve refresh performance?
Increase the scheduled refresh frequency to every 15 minutes.
Enable Query Folding on all steps in Power Query.
Change the storage mode to DirectQuery.
Remove unused columns from the table in Power Query.
Power Query column removal reduces the data volume loaded and compressed into the VertiPaq model, cutting refresh time proportionally. With no calculated columns or measures to preserve, dropping unused columns is the most direct lever on refresh duration for a single-table import model.
Want more Prepare the data practice?
Practice this domain27% of exam · 6 sample questions below
A company wants to create a Power BI report that shows sales performance by region. The data contains a table 'Sales' with columns: Date, Amount, RegionID, and ProductID. They also have a 'Regions' table with RegionID and RegionName. They want to display a matrix visual with RegionName on rows and Year on columns, with the sum of Amount as values. However, the report displays only 'RegionID' instead of 'RegionName'. What is the most likely cause?
The relationship is configured as many-to-many.
The relationship direction is set to Both.
The RegionID column in the Sales table is hidden.
There is no active relationship between the Sales and Regions tables.
In Power BI, an active relationship is what enables automatic filter propagation between tables; without one, Power BI cannot traverse from the Sales table to the Regions table to retrieve RegionName. When a foreign key column like RegionID is placed in a visual and no active relationship links it to the Regions table, Power BI simply shows the raw ID value because it has no way to perform the lookup. The correct fix is to create or activate a relationship between Sales[RegionID] and Regions[RegionID] (typically with a single-direction filter), so that the relationship becomes active and the report can display the corresponding RegionName.
A Power BI report includes a bar chart showing total sales by product category. The report designer wants to add a trend line to the chart to show the overall sales trend over time. Which type of visual should be used instead?
Stacked bar chart
Line chart
A line chart encodes data points along a continuous time axis and connects them with straight lines, allowing the eye to perceive direction, rate of change, and periodicity. Because the x-axis is continuous and time-ordered, Power BI can compute and overlay a trend line using linear regression, moving average, or other built-in analytics in the Analytics pane. It is the default and recommended visual for time-series trend analysis because it preserves the sequential structure of the data.
Scatter chart
Pie chart
A Power BI report contains a table visual that displays employee names and their total sales. The data model includes an Employee table with columns: EmployeeID, Name, Department, and HireDate. The Sales table has columns: SaleID, EmployeeID, Amount, and SaleDate. The relationship between Employee and Sales is one-to-many. The user wants to see only employees who have made at least one sale. However, the table shows all employees, including those with no sales (blank Amount). What is the most likely reason?
The EmployeeID column in the Employee table is hidden.
The relationship is many-to-one, not one-to-many.
The relationship direction is set to Single from Employee to Sales.
There is no visual-level filter to exclude blank values.
To show only employees who have at least one sales record, a visual-level filter must be applied on the Amount field to exclude blank values (e.g., 'Amount is not blank' or 'Amount > 0'). Without such a filter, the table visual displays every row from the Employee dimension, even those without any related Sales rows, because Power BI's default behavior is to show all dimension rows unless a filter explicitly removes them. A visual-level filter on a measure or column from the fact table is the standard technique to restrict the visual to only employees with sales.
A data analyst creates a Power BI report that uses a date table with a continuous date range. They want to calculate the running total of sales over the last 12 months, ending on the last date in the current filter context. Which DAX expression should they use?
CALCULATE(SUM(Sales[Amount]), DATESBETWEEN('Date'[Date], MAX('Date'[Date]) - 365, MAX('Date'[Date])))
CALCULATE(SUM(Sales[Amount]), DATESINPERIOD('Date'[Date], MAX('Date'[Date]), -12, MONTH))
DATESINPERIOD is the correct time-intelligence function here because it returns a contiguous interval ending at MAX('Date'[Date]) and extending back 12 full calendar months, respecting month boundaries rather than fixed day counts. With -12 and MONTH, the filter context established by CALCULATE adjusts the Sales[Amount] summation to include exactly the trailing 12 months relative to the latest visible date, which is exactly what a rolling 12-month total requires.
TOTALMTD(SUM(Sales[Amount]), 'Date'[Date])
CALCULATE(SUM(Sales[Amount]), DATESYTD('Date'[Date]))
You need to create a measure that calculates the year-over-year growth percentage for sales. Which DAX function should you use?
DATEADD
PARALLELPERIOD
SAMEPERIODLASTYEAR
SAMEPERIODLASTYEAR is a time-intelligence function that returns a table of dates shifted exactly one year back from the current filter context, preserving the same day, month, and quarter boundaries. When used inside CALCULATE, it recalculates a measure over that prior-year date range, making it the precise foundation for a year-over-year growth calculation. Because it respects the current filter context and automatically handles leap years by shifting to the nearest valid date, it is the standard choice for comparing any arbitrary period—month, quarter, or cumulative range—to the same period in the previous year.
PREVIOUSYEAR
A company uses Row-Level Security (RLS) in Power BI. They want to ensure that when a manager views the report, they see data for their own region plus any region where a salesperson reports to them. Which RLS approach should you implement?
Use a DAX filter that references the USERPRINCIPALNAME() function
With RLS, you create a role whose DAX filter uses USERPRINCIPALNAME() to identify the current user—for example, filtering a 'Manager' column to match the user's UPN, or using LOOKUPVALUE to return all employees reporting up to that manager. Because USERPRINCIPALNAME() is evaluated per user at query time, a single role dynamically resolves the correct data scope for any manager without per-user configuration. This is the standard pattern for hierarchical or manager-based row-level security.
Use Power BI App permissions to restrict data
Create a static role for each manager and assign users
Apply RLS at the visual level using bookmarks
Want more Visualize and analyze the data practice?
Practice this domain17% of exam · 6 sample questions below
A Power BI administrator needs to enforce that all datasets published to the service use certified data sources only. Which two settings should be configured? (Choose two.)
Use Microsoft Sentinel to audit Power BI activity logs and flag non-certified data sources.
Enable 'Certification' for dataflows in the Power BI tenant settings.
Enabling the 'Certification' tenant setting for dataflows activates the endorsement feature that lets authorized reviewers officially certify reusable dataflows. Once certified, those dataflows are the trusted building blocks that dataset authors can be required to use, and the tenant switch is a prerequisite for applying governance policies that mandate certified dataflows. Without this setting, dataflow certification is impossible, making it the correct control for enforcing that datasets use only certified dataflows.
Enable 'Certification' for data sources in the Power BI tenant settings.
Enabling 'Certification' for data sources in tenant settings lets an organization mark supported external connections, such as SQL Server databases, as certified so that dataset authors can identify and prefer approved sources. This directly supports the goal of ensuring datasets use only certified data sources, and it is the complementary setting to dataflow certification when governance must span both the raw source connection and the transformation layer. It provides the metadata foundation needed to implement policies that require certified data sources.
Configure row-level security (RLS) on all datasets.
Set up B2B guest user permissions to restrict external data sources.
You are a Power BI administrator. A user reports that their scheduled data refresh fails with error 'The data source credentials are no longer valid.' The dataset uses a SQL Server database with Windows authentication. What should you do first to resolve the issue?
Reinstall the on-premises data gateway on the server.
Reassign the dataset to a different Premium capacity.
Modify the dataset to use 'Impersonate the authenticated user' for data sources.
Ask the user to update the data source credentials in the Power BI service dataset settings.
The error indicates stored credentials expired or were changed, so refreshing them in the dataset settings restores authentication. Because the source uses Windows authentication, the user must re-enter valid credentials in the Power BI service, directly resolving the refresh failure before investigating gateways or permissions.
You are a Power BI administrator. Your organization uses Microsoft Purview to manage sensitivity labels. You need to ensure that when a report is exported to PDF, the sensitivity label is automatically applied to the PDF file. What should you configure?
Enable the tenant setting 'Apply sensitivity labels to exported data' in the Power BI admin portal.
The tenant-level admin setting named 'Apply sensitivity labels to exported data' directly controls whether an export carries the source report's sensitivity label. When enabled, files exported from labeled items in the Power BI service receive the corresponding label, which preserves data classification and protection outside the service. Without this setting, exported content loses the label even if the original report is labeled.
Enable 'Microsoft Purview Information Protection' file encryption settings.
Set the default sensitivity label for the workspace to 'Confidential'.
Configure a Microsoft Purview auto-labeling policy for Power BI reports.
A Power BI administrator wants to allow users to create dashboards and reports, but prevent them from sharing content outside the organization. Which two settings should be configured in the Power BI admin portal? (Choose two.)
Disable 'Create workspaces' in the tenant settings.
Disable 'Export data' in the tenant settings.
Disable 'Featured tables' in the tenant settings.
Disable 'Share content with external users' in the tenant settings.
The correct approach is to disable 'Share content with external users' in the tenant settings, because this switch directly governs whether users can share dashboards and reports with external email addresses. When turned off, the Share dialog rejects external recipients entirely, blocking both direct sharing and app access via external users. This is the primary tenant-level control for preventing outside access to dashboards without disabling internal collaboration.
Disable 'Publish to web' in the tenant settings.
Disabling 'Publish to web' in the tenant settings is also required, because this setting prevents users from generating public embed links that make reports or dashboards accessible to anyone on the internet, bypassing normal sharing rules. Even if external sharing is disabled, a published web link remains exposed until this feature is turned off and existing embed codes are removed. This addresses a different attack surface than the share dialog, making it a vital complement to external user restrictions.
You are a Power BI administrator. A Power BI dataset owner reports that the dataset is not refreshing automatically, but manual refreshes work fine. The dataset uses a cloud data source (Azure SQL Database) with OAuth2 credentials. What is the most likely cause?
Row-level security (RLS) is misconfigured.
The on-premises data gateway is offline.
The dataset exceeds the refresh limit for the assigned capacity.
The OAuth2 token used for the data source credentials has expired.
OAuth2 tokens are issued with a limited lifetime (usually 1 hour to 90 days depending on the provider) and are used for authentication when connecting to cloud data sources. When a token expires, the Power BI service cannot refresh the dataset automatically because it lacks the ability to prompt for reauthentication. A manual refresh opens a dialog that lets the dataset owner re-authenticate, renewing the token and successfully completing the refresh.
You are a Power BI administrator. A user in the Sales department needs to create reports using a shared dataset, but should not be able to modify the dataset or share it with others. What is the minimum permission level you should assign to the user on the dataset?
Reshare
Build
Build permission specifically grants the right to connect to the dataset as a source for new reports and to create new visualizations in the Power BI service or Power BI Desktop. It is the minimal permission because it satisfies the user's need to author new sales reports without exposing write capabilities or allowing resharing. With Build, the user can create and save new reports, but cannot modify the dataset or grant access to others.
Write
Read
Want more Manage and secure Power BI practice?
Practice this domainA company has a Power BI dataset that contains a date table with columns: Date, Year, Month, Quarter, Day. The data model also includes a sales fact table with a SalesDate column. To enable time intelligence functions like TOTALYTD, what is the minimum requirement for the relationship between these tables?
Create a calculated column in the sales table to extract the date part and relate it to the date table.
Create a one-to-many relationship from the date table to the sales table and mark the date table as a date table.
This is the correct design: Power BI time intelligence functions (e.g., DATESYTD, DATEADD) rely on a date table that is explicitly marked with the Mark as Date Table option, and a one-to-many relationship from the date table to the sales table ensures each date filters its associated sales rows unambiguously. Marking the date table lets the engine identify the date column for time-based calculations, while the one-to-many cardinality matches the logical model where each calendar day can appear in many fact records. This star-schema pattern supports reliable, accurate time-series reporting.
Create a many-to-many relationship between the date table and the sales table.
Create a one-to-many relationship from the sales table to the date table with bidirectional cross-filtering.
A Power BI data model includes a table 'Orders' with columns OrderID, CustomerID, OrderDate, SalesAmount. The model also has a 'Date' table and a 'Customer' table. The relationships are: Orders[CustomerID] -> Customer[CustomerID] (many-to-one, single direction) and Orders[OrderDate] -> Date[Date] (many-to-one, single direction). A user creates a measure that sums SalesAmount and then filters by a slicer on Customer[City]. The slicer works correctly. However, when the user adds another slicer on Date[Year], the measure does not respect both slicers simultaneously. What is the most likely cause?
The Customer and Date tables are not related to each other.
The relationship between Orders and Date is inactive.
The relationships are set to single direction, so filters from Date do not propagate to Orders.
The measure might be using ALL or ALLEXCEPT that removes the filter context from the Date table.
A measure that uses ALL('Date') or ALLEXCEPT('Date') inside CALCULATE explicitly removes the filter context from the entire Date table or from all Date columns except those specified. For instance, CALCULATE(SUM(Orders[Amount]), ALL('Date')) would ignore a slicer on Date[Year], because ALL('Date') clears every filter applied to the Date table, including the Year column. ALLEXCEPT('Date', 'Date'[Month]) would preserve a Month filter but still ignore Year if Year is not in the exceptions list. This is the classic cause when a measure appears unresponsive to slicer selections, even though the underlying relationships and directions are perfectly normal.
A Power BI developer needs to model data from two sources: an on-premises SQL Server database and a cloud-based Salesforce instance. The developer wants to create a star schema in Power BI. Which approach should the developer use to combine the data?
Use DirectQuery for both sources and create relationships in the model.
Use Power Query in Power BI Desktop to import both sources and merge/append queries as needed.
Power Query in Power BI Desktop allows importing data from both on-premises SQL Server and cloud-based Salesforce, enabling merging/append operations to shape data into a star schema. This in-memory model supports all relationships and calculations needed.
Use Power BI dataflows to ingest both sources and then reference them in a dataset.
Create a composite model using DirectQuery for SQL Server and Import for Salesforce.
A Power BI developer has a fact table that contains sales data at the transaction level. The table includes columns: TransactionID, ProductID, CustomerID, DateKey, Quantity, UnitPrice, Discount, and SalesAmount. The developer wants to create a measure for total sales after discount. Which approach is best for performance and accuracy?
Create a measure: SUM(Sales[SalesAmount]) - SUM(Sales[Discount])
Add a calculated column in Power Query: NetAmount = Quantity * UnitPrice - Discount, then create a measure: SUM(Sales[NetAmount])
Creating a calculated NetAmount column in Power Query (M) evaluates Quantity * UnitPrice - Discount once at refresh time, storing the result as a static column in the data model. The subsequent measure SUM(Sales[NetAmount]) simply aggregates those pre-computed values, avoiding row-by-row evaluation at report time and improving query performance for large fact tables. Because the calculation is pushed to the query engine instead of the DAX engine, it also keeps the code simpler and avoids iterator overhead during visual rendering.
Create a measure: SUMX(Sales, Sales[Quantity] * Sales[UnitPrice] - Sales[Discount])
Create a measure: SUM(Sales[Quantity] * Sales[UnitPrice]) - SUM(Sales[Discount])
A company has a Power BI semantic model that uses DirectQuery to a SQL Server database. The model contains a large fact table with sales data. Users report that reports using this model are slow. Which design change would most improve query performance?
Remove all relationships between tables.
Switch the model to Import mode.
Remove unnecessary columns from the fact table.
Removing unnecessary columns from the fact table is correct because DirectQuery operates by pushing queries back to the source, and every extraneous column widens the SELECT statement, increasing network transfer and source-side processing. A narrower fact table means fewer columns are scanned and materialized for each visual interaction, which directly reduces query latency and memory overhead. This is a standard column-pruning practice for DirectQuery performance tuning.
Disable the 'Reduce queries' option in report settings.
A data analyst is designing a star schema in Power BI. The model includes a table named 'Orders' with columns: OrderID, CustomerID, OrderDate, ProductID, Quantity, and SalesAmount. Which column should NOT be included in the fact table to maintain a proper star schema?
Quantity
SalesAmount
CustomerID
OrderID
OrderID is a natural business key that identifies an order, not a numeric measure or a surrogate foreign key. In a star schema, natural keys and descriptive attributes should live in the appropriate dimension table, such as an Order dimension, so that the fact table contains only relationship keys and measures. Including OrderID directly in the fact table violates star schema normalization and reduces maintainability. Thus, OrderID is the item that should NOT be placed directly in the fact table.
Want more Model the data practice?
Practice this domainThe PL-300 exam has 50 questions and must be completed in 120 minutes. The passing score is 700/1000.
Business intelligence scenario questions on Power BI data models, DAX expressions, report design, row-level security, deployment pipelines, and governance. Some question sets are case-study based, presenting a business scenario followed by multiple related questions.
The exam covers 5 domains: Deploy and maintain assets, Prepare the data, Visualize and analyze the data, Manage and secure Power BI, Model the data. Questions are weighted by domain — higher-weight domains appear more on your actual exam.
No. These are original exam-style practice questions written against the official Microsoft PL-300 exam objectives. They are not copied from the real exam. Courseiva focuses on genuine understanding, not memorisation of braindumps.
Courseiva tracks your accuracy per domain and routes you toward weak areas automatically. Free, no account required.