Đến nội dung chính
Thi cử

Cheat sheet Claude Certified Architect — Foundations (CCAR-F)

Tóm tắt ôn thi chứng chỉ Claude CCAR-F: thông tin kỳ thi, trọng số domain, nguyên tắc chọn đáp án và kiến thức trọng tâm cả 5 domain trên một trang.

Đội ngũ CertGrove · 11 phút đọc

Đây là bản tóm tắt ôn thi một trang cho chứng chỉ Claude Certified Architect – Foundations (CCAR-F). Mỗi dòng ghép một dấu hiệu bạn sẽ gặp trong đề với hướng đáp án thường đúng, rút ra từ exam guide v1.0. Đọc trọn trong 10–15 ngày cuối, còn 15 phút trước giờ thi thì chỉ lướt các bảng và phần nguyên tắc ra quyết định.

⚠ đánh dấu đáp án theo exam guide v1.0 trong khi docs Claude hiện hành có thể đã khác. Khi thi, cứ theo guide.

Thông tin kỳ thi tóm gọn

MụcChi tiết
Mã thiCCAR-F
Số câu60, gồm multiple-choice và multiple-response; mỗi câu ghi rõ cần chọn mấy đáp án
Thời gian120 phút, tức khoảng 2 phút/câu
Cấu trúc4 scenario chọn ngẫu nhiên từ 6, mỗi scenario khoảng 15 câu và 30 phút
Điểm đậuScaled 720 trên thang 100–1.000; chấm theo chuẩn cố định, không so với thí sinh khác
Báo cáo điểmĐậu/trượt + điểm scaled; % theo domain chỉ để tham khảo
Lệ phí125 USD mỗi lần thi
Hình thứcPearson VUE giám sát, thi online hoặc tại test center
Đổi lịchChậm nhất 24 giờ trước giờ thi; muộn hơn thì mất lệ phí
Thi lạiChờ 14 / 30 / 90 ngày sau lần trượt thứ 1 / 2 / 3; tối đa 4 lần trong 12 tháng cuốn chiếu
Hiệu lực12 tháng; gia hạn đúng hạn bằng một bài đánh giá miễn phí, không giám sát

Đọc yêu cầu trước khi đọc phương án: đề cần mấy đáp án ("Choose TWO") và có hỏi phủ định không ("Which will NOT…").

Trọng số domain và 6 scenario

DomainTrọng số≈ Số câu (ước tính)
D1 · Agentic Architecture & Orchestration27%16
D3 · Claude Code Configuration & Workflows20%12
D4 · Prompt Engineering & Structured Output20%12
D2 · Tool Design & MCP Integration18%11
D5 · Context Management & Reliability15%9

Số câu là 60 × trọng số, làm tròn. Guide chỉ công bố trọng số, đề thật có thể lệch.

Nhận ra scenario ngay từ câu đầu là đoán trước được nhóm chủ đề:

ScenarioChủ đề hay ra
1 · Customer Support AgentGate xác minh trước refund, hook chặn refund vượt ngưỡng, trigger escalation, case facts block, handoff đủ trường
2 · Code Generation with Claude CodeCLAUDE.md hierarchy, command và skill, path rule, plan vs direct, resume/fork
3 · Multi-Agent ResearchHub-and-spoke, decomposition quá hẹp, truyền provenance, error propagation, nguồn mâu thuẫn
4 · Developer ProductivityGrep vs Glob, fallback của Edit, MCP scope, khám phá codebase, scratchpad
5 · Claude Code for CI/CD-p, --output-format json + --json-schema, tiêu chí giảm false positive, reviewer độc lập, batch cho job ban đêm
6 · Structured Data Extractiontool_use + JSON schema, nullable field, validation-retry, batch + custom_id, calibrate confidence

Nguyên tắc ra quyết định: dấu hiệu → hướng đáp án

Phần lớn câu hỏi quy về một trong các nguyên tắc sau:

  • Tiền, bảo mật, compliance, "100%" → enforce bằng code (hook, prerequisite gate, schema). Prompt và few-shot chỉ giúp "thường đúng", không bao giờ đảm bảo.
  • Trị gốc theo bằng chứng → gốc thường nằm ở upstream (coordinator, input). Đừng sửa component đang chạy đúng.
  • Bước đầu tương xứng → cách rẻ trước: tool description → tiêu chí rõ + few-shot → routing layer → classifier.
  • Least privilege → 4–5 tool mỗi agent, chia theo vai trò. Thêm một tool hẹp cho nhu cầu cross-role thường gặp.
  • Có cấu trúc thắng chung chung → lỗi có category và isRetryable; handoff có trường cố định; output theo JSON schema.
  • Cô lập context → subagent không thừa hưởng gì, phải truyền đủ. Reviewer là instance riêng.
  • Không tin tín hiệu model tự báo → self-confidence, sentiment, câu "đã xong" đều không đáng tin. Dùng stop_reason và tiêu chí rõ.
  • Context window lớn hơn không chữa được attention dilution → chia pass, đưa key facts lên đầu, dùng scratchpad.
  • Không giấu lỗi, không dừng cả workflow → recover tại chỗ, rồi propagate kèm partial results. Kết quả rỗng hợp lệ không phải lỗi.
  • Giữ thông tin, không để model bịa → nullable field, case facts block, claim → source, giữ cả hai giá trị khi nguồn mâu thuẫn.
  • Hỏi lại thay vì đoán → nhiều bản ghi khớp: xin thêm identifier. Policy không nói tới: escalate.
  • Declarative, tự động thắng thủ công → path rule thay vì một CLAUDE.md khổng lồ; cấu hình project thay vì nhắc từng người.
  • Chỉ dùng tính năng có tài liệu → -p, .mcp.json, .claude/rules/. Không có CLAUDE_HEADLESS, --batch hay .claude/config.json.

Từ khoá trong đề → loại đáp án

Từ khoá trong đềĐáp án thường là
"first step", "most effective first"Phương án rẻ nhất mà vẫn trị đúng gốc
"guarantee", "must always", "100%", complianceEnforce bằng code: hook, gate, schema
"maintainable", "consistent across the team"Declarative, cấp project: .claude/rules/, .mcp.json, project skill
"long-term", "most robust"Phương án nặng hơn (tách tool, pipeline) có thể thắng
"in a single response", "simultaneously", giảm latencyNhiều Task call song song trong cùng một response
"overnight", "weekly", "not time-sensitive", giảm chi phíMessage Batches API
"blocking", "pre-merge", "developer waits"API đồng bộ, không dùng batch
"a new team member doesn't get the rule"Rule đang nằm ở ~/.claude/; chuyển lên project
"Choose TWO", "Which will NOT…"Đếm đúng số đáp án; với NOT, tìm phương án vi phạm nguyên tắc

Kiến thức trọng tâm theo domain

D1 · Agentic Architecture & Orchestration (27%)

flowchart LR
  A[Gọi Messages API] --> B{stop_reason}
  B -- tool_use --> C[Chạy tool]
  C --> D[Append tool_result vào history]
  D --> A
  B -- end_turn --> E[Xong]
  B -- max_tokens --> F[Bị cắt, chưa xong]
  • Điều khiển loop → branch theo stop_reason, không theo content[0].type hay việc có text. Iteration cap chỉ là safety net.
  • Claude "không thấy" kết quả tool → chưa append tool_result vào hội thoại.
  • Báo cáo thiếu hẳn một nhóm chủ đề → coordinator chia task quá hẹp. Sửa decomposition, không sửa subagent.
  • Subagent nói chuyện trực tiếp với nhau → sai. Hub-and-spoke: mọi thứ đi qua coordinator.
  • Coordinator không spawn được subagent → allowedTools thiếu "Task" ⚠ (docs mới gọi là Agent tool).
  • Synthesis mất citation → metadata bị cắt ở ranh giới coordinator. Truyền finding có cấu trúc kèm source và ngày.
  • Refund đôi khi bỏ qua bước xác minh → prerequisite gate: process_refund chỉ chạy khi đã có customer ID được verify.
  • Handoff cho người thật → tự đủ: customer ID, tóm tắt, root cause, số tiền, đề xuất. Người nhận không có transcript.
HookDùng đểChặn được không?
PreToolUseTừ chối hoặc sửa call trước khi chạy (vd refund > $500 → escalate)Có
PostToolUseChuẩn hoá kết quả trước khi model thấy (vd ngày về ISO 8601)Không; side effect đã xảy ra
Chọn sessionKhi nào
--resume <name>Tiếp tục cùng hướng, file không đổi
fork_sessionSo sánh hai hướng từ cùng một baseline
Session mới + summary có cấu trúcFile đã đổi nhiều, context cũ đã lỗi thời
  • 3 trong 50 file đã đổi → báo cho session đã resume những file nào đổi và chỉ phân tích lại chúng.
  • Pipeline cố định vs dynamic → bước biết trước, input có cấu trúc: prompt chaining. Điều tra mở: dynamic decomposition.

D2 · Tool Design & MCP Integration (18%)

  • Model nhầm hai tool → mở rộng description trước: mục đích, format input, ví dụ, edge case, "dùng X thay vì Y khi…".
  • Description đã tốt mà vẫn route sai → tìm keyword rule trong system prompt đang đè lên description.
  • Một tool làm quá nhiều, hoặc tên chồng chéo → tách thành tool hẹp, đặt tên rõ nghĩa.
  • Một agent có 18+ tool → giảm còn 4–5 theo vai trò.
MCP primitiveDùng choDấu hiệu trong đề
ToolsHành động model gọi"xử lý refund", "tạo ticket"
ResourcesNội dung client đọc vàoAgent gọi lặp list_tables → expose catalog dạng resource
PromptsTemplate tái sử dụng do người dùng chọnHiếm khi là đáp án; biết là có
Error categoryAgent xử lý
Transient (timeout, service down)Retry có backoff
Validation (input sai)Sửa input rồi thử lại
Business (vi phạm policy)Không retry; luồng khác hoặc escalate, giải thích cho khách
PermissionĐổi quyền hoặc escalate
  • Lỗi có cấu trúc → isError: true + errorCategory + isRetryable + mô tả dễ hiểu. "Operation failed" chung chung luôn sai.
  • Không có kết quả → isError: false với 0 kết quả là câu trả lời hợp lệ, không retry. Nguồn không truy cập được là lỗi, không bao giờ trả danh sách rỗng.
tool_choiceHành vi
autoCó thể gọi tool hoặc trả lời bằng text
anyBắt buộc gọi một tool nào đó
{"type": "tool", "name": "…"}Bắt buộc gọi đúng tool đó (dùng cho bước đầu bắt buộc, sau đó trả về auto)
Cấu hình MCPPhạm vi
.mcp.jsonProject: commit, share cho team, secret qua ${ENV_VAR}
~/.claude.jsonUser: cá nhân, thử nghiệm; hai loại load cùng lúc
  • Jira, GitHub và tích hợp phổ biến khác → community MCP server trước; chỉ tự viết khi nhu cầu thật sự riêng.
  • Grep vs Glob → Grep tìm trong nội dung file (caller, import, chuỗi lỗi); Glob khớp đường dẫn và tên file.
  • Edit lỗi vì anchor không duy nhất → fallback sang Read + Write ⚠.

D3 · Claude Code Configuration & Workflows (20%)

Cấp CLAUDE.mdVị tríCó share không?
User~/.claude/CLAUDE.mdKhông, chỉ cá nhân
ProjectCLAUDE.md hoặc .claude/CLAUDE.mdCó, được commit
DirectoryCLAUDE.md trong thư mục conCó, áp dụng cho subtree đó

Các cấp được cộng dồn, không ghi đè nhau. Kiểm tra file nào đang load bằng /memory ⚠ (bản mới cũng hiện trong /context).

Nhu cầuCơ chế
Chuẩn luôn áp dụngCLAUDE.md
Quy ước cho một loại file rải khắp repo (**/*.test.tsx).claude/rules/*.md với glob paths: trong frontmatter
Quy trình gọi khi cầnSkill: .claude/skills/<name>/SKILL.md (hoặc command trong .claude/commands/)
CLAUDE.md quá lớnTách bằng import @path/to/file.md và rule theo chủ đề
  • Frontmatter của skill → context: fork chạy trong subagent cô lập (hợp với output dài), allowed-tools giới hạn tool, argument-hint nhắc tham số cần nhập.
  • Plan mode vs direct → quyết theo độ mơ hồ, không theo độ lớn: kiến trúc, nhiều file, nhiều hướng hợp lệ → plan; lỗi rõ có stack trace → direct.
  • Refinement → model hiểu sai yêu cầu: 2–3 cặp input/output. Edge case khó: viết test trước. Domain lạ: interview pattern.
  • Nhiều chỗ cần sửa → phụ thuộc nhau: gửi chung một message. Độc lập: sửa từng cái.
Nhu cầu CI/CDFlag
Job treo vì chờ inputclaude -p / --print
Output cho chương trình khác đọc--output-format json + --json-schema
Thêm luật, giữ mặc định--append-system-prompt (khác --system-prompt là thay toàn bộ)
  • Review lặp lại comment cũ → đưa findings trước vào prompt; chỉ báo issue mới hoặc chưa xử lý.
  • Review code Claude vừa viết → dùng instance riêng, không review trong session đã sinh code.

D4 · Prompt Engineering & Structured Output (20%)

  • Quá nhiều false positive → tiêu chí report/skip cụ thể + ví dụ code cho từng severity. "Be conservative" là sai.
  • Một category ~40% false positive làm dev mất niềm tin vào mọi finding → tạm tắt category đó, sửa tiêu chí, rồi bật lại.
  • Few-shot đúng cách → 2–4 ví dụ nhắm vào ca mơ hồ, kèm lý do, đa dạng cấu trúc tài liệu ⚠.
  • Few-shot không chữa được → JSON hỏng (dùng schema), bịa giá trị (nullable), chọn sai tool (description), tổng sai (validation).
  • tool_use + JSON schema → đảm bảo cấu trúc, không đảm bảo đúng nghĩa. Strict mode loại lỗi cú pháp.
  • Model bịa giá trị không có trong nguồn → để trường optional/nullable; enum thêm "other" + detail và "unclear".
  • Validation-retry → gửi lại tài liệu + output lỗi + lỗi cụ thể. Vô ích nếu dữ liệu không có trong nguồn; trả null hoặc chuyển người review.
  • Kiểm tra ngữ nghĩa → trích calculated_total cùng stated_total; gắn cờ conflict_detected.
Messages API đồng bộMessage Batches API
Chi phíGiá thườngRẻ hơn 50%
Độ trễNgay lập tứcTối đa 24 giờ, không SLA
Multi-turn tool callingCóKhông
Khớp kết quảKhông cầncustom_id cho từng request
Dùng choCheck pre-merge, mọi việc có người đang chờBáo cáo ban đêm, audit hằng tuần, trích xuất hàng loạt
  • Batch lỗi một phần → chỉ gửi lại các custom_id lỗi, kèm chỉnh sửa (vd chia nhỏ tài liệu quá lớn).
  • SLA 30h với batch tối đa 24h → còn 6h đệm, nên submit khoảng mỗi 4 giờ.
  • Confidence score → dùng để route, phải calibrate; không bao giờ thay cho tiêu chí.

D5 · Context Management & Reliability (15%)

  • Số tiền, ngày, ID bị mất sau khi tóm tắt → case facts block có cấu trúc, đưa vào mọi prompt, không tóm tắt.
  • Lost in the middle → key findings lên đầu, có section header; sắp lại input thay vì nhắc lại.
  • Tool trả về 40 trường → trim còn trường cần thiết trước khi vào history.
  • Trigger escalation → khách đòi gặp người thật (escalate ngay) · policy không đề cập hoặc có ngoại lệ · không tiến triển sau khi đã thử thật sự.
  • Không phải trigger → khách bực nhưng việc đơn giản, self-confidence thấp. Cứ xử lý.
  • Nhiều khách khớp tên → xin email, số điện thoại hoặc mã đơn; không bao giờ chọn bản ghi gần nhất.
  • FCR 55% so với mục tiêu 80% → tiêu chí escalation rõ + few-shot trước khi nghĩ tới classifier.
  • Error propagation → báo loại lỗi, hành động đã thử, partial results, phương án thay thế. Timeout trả về results: [] kèm success là silent suppression.
  • Câu trả lời dần chung chung ("typical pattern") → context degradation: scratchpad file, subagent cho câu hỏi hẹp, /compact sớm.
  • Phiên khám phá dài có thể crash → state manifest: phase, explored paths, findings, next steps.
  • Accuracy tổng 97% → có thể che một segment yếu. Đo theo loại tài liệu và theo trường; stratified sampling cả output có confidence cao.
  • Hai nguồn uy tín mâu thuẫn → giữ cả hai giá trị kèm nguồn. Không chọn bản mới nhất hay lấy trung bình; khác thời điểm có thể là xu hướng.
  • Mỗi claim trong báo cáo → claim + source + trích đoạn + ngày, thêm mục coverage gap cho các nguồn chưa kiểm tra được.

Đáp án bẫy và mồi nhử ngoài phạm vi

Phương án sai thường rơi vào vài kiểu quen thuộc:

BẫyVì sao saiNên chọn
"Ghi bắt buộc vào system prompt" cho luật cứngPrompt chỉ mang tính xác suấtHook hoặc gate bằng code
Classifier hay service mới ngay bước đầuChưa thử cách rẻDescription, tiêu chí, few-shot
Sửa component đang chạy đúngBỏ qua bằng chứngSửa đúng chỗ bằng chứng chỉ vào
Self-confidence 1–10, sentiment, parse chữ "done"Tín hiệu không đáng tinstop_reason, tiêu chí rõ, calibration
Flag bịa (CLAUDE_HEADLESS, --batch)Không có trong tài liệu-p, .mcp.json, .claude/rules/
Cấu hình team ở ~/.claude, token commit vào repoSai scopeProject scope + ${ENV_VAR}
Model lớn hơn, context window lớn hơnKhông chữa dilutionChia pass, scratchpad
Cho agent mọi toolModel chọn tool kém đi4–5 tool theo vai trò
Self-review cùng session, "think harder"Cùng điểm mù với generatorInstance độc lập
Chỉ báo issue xuất hiện 2/3 lần chạyChe bug chập chờnPer-file pass + integration pass
Bắt dev tự chia nhỏ PRĐẩy việc cho ngườiThiết kế lại các pass
Required field cho dữ liệu có thể vắngÉp model bịaNullable

Ngoài phạm vi theo guide. Phương án dựa vào các mục này thường là mồi nhử: fine-tuning hay huấn luyện model, auth/billing/quản lý tài khoản API, OAuth và xoay vòng API key, deploy hay host MCP server, kiến trúc nội bộ và quá trình huấn luyện Claude (RLHF, Constitutional AI), embedding và vector DB, computer use, vision, streaming/SSE, rate limit và tính giá API, cấu hình riêng của cloud provider, benchmark, tokenization, và prompt caching ngoài mức biết là có.

Ý chính cần nhớ

  • Ràng buộc cứng (tiền, bảo mật, compliance) phải nằm trong code; còn lại thì bắt đầu bằng cách rẻ nhất mà vẫn trúng gốc.
  • stop_reason điều khiển loop; phải append tool_result; subagent chỉ nhận context qua prompt.
  • Cấu trúc ở mọi nơi: lỗi có kiểu và isRetryable, handoff có trường cố định, JSON schema có nullable field, case facts block.
  • Scope quan trọng: project (.claude/, .mcp.json) cho team, user (~/.claude/) cho thiết lập cá nhân.
  • Batch cho việc không ai chờ; đồng bộ cho việc đang chặn một người.

Câu hỏi thường gặp

Đội ngũ CertGroveViết ghi chú ôn thi song ngữ cho developer Việt Nam chuẩn bị Claude Certified Architect — Foundations.