| name | hiring-sim-coding-test |
| description | 특정 회사가 주어지면 코딩테스트 후기(라이브 코드 리뷰 스타일 포함)를 리서치해 실제 전형을 재현하고, FAANG 스타일 4차원 루브릭으로 코딩 테스트를 시뮬레이션합니다. 후기가 없으면 이력서·포폴·공고 기반으로 폴백합니다. |
| user-invocable | true |
코딩 테스트 시뮬레이션 (Hiring Coding Test)
포지션과 경력 수준에 맞는 코딩 테스트를 출제하고, Google/Meta 스타일 루브릭으로 평가합니다.
판정 기준 (인라인)
4차원 평가: 문제 해결 / 코딩 능력 / 커뮤니케이션 / 테스트·검증 (각 1~4점)
[PASS] — 4차원 모두 2점 이상 AND 평균 2.5점 이상
[REJECT] — 어느 하나라도 1점 OR 평균 2.5점 미만
사전 과제 (take-home): 4차원 평가: 요구사항 충족 / 코드 품질 / 설계 의사결정 / 테스트·문서화 (각 1~4점)
[PASS] — 4차원 모두 2점 이상 AND 평균 2.5점 이상
[REJECT] — 어느 하나라도 1점 OR 평균 2.5점 미만
실행 절차
Step 1: 입력 수집
포지션 정보 (필수):
- "코딩 테스트를 준비할 포지션 정보를 알려주세요. (이력서 파일 경로 또는 포지션/기술스택 직접 입력)"
- 이력서 제공 시: Read로 읽어서 포지션/기술 스택/경력 수준 추출
- 직접 입력 시: 포지션명, 경력 수준, 기술 스택 확인
채용 공고 (선택):
- "채용 공고가 있으면 내용을 붙여넣거나 URL을 알려주세요. (없으면 '없음')"
테스트 옵션:
- 유형: "알고리즘/자료구조", "시스템 설계", "실무 코딩", "사전 과제 (Take-home)", "자동 선택"
- 난이도: "쉬움", "보통", "어려움", "자동 (포지션 기반)"
Step 1.5: 회사별 코테 리서치 (특정 회사 지정 시)
특정 회사/공고가 주어지면 문제를 생성하기 전에 hiring-common/interview-research.md를 읽고 그 회사의 코딩 테스트 실제 형태를 조사한다.
- 캐낼 것: 코테 플랫폼(프로그래머스/해커랭크/자체), 유형(알고리즘/구현/SQL/과제), 문항 수·시간·난이도, 그리고 라이브 코딩/코드 리뷰 여부와 스타일(본인 제출 코드/과제를 리뷰하며 어떤 질문·리팩터링 요구가 들어오는지).
- Graceful degradation: 후기가 나오면 그 유형·난이도·플랫폼을 재현하고, 안 나오면 이력서·포폴·공고 기반 일반 모드로 폴백한다. 어느 모드인지 사용자에게 고지한다(모듈의 프로토콜·요약 출력 형식 사용).
- 라이브 코드 리뷰가 확인되면 알고리즘 문제 대신 "코드 리뷰 세션"으로 유형을 전환할 것을 제안한다(아래 Step 2의 코드 리뷰 형식).
Step 2: 문제 생성
포지션, 기술 스택, 난이도, 그리고 Step 1.5 리서치 결과를 기반으로 문제를 생성한다. 회사 재현 모드면 후기에서 확인된 유형·난이도로, 폴백 모드면 직무 일반 기준으로 출제한다.
알고리즘 문제 형식
## 코딩 테스트
**유형:** 알고리즘
**난이도:** [선택 난이도]
**참고 시간:** [30분~60분] (자기 관리. 별도 타이머를 설정하세요.)
**사용 언어:** 자유
---
### 문제: [문제 제목]
[문제 설명]
**입력:** [형식]
**출력:** [형식]
**예시:** [2~3개]
**제약 조건:** [범위, 시간/공간 제약]
시스템 설계 문제 형식
## 시스템 설계 과제
**포지션 레벨:** [Junior/Mid/Senior]
**참고 시간:** 45~60분
### 문제: [시스템명] 설계
[요구사항]
**기능 요구사항:** [목록]
**비기능 요구사항:** 트래픽, 가용성, 지연 시간
**설계 범위:** [포함/제외 범위]
실무 코딩 과제 형식
## 실무 코딩 과제
**기술 스택:** [포지션 관련]
**참고 시간:** 60~90분
### 과제: [제목]
[배경 및 요구사항]
사전 과제 (Take-home) 형식
## 사전 과제 (Take-home Assignment)
**회사:** [회사명]
**포지션:** [포지션명]
**제출 기한:** 48시간 (참고 시간. 에이전트가 시간을 측정하지 않음)
### 과제 설명
[JD의 기술 스택과 업무 내용을 반영한 실무형 과제 설명]
### 요구사항
1. [필수 기능 1]
2. [필수 기능 2]
3. [필수 기능 3]
### 기술 제약
- **언어/프레임워크:** [JD 기반 또는 자유 선택]
- **필수 포함:** README.md (설계 의사결정 설명), 테스트 코드
### 제출물
- 코드 저장소 (Git) 또는 압축 파일
- README.md: 설계 결정 근거, 실행 방법, 개선 방향
### 평가 기준 (미리 공개)
- 요구사항 충족도, 코드 품질, 설계 의사결정, 테스트/문서화
라이브 코드 리뷰 세션 형식 (회사가 코드 리뷰 면접을 한다고 확인된 경우)
리서치(Step 1.5)에서 해당 회사가 본인 제출 코드/과제를 놓고 라이브 코드 리뷰를 한다고 확인되면, 알고리즘 출제 대신 이 형식으로 진행한다. 리뷰 대상은 (1) 사용자가 제출한 take-home 결과물, (2) 이력서·포폴에 언급된 프로젝트 코드, (3) 없으면 에이전트가 제시하는 짧은 코드 스니펫 중 하나.
## 라이브 코드 리뷰 세션
**대상 코드:** [사용자 제출물 / 포폴 프로젝트 / 제시 스니펫]
**진행 방식:** 면접관이 코드를 함께 보며 질문 → 사용자가 설명·수정
### 리뷰 질문 흐름 (회사 후기에서 나온 스타일 반영)
1. **의도 확인:** "이 부분은 왜 이렇게 구현하셨나요? 다른 방법은 고려했나요?"
2. **엣지·버그:** "입력이 [엣지 케이스]면 어떻게 동작하나요?"
3. **리팩터링 요구:** "이 함수를 더 읽기 좋게/테스트 가능하게 바꾼다면?"
4. **트레이드오프:** "지금 구조의 성능·확장성 한계는? 언제 문제가 되나요?"
5. **테스트:** "이 로직을 어떻게 테스트하시겠어요? 어떤 케이스를 먼저?"
라이브 코드 리뷰는 4차원 루브릭 중 커뮤니케이션과 문제 해결 비중이 특히 크다(자기 코드를 설명·방어·개선하는 능력).
Step 3: 풀이 수신
문제 출제 후 풀이를 요청한다:
- "풀이를 제출해주세요. 코드를 직접 입력하거나 파일 경로를 알려주세요."
- 힌트 요청 시: 단계적으로 제공 (전체 답을 바로 주지 않음)
- 1차 힌트: 접근 방향만
- 2차 힌트: 핵심 알고리즘/패턴
- 3차 힌트: 의사코드 수준
Step 4: 4차원 루브릭 평가
차원별 상세 기준
문제 해결 (Problem Solving):
| 점수 | 기준 |
|---|
| 4 | 여러 해법을 비교하고 트레이드오프 분석 후 최적 선택 |
| 3 | 올바른 해법이나 최적은 아님 |
| 2 | 비효율적 해법, 힌트/가이드 필요 |
| 1 | 문제를 이해하지 못하거나 해법 도출 불가 |
코딩 능력 (Technical Competency):
| 점수 | 기준 |
|---|
| 4 | 깔끔하고 정확한 코드, 전문가 수준 언어 활용 |
| 3 | 동작하는 코드, 소소한 문법 오류 |
| 2 | 문법 오류 다수, 기본 구현 미흡 |
| 1 | 코드 작성 불가, 주요 오류 |
커뮤니케이션 (Communication):
| 점수 | 기준 |
|---|
| 4 | 논리적이고 명확한 설명, 잘 정리된 사고 과정 |
| 3 | 적절한 설명, 간혹 명확화 필요 |
| 2 | 불명확하거나 정리 안 됨, 바로 코딩 시작 |
| 1 | 사고 과정 설명 불가 |
테스트/검증 (Testing):
| 점수 | 기준 |
|---|
| 4 | 체계적 테스트 케이스, 엣지 케이스 처리, 자기 수정 |
| 3 | 엣지 케이스 일부 처리 |
| 2 | 기본 케이스만 확인 |
| 1 | 테스트 없음 |
사전 과제 전용 루브릭 (take-home 모드인 경우)
알고리즘/시스템설계/실무 모드에서는 위 4차원 루브릭을, take-home 모드에서는 아래 루브릭을 사용한다:
| 차원 | 1점 | 2점 | 3점 | 4점 |
|---|
| 요구사항 충족 | 핵심 기능 미구현 | 기본 기능만 구현 | 모든 요구사항 충족 | 요구사항 + 추가 개선 |
| 코드 품질 | 구조 없음, 가독성 낮음 | 기본 구조, 개선 여지 많음 | 깔끔한 구조, 적절한 패턴 | 프로덕션 수준 코드 |
| 설계 의사결정 | 설계 근거 없음 | 기본 선택, 대안 미검토 | 합리적 선택 + 일부 근거 | 명확한 근거 + 트레이드오프 |
| 테스트/문서화 | 테스트/문서 없음 | 최소한의 테스트 | 적절한 테스트 커버리지 | 체계적 테스트 + README |
Step 5: 결과 출력
# 코딩 테스트 결과
## 종합 판정: [PASS / REJECT]
경력 수준 기준: [주니어/미드/시니어]
### 4차원 평가
| 차원 | 점수 (1~4) | 코멘트 |
|------|-----------|--------|
| 문제 해결 | [점수] | [코멘트] |
| 코딩 능력 | [점수] | [코멘트] |
| 커뮤니케이션 | [점수] | [코멘트] |
| 테스트/검증 | [점수] | [코멘트] |
**평균: [점수] / 4.0**
### 풀이 분석
#### 접근법 평가
[사용자의 문제 해결 접근법 분석]
#### 코드/설계 리뷰
[구체적 피드백]
### 개선 포인트
1. [구체적 개선점과 방법]
### 모범 답안
#### 접근법 설명
[최적 접근법의 사고 과정]
#### 코드/설계
[모범 답안]
#### 복잡도 분석
- 시간: O(...)
- 공간: O(...)
take-home 모드 결과 출력 시 추가 항목:
- 결과 파일에
코드 리뷰 면접 연계: 필요 플래그를 포함한다
- 이후 기술 면접(interview:technical)에서 이 파일을 Read하면, 면접 질문의 50%를 제출 코드 기반으로 구성한다
주의사항
- 문제는 실제 기업 코딩 테스트 수준으로 출제한다
- 포지션/경력에 맞는 적정 난이도를 유지한다
- 모범 답안은 반드시 사용자 풀이 제출 후에 공개한다
- "참고 시간"은 실제 면접 참고용 정보일 뿐, 에이전트가 시간을 측정하지 않는다
- 1점 차원이 하나라도 있으면 다른 차원 점수와 무관하게 REJECT (실제 FAANG 기준)
- take-home 과제는 알고리즘과 달리 "모범 답안"을 제공하지 않는다. 대신 코드 리뷰 형식의 상세 피드백을 제공한다