All Snowflake exams
Free NAS-C02 practice test: 30 questions with answers
30 original questions for SnowPro Specialty: Native Apps, drawn from every topic area. Answer each one to see whether you got it right and why. No sign-up.
- Free questions
- 30
- Full bank
- 100 questions
All 30 NAS-C02 questions with answers
The same questions as the test above, grouped by exam topic. Open any question to see the answer and explanation.
Managing release workflows and upgrades (8 questions)
Question 1
A provider fixes a defect without changing the public version name of the application. Which versioning element is changed?
- AThe application's marketing display name
- BThe provider's company name
- CThe consumer's warehouse size
- DThe patch number within the version
Show answer and explanationHide answer
Correct answer: DPatches are incremental updates within a version, so a fix can ship under the same version name. The display name, company name, and warehouse size are not versioning elements.
Question 2
A release directive is set for an application package. What does it determine?
- AThe price consumers pay for the application each billing cycle under the listed plan
- BThe number of consumers allowed to install the app per region within a plan
- CWhich version and patch consumers receive when the application is upgraded under that directive
- DThe language of the application's readme and localized strings shown during install
Show answer and explanationHide answer
Correct answer: CRelease directives specify which version and patch the release targets, which controls what consumers are upgraded to. Price, readme language, and install counts are not set by release directives.
Question 3
Which two statements about upgrading a Native App are correct? (Choose two.)
- AThe upgrade reruns the setup logic in the consumer account, so the setup must preserve existing consumer data
- BConsumers keep their existing data when the upgrade succeeds because setup logic is written to be safe to rerun
- CUpgrades delete all application roles so that they can be recreated from scratch
- DConsumers must reinstall the application from the beginning for every upgrade
Show answer and explanationHide answer
Correct answer: A, BUpgrades rerun setup logic, so it must be written to preserve data and be safe to repeat. Upgrades do not delete roles or require reinstalling from scratch.
Question 4
An upgrade stops part-way through its setup logic. What is the best next step?
- AIgnore the failure because part of the upgrade already completed and continue the rollout now
- BRoll back the provider's entire Snowflake account to a snapshot taken before the upgrade began
- CFind the failing statement, correct the setup logic so it is safe to rerun, and run the upgrade again
- DDrop the consumer's database and its schemas, then reinstall the app from the listing afresh
Show answer and explanationHide answer
Correct answer: CCorrecting the failing statement and rerunning an idempotent setup is the controlled fix. Dropping consumer data or ignoring a partial failure causes data loss or inconsistent state.
Question 5
Why does a provider often maintain a development version separately from the released versions?
- ASo that changes can be tested and validated before they are released to consumers
- BSo that the release directive can be removed from the package manifest
- CSo that consumers see no change in the application until the directive moves
- DSo that the manifest can be stored outside the package in a separate Git repository for review
Show answer and explanationHide answer
Correct answer: AA separate development version lets the provider test changes before a release directive points consumers at them. It does not prevent change, remove directives, or move the manifest out of the package.
Question 6
A provider wants to keep an older released version available while newer versions roll out to consumers. Why is this useful?
- AConsumers who have not yet upgraded can continue to run a supported version while the rollout proceeds
- BThe older version removes the need for the setup script because its privileges are bundled into the manifest at install time
- CThe older version automatically receives every new feature, bug fix, and schema change from the newest release
- DThe older version lets the provider bypass consumer privilege grants during staged upgrades
Show answer and explanationHide answer
Correct answer: AKeeping prior versions available supports a staged rollout, so consumers on older releases keep working until they move forward. The other options misstate how versions behave.
Question 7
An upgrade must change how an app-owned table stores its data, and existing consumer rows must be kept. Which approach fits?
- ADrop the table and let consumers re-enter their data manually after the upgrade completes in the new layout
- BLeave the table unchanged and tell consumers to ignore the new column for now
- CMigrate the existing rows within the upgrade logic, using statements that preserve their data
- DCopy the table to a public share and delete the original in the provider account
Show answer and explanationHide answer
Correct answer: CA data-preserving migration keeps consumer rows while changing the structure. Dropping the table or leaving it inconsistent loses data or breaks the new version.
Question 8
A provider plans a breaking change in a new major version. How should consumers on the older version be handled?
- AKeep the older version available with clear release notes, and let consumers move to the new version when they are ready
- BHide the change in the readme file and omit it from the release notes until consumers encounter it in practice
- CForce every consumer to upgrade on the same day without notice through an automated cutover at noon
- DRemove the older version and hope that consumers do not notice the switch during the next release cycle
Show answer and explanationHide answer
Correct answer: AClear communication and a staged transition let consumers adopt a breaking change safely. Forced or silent changes disrupt customers and erode trust.
Building app components (8 questions)
Question 9
In a Native App package, which file declares the application's version information and the artifacts such as the setup script and readme?
- Asetup_script.exe
- Bprovider_account.json
- Cmanifest.yml
- Dreadme.bin
Show answer and explanationHide answer
Correct answer: CThe manifest declares the version, privileges, references, and artifacts that Snowflake uses to install and run the app. The other file names are not part of the Native App packaging structure.
Question 10
The setup script in a Native App runs when the app is installed or upgraded. What is its main job?
- ATo change the consumer's default warehouse size permanently by altering account-level parameters at every install
- BTo create the schemas, procedures, and application roles the app needs inside the consumer's account
- CTo copy the provider's entire account, including its databases, roles, and network policies, into the consumer's account
- DTo delete every table and view of consumer data before installation begins, using DROP statements in the setup script
Show answer and explanationHide answer
Correct answer: BThe setup script builds the app's objects inside the consumer account, such as schemas, stored procedures, and application roles. It does not copy the provider's account or delete consumer data.
Question 11
A setup script must succeed when it runs again during an upgrade. Which coding practice supports this?
- ARunning the script once at initial install and leaving its statements unchanged in later releases so it is not modified during upgrades
- BUsing CREATE ... IF NOT EXISTS or conditional logic so that rerunning does not fail or destroy existing objects
- CEmbedding a timestamp in every object name so each run creates a fresh copy of tables, procedures, and schemas alongside the previous ones
- DUsing DROP DATABASE at the start of every run so the schema is rebuilt from a clean state before the procedures are recreated
Show answer and explanationHide answer
Correct answer: BIdempotent statements let the script run on install and upgrade without failing or destroying existing state. Dropping the database on each run would delete the consumer's data.
Question 12
An application needs a role that consumers can grant to their own users so that those users can call the app's procedures. Which Native App object provides this?
- AA share of the provider's warehouse
- BA network rule for outbound calls
- CA stage that holds the readme
- DAn application role
Show answer and explanationHide answer
Correct answer: DApplication roles control which consumer users can use the app's objects and procedures. Shares, stages, and network rules serve other purposes.
Question 13
Which two items are declared in the manifest of a Native App? (Choose two.)
- AThe Marketplace price the consumer will pay each month
- BThe consumer's billing account number
- CThe default Streamlit application artifact that opens for users
- DThe setup script artifact that builds the app's objects
Show answer and explanationHide answer
Correct answer: C, DThe manifest's artifacts section identifies the setup script and the default Streamlit app. Prices and consumer billing details are not part of the package manifest.
Question 14
A provider has packaged application files that will become the basis of a Native App. Where are these files staged before they are added to a version?
- AIn a personal worksheet owned by one developer
- BIn the consumer's account before the installation runs
- CIn an application package in the provider account
- DIn the Marketplace listing's image gallery
Show answer and explanationHide answer
Correct answer: CThe application package is the provider-side container that holds the staged files and versions. The consumer account receives the app only at installation, and listing images and worksheets are not package storage.
Question 15
A Native App package includes a readme artifact. What is its role in the app's lifecycle?
- AIt contains the decryption keys for the setup script, which the consumer must store in a secrets vault before install
- BIt gives consumers a description and guidance about the app, shown with the application during installation
- CIt replaces the manifest's version information with a separate version registry that the consumer reads at each upgrade
- DIt defines which consumer tables the app can read, write, and join, along with the warehouse and role that run each query
Show answer and explanationHide answer
Correct answer: BThe readme provides human-readable guidance about the app and its use. Keys, version information, and table access are controlled by other parts of the package and the consumer's grants.
Question 16
A stored procedure in the app should be callable only by users who hold a particular application role. Where is this access defined?
- AIn the Marketplace listing's keyword tags and its search metadata
- BIn the setup logic, through grants of the procedure to the application role
- CIn the consumer's billing settings, within the account's cost management panel options
- DIn the readme file that accompanies the package, in the section describing the procedures
Show answer and explanationHide answer
Correct answer: BGrants to application roles are made in the setup logic, which controls who can call the procedure. Billing, readmes, and listing tags do not control procedure access.
Designing Native App architectures (7 questions)
Question 17
A software provider wants to sell an analytics application to Snowflake customers and keep the processing inside each consumer's account rather than in an external service. Which Snowflake capability is designed for this model?
- AAn external REST API endpoint that the consumer's applications call over the public internet for each query
- BThe Native App Framework, which packages application objects for installation in consumer accounts
- CA shared database that the provider copies by hand into every consumer account through nightly CREATE TABLE AS SELECT jobs
- DA Marketplace listing that merely shares a PDF description of the product and a sample screenshot for prospects
Show answer and explanationHide answer
Correct answer: BThe Native App Framework packages code and objects that run inside the consumer's Snowflake account, which keeps data and processing in the consumer's environment. An external API moves processing outside the account, and a PDF does not deliver an application.
Question 18
A provider's application needs to read a consumer's table without copying the data into the provider's account. Which mechanism lets the app request access to that consumer object?
- AA reference declared in the manifest and bound by the consumer
- BA copy of the consumer's table stored in the application package
- CA public share that every account can read
- DA direct grant from the provider to the consumer's table owner with no consumer action
Show answer and explanationHide answer
Correct answer: AThe manifest declares the object references the app needs, and the consumer chooses and binds the specific objects it allows. This keeps the consumer in control, while copying data into the package breaks that boundary.
Question 19
A design review asks how responsibilities should be split between the provider and the consumer in the Native App model. Which principle fits?
- AThe provider develops and versions the application, while the consumer decides which privileges and references to grant
- BBoth parties hold full administrator rights over every object in the consumer account, including schemas, roles, and grants during upgrades
- CThe consumer writes and maintains the application code in its own account, while the provider hosts storage and the release packaging
- DPrivileges are inherited automatically from the Marketplace listing at install time, with no consumer decision to approve them
Show answer and explanationHide answer
Correct answer: AThe provider owns the code and release process, and the consumer retains control over what the app can access. Shared full administration removes that control, and privileges are not granted automatically through the Marketplace.
Question 20
Which two requirements are best served by running application logic inside the Native App rather than in an external provider system? (Choose two.)
- ALogic the consumer's team can inspect and operate under its own governance controls
- BStoring the provider's API keys in the consumer's tables for later use
- CServing a public marketing page to anonymous visitors
- DProcessing that must run against the consumer's data without moving that data out of the consumer account
Show answer and explanationHide answer
Correct answer: A, DKeeping processing in the consumer account avoids moving data out and lets the consumer apply its own governance. Storing provider secrets in consumer tables is poor practice, and marketing pages are not a Native App use case.
Question 21
A customer requires that its data never leave its Snowflake account. Which design satisfies this requirement?
- AA Native App that runs inside the customer's account
- BA nightly export of all rows to an external server
- CA connector that sends each query result to the provider's cloud
- DA spreadsheet export emailed to the provider each week
Show answer and explanationHide answer
Correct answer: ARunning the app inside the customer's account keeps the data in place. Exports and external connectors move the data out and violate the requirement.
Question 22
Consumers grant different privileges to the same application. Which design choice lets the app work across these differences?
- AHard-code a warehouse name that exists only in the provider's account and reference it directly in every procedure so queries run on that compute
- BDisable every optional feature and fall back to a fixed baseline configuration so the app behaves identically in every consumer account and environment
- CRequire every consumer to create an identically named XS warehouse with auto-suspend disabled and the same role hierarchy as the provider during setup
- DUse only the privileges and references the consumer approves, and handle missing grants gracefully in the setup and procedure logic
Show answer and explanationHide answer
Correct answer: DBecause consumers grant different privileges, the app should use what it is given and degrade cleanly when a grant is missing. A hard-coded provider warehouse does not exist in consumer accounts.
Question 23
A Native App must call an external web service during processing. Which requirement applies before the call can succeed in the consumer's account?
- AThe app must be installed in the provider's account instead, so the outbound call uses provider policy
- BThe consumer must explicitly approve the external network access that the app requests
- CThe call is allowed by default because the app is trusted and passed a provider security review
- DThe provider must open a firewall on its own servers to the consumer's IP addresses for calls
Show answer and explanationHide answer
Correct answer: BExternal network access is a privilege the consumer must approve, which keeps outbound connections under the consumer's control. Provider-side firewalls do not govern consumer-side connections, and apps are not trusted by default.
Deploying and troubleshooting apps (7 questions)
Question 24
A consumer reports that installation failed. Which first step helps identify the cause?
- AAsk the provider to rename the application so the install name stops colliding with existing objects
- BReview the error from the failing setup statement and the manifest validation output
- CDelete the consumer's account and create a new one with the same name before reinstalling the app
- DInstall the same version again with no changes or cleanup of prior state
Show answer and explanationHide answer
Correct answer: BInstallation errors usually point to a specific statement or manifest problem, so reviewing that output finds the cause. Recreating accounts or repeating the same install without changes does not diagnose the failure.
Question 25
After installation, the app cannot read a consumer table that it references. What is the most likely cause?
- AThe Marketplace listing has a long description and screenshots
- BThe readme file is written in plain text and uses a short header
- CThe application has no version number assigned in the manifest file
- DThe consumer has not yet bound the referenced object to the application
Show answer and explanationHide answer
Correct answer: DAn unbound reference means the app has no access to the object, so reads fail until the consumer binds it. The version number, description, and readme format do not control table access.
Question 26
An app's setup fails because a privilege it requires was not granted. What is the correct resolution?
- AThe provider removes the privilege from the manifest without telling anyone
- BThe consumer deletes the app and installs an older version with the same problem
- CThe provider changes the app's display name to avoid the error message
- DThe consumer grants the requested privilege, and the installation or upgrade is run again
Show answer and explanationHide answer
Correct answer: DA missing privilege is resolved by the consumer granting what the app asked for, then retrying the step. Removing the requirement silently or renaming the app hides the cause, and reinstalling an older version does not fix it.
Question 27
Which two checks help confirm that a Native App is configured correctly after installation? (Choose two.)
- AConfirming that application roles granted to users match the intended access
- BCounting the number of lines in the readme file
- CLooking up the provider's office address in the listing
- DConfirming that each declared reference is bound to the intended consumer object
Show answer and explanationHide answer
Correct answer: A, DBound references and correctly granted application roles determine whether the app can access its data and whether users have the right access. Line counts and addresses do not verify configuration.
Question 28
A provider wants to make a tested application available to consumers through the Snowflake Marketplace. Which action is required?
- ACreate a listing that points to the application package and its released version
- BEmail the manifest file and setup script to each prospective consumer for direct installation
- CUpload the setup script to a public website and share the link publicly
- DRename the application to match the Marketplace category taxonomy and its search filter keywords
Show answer and explanationHide answer
Correct answer: AA Marketplace listing exposes the packaged application to consumers, with its released version. Email and public uploads bypass the platform's distribution and entitlement controls.
Question 29
Before listing a new version, a developer wants to verify installation and behavior safely. What is the recommended practice?
- ASkip testing because the app will be upgraded later anyway with a quick hotfix
- BTest by reading the source code and reviewing the manifest, deferring installation work
- CInstall the version in a separate test account and exercise the app there before releasing it
- DInstall the version directly in every live production consumer account first
Show answer and explanationHide answer
Correct answer: CA separate test account lets the developer confirm installation and behavior without affecting consumers. Testing in production accounts or skipping installation risks disrupting customers.
Question 30
After installation, a consumer's analyst cannot open the Streamlit app even though the app installed successfully. What is the most likely cause?
- AThe consumer has not granted the application role that the app requires to the analyst's role
- BThe app's Streamlit code is written in Python and it relies on the Streamlit runtime for its user interface pages
- CThe analyst's laptop has a different screen resolution and a monitor with a lower refresh rate setting
- DThe application package was created in a different month, long before the consumer's installation took place
Show answer and explanationHide answer
Correct answer: AUsers need the appropriate application role to access the app's interface and procedures, so a missing grant blocks them. The programming language, display, and creation date do not control access.