10 Free CCAR-F (CCA-F) Sample Questions
Two questions from each of the five Claude Certified Architect Foundations exam domains, with the correct answer and a written explanation. No signup, no paywall — this is what every question in the full bank looks like.
Q1 · Agentic Architecture & Orchestration · 27%
In an agentic loop using the Claude Agent SDK, when should the loop continue processing?
- A.When the assistant response contains text content
- B.When stop_reason is 'tool_use'✓ Correct
- C.When stop_reason is 'end_turn'
- D.After a fixed number of 10 iterations
Why B is correct: The agentic loop should continue when stop_reason is 'tool_use', meaning Claude is requesting a tool to be called. The loop terminates when stop_reason is 'end_turn', indicating Claude has finished its reasoning. Checking for text content or using fixed iteration caps are anti-patterns that can cause premature termination or infinite loops.Q2 · Agentic Architecture & Orchestration · 27%
You are building the agentic loop for a support assistant that answers order questions with `find_order` and `check_shipping`. The current loop ends whenever the assistant's reply text contains the phrase "all set", and tool outputs are pasted back into the conversation as plain narrative text. Transcripts show premature endings and misread tool data. Which two changes should you make? Select TWO.
Select TWO answers
- A.Continue the loop when the API returns a `stop_reason` of `tool_use` and end it only on `end_turn`.✓ Correct
- B.Cap the loop at a fixed ten iterations and treat hitting that ceiling as the normal, expected completion signal.
- C.Append each tool's output to the conversation as a `tool_result` block paired with the call that produced it.✓ Correct
- D.Tighten the phrase-based completion check so "all set" only terminates the loop when it appears in the final sentence.
- E.Inject each tool's output back into the conversation as a JSON-formatted user message so the model reads structured data.
Why A and C are correct: The API states completion explicitly: a `stop_reason` of `tool_use` means the model is waiting on tool execution, while `end_turn` means it has finished, so the loop should key off those values. Returning outputs as structured `tool_result` blocks paired with each call keeps the history well-formed and lets the model read the data reliably instead of reparsing narrative text.Q3 · Claude Code Configuration & Workflows · 20%
A team wants Claude Code to always run tests before committing and to never modify files in the /config directory. Where should these rules be placed?
- A.In the Claude Code settings.json under 'rules'
- B.In a .claude/rules/global.md file that applies to all projects
- C.In a .clauderc file in the user's home directory
- D.In the CLAUDE.md file at the project root✓ Correct
Why D is correct: Project-specific rules and constraints belong in CLAUDE.md at the project root. This file is automatically read by Claude Code when working in that project and can contain both behavioral rules (run tests before committing) and path-specific restrictions (never modify /config). CLAUDE.md files can also be placed in subdirectories for path-specific overrides. settings.json handles configuration like MCP servers and permissions, not behavioral rules.Q4 · Prompt Engineering & Structured Output · 20%
When using tool_use to extract structured data from documents, which JSON schema design best prevents Claude from hallucinating values for fields that may not be present in the source?
- A.Add a 'confidence' field next to each extracted value
- B.Use anyOf schemas with multiple type options for every field
- C.Make all fields required with strict types
- D.Use nullable fields (type: ['string', 'null']) for optional data and set required only for fields that must always be present✓ Correct
Why D is correct: Nullable fields (type: ['string', 'null']) allow Claude to return null when a value is not present in the document, rather than fabricating a plausible-sounding value. This is the primary technique for preventing hallucination in structured extraction. Making all fields required forces Claude to fill them even when data is absent. The anyOf and confidence approaches add complexity without addressing the core issue of optional data.Q5 · Claude Code Configuration & Workflows · 20%
A frontend repo's checked-in `CLAUDE.md` mixes team-wide conventions (component naming, the test runner to use) with one engineer's personal preferences ("respond tersely", "show diffs vim-style"). Teammates complain that their sessions now pick up the personal preferences. Which two changes should you make? Select TWO.
Select TWO answers
- A.Move the entire file into that engineer's `~/.claude/CLAUDE.md` so the repository stays clean.
- B.Relocate the personal preferences into the engineer's own user-level `~/.claude/CLAUDE.md`.✓ Correct
- C.Convert the personal preferences into a project slash command that teammates simply avoid running.
- D.Keep the team-wide conventions in the project `CLAUDE.md` so every teammate's sessions load them.✓ Correct
- E.Duplicate the team conventions into a `CLAUDE.md` in each subdirectory so they take precedence.
Why B and D are correct: The memory hierarchy separates audiences: user-level `~/.claude/CLAUDE.md` follows one person across their projects, which is exactly where individual style preferences belong, while the version-controlled project `CLAUDE.md` is the shared home for conventions every teammate should inherit. Splitting the content along that line gives each instruction the scope it was written for.Q6 · Prompt Engineering & Structured Output · 20%
Your CI review bot posts findings under the instruction "be conservative and only report issues that really matter." Developers now dismiss nearly everything it posts, largely because its dependency-vulnerability category is wrong about 60% of the time. Which two changes should you make? Select TWO.
Select TWO answers
- A.Add a sentence to the instruction telling the bot to report only the findings it is at least 90% confident about internally.
- B.Replace the vague instruction with explicit criteria defining which specific conditions to report and which to skip.✓ Correct
- C.Lower the sampling temperature on the review requests so the bot's flagging decisions become more repeatable across runs.
- D.Have the bot state each finding twice in different words and post only findings that survive both phrasings.
- E.Temporarily disable the dependency-vulnerability category while its criteria are rewritten.✓ Correct
Why B and E are correct: Vague guidance like "really matter" leaves the reporting bar to the model's subjective judgment, so replacing it with explicit report-versus-skip criteria gives every flag a checkable definition. Meanwhile, one category producing 60% false positives erodes trust in every category, so taking it offline until its criteria are reworked lets the trustworthy categories regain credibility.Q7 · Tool Design & MCP Integration · 18%
When writing a description for an MCP tool called 'lookup_order', which description is most effective at helping Claude select it correctly?
- A.Use this tool to look up orders. Takes an order_id parameter.
- B.Retrieves order information.
- C.Gets data from the orders table in the database.
- D.Retrieves order details including status, items, and shipping information for a specific order ID. Use when the customer references a specific order number or asks about an existing purchase.✓ Correct
Why D is correct: An effective tool description tells Claude exactly what the tool does, what it returns, and when to use it relative to other tools. The strong version specifies the return content (order details including status, items, and shipping information), the required input (a specific order ID), and the trigger condition (the customer references a specific order number or asks about an existing purchase). That combination lets Claude reliably distinguish this lookup from any similar tool in the toolset. Saying only 'use this tool to look up orders, takes an order_id parameter' restates the function name without telling Claude when to choose it or what it returns. A bare 'retrieves order information' is similarly vague and gives no selection signal. Describing the tool as 'gets data from the orders table in the database' leaks an implementation detail (table-level access) without explaining the user-facing situation in which Claude should pick this tool, and may even encourage misuse for non-order data that lives in the same store.Q8 · Tool Design & MCP Integration · 18%
A support agent's `issue_refund` MCP tool is described in one line: "Handles refunds." Transcripts show the agent omitting the required `order_id` in a third of calls, and also invoking the tool when customers ask for exchanges, which it does not support. Which two changes to the tool definition should you make? Select TWO.
Select TWO answers
- A.Add a system-prompt instruction reminding the agent to include an order ID with every refund call.
- B.Document each parameter in the description and mark `order_id` as required.✓ Correct
- C.Have the server default a missing `order_id` to the customer's most recent order so incomplete calls succeed.
- D.Split the tool into separate `request_refund` and `approve_refund` tools so every refund takes two calls.
- E.State in the description when the tool applies — refunds only — and that exchanges are out of scope.✓ Correct
Why B and E are correct: Both defects trace to an under-specified interface, so both fixes belong in the tool definition itself. Documenting the parameters and marking `order_id` required tells the model what inputs every call needs, while stating the tool's applicability conditions stops it from being selected for exchanges it cannot handle. Descriptions are the primary mechanism the model uses to decide when and how to call a tool.Q9 · Context Management & Reliability · 15%
A customer support agent has been running for 50 turns and is approaching the context window limit. Which strategy best preserves the ability to continue the conversation?
- A.Increase the max_tokens parameter to extend the context window
- B.Extract key facts from the conversation into a structured summary and use it as the context for the next turn✓ Correct
- C.Summarize only the most recent 5 turns and discard the rest
- D.Start a new conversation from scratch and ask the customer to repeat their issue
Why B is correct: Extracting structured facts from the conversation history (e.g., customer name, issue type, steps already taken, decisions made) into a compact summary preserves the essential context while dramatically reducing token usage. This scratchpad pattern allows the agent to continue working without losing important state. Starting over loses context and frustrates customers. max_tokens controls output length, not context window size. Summarizing only recent turns risks losing critical early context like the original issue description.Q10 · Context Management & Reliability · 15%
A support agent compresses its conversation history into a rolling summary every 10 turns. An audit of escalated billing cases shows handoff notes saying things like "customer disputes a recent charge of around $180" when the customer actually stated $183.42 and was promised a callback by March 12. Which two changes prevent these details from being lost? Select TWO.
Select TWO answers
- A.Add an instruction to the summarization prompt telling the model to be extra careful when carrying over numbers and dates.
- B.Extract exact amounts, dates, and identifiers into a structured case-facts block maintained outside the summarized history.✓ Correct
- C.Disable the rolling summarization entirely and retain the full transcript in context so that nothing is ever paraphrased away.
- D.Build escalation handoffs from the structured case record rather than from the rolling prose summary.✓ Correct
Why B and D are correct: Exact figures survive when they are captured verbatim in a structured case-facts block that summarization never touches, and escalations stay accurate when the handoff is assembled from that structured record instead of the paraphrased narrative. The first change protects the values during the conversation; the second ensures the protected values are what actually reach the human agent.
Want the other 1,000+ questions?
$24.99 lifetime access. Adaptive difficulty, full timed exam simulation, written explanations on every question. One-time payment.
Get Lifetime Access — $24.99Or try 15 free questions first.