정답과 해설
60문항 전체의 정답과 해설입니다. 먼저 정답표로 빠르게 채점한 뒤, 도메인별 점수를 1회 결과와 비교하세요. 그다음 해설을 읽되, 맞힌 문항이라도 오답 보기가 왜 함정인지까지 확인해야 같은 함정에 다시 걸리지 않습니다. 시험은 표면을 바꿔 같은 개념을 반복해서 묻기 때문입니다.
정답표
| 번호 | 정답 | 번호 | 정답 | 번호 | 정답 | 번호 | 정답 |
|---|---|---|---|---|---|---|---|
| 1 | B | 16 | D | 31 | B | 46 | C |
| 2 | C | 17 | A | 32 | D | 47 | B |
| 3 | A | 18 | C | 33 | A | 48 | D |
| 4 | D | 19 | B | 34 | C | 49 | A |
| 5 | C | 20 | D | 35 | B | 50 | C |
| 6 | D | 21 | A | 36 | D | 51 | B |
| 7 | A | 22 | C | 37 | A | 52 | B |
| 8 | B | 23 | B | 38 | C | 53 | C |
| 9 | C | 24 | D | 39 | B | 54 | D |
| 10 | D | 25 | A | 40 | D | 55 | A |
| 11 | A | 26 | C | 41 | A | 56 | B |
| 12 | B | 27 | B | 42 | B | 57 | C |
| 13 | D | 28 | D | 43 | C | 58 | D |
| 14 | C | 29 | A | 44 | D | 59 | A |
| 15 | A | 30 | C | 45 | A | 60 | B |
도메인 1 해설 (1~16번)
-
정답 B. 클라이언트 도구는 Anthropic이 이름과 스키마를 정의하더라도 실제 실행은 여러분의 애플리케이션이 한다. 모델(A)은 "무엇을 할지"만 결정하며 코드를 실행하지 못한다. 서버 인프라(C)는 서버 측 도구에만 해당한다. input_schema(D)는 입력 형식 명세일 뿐 실행 주체가 아니다.
-
정답 C. 모델은 응답에
tool_use블록을 담아 보내고, 애플리케이션은 그 결과를tool_result블록으로 만들어 user 메시지에 담아 보낸다.tool_use는 모델(assistant)이 생성하는 블록이므로 A·B는 방향이 반대다. tool_result는 user 역할에 담으므로 assistant에 담는 D도 틀리다. -
정답 A.
tool_use는 모델이 도구를 호출하고 싶다는 신호이므로, 도구를 실행하고tool_result를 붙여 루프를 이어 가야 한다. 종료(B)는end_turn일 때다. 그대로 재전송(C)은 무한 반복을 부른다. 추가 입력 요청(D)은 상황과 무관하다. -
정답 D. 서버 측 도구의 샘플링 루프가 기본 10회 한계에 도달하면
pause_turn이 반환되며, user 메시지와 assistant 응답을 그대로 붙여 재요청하면 서버가 이어서 진행한다. "Continue" 같은 추가 메시지를 넣으면 안 된다. end_turn(A)은 정상 종료, max_tokens(B)는 출력 한계, refusal(C)은 안전 거절이다. -
정답 C. "제목만 추출"은 한 번의 요청과 한 번의 응답으로 끝나는 단발성 작업이므로 단일 LLM 호출이 가장 적합하다. 에이전트(A)나 Managed Agents(D)는 개방형·다단계 작업에 쓰는 과한 선택이고, 워크플로우(B)도 코드 제어 루프가 필요 없는 이 작업에는 과하다. 가장 단순한 계층을 고르는 것이 원칙이다.
-
정답 D. 에이전트 여부를 판단하는 네 기준은 복잡성, 가치, 실행 가능성(viability), 오류 비용이다. 인기도(D)는 기준이 아니다. 시험은 "viability"가 빠진 보기나 엉뚱한 기준을 끼워 넣어 함정을 만든다.
-
정답 A. 모델을 메인 루프 중간에 바꾸면 캐시가 깨진다. 따라서 저렴한 모델은 별도 서브에이전트로 띄우고 메인 루프는 한 모델로 유지한다. B는 캐시를 깨고, C는 system 수정으로 역시 캐시를 깬다. tool_choice 변경(D)은 비용·모델 문제와 무관하다.
-
정답 B. 전용 도구 승격의 가장 강한 근거는 게이팅이 필요한 비가역적 행동(외부 호출, 삭제 등)이다. 전용 도구는 타입화된 인자를 주어 하니스가 가로채고 확인을 걸 수 있다. 호출 빈도(A)나 명령 길이(C), 모델 선호(D)는 결정 근거가 아니다.
-
정답 C. Managed Agents에서
model·system·tools는 에이전트 객체에 둔다. 세션(A)은 에이전트를 ID로 참조만 한다. 환경(B)은 컨테이너 템플릿이고, 컨테이너(D)는 실행 공간이다. 이 책임 분리가 시험의 단골 함정이다. -
정답 D. 에이전트는 버전 관리되는 영속 객체이므로 한 번만 생성해 ID를 저장하고 재사용한다. 매 요청(A)이나 크론 틱(B)마다 생성하면 고아 에이전트가 쌓이고 버전 모델을 무너뜨린다. 도구 변경(C) 시에는 새로 만들지 말고 update로 새 버전을 만든다.
-
정답 A. always_ask 정책의 도구가 호출되면 세션은 idle이 되어 대기하고, 클라이언트는
tool_confirmation(allow/deny)을 보낸다. terminated(B)는 비가역 종료, running 유지·자동 실행(C)은 always_allow일 때, rescheduling(D)은 재시도 가능한 오류 상황이다. -
정답 B. SSE 스트림은 재생(replay)이 없으므로, 재연결 시 events.list로 과거 이력을 먼저 가져와 이벤트 ID로 중복 제거해야 누락을 막는다. 스트림만 다시 읽으면(A) 끊긴 사이의 이벤트를 잃는다. 세션 삭제(C)나 interrupt(D)는 진행 중 작업을 망친다.
-
정답 D.
multiagent.agents는 에이전트의 최상위 필드로 선언한다. 세션 본문(A)이나 tools 배열의 한 항목(B)으로 넣는 것은 흔한 오답 함정이다. networking(C)은 환경 설정이다. -
정답 C. "코드가 호출 여부를 결정하고 루프를 직접 돈다"는 워크플로우(Claude API + tool use) 계층의 정의다. 단일 호출(A)은 루프가 없고, Managed Agents(B)는 서버가 루프를 운영하며, 임베딩(D)은 무관하다.
-
정답 A. 무한 반복은 클라이언트 루프에 반복 깊이 한계(max_iterations)를 두어 막는다. max_tokens=0(B)은 캐시 프리워밍용이고, thinking 비활성화(C)나 tool_choice=none(D)은 반복 자체를 막지 못한다.
-
정답 D. PTC는 순차 호출이 많거나 중간 결과가 커서 컨텍스트에 닿기 전 걸러야 할 때 유용하다. 스크립트가 컨테이너에서 실행되며 중간 결과는 코드 안에서 처리되고 최종 출력만 모델에 돌아간다. 도구 하나·한 번(A), 사용자 승인(B), 스트리밍(C)은 PTC의 동기와 다르다.
도메인 2 해설 (17~28번)
-
정답 A. 저장소에 체크인해 팀과 공유하는 프로젝트 지침은 프로젝트 루트의
CLAUDE.md에 둔다. 글로벌 설정(B)은 개인 전체에 적용되고, 환경 변수(C)나 매 세션 입력(D)은 공유·영속성이 떨어진다. -
정답 C. "X를 할 때마다 자동으로 Y" 같은 결정적 자동 동작은 settings.json의 hooks로 구현한다. 메모리·선호(A)나 시스템 프롬프트(B)는 모델의 자발적 판단에 의존하므로 자동 동작을 보장하지 못한다. 슬래시 커맨드 이름 변경(D)은 무관하다.
-
정답 B. hooks는 모델이 아니라 하니스가 실행하므로, 모델의 판단과 무관하게 결정적 자동 동작을 보장한다. A는 사실과 반대다. 더 큰 컨텍스트(C)나 토큰 절약(D)은 hooks의 본질이 아니다.
-
정답 D. 읽기 전용 명령 허용 목록은 프로젝트
.claude/settings.json의 permissions에 둔다. 시스템 프롬프트(A)·채팅(B)·CLAUDE.md 본문(C)은 권한 설정의 정식 위치가 아니다. -
정답 A. 사용자가 말하는 "슬래시 커맨드"는 스킬(skill)을 가리킨다. 셸 별칭(B)·환경 변수(C)·git 훅(D)은 스킬 호출 메커니즘이 아니다.
-
정답 C. 작업 파일이 특정 디렉터리 하위에 있으면 가장 구체적인 디렉터리 범위의 변형을 선택한다. 항상 접두어 없는 변형(A)이나 알파벳순(B)·무작위(D)는 규칙이 아니다.
-
정답 B. 커밋·푸시는 사용자가 요청할 때만 하며, 기본 브랜치라면 먼저 브랜치를 분기한다. 기본 브랜치 직접 커밋(A)·강제 푸시(C)·메시지 없는 커밋(D)은 모두 안전하지 않은 처리다.
-
정답 D. 격리가 필요한 기능 작업은 git worktree로 분리된 작업 공간을 만든다. 같은 디렉터리 작업(A)은 격리가 안 되고, 단순 복제(B)나 stash(C)는 의도와 다르다.
-
정답 A. effort는 사고 깊이와 토큰 효율의 절충을 조절하며, 낮은 effort는 더 적고 통합된 도구 호출과 짧은 확인을 낳는다. effort는 thinking과 함께 동작하므로 B는 틀리고, 높은 effort가 더 싸다(C)는 반대이며, max_tokens(D)와는 다른 개념이다.
-
정답 C. Conventional Commits에서 버그 수정은
fix다.feat(A)은 새 기능,chore(B)는 잡일,docs(D)는 문서만 변경할 때다. -
정답 B. 오래 실행되며 종료 시 재호출이 필요한 명령은 run_in_background로 분리 실행한다.
&(A)는 불필요하고 권장되지 않으며, 포그라운드 sleep(C)은 막혀 있고, 수동 확인(D)은 비효율적이다. -
정답 D. 명세를 받은 다단계 작업은 코드를 건드리기 전에 잘게 쪼갠 구현 계획을 먼저 작성하는 것이 권장된다. 즉시 구현(A)·테스트 삭제(B)·강제 푸시 준비(C)는 모두 잘못된 순서다.
도메인 3 해설 (29~40번)
-
정답 A. JSON 스키마 강제는
output_config.format(json_schema)으로 한다. 프리필(B)은 최신 모델에서 400을 내고, "JSON으로만"이라는 지시만(C)이나 정규식 후처리(D)는 보장이 약하다. -
정답 C. 최신 Opus 4.x 계열에서 마지막 assistant 턴 프리필은 400 오류를 낸다. 따라서 구조화 출력이나 시스템 프롬프트 지시로 대체해야 한다. 정상 동작(A)·경고 후 무시(B)·thinking 비활성화(D)는 모두 틀리다.
-
정답 B. 분류 라벨 제한은 enum 필드를 가진 도구 또는 구조화 출력으로 한다. 자유 텍스트 후처리(A)는 견고하지 않고, temperature=0(C)이나 max_tokens=1(D)은 라벨 집합을 강제하지 못한다.
-
정답 D. 구조화 출력은 minLength·maximum 같은 수치·길이 제약을 지원하지 않는다. enum·const(A), anyOf·allOf(B), date-time 형식(C)은 지원된다. SDK는 미지원 제약을 클라이언트 측에서 검증한다.
-
정답 A. 특정 도구 강제는
{"type": "tool", "name": "..."}다. auto(B)는 모델이 결정, any(C)는 도구 중 하나를 반드시 사용, none(D)은 도구 사용 금지다. -
정답 C. 최신 Opus는 도구를 보수적으로 호출하므로, 설명에 "언제 호출해야 하는지"라는 트리거 조건을 명시하면 호출률이 오른다. 무엇을 하는지만(A)으로는 부족하고, "CRITICAL: 반드시"(B)는 과다 호출을 부르며, 빈 설명(D)은 최악이다.
-
정답 B. 적응형 사고는
thinking: {type: "adaptive"}로 설정하며 모델이 사고 깊이를 스스로 정한다. budget_tokens 고정(A)은 최신 모델에서 폐기·400이고, 도구 사용과 병행 불가(C)는 거짓이며, 적응형 사고는 명시적으로 켜야 동작한다(D 거짓). -
정답 D. effort는
output_config안에 두며 사고 깊이와 토큰 소비의 균형을 조절한다. 최상위·max_tokens 대체(A), thinking 안에 두어 사고를 끔(B), tools 안에 두어 도구 수 제한(C)은 모두 틀리다. -
정답 A. 최신 Opus는 시스템 프롬프트를 더 충실히 따르므로 "CRITICAL: MUST" 같은 공격적 지시는 도구 과다 호출을 부른다. 해법은 지시를 완화하는 것이다. 더 강하게 지시(B)나 그대로 유지(C)는 증상을 악화시키고, D는 인과가 다르다.
-
정답 C. 대화 도중 운영자 지시는 messages 끝에
{"role": "system", ...}메시지로 주입하면 캐시된 프리픽스를 보존하면서 운영자 권한을 갖는다(베타, 지원 모델). 최상위 system 수정(A)은 캐시를 깨고, user 텍스트(B)는 스푸핑 가능하며, tools 추가(D)는 캐시를 깬다. -
정답 B. parse() 계열 헬퍼는 응답을 스키마에 맞춰 자동 검증·파싱해 준다. 토큰 절약(A)·항상 더 빠름(C)·thinking 자동 켜짐(D)은 헬퍼의 이점이 아니다.
-
정답 D. 구조화 출력은 인용(citations)과 함께 쓰면 400 오류를 낸다. 스트리밍(A)·배치 API(B)·토큰 카운팅(C)과는 함께 동작한다.
도메인 4 해설 (41~51번)
-
정답 A. 에이전트의 mcp_servers에는 type·name·url만 넣고 인증 정보는 넣지 않는다. 토큰을 넣는 B나 인증만(C), 스키마 전체(D)는 틀리다. 자격 증명은 볼트로 분리한다.
-
정답 B. MCP 자격 증명은 볼트(vault)에 저장하고 세션의 vault_ids로 연결한다. mcp_servers에 직접 토큰(A)·시스템 프롬프트(C)·컨테이너 환경 변수(D)는 비밀 분리 원칙에 어긋난다.
-
정답 C. 호스팅된 MCP 서버는 보통 OAuth 베어러 토큰을 요구하며, 서비스의 네이티브 REST API 키(A)와는 다른 인증 체계다. SSH 키(B)나 평문 비밀번호(D)도 아니다. 이 구분이 시험의 함정이다.
-
정답 D. 도구가 많지만 요청마다 소수만 관련될 때는 도구 검색(tool search)으로 관련 스키마만 동적으로 불러온다. 프롬프트 캐싱(A)·compaction(B)·배치 API(C)는 이 목적과 다르다.
-
정답 A. 도구 검색은 스키마를 교체하지 않고 추가(append)하므로 기존 프리픽스가 보존되어 캐시가 유지된다. 매번 비움(B)·모델 교체(C)·system 수정(D)은 모두 캐시를 깬다.
-
정답 C. 가능한 한 많은 도구를 넣는 것은 모범 사례가 아니다. 도구가 너무 많으면 모델이 혼란스러워하므로 집합을 좁혀야 한다. 서술적 이름(A)·속성 description(B)·enum 사용(D)은 올바른 모범 사례다.
-
정답 B. 코드 실행은 Anthropic이 호스팅하는 격리 샌드박스에서 서버 측으로 실행되며, tools에 선언만 하면 된다. 클라이언트 직접 실행(A)·자유로운 인터넷 접근(C)·선언 불가(D)는 모두 틀리다.
-
정답 D. 도구 실패는
is_error: true와 정보가 담긴 오류 메시지로 알려야 모델이 적응한다. content를 비움(A)·role 변경(B)·응답 무시(C)는 잘못된 처리다. -
정답 A. 환경 변수 자격 증명을 쓸 수 없는 self_hosted 상황에서는 커스텀 도구를 선언해, 오케스트레이터가 자신의 호스트 자격 증명으로 호출을 수행하고 결과만 돌려준다. 비밀을 시스템 프롬프트(B)·user 메시지(C)·컨테이너 파일(D)에 두면 이벤트 이력에 영속되어 위험하다.
-
정답 C. 서버 측 도구는 Anthropic 인프라에서 실행되고, 클라이언트 측 도구는 여러분의 하니스가 실행한다. 항상 더 빠름(A)·클라이언트 측에 스키마 없음(B)·동일함(D)은 모두 틀리다.
-
정답 B. limited 네트워킹에서 MCP 도구가 조용히 실패하면, allow_mcp_servers가 true가 아니거나 MCP 도메인이 allowed_hosts에 없는 경우가 가장 흔하다. 모델 ID(A)·max_tokens(C)·thinking(D)은 네트워킹 실패의 원인이 아니다.
도메인 5 해설 (52~60번)
-
정답 B. 프롬프트 캐싱은 프리픽스 일치이며, 프리픽스 어디든 한 바이트만 바뀌어도 그 뒤가 모두 무효화된다. 이것이 모든 캐싱 설계가 따르는 단 하나의 불변식이다. 메시지 단위(A)·모델 무관(C)·출력 토큰만(D)은 모두 틀리다.
-
정답 C. cache_read가 계속 0이면 시스템 프롬프트의 datetime.now()·UUID·정렬되지 않은 JSON 같은 조용한 무효화 요인이 작동하는 경우가 가장 흔하다. max_tokens(A)·thinking 꺼짐(B)·도구 없음(D)은 캐시 히트와 무관하다.
-
정답 D. 렌더링 순서는 tools→system→messages이므로, 위치 0의 tools 정의를 바꾸거나 모델을 교체하면 전체 캐시가 무효화된다. user 마지막 블록(A)·tool_choice(B)·이미지 토글(C)은 더 낮은 계층만 무효화한다.
-
정답 A. 컨텍스트 윈도를 넘어설 가능성이 있는 긴 대화는 compaction이 서버 측에서 이전 컨텍스트를 요약한다. 컨텍스트 편집(B)은 요약이 아니라 잘라내기이고, 캐싱(C)·토큰 카운팅(D)은 요약 기능이 아니다.
-
정답 B. compaction은 response.content 전체(compaction 블록 포함)를 다음 요청에 붙여야 한다. 텍스트만 추출(A)하면 compaction 상태를 조용히 잃는다. 새 대화 시작(C)·max_tokens=0(D)은 잘못이다.
-
정답 C. 오래된 도구 결과·완료된 사고 블록을 요약 없이 잘라내는 기능은 컨텍스트 편집(context editing)이다. compaction(A)은 요약하고, 캐싱(B)은 비용 절감, 메모리(D)는 교차 세션 지속이다.
-
정답 D. 세션이 끝나도 상태가 유지되어야 하는 교차 세션 지속에는 메모리(memory)가 적합하다. 컨텍스트 편집(A)·compaction(B)은 세션 내에서 동작하고, tool_choice(C)는 무관하다.
-
정답 A. Claude Fable 5의 안전 분류기 거절은 HTTP 200에
stop_reason: "refusal"로 반환되므로, content를 읽기 전에 stop_reason을 먼저 확인해야 인덱스 오류를 피한다. 400(B)·500(C)·빈 스트림 무시(D)는 거절의 형태가 아니다. -
정답 B. 큰 max_tokens(예: 64000)는 스트리밍을 사용하고 get_final_message로 최종 응답을 얻는 것이 권장된다. max_tokens=1(A)은 출력을 끊고, thinking 끄기(C)·두 번 전송(D)은 타임아웃 문제의 해법이 아니다.
정리
- 정답표로 채점한 뒤 도메인별 점수를 1회와 비교하라. 두 회차 모두 약한 도메인이 진짜 약점이며, 해당 PART로 돌아가 보강할 우선순위다.
- 시험의 단골 함정은 책임 분리(누가 실행·주도하는가), 캐시 무효화(프리픽스 불변식), 기능 구분(compaction·컨텍스트 편집·메모리)이다. 이 세 축에서 틀렸다면 개념을 다시 정리하라.
- 맞힌 문항이라도 오답 보기를 버린 이유를 해설과 맞춰 보라. 운으로 넘긴 개념은 시험에서 표면을 바꿔 다시 나온다.