CCAR-F Certification Exam Guide + Practice Questions Updated 2026

Home / Anthropic / CCAR-F

Comprehensive CCAR-F certification exam guide covering exam overview, skills measured, preparation tips, and practice questions with detailed explanations.

CCAR-F Exam Guide

This CCAR-F exam focuses on practical knowledge and exam application scenarios related to the subject area. It evaluates your ability to understand core concepts, apply best practices, and make informed decisions in realistic situations rather than relying solely on memorization.

This page provides a structured exam guide, including exam focus areas, skills measured, preparation recommendations, and practice questions with explanations to support effective learning.

 

Exam Overview

The CCAR-F exam typically emphasizes how concepts are used in professional environments, testing both theoretical understanding and practical problem-solving skills.

 

Skills Measured

  • Understanding of core concepts and terminology
  • Ability to apply knowledge to practical scenarios
  • Analysis and evaluation of solution options
  • Identification of best practices and common use cases

 

Preparation Tips

Successful candidates combine conceptual understanding with hands-on practice. Reviewing measured skills and working through scenario-based questions is strongly recommended.

 

Practice Questions for CCAR-F Exam

The following practice questions are designed to reinforce key CCAR-F exam concepts and reflect common scenario-based decision points tested in the certification.

Question#1

You are building developer productivity tools using the Claude Agent SDK. The agent helps engineers explore unfamiliar codebases, understand legacy systems, generate boilerplate code, and automate repetitive tasks. It uses the built-in tools (Read, Write, Bash, Grep, Glob) and integrates with Model Context Protocol (MCP) servers.
An engineer asks the agent to find all callers of a function before removing it. The function is defined in a core library but is also exposed through wrapper modules that rename the function for domain-specific use (e. g., calculateTax in the library becomes computeOrderTax in the orders module).
What exploration strategy will most reliably identify all callers?

A. Use Grep to find all files that import from the library or wrapper modules, then read each file to check whether it uses the function.
B. Use Grep to search for the function’s original name across the codebase.
C. Read the library and wrapper modules to identify all exposed names for the function, then Grep for each name across the codebase.
D. Search for the function name in project documentation to understand intended usage patterns and navigate to documented integration points.

Explanation:
The search must first establish the function’s complete naming surface. Reading the core definition and every wrapper or re-export reveals aliases such as computeOrderTax, names introduced through intermediate modules, and potentially different import paths. Once those names are known, the agent can search the entire codebase for each exposed identifier and inspect the resulting call sites.
Claude Code’s Grep tool searches patterns inside file contents, whereas Read provides the surrounding implementation needed to determine whether a wrapper delegates to, renames, or conditionally invokes the original function. These tools are complementary: Read establishes semantic identity; Grep provides broad reference discovery. (https://code.claude.com/docs/en/tools-reference?utm_source=chatgpt.com )
Option B misses every caller using a wrapper alias.
Option A may find importing files, but import-level discovery is indirect and can miss re-exports, namespace imports, dependency injection, or calls made through a locally renamed symbol. It also requires unnecessary manual inspection of every consumer of the module.
Option D relies on documentation, which may be incomplete or stale and cannot prove that all executable references have been found.
Before removal, the agent should also inspect tests, dynamic registrations, configuration-driven references, and generated code where relevant. The defining requirement is to map the alias chain first and then search all discovered public names.
Official references/topics: Read and Grep Tool Behavior; Symbol and Alias Discovery; Codebase Reference Tracing.

Question#2

A developer uses Claude Code to refactor a function during a development session. Before committing, the developer asks the same Claude session to review the code for issues. Later, a separate automated CI review catches several bugs that the same-session review missed.
What best explains this discrepancy?

A. Claude retains context about its prior reasoning in the session, making it less likely to question its own decisions.
B. The CI review uses a more specific prompt tailored to catching bugs, while the developer’s request was too general.
C. The CI environment has access to the complete codebase, while the local session can see only the current file.
D. The extended session caused the context window to fill with conversation history, leaving insufficient capacity for thorough analysis.

Explanation:
The key difference is reviewer independence. In the original session, Claude retains the reasoning, assumptions, implementation decisions, and intermediate conclusions that led to the refactor. That context can anchor the subsequent review toward defending or confirming the chosen approach instead of evaluating the resulting code independently. The separate CI review begins with fresh context and can assess the implementation solely against the code and review criteria.
Anthropic’s Claude Code best-practices documentation explicitly states that fresh context improves code review because Claude is not biased toward code it has just written. It recommends a writer/reviewer pattern using separate sessions or a review subagent with an isolated context.
Option B is possible in an uncontrolled comparison, but the scenario’s defining distinction is that one review occurs in the implementation session and the other is independent.
Option C is false because local Claude Code can read and search the repository when permissions and tools permit it; it is not inherently restricted to the current file.
Option D would require evidence of context saturation, such as degraded instruction following or an almost-full context window. No such evidence is supplied. Prior-reasoning bias most directly explains the observed discrepancy.

Question#3

You are building developer-productivity tools using the Claude Agent SDK. The agent helps engineers explore unfamiliar codebases, understand legacy systems, generate boilerplate code, and automate repetitive tasks. It uses the built-in tools―Read, Write, Bash, Grep, and Glob―and integrates with Model Context Protocol (MCP) servers.
After adding an MCP server with specialized code-refactoring tools―extract_function, rename_variable, and inline_function―you notice that the agent still uses basic text manipulation through Write and Bash sed commands for refactoring tasks. The MCP server is connected and healthy. Examining the configuration, you find that each MCP tool has a minimal description such as, “extract_function: Extracts a function from code.”
What is the most effective way to improve adoption of the MCP refactoring tools?

A. Implement a request classifier that detects refactoring intent and automatically routes those requests to the MCP server before the agent processes them.
B. Accept this as expected behavior because simpler tools such as sed are more predictable than specialized refactoring tools.
C. Enhance the MCP tool descriptions to explain when each tool is preferable to text manipulation and clarify expected inputs and outputs.
D. Remove the Write tool from the agent’s configuration for refactoring sessions so it must use the MCP tools for code modifications.

Explanation:
Option C corrects the weak selection signal presented to the model. Claude chooses among available tools using their names, descriptions, parameter schemas, and the current request. “Extracts a function from code” does not explain whether the tool understands syntax trees, preserves imports, updates call sites, validates scope, or offers advantages over Write and sed. Anthropic identifies prompt-engineering tool descriptions as one of the most effective ways to improve agent tool use. Descriptions should state what the operation performs, when it should be selected, what inputs are required, what output it returns, and any limitations.
Option A adds a separate probabilistic routing layer without improving the tool contract Claude ultimately sees.
Option B ignores the server’s intended value.
Option D removes a broadly useful capability and may prevent unrelated edits without guaranteeing that the MCP tools are used correctly. Each refactoring tool should instead describe its semantic behavior and contrast it with plain text manipulation―for example, that rename_variable performs scope-aware symbol renaming and updates references. Clear schemas, concrete examples, and evaluation against real refactoring tasks should accompany the improved descriptions.

Question#4

You are using Claude Code to accelerate software development. Your team uses it for code generation, refactoring, debugging, and documentation. You need to integrate it into your development workflow with custom slash commands, CLAUDE.md configurations, and understand when to use plan mode vs direct execution.
Your team has three requirements for Claude Code’s behavior in your project:
● Claude must never modify files in the db/migrations / directory.
● Claude should prefer your custom logging module over console.log.
● All TypeScript files must be auto-formatted with Prettier after every edit.
All three are currently written as instructions in your project’s CLAUDE.md. During a complex refactoring session, a developer discovers that Claude edited a migration file, violating requirement #1.
How should you restructure these requirements across Claude Code’s configuration mechanisms?

A. Move all three requirements into .claude/rules / as path-scoped rules: one targeting db/migrations/** that forbids editing those files, and others targeting **/*.ts for the logging convention and formatting instruction.
B. Configure hooks for all three: a PreToolUse hook script that blocks Edit calls targeting db/migrations/, a PreToolUse hook script that adds logging convention context before edits, and a PostToolUse hook that runs Prettier after TypeScript edits.
C. Rewrite all three requirements in CLAUD
D. md using stronger directive language and add few-shot examples that demonstrate Claude refusing to edit migration files and running Prettier after edits.
E. Add Edit(./db/migrations/**) to permissions.deny in the project settings, keep the logging preference in CLAUD
F. md, and add a PostToolUse hook to run Prettier after TypeScript edits.

Explanation:
Each requirement belongs in the mechanism matching its enforcement semantics. The migration restriction is a hard safety boundary, so it should be implemented through permissions.deny, not merely expressed as contextual guidance. Anthropic explicitly states that CLAUDE.md content is treated as context rather than enforced configuration. Permission rules use the Tool(specifier) form, evaluate deny rules before ask or allow rules, and support path-based Edit(...) restrictions. (https://code.claude.com/docs/en/memory )
The custom logging convention is a persistent project preference, making CLAUDE.md the appropriate location. It should guide Claude’s code-generation decisions but does not require deterministic interception. Prettier formatting, by contrast, is deterministic automation. Anthropic documents the exact pattern of using a PostToolUse hook with an Edit|Write matcher to run Prettier automatically after file modifications. (https://code.claude.com/docs/en/hooks-guide )
Option A incorrectly treats path-scoped rules as a security control; rules remain instructions.
Option B overuses hooks for a semantic coding preference that belongs in CLAUDE.md.
Option C relies entirely on stronger prompting, which cannot guarantee that protected files remain untouched.
Option D correctly separates prohibition, preference, and automatic enforcement.
Official references/topics: Permission rules, CLAUDE.md semantics, PostToolUse formatting hooks.

Question#5

You are building developer-productivity tools using the Claude Agent SDK. The agent helps engineers explore unfamiliar codebases, understand legacy systems, generate boilerplate code, and automate repetitive tasks. It uses the built-in tools―Read, Write, Bash, Grep, and Glob―and integrates with Model Context Protocol (MCP) servers.
Engineers frequently ask the agent to cross-reference code changes with Jira tickets during reviews― checking ticket descriptions, acceptance criteria, and recent comments. This currently requires manually copying and pasting content into conversations. The team wants the agent to access this standard Jira ticket data directly.
What is the most effective approach?

A. Use the Bash tool with curl to call Jira’s REST API, including authentication headers and parsing JSON responses inline.
B. Build a custom MCP server wrapping Jira’s API with tools designed specifically for this team’s code-review workflow.
C. Export Jira tickets to Markdown files in the repository that the agent accesses using the Read tool.
D. Integrate an existing Jira MCP server that exposes tickets, comments, and metadata through discoverable tool interfaces.

Explanation:
Option D uses the established integration mechanism without creating unnecessary infrastructure. Anthropic’s Claude Code MCP documentation specifically recommends connecting an MCP server when users repeatedly copy information from an external system, such as an issue tracker, into conversations. Once connected, the server exposes Jira operations through named, schema-defined tools that Claude can discover and invoke directly. This allows the agent to retrieve ticket descriptions, acceptance criteria, comments, and metadata while preserving the server’s authentication and access controls.
Option A exposes authentication details to shell commands and requires the agent to construct requests and parse responses repeatedly.
Option B is justified only when no existing server provides the required capabilities or the workflow requires highly specialized operations. The question requires standard Jira information, so building and maintaining another server is unnecessary.
Option C creates stale, manually synchronized copies that lose permissions, current comments, and authoritative ticket state. The team should therefore select a trusted Jira MCP implementation, configure appropriate read-only scopes where possible, and verify its tool descriptions and data-access boundaries before enabling it.

Disclaimer

This page is for educational and exam preparation reference only. It is not affiliated with Anthropic, Claude Certified Architect, or the official exam provider. Candidates should refer to official documentation and training for authoritative information.

Exam Code: CCAR-FQ & A:  320  Q&As Updated:  2026-11-12

  Access Additional CCAR-F Practice Resources