CertSafari

    Free Snowflake SnowPro Advanced: MLOps Engineer (MLA-B01) Sample Questions

    35 free sample questions from our bank of 330+, covering every exam domain, with answers and detailed explanations. Updated August 2026.

    Domain 1: Operationalize Data Preparation and Feature Engineering

    Subdomain 1.3: Ensure temporal integrity and feature consistency.

    1.An ML engineer is generating a training dataset by joining a labels table with a feature view that contains daily-updated transaction aggregates. The feature view SQL uses a standard `GROUP BY` query without an explicit timestamp. What is the likely consequence of using this feature view for point-in-time training set generation?

    1. A.The training set will correctly reflect historical values because the feature view is evaluated at event times.
    2. B.The training set will contain leakage because the aggregate uses future data relative to some label events.
    3. C.The training set generation will automatically detect and extract a timestamp from the feature view's base table.
    4. D.The training set will only include labels that align with the feature view's refresh schedule.
    Show answer & explanation

    Correct answer: BThe training set will contain leakage because the aggregate uses future data relative to some label events.

    • A. Incorrect. Without an explicit timestamp in the feature view, the aggregates are not tied to a specific point in time, so the training set cannot correctly reflect historical values at event times. The standard GROUP BY aggregate can include data from after the label timestamp, breaking point-in-time correctness.
    • B. Correct. Because the feature view lacks an explicit timestamp, the aggregate is computed over all available data, including records that occurred after some label events. This introduces temporal leakage in the training set, making the point-in-time join invalid.
    • C. Incorrect. Snowflake does not automatically detect or infer an event timestamp from the base table for a generic GROUP BY feature view. Point-in-time correctness requires the feature definition to be explicitly time-aware.
    • D. Incorrect. The refresh schedule of the feature view does not filter labels to only those that align with refresh times. The primary risk here is leakage, not label filtering.

    Subdomain 1.3: Ensure temporal integrity and feature consistency.

    2.An ML team is investigating discrepancies between online feature values served through a low-latency API and the feature values that were used during offline training. They suspect inconsistency. Which two actions should they take to verify and diagnose the issue? (Select two.)(Select 2)

    1. A.Compare online feature values for sample entities with training set values at the same timestamps.
    2. B.Verify that the online serving function implements the same transformation logic as the feature view.
    3. C.Increase the online store cache size, as larger caches may reduce value inconsistency.
    4. D.Rename the feature view, which will trigger a forced refresh of all dependent feature pipelines.
    5. E.Temporarily serve using the offline feature view SQL in the online path to validate predictions.
    6. F.Enable detailed logging of online feature values to systematically compare with training data.
    Show answer & explanation

    Correct answers: A, BCompare online feature values for sample entities with training set values at the same timestamps.; Verify that the online serving function implements the same transformation logic as the feature view.

    • A. Correct. Comparing online feature values for sample entities with training set values at the same timestamps directly checks whether the two serving paths produce the same values for identical points in time. This is a strong way to diagnose temporal drift or mismatched point-in-time logic, ensuring temporal and value consistency.
    • B. Correct. Verifying that the online serving function implements the same transformation logic as the feature view ensures parity between offline and online computations. If the logic differs, feature values can diverge even when the source data is the same, making this a critical diagnostic step.
    • C. Incorrect. Increasing the online store cache size may improve latency or reduce cache misses, but it does not address whether the feature values themselves are consistent with training. This is a performance tuning action, not a validation of feature correctness.
    • D. Incorrect. Renaming a feature view does not inherently validate or correct online/offline inconsistency, and it will not force a reliable diagnostic comparison. This is unrelated to temporal integrity or feature consistency.
    • E. Incorrect. Temporarily serving using the offline feature view SQL in the online path is generally not appropriate for a low-latency online serving architecture and can introduce performance and operational issues. It also does not systematically diagnose the root cause as well as direct comparison and logic verification.
    • F. Incorrect. While detailed logging can aid troubleshooting, it is not one of the two primary actions to verify and diagnose the discrepancy. The stronger diagnosis steps are to compare values at the same timestamps and confirm the online logic matches the feature view.

    Subdomain 1.3: Ensure temporal integrity and feature consistency.

    3.After deploying a new model version, an ML engineer notices that online predictions are systematically lower than expected based on offline test results. The feature view definition has not changed. What is the most likely cause?

    1. A.The online store is serving stale values because the refresh cycle is slower than the offline pipeline.
    2. B.The online feature calculation logic uses a different aggregation window than the feature view definition.
    3. C.The training set was generated with a different set of entity keys than the online store.
    4. D.The model was trained on a smaller sample dataset, leading to optimistic offline metrics.
    Show answer & explanation

    Correct answer: BThe online feature calculation logic uses a different aggregation window than the feature view definition.

    • A. Incorrect. Stale values can cause discrepancies, but they typically lead to lagged predictions rather than a consistent downward bias. The feature view definition being unchanged suggests the refresh cycle is likely consistent; the issue is more likely a mismatch in feature computation logic.
    • B. Correct. If the online feature calculation uses a different aggregation window (e.g., a shorter or longer time frame) than what was defined in the feature view and used during offline training, the features served online will differ systematically, causing predictions to be lower (or higher) than expected.
    • C. Incorrect. Different entity keys would cause missing or misjoined records, but not a systematic directional bias in predictions. The feature view definition ensures consistent keys between training and serving, so this is unlikely.
    • D. Incorrect. Training on a smaller sample can lead to optimistic offline metrics, but that does not explain a systematic discrepancy between online and offline predictions. The question points to a feature computation mismatch, not a data sample issue.

    Subdomain 1.3: Ensure temporal integrity and feature consistency.

    4.What is the default behavior in Snowflake Feature Store if you call `generate_training_set` without specifying the `point_in_time_column` parameter?

    1. A.An error is raised because point_in_time_column is a mandatory parameter.
    2. B.The training set is generated using the most recent feature values for all rows.
    3. C.The training set uses the current timestamp as the point-in-time for all label rows.
    4. D.The training set performs an inner join on entity IDs with no time constraints.
    Show answer & explanation

    Correct answer: CThe training set uses the current timestamp as the point-in-time for all label rows.

    • A. Incorrect. The `point_in_time_column` parameter is not mandatory; the function can operate without it, using a default behavior. No error is raised.
    • B. Incorrect. Using the most recent feature values for all rows would cause data leakage, as it could use future data. The default uses the current timestamp to maintain temporal integrity.
    • C. Correct. If `point_in_time_column` is not specified, Snowflake Feature Store defaults to using the current timestamp (`CURRENT_TIMESTAMP()`) as the point-in-time for all label rows. This ensures feature values are retrieved as of that moment, preventing data leakage.
    • D. Incorrect. `generate_training_set` performs a time-aware join that respects temporal constraints based on the point-in-time, not a simple inner join on entity IDs without time constraints.

    Subdomain 1.2: Implement Snowflake Feature Store architecture and management.

    5.What is the primary purpose of a feature view in Snowflake Feature Store?

    1. A.To persist unprocessed source data without any transformations for ad-hoc analysis by analysts.
    2. B.To encapsulate feature transformation logic and serve a consistent training/inference interface.
    3. C.To record model versions and track metadata and dependencies across deployment environments.
    4. D.To orchestrate external data ingestion into Snowflake on a schedule for feature processing.
    Show answer & explanation

    Correct answer: BTo encapsulate feature transformation logic and serve a consistent training/inference interface.

    • A. Incorrect. A feature view is designed for transformed, reusable features, not persisting raw unprocessed source data for ad-hoc analysis. Raw data storage is typically handled by data lakes or raw tables, not the feature store.
    • B. Correct. A feature view encapsulates feature transformation logic and provides a consistent interface for both training and inference. This ensures the same feature definitions are used across the model lifecycle, reducing training-serving skew and promoting reproducibility and reusability.
    • C. Incorrect. Recording model versions and tracking metadata and dependencies across deployment environments is the role of a model registry or MLOps metadata store, not a feature view. Feature views focus on feature definition and access, not model governance.
    • D. Incorrect. Orchestrating external data ingestion on a schedule is an ETL/ELT or pipeline orchestration responsibility. While feature views may consume data prepared by such pipelines, they do not schedule or manage ingestion themselves.

    Subdomain 1.2: Implement Snowflake Feature Store architecture and management.

    6.A data engineer is building a feature pipeline in a Snowpark notebook. After joining customer and transaction data and applying aggregations in a Snowpark DataFrame called `feature_df`, they need to create a feature view to serve these features. Which code snippet should they use?

    1. A.fv = fs.create_feature_view(name="cust_features", entities=["CUST_ID"], feature_df=df)
    2. B.fv = df.create_feature_view( name="cust_features", entities=["CUST_ID"] )
    3. C.fv = fs.register_feature_view(name="cust_features", df=df, keys=["CUST_ID"])
    4. D.fv = fs.create_feature_view(name="cust_features", entities=["CUST_ID"], df=df)
    Show answer & explanation

    Correct answer: Dfv = fs.create_feature_view(name="cust_features", entities=["CUST_ID"], df=df)

    • A. Incorrect. The Feature Store's create_feature_view method expects the DataFrame parameter to be named 'df', not 'feature_df'. Additionally, the snippet passes 'df' as the argument, but the actual DataFrame created in the pipeline is named 'feature_df', causing a mismatch.
    • B. Incorrect. The create_feature_view method belongs to the FeatureStore object (fs), not to a Snowpark DataFrame. Calling it on the DataFrame will raise an AttributeError.
    • C. Incorrect. The correct method name is 'create_feature_view', not 'register_feature_view'. Additionally, the entity key column should be specified via the 'entities' parameter, not 'keys'.
    • D. Correct. This snippet correctly uses the FeatureStore object (fs) to call create_feature_view with the required parameters: name for the feature view name, entities for the entity key columns, and df for the Snowpark DataFrame containing the features. This follows the Snowflake Feature Store API.

    Subdomain 1.2: Implement Snowflake Feature Store architecture and management.

    7.Which of the following are core components of Snowflake Feature Store's architecture? (Choose two.)(Select 2)

    1. A.Feature View
    2. B.Model Registry
    3. C.Feature Store Entity
    4. D.Snowpark UDF
    5. E.Dynamic Table
    Show answer & explanation

    Correct answers: A, CFeature View; Feature Store Entity

    • A. Correct. Feature View is a core component that defines the schema and logic for computing feature values for a specific entity, enabling consistent feature retrieval for model training and inference.
    • B. Incorrect. Model Registry is used for managing machine learning models and is separate from the Feature Store architecture.
    • C. Correct. Feature Store Entity represents the primary object (e.g., customer or product) and serves as the join key, anchoring Feature Views to the entities they describe.
    • D. Incorrect. Snowpark UDF is a tool for defining custom logic in feature engineering pipelines but is not a core architectural component of the Feature Store itself.
    • E. Incorrect. Dynamic Tables are used for incremental data transformation and refreshing derived data, but they are not a core component of Snowflake Feature Store architecture.

    Subdomain 1.2: Implement Snowflake Feature Store architecture and management.

    8.An organization is setting up an external feature view to incorporate features from an external PostgreSQL database into their Snowflake Feature Store. Which configurations are required when creating the external feature view? (Choose two.)(Select 2)

    1. A.The database connection details, such as host, port, and credentials.
    2. B.The Snowflake schema where the external feature view will be registered.
    3. C.The name of the source table or the query in the external database.
    4. D.A schedule to refresh the feature view periodically from the external source.
    5. E.The Snowflake role with privileges to access the external data source.
    Show answer & explanation

    Correct answers: A, CThe database connection details, such as host, port, and credentials.; The name of the source table or the query in the external database.

    • A. Correct. The external feature view requires a defined external volume or access integration that specifies the connection details (host, port, credentials) to the PostgreSQL database. Without this, Snowflake cannot connect to the external source.
    • B. Incorrect. While the feature view must be registered in a Snowflake schema, the schema is specified as part of the feature view name rather than a separate configuration. The required configurations for creation are the connection details and the source definition.
    • C. Correct. The CREATE EXTERNAL FEATURE VIEW statement requires either a TABLE or QUERY parameter to define the data to be pulled from the external database. This specifies which rows and columns are used as features.
    • D. Incorrect. A refresh schedule is optional for external feature views, as data remains in the external source and is not automatically materialized. Scheduling is relevant only for materialized or ingested feature pipelines, not for the initial creation.
    • E. Incorrect. While a Snowflake role with privileges may be needed for access control, it is not a direct configuration parameter of the external feature view. Access is managed through the external access integration and schema-level permissions.

    Subdomain 1.1: Construct distributed feature engineering pipelines.

    9.In Snowpark, when chaining transformations on a DataFrame, what is the behavior regarding execution?

    1. A.The DataFrame is immediately materialized and piped through each transformation.
    2. B.Transformations are lazily built into a query plan that executes only when an action is called.
    3. C.Each transformation triggers an individual SQL query against Snowflake immediately.
    4. D.The DataFrame is stored in an internal Snowflake stage as an intermediate result.
    Show answer & explanation

    Correct answer: BTransformations are lazily built into a query plan that executes only when an action is called.

    • A. Incorrect. Snowpark DataFrames are not immediately materialized; transformations are lazily evaluated, building a deferred computation plan that only executes upon an action.
    • B. Correct. Snowpark DataFrame transformations are lazily composed into a logical query plan. Execution occurs only when an action (e.g., show(), to_pandas()) is invoked, allowing Snowflake to optimize the entire query.
    • C. Incorrect. Transformations do not trigger individual SQL queries. Snowpark combines the full transformation chain into a single optimized query plan executed upon an action.
    • D. Incorrect. A Snowpark DataFrame is not stored in an internal stage; it represents a logical plan over Snowflake data until an action materializes the result.

    Subdomain 1.1: Construct distributed feature engineering pipelines.

    10.Which method is most appropriate for sharing a feature table with a partner Snowflake account?

    1. A.Create a data share, add the feature table as a shared object, and grant the partner reader privileges.
    2. B.Export the table as Parquet to an external stage and give the partner an IAM role to the stage.
    3. C.Set up database replication to the partner’s region and refresh the data every hour.
    4. D.Use a Snowpipe to continuously ingest feature updates into a table in the partner’s own account.
    Show answer & explanation

    Correct answer: ACreate a data share, add the feature table as a shared object, and grant the partner reader privileges.

    • A. Correct. Snowflake data sharing is the native, secure, and efficient method to provide read-only access to feature tables without copying data. Creating a data share, adding the feature table as a shared object, and granting reader privileges to the partner account aligns with Snowflake’s secure data sharing model, allowing real-time access with granular permissions.
    • B. Incorrect. Exporting to Parquet and managing IAM roles introduces data duplication, external storage management, and refresh overhead. It is more complex and less secure than native Snowflake sharing.
    • C. Incorrect. Database replication is intended for high availability, disaster recovery, or regional expansion, not for sharing feature tables with another account. It replicates entire databases rather than providing selective access and adds unnecessary latency and operational overhead.
    • D. Incorrect. Snowpipe is designed for continuous data ingestion into Snowflake, not for distributing tables to other accounts. It would require the partner to maintain their own ingestion pipeline and results in data duplication rather than direct secure access.

    Subdomain 1.1: Construct distributed feature engineering pipelines.

    11.How should you construct a distributed feature engineering pipeline that applies MinMaxScaler followed by OneHotEncoder to a training DataFrame in Snowflake?

    1. A.Construct a Pipeline object containing the two transformers, call fit on the training DataFrame, then transform to obtain the final dataset.
    2. B.Fit the MinMaxScaler, write to a temporary table, fit OneHotEncoder from that table, then union results.
    3. C.Write a single SQL statement nesting ONE_HOT_ENCODER and MIN_MAX_SCALER table functions to apply both transformations.
    4. D.Implement a stored procedure that materializes each step into an internal stage before the next transformation.
    Show answer & explanation

    Correct answer: AConstruct a Pipeline object containing the two transformers, call fit on the training DataFrame, then transform to obtain the final dataset.

    • A. Correct. Snowpark ML provides a Pipeline object that allows chaining multiple transformers. Calling fit on the training DataFrame learns the parameters for all transformers, and transform applies them in sequence. This approach leverages the distributed execution engine without materializing intermediate results.
    • B. Incorrect. Materializing intermediate results to a temporary table adds unnecessary I/O overhead and breaks the natural pipeline abstraction. Snowpark ML supports in-memory chaining without intermediate storage.
    • C. Incorrect. While Snowflake supports SQL-based feature engineering, nesting table functions for sequential preprocessing like scaling then encoding is not the standard pattern. The Snowpark ML Pipeline is cleaner and better aligned with distributed workflows.
    • D. Incorrect. Using a stored procedure and internal stages introduces unnecessary complexity and latency. Snowpark ML provides native pipeline abstractions that avoid materialization overhead.

    Subdomain 1.1: Construct distributed feature engineering pipelines.

    12.Which Snowpark ML transformer is used to standardize numeric features to zero mean and unit variance?

    1. A.MinMaxScaler
    2. B.StandardScaler
    3. C.OneHotEncoder
    4. D.LabelEncoder
    5. E.OrdinalEncoder
    6. F.MinMaxScalerOneHotEncoder
    Show answer & explanation

    Correct answer: BStandardScaler

    • A. MinMaxScaler scales features to a fixed range (e.g., 0 to 1), but does not standardize to zero mean and unit variance. It is a supported transformer in Snowpark ML but not for z-score normalization.
    • B. StandardScaler removes the mean and scales to unit variance, performing z-score normalization. This is the correct transformer for standardizing numeric features to zero mean and unit variance.
    • C. OneHotEncoder converts categorical features into binary indicator columns; it is not used for scaling numeric features.
    • D. LabelEncoder is not a supported transformer in Snowpark ML; it is typically used for encoding target labels in scikit-learn.
    • E. OrdinalEncoder encodes categorical features as ordinal integers; it is for categorical variables, not numeric standardization.
    • F. MinMaxScalerOneHotEncoder is not a valid transformer in Snowpark ML; it appears to be a combination of two separate transformers.

    Subdomain 1.5: Operationalize features as first-class data assets.

    13.A production feature pipeline consists of a DAG of tasks that run on a dedicated virtual warehouse. The warehouse is expensive when idle, and its startup time adds 1–2 minutes of latency. The team wants to reduce both cost and latency while keeping the task DAG intact. What is the most effective change?

    1. A.Switch to a Snowpark-optimized warehouse with auto-suspend set to 1 minute.
    2. B.Migrate the tasks to serverless compute to reduce idle cost and startup latency.
    3. C.Provision a Compute Pool with a minimum of one active node and run tasks on it.
    4. D.Increase the warehouse size to finish DAG execution faster, then suspend.
    Show answer & explanation

    Correct answer: BMigrate the tasks to serverless compute to reduce idle cost and startup latency.

    • A. Incorrect. A Snowpark-optimized warehouse still incurs startup latency and idle costs. Auto-suspend at 1 minute can reduce idle spend but does not eliminate the 1–2 minute startup delay, and may increase resume frequency.
    • B. Correct. Serverless compute eliminates idle costs entirely because Snowflake manages the compute lifecycle. It resumes quickly without startup latency, directly addressing both cost and latency while preserving the task DAG.
    • C. Incorrect. Compute Pools are designed for Snowpark Container Services, not standard task DAGs. Even if used, a minimum active node incurs continuous cost, failing to reduce overall expenses.
    • D. Incorrect. Increasing warehouse size may shorten execution time but does not reduce startup latency or idle costs. It can increase costs and still leaves the warehouse idle after execution.

    Subdomain 1.5: Operationalize features as first-class data assets.

    14.A team is implementing feature pipelines across Dev, Test, and Prod environments using tasks and dynamic tables. They aim for environment isolation and consistent schedule management. Which three practices are most appropriate? (Choose three.)(Select 3)

    1. A.Use separate Snowflake databases for each environment.
    2. B.Use a single warehouse across environments to minimize cost.
    3. C.Tag tasks with environment type for operational visibility.
    4. D.Define dynamic table refresh policies to align schedules.
    5. E.Promote DDL changes via CI/CD from Dev to Prod.
    Show answer & explanation

    Correct answers: A, D, EUse separate Snowflake databases for each environment.; Define dynamic table refresh policies to align schedules.; Promote DDL changes via CI/CD from Dev to Prod.

    • A. Correct. Using separate Snowflake databases for each environment provides strong isolation, preventing cross-environment interference and enabling independent management of schemas, tasks, and dynamic tables. This directly supports environment isolation.
    • B. Incorrect. Sharing a single warehouse across environments reduces isolation and can cause resource contention, making it harder to control costs and performance independently. This contradicts the goal of environment isolation.
    • C. Incorrect. While tagging tasks with environment type improves operational visibility and governance, it does not directly address environment isolation or consistent schedule management, which are the primary goals. It is a supportive practice but not among the three most critical.
    • D. Correct. Defining dynamic table refresh policies helps align refresh schedules across environments, ensuring consistent data freshness and predictable pipeline behavior. This directly supports consistent schedule management.
    • E. Correct. Promoting DDL changes through a CI/CD pipeline ensures controlled, auditable, and repeatable deployments from Dev to Prod, reducing errors and maintaining consistency across environments. This supports both isolation and schedule management by preventing ad-hoc changes.

    Subdomain 1.5: Operationalize features as first-class data assets.

    15.Which two Snowflake objects can be used to package feature transformations with explicit versioning? (Choose two.)(Select 2)

    1. A.Stored procedure that includes a version parameter in its own definition.
    2. B.User-defined function (UDF) that imports a versioned Python module.
    3. C.Dynamic table with a version comment attached to its definition.
    4. D.External function with a version token in the API integration.
    5. E.Snowpark Container Services job with a version label in its spec.
    Show answer & explanation

    Correct answers: B, EUser-defined function (UDF) that imports a versioned Python module.; Snowpark Container Services job with a version label in its spec.

    • A. A stored procedure can encapsulate transformation logic, but Snowflake does not natively support a version parameter in its definition for explicit versioning. Any versioning must be manually managed through code deployment or object naming, not as a built-in feature.
    • B. A user-defined function (UDF) can package feature transformation logic, and by importing a versioned Python module (e.g., via pip), the transformation code is explicitly tied to a version. This is a common pattern for reproducible feature engineering in Snowflake.
    • C. Dynamic tables are used to maintain derived results automatically, but adding a version comment does not create explicit versioning of the transformation logic. Comments are metadata only and do not provide a versioned package mechanism.
    • D. External functions call out to external APIs, and the API integration does not provide Snowflake-native explicit versioning for the feature transformation package. Any versioning must be handled externally by the external service, not by the Snowflake object itself.
    • E. Snowpark Container Services can run transformation logic in containers, and the job specification can reference a labeled container image version (e.g., Docker tags). This allows feature transformation code to be packaged and deployed with explicit versioning.

    Subdomain 1.5: Operationalize features as first-class data assets.

    16.How does an MLOps engineer scale a batch feature computation job that is running as a SQL query on a Snowflake virtual warehouse?

    1. A.Increase the warehouse size for more computational resources.
    2. B.Move the job to a Compute Pool with GPU nodes.
    3. C.Enable multi-cluster mode on the warehouse to dynamically add clusters.
    4. D.Switch to a Snowpark-optimized warehouse for parallelization.
    Show answer & explanation

    Correct answer: AIncrease the warehouse size for more computational resources.

    • A. Increasing the warehouse size provides more CPU and memory resources, directly scaling the SQL query's performance for batch feature computation. This is the standard method to speed up a single SQL job.
    • B. Compute Pools with GPU nodes are used for Snowpark Container Services, not for scaling SQL queries on standard virtual warehouses. GPUs are not applicable to typical SQL-based batch feature computation in Snowflake.
    • C. Multi-cluster mode adds clusters to handle more concurrent queries, but does not accelerate a single SQL query. Since the question focuses on scaling one batch job, this option is incorrect.
    • D. Snowpark-optimized warehouses are designed for Snowpark Python/Scala workloads, not for standard SQL queries. They do not benefit SQL-based batch feature computation jobs.

    Domain 4: Pipeline Orchestration and Automation (CI/CD)

    Subdomain 4.3: Implement retraining and troubleshooting.

    17.Which Snowflake function should be used to obtain the current operational status of a Snowpipe for troubleshooting purposes?

    1. A.SYSTEM$LAST_CHANGE_COMMIT_TIME()
    2. B.SYSTEM$PIPE_STATUS()
    3. C.INFORMATION_SCHEMA.TABLES.LAST_ALTERED
    4. D.GET_DDL()
    Show answer & explanation

    Correct answer: BSYSTEM$PIPE_STATUS()

    • A. Incorrect. SYSTEM$LAST_CHANGE_COMMIT_TIME() returns the timestamp of the last change committed to a table, not the status of a Snowpipe. It is not used for monitoring or troubleshooting pipe execution.
    • B. Correct. SYSTEM$PIPE_STATUS() is a table function that returns the current status of a Snowpipe, including whether it is running, paused, or has errors. It provides the operational visibility needed for retraining and automation workflows.
    • C. Incorrect. INFORMATION_SCHEMA.TABLES.LAST_ALTERED shows when a table was last modified, not the status of a pipe. While useful for metadata auditing, it does not indicate pipe health or ingestion failures.
    • D. Incorrect. GET_DDL() returns the DDL definition for an object, such as a pipe configuration, but does not report runtime status or troubleshooting information. It is suitable for configuration inspection, not for monitoring execution.

    Subdomain 4.3: Implement retraining and troubleshooting.

    18.A machine learning retraining job in Snowflake is failing due to insufficient memory. What is the most direct and commonly recommended Snowflake-oriented fix?

    1. A.Sample the data in the stored procedure to fit in memory.
    2. B.Upgrade to a 2XL warehouse for the retraining job.
    3. C.Use incremental learning with mini-batches in training logic.
    4. D.Materialize the feature table to reduce join complexity.
    Show answer & explanation

    Correct answer: BUpgrade to a 2XL warehouse for the retraining job.

    • A. Incorrect. Sampling the data reduces memory usage but reduces training data quantity, potentially degrading model quality. It is a workaround rather than addressing the root cause of insufficient compute or memory.
    • B. Correct. Upgrading to a larger warehouse (e.g., 2XL) directly increases available memory and compute resources, allowing the retraining job to complete successfully. In Snowflake, scaling up the warehouse is the most straightforward way to address resource constraints during training.
    • C. Incorrect. While incremental learning with mini-batches can reduce memory usage, it requires significant changes to the training algorithm and may not be supported by the existing model workflow. The direct, Snowflake-oriented fix is to increase compute resources via warehouse sizing.
    • D. Incorrect. Materializing the feature table can improve query performance by simplifying joins, but it does not directly address insufficient compute or memory for the training process. It may help in some pipelines but is not the best immediate remedy.

    Subdomain 4.3: Implement retraining and troubleshooting.

    19.You need to automatically retrain a machine learning model when new data files arrive in an external stage. Which approach should you use?

    1. A.Set up a Snowpipe to load new data, then a Task that validates quality and calls a training procedure upon success.
    2. B.Create a Stream on the external stage to capture new files and use a Task that performs quality checks and initiates retraining.
    3. C.Schedule a Task to run each time a new file arrives to check quality, and then train a model if quality passes.
    4. D.Use an Alert on the external stage's metadata to detect new files and trigger quality checks followed by model training.
    Show answer & explanation

    Correct answer: ASet up a Snowpipe to load new data, then a Task that validates quality and calls a training procedure upon success.

    • A. Correct. Snowpipe automatically ingests new files from an external stage into a Snowflake table. A downstream Task can be set to run (often using a Stream on the target table) to validate data quality and, if successful, invoke a stored procedure for model retraining. This is the standard event-driven pattern for retraining in Snowflake.
    • B. Incorrect. Streams in Snowflake track changes on tables, not on external stages. An external stage is not a table, so a Stream cannot be created directly on it. Therefore, this approach is not valid.
    • C. Incorrect. Snowflake Tasks are scheduled on a fixed interval or cron schedule; they cannot be directly triggered by file arrival on an external stage. A Task would need to rely on a Stream or polling after ingestion, making this option inaccurate.
    • D. Incorrect. Snowflake Alerts are used to monitor conditions like query performance or resource usage, not to detect new files on external stage metadata. This is not a supported use case for Alerts.

    Subdomain 4.3: Implement retraining and troubleshooting.

    20.Which action is the best first step to investigate slow inference performance in a Snowpark Container Services (SPCS) deployment?

    1. A.Check query profiles of inference calls for bottlenecks.
    2. B.Review SPCS logs and metrics for memory and CPU usage.
    3. C.Increase the instance count of the container service.
    4. D.Scale up the Snowflake warehouse for data preprocessing.
    Show answer & explanation

    Correct answer: BReview SPCS logs and metrics for memory and CPU usage.

    • A. Incorrect. Query profiling is used for SQL workloads, but SPCS inference does not execute SQL queries, so query profiles are not directly relevant to container-level resource issues.
    • B. Correct. SPCS logs and metrics provide direct insight into resource utilization (CPU, memory, restarts) for the container service, making it the most effective first step to diagnose performance bottlenecks.
    • C. Incorrect. Increasing instance count is a remediation step, not a diagnostic step. The first action should be to analyze logs/metrics to determine if resource constraints are the cause.
    • D. Incorrect. The Snowflake warehouse is used for data preprocessing, not for the SPCS inference service. Scaling the warehouse does not directly address inference performance issues.

    Subdomain 4.3: Implement retraining and troubleshooting.

    21.How can a team ensure that automated retraining pipelines are not interrupted by budget suspension in Snowflake?

    1. A.Increase the budget limit indefinitely to prevent suspension.
    2. B.Use a separate Snowflake account for retraining with its own budget.
    3. C.Assign the retraining task to a resource group without budget enforcement.
    4. D.Set up a budget usage alert and manually override suspension if needed.
    Show answer & explanation

    Correct answer: BUse a separate Snowflake account for retraining with its own budget.

    • A. Incorrect. Increasing the budget limit indefinitely is not sustainable; it removes cost controls and does not isolate retraining workloads. This approach can lead to uncontrolled costs and does not address budget management best practices.
    • B. Correct. Using a separate Snowflake account for retraining with its own budget provides workload isolation and independent budget management. This ensures retraining tasks are not impacted by budget limits in the primary account, aligning with best practices for critical automated pipelines.
    • C. Incorrect. In Snowflake, budget enforcement is account-level and cannot be circumvented by resource groups. Resource groups are not designed to bypass governance controls, so this does not prevent suspension due to budget limits.
    • D. Incorrect. While alerts are useful for monitoring, they do not prevent suspension. Manual override is reactive and not scalable for automated retraining pipelines, leaving them vulnerable to interruption when budget is exceeded.

    Subdomain 4.2: Configure CI/CD and version control.

    22.What is the default authentication method used by Snowflake CLI when running on a local machine?

    1. A.Browser-based SSO
    2. B.OAuth with client credentials
    3. C.Key pair authentication
    4. D.Username and password
    Show answer & explanation

    Correct answer: ABrowser-based SSO

    • A. Correct. Snowflake CLI defaults to browser-based SSO for local interactive use. When no authenticator is explicitly configured, the CLI initiates a browser-based login flow, which is the recommended approach for local development.
    • B. Incorrect. OAuth with client credentials is typically used for service-to-service authentication in automated or non-interactive environments, not as the default for local machine use.
    • C. Incorrect. Key pair authentication is a secure method but requires explicit configuration and is commonly used for automation and CI/CD pipelines, not as the default local authentication method.
    • D. Incorrect. Username and password authentication is supported but is not the default for Snowflake CLI. The CLI favors more secure interactive methods such as browser-based SSO for local use.

    Subdomain 4.2: Configure CI/CD and version control.

    23.What Snowflake CLI command is specifically designed to create or replace a stored procedure from a file?

    1. A.snow procedure create -f <file>
    2. B.snow sql -f <file>
    3. C.snow function create
    4. D.snow stage put
    Show answer & explanation

    Correct answer: Asnow procedure create -f <file>

    • A. Correct. The `snow procedure create -f <file>` command is the dedicated Snowflake CLI command to create or replace a stored procedure from a file containing the procedure definition. This command is specifically designed for this purpose, making it the precise tool when you need to deploy a stored procedure from a file.
    • B. Incorrect. While `snow sql -f <file>` can execute any SQL from a file, including a `CREATE OR REPLACE PROCEDURE` statement, it is a general SQL execution command and not specifically designed for creating or replacing stored procedures. The question asks for a command specifically designed for that task.
    • C. Incorrect. `snow function create` is used for creating user-defined functions (UDFs), not stored procedures. It is a separate object type and command.
    • D. Incorrect. `snow stage put` uploads files to a Snowflake stage. It can be part of a deployment workflow but does not create or replace stored procedures itself.

    Subdomain 4.2: Configure CI/CD and version control.

    24.Which of the following Snowflake components can be used to automate the execution of an ML pipeline? (Select two.)(Select 2)

    1. A.Tasks
    2. B.Snowpipe
    3. C.Streams
    4. D.External Functions
    5. E.Stored Procedures
    6. F.Sequences
    Show answer & explanation

    Correct answers: A, ETasks; Stored Procedures

    • A. Correct. Tasks are Snowflake’s native scheduling and orchestration mechanism, enabling recurring execution of SQL statements, stored procedures, or other tasks to automate steps like feature refresh, model retraining, and inference.
    • B. Incorrect. Snowpipe is designed for continuous data ingestion from files, not for orchestrating ML pipeline execution. While it can feed data into a pipeline, it does not automate model training or deployment steps.
    • C. Incorrect. Streams track data changes (e.g., inserts, updates) and are useful as triggers for incremental processing, but they do not directly execute pipeline steps. They typically work with tasks or stored procedures to initiate downstream actions.
    • D. Incorrect. External Functions allow Snowflake to call external services (e.g., cloud functions, APIs), which can be part of an ML solution, but they are not designed for scheduling or orchestrating pipeline execution.
    • E. Correct. Stored procedures encapsulate pipeline logic such as data preprocessing, model training, evaluation, and deployment. They are frequently invoked by tasks to automate ML workflows, forming a core building block for pipeline automation.
    • F. Incorrect. Sequences generate unique numeric values, typically for surrogate keys or identifiers. They have no role in automating ML pipeline execution and are unrelated to orchestration or workflow management.

    Subdomain 4.2: Configure CI/CD and version control.

    25.A team uses Snowflake CLI in a GitHub Actions workflow to deploy ML models. They need to securely authenticate to Snowflake without storing credentials in the repository. Which authentication method should they configure, and what additional GitHub Actions setup is required?

    1. A.Use OAuth device code flow, with client ID and secret stored as GitHub Secrets, referencing them in environment variables
    2. B.Store Snowflake username and password as GitHub Secrets and pass them to `snow connection add` command
    3. C.Use browser-based SSO (single sign-on) with an interactive login step that requires user intervention
    4. D.Use key pair authentication with the private key stored as a GitHub Secret and passed via an environment variable
    Show answer & explanation

    Correct answer: DUse key pair authentication with the private key stored as a GitHub Secret and passed via an environment variable

    • A. Incorrect. OAuth device code flow is designed for interactive, user-driven authentication and is not supported by Snowflake CLI for non-interactive use. It would still require an interactive step, which is not feasible in a GitHub Actions workflow.
    • B. Incorrect. While storing credentials as GitHub Secrets is better than hardcoding, passing username and password to `snow connection add` is not the preferred method for CI/CD. Key pair authentication is more secure and recommended for automated deployments.
    • C. Incorrect. Browser-based SSO requires an interactive login, which cannot be automated in a headless CI/CD environment like GitHub Actions. It is not suitable for non-interactive pipelines.
    • D. Correct. Key pair authentication is the recommended secure method for non-interactive automation with Snowflake CLI. The private key should be stored as a GitHub Secret and injected into the workflow via an environment variable (e.g., SNOWFLAKE_PRIVATE_KEY) or as a file, avoiding credentials in the repository.

    Subdomain 4.2: Configure CI/CD and version control.

    26.Your organization uses Snowflake CLI to deploy ML pipelines. To ensure the deployment scripts are idempotent and safe to run multiple times, which practices should you follow? (Select two.)(Select 2)

    1. A.Use `CREATE OR REPLACE` for all objects to avoid errors
    2. B.Use conditional logic like `IF NOT EXISTS` where possible
    3. C.Always drop the database before recreating
    4. D.Include error handling with `snow sql --exit-on-error`
    5. E.Use `snow stage copy --overwrite` for files
    6. F.Store deployment scripts in a version-controlled Git repository
    Show answer & explanation

    Correct answers: A, BUse `CREATE OR REPLACE` for all objects to avoid errors; Use conditional logic like `IF NOT EXISTS` where possible

    • A. Using `CREATE OR REPLACE` is a common idempotent pattern for objects such as functions, procedures, and stages, ensuring scripts can be rerun without errors. However, it should be applied selectively, as it may overwrite existing objects and is not recommended for data-bearing tables.
    • B. Conditional logic like `IF NOT EXISTS` prevents errors if objects already exist, making scripts safe to rerun. This is a standard practice for idempotent deployments.
    • C. Dropping the database before recreating is destructive and not idempotent; it causes data loss and downtime, making it unsafe for repeated runs.
    • D. While `--exit-on-error` improves error handling, it does not make scripts idempotent. It only controls execution on failure but does not ensure safe reruns.
    • E. Overwriting staged files with `--overwrite` is idempotent for file deployment but does not address idempotency of database object creation, which is the focus of ML pipeline deployment.
    • F. Storing scripts in a version-controlled Git repository is a CI/CD best practice for repeatability, but it does not directly ensure that a script is idempotent. It supports consistency but does not prevent errors on multiple runs.

    Domain 5: Governance, Security, and Monitoring

    Subdomain 5.3: Manage ML cost attribution and resource optimization.

    27.An ML training job is running on a Medium warehouse and experiencing spilling that increases credit consumption. Which change would most likely reduce total credits?

    1. A.Switch to a Large warehouse to reduce training time and minimize spilling, which may lower total credits.
    2. B.Switch to an X-Small warehouse to force the job to run longer but with a lower per-second cost.
    3. C.Keep the Medium warehouse and set MAX_CLUSTER_COUNT to 2 for parallel query execution.
    4. D.Use an Extra Large warehouse with a single cluster to maximize per-node memory and reduce spilling.
    Show answer & explanation

    Correct answer: ASwitch to a Large warehouse to reduce training time and minimize spilling, which may lower total credits.

    • A. Correct. If the current Medium warehouse is causing spilling due to insufficient memory, switching to a Large warehouse can reduce spilling and shorten runtime. Although the per-second cost is higher, the overall reduction in runtime often leads to lower total credits consumed, making this a cost-effective optimization for memory-bound ML training.
    • B. Incorrect. An X-Small warehouse has less memory, likely increasing spilling and extending runtime. Even though the per-second cost is lower, the longer execution time and potential spill-related overhead typically result in higher total credit consumption.
    • C. Incorrect. Increasing MAX_CLUSTER_COUNT enables a multi-cluster warehouse for concurrency, but does not speed up a single ML training query. Each query still runs on a single cluster, so it does not address memory pressure or reduce spilling for this job.
    • D. Incorrect. An Extra Large warehouse provides more memory and reduces spilling, but its per-second cost is substantially higher. For most ML workloads, the performance gain does not compensate for the increased cost, making it less efficient than a right-sized larger warehouse.

    Subdomain 5.3: Manage ML cost attribution and resource optimization.

    28.Which Snowflake feature is used to attribute costs to ML workloads and enforce resource optimization through object categorization?

    1. A.Resource monitor
    2. B.Notification integration
    3. C.Warehouse policy
    4. D.Tag-based constraint
    Show answer & explanation

    Correct answer: DTag-based constraint

    • A. Incorrect. Resource monitors track and limit credit consumption for warehouses but do not provide cost attribution or granular tracking for ML workloads. They are used for budget enforcement, not cost allocation metadata.
    • B. Incorrect. Notification integrations send alerts via external services (e.g., email, Slack) when events occur. They do not manage or attribute ML costs or support resource optimization.
    • C. Incorrect. Warehouse policies govern warehouse usage patterns (e.g., auto-suspend, auto-resume) but are not the standard Snowflake feature for cost attribution. Object tagging and reporting on tag values handle cost allocation.
    • D. Correct. Tag-based constraints apply policies or limits based on object tags, enabling categorization and tracking of ML workloads. Tags on warehouses, databases, schemas, and other objects support cost attribution, chargeback, and resource tracking.

    Subdomain 5.3: Manage ML cost attribution and resource optimization.

    29.Which Snowflake parameter is used to automatically suspend a virtual warehouse after a period of inactivity, thereby reducing costs?

    1. A.AUTO_SUSPEND_SECS
    2. B.IDLE_SHUTDOWN_TIMEOUT
    3. C.MAX_IDLE_TIME
    4. D.SUSPEND_AFTER_IDLE
    Show answer & explanation

    Correct answer: AAUTO_SUSPEND_SECS

    • A. Correct. AUTO_SUSPEND_SECS is a valid Snowflake parameter that specifies the number of seconds a warehouse can be idle before it is automatically suspended, helping to reduce costs by stopping unused resources.
    • B. Incorrect. IDLE_SHUTDOWN_TIMEOUT is not a valid Snowflake parameter for warehouse suspension or cost optimization. Snowflake uses AUTO_SUSPEND_SECS for this purpose.
    • C. Incorrect. MAX_IDLE_TIME is not a recognized Snowflake parameter for managing warehouse suspension or resource optimization. The correct parameter is AUTO_SUSPEND_SECS.
    • D. Incorrect. SUSPEND_AFTER_IDLE is not a valid Snowflake parameter; the correct parameter is AUTO_SUSPEND_SECS.

    Subdomain 5.3: Manage ML cost attribution and resource optimization.

    30.Which of the following actions help manage ML cost attribution and resource optimization?(Select 3)

    1. A.Configure auto-suspend with a short idle timeout so nodes stop quickly after finishing work.
    2. B.Create separate pools: a small dedicated pool for inference and a larger auto-suspending pool for training.
    3. C.Increase the node count to handle all workloads simultaneously, then reduce count manually after peak periods.
    4. D.Use a single large GPU instance to run all jobs sequentially, eliminating idle time between jobs.
    5. E.Set up a queue that automatically launches and terminates nodes for batch training runs during off-hours.
    Show answer & explanation

    Correct answers: A, B, EConfigure auto-suspend with a short idle timeout so nodes stop quickly after finishing work.; Create separate pools: a small dedicated pool for inference and a larger auto-suspending pool for training.; Set up a queue that automatically launches and terminates nodes for batch training runs during off-hours.

    • A. Configuring auto-suspend with a short idle timeout helps prevent paying for unused compute after work completes, ensuring resources are released quickly and reducing unnecessary costs from idle nodes.
    • B. Creating separate pools allows better resource allocation: a small dedicated pool for inference ensures low-latency responses, while a larger auto-suspending pool for training optimizes cost by scaling down when not in use.
    • C. Increasing node count to handle all workloads simultaneously and then manually reducing it is inefficient. Manual scaling is error-prone and can lead to over-provisioning or underutilization, increasing costs.
    • D. Using a single large GPU instance to run all jobs sequentially may reduce idle time between jobs but is inefficient for parallel workloads. It can lead to underutilization of expensive GPU capacity and higher costs due to lack of scalability.
    • E. Setting up a queue that automatically launches and terminates nodes for batch training runs during off-hours supports elastic scale-up and scale-down aligned to actual demand, ensuring resources are only used when needed, optimizing cost and efficiency.

    Subdomain 5.3: Manage ML cost attribution and resource optimization.

    31.Which Snowflake function is used to view tags assigned directly to a warehouse?

    1. A.TAG_REFERENCES('warehouse', '<warehouse_name>')
    2. B.TABLE_PRIVILEGES('warehouse', '<warehouse_name>')
    3. C.OBJECT_TAGS('warehouse', '<warehouse_name>')
    4. D.WAREHOUSE_TAGS('<warehouse_name>')
    Show answer & explanation

    Correct answer: DWAREHOUSE_TAGS('<warehouse_name>')

    • A. Incorrect. TAG_REFERENCES is used to list all objects that reference a specific tag, not to retrieve tags directly assigned to a warehouse. It is useful for impact analysis, not for directly viewing the warehouse's assigned tags.
    • B. Incorrect. TABLE_PRIVILEGES retrieves privileges on tables and does not return tag information for warehouses. It is not the correct function for viewing tags assigned to a warehouse.
    • C. Incorrect. OBJECT_TAGS retrieves tags for objects like tables or views, but Snowflake does not use OBJECT_TAGS for warehouse objects specifically. The correct function for warehouses is WAREHOUSE_TAGS.
    • D. Correct. WAREHOUSE_TAGS('<warehouse_name>') is the Snowflake function specifically designed to retrieve the tags assigned directly to a warehouse. It returns tag information for the specified warehouse, aiding in cost attribution and resource optimization.

    Subdomain 5.1: Enforce Snowflake security policies.

    32.A Snowflake administrator needs to enforce row-level security on a customers table so that each role can only see customers in the region assigned to that role. Which approach should the administrator use?

    1. A.Create a materialized view per role with a region filter and grant SELECT on it.
    2. B.Implement a row access policy using a mapping table to filter rows based on the current role's region.
    3. C.Use dynamic data masking on the region column to hide the region values from users.
    4. D.Apply a secure view joining customers and a role-to-region mapping table for filtering.
    Show answer & explanation

    Correct answer: BImplement a row access policy using a mapping table to filter rows based on the current role's region.

    • A. Incorrect. Creating a materialized view per role is static and does not dynamically filter data based on the user's session context. This approach is unscalable, creates duplicated objects, and does not provide centralized policy enforcement, making it unsuitable for row-level security.
    • B. Correct. Row access policies in Snowflake are purpose-built for row-level security. They dynamically filter rows based on session context (e.g., current role) by referencing a mapping table that assigns regions to roles. This cleanly enforces security without manual view creation or additional logic.
    • C. Incorrect. Dynamic data masking hides or obfuscates column values but does not filter rows. It is appropriate for protecting sensitive column data, not for enforcing row-level access restrictions based on geography.
    • D. Incorrect. While a secure view can encapsulate filtering logic, it is less flexible and maintainable than a row access policy. The security logic lives in the view definition rather than a dedicated policy, and it does not dynamically adapt to the user's role without additional complexity. Row access policies are the recommended approach.

    Subdomain 5.1: Enforce Snowflake security policies.

    33.Which of the following is the correct construct for defining a Snowflake security policy such as a masking policy or row access policy?

    1. A.A SQL function that returns a boolean value
    2. B.A SQL function that returns a string value
    3. C.A stored procedure used for procedural logic
    4. D.A view that provides filtered data
    Show answer & explanation

    Correct answer: BA SQL function that returns a string value

    • A. Incorrect. While a SQL function returning a boolean is used for row access policies, the question likely pertains to masking policies, which require a function returning a value of the column's data type (commonly a string). This option alone does not cover the typical masking policy implementation.
    • B. Correct. Masking policies in Snowflake are implemented using SQL functions that return a value, often a string, to replace the original column value. This matches the required signature for defining such security policies.
    • C. Incorrect. A stored procedure executes procedural logic and is not used to define or attach security policies. Policies must be implemented with SQL functions, not procedures.
    • D. Incorrect. A view can provide filtered or transformed data but is not a security policy mechanism. Views complement governance but do not enforce masking or row-level access policies directly.

    Subdomain 5.1: Enforce Snowflake security policies.

    34.Which privilege must be granted to allow a user to start or stop a compute pool?

    1. A.Grant USAGE on the compute pool
    2. B.Grant MODIFY on the compute pool
    3. C.Grant OPERATE on the compute pool
    4. D.Grant MONITOR on the compute pool
    Show answer & explanation

    Correct answer: CGrant OPERATE on the compute pool

    • A. Incorrect. USAGE on a compute pool allows a role to reference and use the pool for queries, but it does not grant the ability to start or stop the pool.
    • B. Incorrect. MODIFY on a compute pool allows altering its configuration (e.g., size, auto-suspend), but not starting or stopping the pool.
    • C. Correct. OPERATE on a compute pool is required to start, stop, or resume the pool. It also allows resizing the pool.
    • D. Incorrect. MONITOR on a compute pool provides read-only visibility into status and usage metrics, but does not permit starting or stopping.

    Subdomain 5.1: Enforce Snowflake security policies.

    35.A feature store contains a sensitive diagnosis column. How can you enforce role-based access so that only doctors see the actual diagnosis while other roles see a masked version?

    1. A.Create a view mapping diagnosis to categories and use the view in inference.
    2. B.Apply a dynamic data masking policy on diagnosis that maps values based on role.
    3. C.Create a copy of the feature store with anonymized data for inference.
    4. D.Use a row access policy to filter out diagnosis values for non-doctors.
    Show answer & explanation

    Correct answer: BApply a dynamic data masking policy on diagnosis that maps values based on role.

    • A. Incorrect. Creating a view does not provide centralized, policy-driven column-level protection; it is static and does not adjust dynamically based on user roles. Native policies like dynamic data masking are more secure and consistent.
    • B. Correct. Dynamic data masking is the appropriate Snowflake feature to control sensitive column values based on role, allowing authorized users to see unmasked values while others see masked or transformed values, without changing underlying data.
    • C. Incorrect. Creating a separate anonymized copy introduces data duplication and maintenance overhead and does not enforce real-time role-based access control. It is not a Snowflake security policy.
    • D. Incorrect. Row access policies restrict which rows a role can see, not the values within a column. For column-level sensitivity like diagnosis, a column-level policy (e.g., dynamic data masking) is needed.

    Want the full experience?

    These are just samples. Practice the full Snowflake SnowPro Advanced: MLOps Engineer (MLA-B01) question bank in quiz mode — free, no signup, with domain practice and exam simulation.