Certifications · KCA · Practice Questions

KCA Practice Questions

Twenty-five single-best-answer questions, built the way the real KCA builds them: one stem, four options, exactly one option that answers this stem better than the other three. They are split across all six domains from the KCA blueprint in rough proportion to their weight — eight on Writing Policies alone, since it is nearly a third of the real paper, down to two on Policy Management — so a strong or weak score in one section tells you something real about where your marks would actually land. This page is untimed and open-book on purpose: work through it slowly, read every explanation even for questions you got right, and only once these twenty-five stop surprising you should you move on to the two full, weighted, timed papers — Mock Exam · Set 1 and Mock Exam · Set 2.

☺ Explain it like I'm 10

Remember the robot at the door checking every backpack against the poster of rules? This page is flashcards for being the robot's supervisor. Each question describes one backpack and asks which rule applies, or what the robot should do next — and it gives you four possible answers. One is exactly right. One is right about a different poster rule. One uses a word like "always" or "never," which real rule-posters almost never use because real life has exceptions. And one is just made up — a rule that sounds official but was never actually on the poster. Getting fast at telling those four apart is most of what passing this exam actually means.

🐢🐰Your hosts for this topic: Timmy the Turtle & Remy the Rabbit — Timmy is this course's guardrail, the one who wrote most of the traps below out of real "why didn't this policy fire" incidents; Remy wants to answer every question in two seconds flat, which is exactly the instinct this bank exists to train and discipline.

How this bank is built

☺ Like you're 10: The biggest pile of questions covers the biggest part of the real test — almost a third of everything is one single domain.

The KCA curriculum weights its six domains 32 / 18 / 18 / 12 / 10 / 10, and this bank mirrors that shape rather than splitting twenty-five questions evenly into small equal piles. Writing Policies gets eight questions on its own — nearly a third of this bank, matching nearly a third of the real exam — because it carries eleven separate named competencies and is, by a wide margin, where the marks are. The two 18% domains, Fundamentals and Installation/Config/Upgrades, split the next largest share; the operational one gets slightly more questions here on purpose, because it is the domain people underestimate for being "boring," and underestimating it on exam day costs real marks.

🐢Writing Policies
32%
🦉Fundamentals of Kyverno
18%
🦫Installation, Configuration & Upgrades
18%
🐿️Kyverno CLI
12%
🤖Applying Policies
10%
🐘Policy Management
10%
DomainBlueprint weightQuestions hereNumbers
🐢 Writing Policies32%8Q1–Q8
🦉 Fundamentals of Kyverno18%4Q9–Q12
🦫 Installation, Configuration & Upgrades18%5Q13–Q17
🐿️ Kyverno CLI12%3Q18–Q20
🤖 Applying Policies10%3Q21–Q23
🐘 Policy Management10%2Q24–Q25
Total25Q1–Q25
THE STEM a policy scenario, then one precise question A · The key Names the exact rule, field, or subcommand asked B · Swapped True — about the rule or controller next door, not this one C · Absolute "always," "never," "only" — real Kyverno has more nuance D · Fabrication A field or CRD that sounds official but is not in Kyverno
◆ Key idea

Every question below asks for the single best answer, not the only true sentence in the list. On several of these, two options are individually defensible — that's deliberate. Read the exact question being asked before you look at the options, form your own answer from what you know of how Kyverno actually behaves, then compare it to what's on offer. If your answer isn't there, you've likely misread the question rather than found a flaw in it.

Writing Policies — 8 questions

☺ Like you're 10: Four kinds of rule — say no, quietly fix it, make a new thing, check the seal on the box — plus the small print around all four that the exam loves to test.

Thirty-two percent of the real exam is this one domain, and it carries eleven named competencies on its own — more than the next two domains combined. See the KCA blueprint for the full reference on validate, mutate, generate and verifyImages; these eight questions probe the edges of each, plus preconditions, background scans, autogen and cleanup policies.

Q1. A validate rule with a correct pattern block shows up as fail for dozens of resources in kubectl get polr -A -o wide, yet nothing is ever actually rejected at admission time. What is missing?

Show answer & explanation

Answer: A. B is a true statement about a different setting entirely: background: true controls whether existing resources get scanned, not whether admission is blocked for new ones — a rule can be enforced with background scanning off, or audited with it on. C is a fabrication dressed as exam trivia; wildcard patterns have nothing to do with enforce-versus-audit behavior. D invents a field that doesn't exist. failureAction: Enforce is the one switch that turns a report into a rejection — everything else here is a distractor built from a real, unrelated Kyverno concept.

Q2. A validate rule should only run when request.object.spec.replicas is greater than 1 — a condition on the incoming resource's own field value, not on its kind, namespace, name, or labels. Which construct expresses this?

Show answer & explanation

Answer: A. B names a real filtering mechanism, but a label selector only reads metadata.labels — it has no way to inspect a live spec field like a replica count. C is an absolute-language fabrication: Kyverno is built precisely so this kind of conditional logic doesn't need duplicated policies. D invents a field; there is no filter key at that location in the schema. preconditions is the named competency exactly because match and exclude only reason about resource identity — kind, namespace, name, labels, subjects, operations — while a live field comparison needs the conditional block.

Q3. A validate rule checks request.userInfo.username to restrict who may create Secrets in a namespace, and the team sets background: true so existing Secrets get audited too. What happens when the background controller scans a Secret that was created last month?

Show answer & explanation

Answer: B. A fabricates a replay mechanism that doesn't exist — the background controller does not carry the original requester's identity forward. C is false; the background controller re-scans on its own resync interval, not just once. D invents an automatic rewrite Kyverno never performs. The real, testable fact here is that request.userInfo, request.operation and similar admission-only fields simply aren't populated during a background scan — which is exactly why identity-dependent rules are a poor fit for background: true, independent of how the rest of the rule is written.

🐢 Timmy's-eye view

"Q3 is a mistake I've watched three different teams make. Someone writes a beautiful validate rule keyed on request.userInfo, turns on background scanning so it also covers the fleet that predates the policy, and then can't figure out why the background scan results look wrong or empty for that rule. The fix isn't a bug report — it's realizing the background controller was never handed that context to begin with. Admission-only fields stay admission-only."

Q4. A mutate rule must insert imagePullPolicy: IfNotPresent as an explicit, reviewable RFC 6902 operation rather than a merged object shape:

mutate:
  patchesJson6902: |-
    - op: add
      path: "/spec/containers/0/imagePullPolicy"
      value: IfNotPresent

Which mutate strategy is this, and why is it the right pick given the "explicit sequence of operations" requirement?

Show answer & explanation

Answer: A. B is wrong twice over: patchStrategicMerge is real and valid, but it expresses a partial object to merge using Kubernetes strategic-merge semantics, not an explicit op-by-op sequence — and it is not the "only" mechanism, which is the absolute-language tell. C fabricates a restriction; mutate can touch any field, including container specs, exactly as shown. D invents a field name that isn't part of the schema. The stem's own snippet already is the answer — recognizing patchesJson6902 on sight is most of this competency.

Q5. A generate rule creates a default NetworkPolicy in every new Namespace. The platform team wants the generated object kept in ongoing sync with its source: if someone hand-edits the generated NetworkPolicy, Kyverno should revert it, and if the source template later changes, existing copies should update too. Which setting delivers this?

Show answer & explanation

Answer: A. B is true for an unrelated reason — background: true lets a generate rule catch Namespaces that already existed before the policy was installed, but it says nothing about keeping an already-generated object in sync afterward. C is an absolute-language fabrication: generate genuinely supports both data (inline) and clone (copy a source object), so "only ever" is false on its face. D invents a field name. synchronize: true is the specific, named switch for exactly the ongoing-sync behavior the stem describes.

Q6. A verifyImages rule uses a keyless attestor (Sigstore Fulcio/Rekor via OIDC) and sets mutateDigest: true. A Pod references ghcr.io/acme/api:v2.3. After verification succeeds, what happens to the image reference before it is persisted?

Show answer & explanation

Answer: A. B is the tempting one, since a report entry is also written — but it misses the live mutation the stem specifically asks about, and misses the point of setting mutateDigest: true at all. C is false and reversed: keyless verification via Fulcio/Rekor is a first-class, explicitly supported attestor type. D invents disruptive behavior with no basis in how admission mutation works. This is the exam's favorite subtlety about verifyImages: a control whose job is verification runs in the mutating phase, because a successful check rewrites the reference it just checked.

Q7. A rule's match block lists only kind: Pod. The team deploys exclusively via Deployment, never bare Pods — yet violation messages still appear correctly against failed Deployments. What explains this, and how would the team scope it to skip one specific controller kind?

Show answer & explanation

Answer: A. B misattributes autogen's job to background, which has nothing to do with generating additional rule copies for other kinds. C is an absolute-language fabrication directly contradicted by the fact that a match block is required at all. D invents an admission-layer proxy mechanism with no basis in how Kubernetes or Kyverno webhooks work. Autogen exists specifically so a rule written once, against Pod, surfaces its message where a human developer actually looks — on the Deployment they tried to create.

Q8. A team wants matching resources deleted automatically on a recurring schedule — for example, purging completed Jobs older than 24 hours — without writing a validate, mutate, generate, or verifyImages rule. What is the correct construct, and how does it relate to the four rule types?

Show answer & explanation

Answer: A. B misattributes cleanup as one of the four in-rule actions, when it is architecturally separate — its own CRD and controller, not a fifth key inside a rule. C invents a mechanism; generate creates companion resources, it does not delete anything, and synchronize has no "negative" mode. D fabricates a field; Common Expression Language (CEL) is real, and is a genuine alternative to the JMESPath-style pattern block inside validate — the same language the API server itself uses natively for ValidatingAdmissionPolicy — but it does not delete resources on failure. Cleanup policies are the one item on this domain's competency list that isn't a rule type at all.

🐢 Timmy's workshop · 20 min

On a throwaway kind cluster, write a ClusterCleanupPolicy that deletes completed Jobs older than 24 hours on an hourly schedule, next to the require-team-label validate rule and the default-deny-per-namespace generate rule from the blueprint. Apply all three with Helm, then watch three completely different mechanisms at work in one cluster: an admission-time block, a background-eligible ongoing check, and a scheduled deletion that has nothing to do with admission at all. Writing all three side by side is the fastest way to stop mixing up which competency owns which behavior.

Fundamentals of Kyverno — 4 questions

☺ Like you're 10: The words everyone assumes they already know — but the exam checks the exact edge, like which kind of "policy" can and can't see a whole Namespace.

Eighteen percent, conceptual and cheap to secure if you read closely: ClusterPolicy versus Policy, how the admission webhook actually intercepts a request, and what a signature or attestation on an OCI image really proves.

Q9. A team wants one rule that blocks any Namespace lacking a cost-center label, cluster-wide. Which policy kind must they use, and why would a namespaced Policy fail here?

Show answer & explanation

Answer: A. B invents an evaluation-order rule with no basis, and still misses the actual scope limitation. C is an absolute-language fabrication directly contradicted by the scope difference the stem depends on. D invents a CRD that doesn't exist. Policy and ClusterPolicy genuinely share an identical rule schema — the only difference the exam cares about is scope, and cluster-scoped resources are exactly where that difference bites.

Q10. A cluster has exactly one Kyverno policy installed, matching only kind: Pod. What happens to a request to create a ConfigMap?

Show answer & explanation

Answer: A. B sounds cautious and plausible but is wrong about the mechanism — if a kind isn't covered by any installed policy, Kyverno's webhook isn't invoked for it at all, so there's no report entry generated from that request in the first place. C is an absolute-language fabrication contradicted by the dynamic-configuration behavior itself. D invents disruptive queuing with no basis. The "Admission Controllers" competency is precisely this: Kyverno keeps its own webhook scope in sync with what's actually installed, rather than intercepting everything by default.

Q11. A submitted ClusterPolicy rule contains only a validate block — no match block at all. What happens when this is applied?

Show answer & explanation

Answer: A. B invents a "match everything" default that doesn't exist in the schema. C is an absolute-language fabrication — a malformed policy surfaces as invalid rather than vanishing without a trace. D invents an inference feature Kyverno doesn't have. This is a YAML-manifest-shape question at its core: a rule is what plus to what, and one half missing makes the whole rule invalid, not universally scoped.

Q12. What does a valid attestation checked by verifyImages actually prove, as distinct from a bare signature?

Show answer & explanation

Answer: A. B is a real-sounding OCI detail that has nothing to do with what verifyImages actually checks. C is an absolute-language collapse of a distinction the stem itself draws — who signed it, versus what is claimed about it. D fabricates a registry restriction with no basis; verifyImages works against any OCI-compliant registry. The "OCI Images" competency is exactly this distinction: signature answers "who," attestation answers "what."

Installation, Configuration & Upgrades — 5 questions

☺ Like you're 10: The unglamorous domain — Helm values, which of four little robots does what, and reading the instructions before you upgrade anything.

Also 18%, but operational rather than conceptual: Helm as the named install method, the four deployments Kyverno typically runs as, RBAC for what the background controller is allowed to touch, the CRDs that back all of this, and upgrade discipline.

Q13. A cluster shows intermittent admission latency spikes during deploys, but background policy scans and PolicyReport generation are unaffected. Which Kyverno deployment should be scaled first, and why?

Show answer & explanation

Answer: A. B misattributes the background controller's real job (periodic scanning of existing resources) to the live admission path it doesn't sit in. C fabricates a coupling requirement with no basis in how the Helm chart's replica counts work. D asserts a false synchronous coupling; report generation is deliberately decoupled from the blocking admission path. Knowing which of the four deployments is "the one in the request path" turns a confusing latency incident into a fast, correct diagnosis.

Q14. What is the officially documented method for installing and configuring Kyverno, and what does that imply about looking up "Controller Configuration with Flags" for a specific version?

Show answer & explanation

Answer: A. B describes a real, simpler pattern some other projects use, but not the one the KCA curriculum names as canonical here, and it directly contradicts the idea of versioned, configurable flags. C reverses the actual relationship — Helm is the named method, not deprecated. D invents a subcommand; the standalone kyverno CLI is for local policy testing (apply/test/jp), not cluster installation. Because chart values genuinely drift between versions, "read the chart's own values for the version you're deploying" is the one durable habit this question is really testing.

Q15. A generate rule creates a NetworkPolicy in every new Namespace via the background controller, but nothing is ever created, and the policy's own status shows no error. What is the most likely root cause to check first?

Show answer & explanation

Answer: A. B is a plausible-sounding distractor, but the stem specifically flags "no error in the policy's own status" — a malformed precondition would typically surface a rule-logic symptom, whereas a missing RBAC grant is exactly the kind of quiet, out-of-band failure that leaves the policy status looking clean. C is an absolute-language fabrication contradicted by the curriculum naming RBAC as its own competency for precisely this reason. D invents a cluster-wide rate limit with no basis. A silent "nothing happened" from a generate rule is one of the most common real-world symptoms of a missing background-controller permission.

Q16. Which of the following is a genuine, distinct Kyverno CRD a platform engineer should expect to see in kubectl api-resources after a Helm install?

Show answer & explanation

Answer: A. B invents a CRD name; the real scoped-carve-out mechanism is PolicyException, not a global override object. C is an absolute-language fabrication — PolicyReport/ClusterPolicyReport, PolicyException and CleanupPolicy/ClusterCleanupPolicy are all genuine, separate CRDs, not ConfigMaps. D invents a required manual bootstrap step that contradicts how the Helm chart actually handles setup. Recognizing the real CRD family — policies, reports, exceptions, cleanup policies — on sight is squarely a Fundamentals-and-Installation crossover skill.

Q17. A team is two minor versions behind and wants to helm upgrade straight to the latest release in one step. What does the "Upgrading Kyverno" competency most directly warn them to check first?

Show answer & explanation

Answer: A. B attributes a compatibility guarantee to Helm as a tool that Kyverno's own release process doesn't make — this is exactly the false comfort the competency exists to correct. C is a fabrication; all controller deployments ship together from the same chart version. D invents an oddly specific procedure with no documented basis. The honest, testable habit is boring on purpose: read the release notes for your actual target version before you upgrade.

🦫 Benny's fifteen-minute drill

On a kind cluster, helm install an older Kyverno chart version on purpose, apply the require-team-label policy from the blueprint, then run helm upgrade to the latest chart without reading anything first. Watch what actually happens to your policy and its CRDs. Then tear it down, reinstall clean, and this time read the release notes before upgrading. The difference between those two runs is the entire "Upgrading Kyverno" competency, felt once instead of memorized.

Kyverno CLI — 3 questions

☺ Like you're 10: Three little helper commands you can run on your own laptop, no cluster required, before anything you write ever touches a real one.

Twelve percent, and the best value on the paper — the curriculum names exactly three subcommands (apply, test, jp) plus installing the CLI itself. An afternoon of hands-on practice locks this domain in.

Q18. A platform engineer wants to know exactly what a new ClusterPolicy would do to a directory of manifests, offline, before merging anything:

kyverno apply ./policies/ --resource ./manifests/ --policy-report

What does this specific command do, and how does it differ from adding --cluster?

Show answer & explanation

Answer: A. B describes what --cluster would add, not the plain command shown — the whole point of the base command is that it never touches a live context. C is an absolute-language fabrication that defeats the entire purpose of a standalone CLI existing. D conflates two different subcommands: test specifically checks a policy's result against an expected outcome declared in a test file, while apply just reports what a policy would actually do to given resources, with no pre-declared expectation involved.

Q19. A repository keeps a kyverno-test.yaml beside each policy directory, several levels deep, each asserting expected pass/fail results per rule. What does kyverno test ., run from the repo root, actually do?

Show answer & explanation

Answer: A. B describes apply --cluster behavior, not test, which is explicitly cluster-independent. C is an absolute-language fabrication contradicted by the stem itself, which describes test files "several levels deep" being discovered correctly. D invents a generation feature; test runs existing declared expectations, it does not author them for you. Recognizing that test is about asserted expectations — not ad hoc "what would this do" exploration, which is apply's job — is the core distinction this competency checks.

Q20. A rule author is about to paste a JMESPath-style expression into a preconditions block and wants to confirm it returns what they expect first. Which subcommand is built exactly for this?

Show answer & explanation

Answer: A. B misattributes an expression-debugging job to test, which checks a policy's result against an expectation, not the validity of a standalone expression. C is an absolute-language fabrication that defeats the reason a local debugging subcommand exists at all. D invents a subcommand; the curriculum names exactly three — apply, test, jp — and "lint" is not one of them.

Applying Policies — 3 questions

☺ Like you're 10: Not writing the rule — pointing it at the right things, in the right way, once it's already written.

Ten percent: how match/exclude actually select resources, and the common settings — like background and the two forms of enforcement — that apply once a rule is already live in a cluster.

Q21. A policy must apply to Pods in any of three specific namespaces, and separately, only when the requesting user is not in the platform-admins group. Which statement correctly describes how to combine these two conditions?

Show answer & explanation

Answer: A. B is an absolute-language fabrication — exclude, like match, genuinely supports both any and all for the same OR/AND semantics. C is also absolute and false; a match.any[] list naturally covers multiple namespaces in one rule. D invents a CRD that doesn't exist. This is exactly why "Resource Selection" and "Preconditions" are named as separate competencies: identity-shaped filtering lives in match/exclude, and everything else — like a requester's group membership — belongs in preconditions.

Q22. One rule in a policy file uses the newer, per-rule validate.failureAction: Enforce; another rule in the same file uses the older, policy-level spec.validationFailureAction: enforce. What should a platform engineer preparing for KCA understand about these two forms?

Show answer & explanation

Answer: A. B reverses the actual direction — the rule-level form is the current one, not the deprecated one. C is an absolute-language fabrication inventing a cross-policy incompatibility with no basis. D invents a case-sensitivity distinction; both spellings mean the same enforcement mode across the two field forms. "Common Policy Settings" is exactly this kind of small-print competency — knowing that older syntax still shows up in real repositories and reads correctly.

Q23. A require-team-label ClusterPolicy with background: true is installed into a cluster that already has 400 running Deployments, most missing the team label. What happens to those 400 versus a new Deployment created the next day?

Show answer & explanation

Answer: A. B is precisely the misunderstanding background: true exists to correct — it's the reverse of the actual behavior. C is false; a validate rule blocks or reports, it does not delete non-compliant resources on its own. D conflates validate with mutate — nothing in the stem describes a mutate rule, and validate rules never rewrite resources. "Applying Policy in Cluster" is exactly this distinction between what happens to resources that predate a policy versus resources created after it.

Policy Management — 2 questions

☺ Like you're 10: The report card after the rules run — and the paperwork-approved way to make one exception without weakening the rule for everybody.

The smallest domain, at 10%, but it's how a fleet is actually governed day to day: PolicyReports for measurement, PolicyExceptions for reviewable carve-outs, and Kyverno's own Prometheus metrics for dashboards. See the blueprint for the full three-line CLI summary of this domain.

Q24. A platform engineer runs kubectl get polr -A -o wide and sees a mix of pass, fail, warn, skip, and error results. What does a skip result specifically indicate, as distinct from pass?

Show answer & explanation

Answer: A. B misattributes the audit/enforce distinction — which affects what happens when a rule fails — to a result that means the rule never ran at all. C is an absolute-language fabrication directly contradicted by the coverage-gap consequence the stem describes. D invents a restriction; skip is a general PolicyReport result category, not tied to one rule type. A fleet full of skip results can look reassuring at a glance while actually meaning "this rule never even looked" — exactly the trap this question is built to catch.

Q25. A single payment-processing workload legitimately needs to run as root, but the disallow-privileged policy should stay strict for every other workload in the cluster. What is the reviewable, KCA-tested way to grant this one workload a carve-out?

Show answer & explanation

Answer: A. B names a real mechanism (exclude) but the wrong tool for this job — it permanently weakens the shared policy object itself, with no separate, reviewable trail, rather than creating a scoped, revocable exception record. C is an absolute-language fabrication; PolicyException exists specifically to avoid this outcome. D invents a field name; the real mechanism is the separate PolicyException CRD, not an inline rule field. This is the same "reviewable carve-out beats a permanent edit" principle that shows up across every policy-as-code system, made concrete as one named Kyverno CRD.

Scoring yourself, and what to do with a miss

☺ Like you're 10: Getting it wrong isn't the problem — not knowing why you got it wrong is. Every miss fits one of four boxes, and each box has its own fix.

Count your correct answers and divide by 25 for a rough percentage — this bank is too small to be a statistically precise rehearsal of the real paper, but it's plenty large enough to tell you whether a domain needs more reading before you attempt Mock Exam · Set 1.

⚠ 75% is the real bar — verify it officially

The Linux Foundation's Multiple Choice Exam FAQ states that a score of 75% or higher is required to pass any Linux Foundation multiple-choice exam, KCA included, even though that figure isn't restated on the KCA product page itself — see the KCA blueprint for the full logistics table. This site is an independent, unofficial study resource, not affiliated with the CNCF or The Linux Foundation. Treat 75% here as a useful training target, but confirm the current pass mark, question count, and every other exam-day detail on the official Linux Foundation KCA page before you register or pay for anything.

When you miss one, resist the urge to just note the correct letter and move on — that teaches you almost nothing. File it instead:

BucketSignatureThe fix
Didn't know itThe explanation names a field, CRD, or behavior that's genuinely new to youContent gap — reread the matching section of the blueprint, then add it to flashcards
Knew it, misread itYou wince reading the explanation because you actually knew thisProcess gap — note which word you skipped (a negative, a qualifier), and underline lead-ins from now on
Confused two neighborsYou picked the mechanism next door — background for synchronize, exclude for PolicyExceptionWrite a one-line discriminator for the pair and keep it somewhere you'll see it again
Guessed and got lucky, or unluckyYou can't explain why the other three options are wrong even though you picked correctlyTreat it exactly like a miss — a right answer you can't defend is a gap wearing a disguise

Whichever domain produced the most misses, weigh that against its blueprint weight before deciding where to spend the next study session — a rough score in the 32%-weighted Writing Policies domain costs far more than the same rough score in the 10%-weighted Policy Management domain. The KCA study plan lays out exactly how to sequence reading, this bank, and the two mock exams across the days you have. If Kubernetes fundamentals themselves — CRDs, webhooks, RBAC — feel shaky underneath any of this, that's this course's own scope stopping short on purpose: see CKA in the sibling Kubernetes course first.

🎬 At Mission Control
🐰

Remy: Twenty-five questions, ten minutes, twenty-two right. New record.

🐢

Timmy: Which three did you miss?

🐰

Remy: Q3, Q15, and Q23. Doesn't matter, eighty-eight percent is a great score!

🐢

Timmy: Q3 and Q23 are both Writing Policies and Applying Policies — the two heaviest chunks of the whole paper. That's not a rounding error, that's a real gap sitting in the most expensive part of the exam.

🐿️

Nutty: And Q15 was RBAC — the "no error, nothing happens" failure mode. That one's worth memorizing on its own; it's the single most common real-world Kyverno bug report.

👺

Gizmo: Eighty-eight's basically ninety, honestly. Go book the mock exam already, you've clearly got this. 😈

🐢

Timmy: Not until Remy can explain, out loud, why the background controller in Q3 couldn't see request.userInfo — not just which letter he picked.

🐰

Remy: …Fine. Give me the explanation panel back.

🐢 Timmy's checkpoint

1. Why does this bank have eight Writing Policies questions but only two on Policy Management? 2. In Q3, why does background: true not rescue a rule that checks request.userInfo, and what admission-only context is missing from a background scan? 3. What's the difference between what Q1 (failureAction) and Q22 (the two forms of that same setting) are each testing? 4. Name the three distractor families the schematic on this page shows, besides the key itself. 5. What score should you treat as your training target, and where does that figure actually come from? 6. Give one example of a "confused two neighbors" miss from this bank, and its one-line discriminator. 7. What should you do with a question you got right but can't explain?

Check your answers
  1. Because the bank mirrors the KCA's own domain weights (32/18/18/12/10/10) rather than splitting evenly — Writing Policies is the single heaviest domain at 32%, nearly a third of the real paper, so it earns proportionally more practice.
  2. A background scan is not a live admission request, so admission-only context fields — request.userInfo, request.operation, and similar — are simply not populated during it. A rule that depends on who made the request cannot evaluate that condition correctly outside admission time, no matter how background is configured.
  3. Q1 tests whether you know that some form of failureAction: Enforce is required at all for a rule to actually block. Q22 tests whether you can correctly read both the current, rule-level form and the older, policy-level form when they appear side by side in a real, mixed-vintage repository.
  4. Swapped mechanism (true, but about the wrong rule type or controller), absolute language ("always," "never," "only"), and confident fabrication (an invented field, CRD, or subcommand that sounds official).
  5. 75%. It comes from the Linux Foundation's own Multiple Choice Exam FAQ, which applies to every LF multiple-choice exam including KCA — confirm it's still current on the official KCA page before you rely on it.
  6. Any pair from the bank works, for example: background: true vs. synchronize: truebackground is about whether existing resources get scanned at all; synchronize is about whether an already-generated resource stays tied to its source afterward. Different questions entirely.
  7. Treat it exactly like a miss. Write out, in your own words, why each of the other three options is wrong — a right answer you can't defend is a gap you got lucky on, and it will not stay lucky under exam conditions.