5/23 Day3 워크북 v2 — 지식 인벤토리 시스템 기반
---
사용법
- **Part 0 매트릭스 먼저** (30분 직관 평가) — 깊이 고민 X, 1-5 빠른 입력
- 매 학습 후 *현재 수준 +1* 가능하면 매트릭스 갱신 → 진행 추적 가시화
- 막히면 #study Slack에 @mention 없이 입력 (자동 응답)
- v1 워크북(Narrative + 라이브 코딩 결)은 deprecated — Part 4·5에 일부 압축 유지
---
Part 0 — 12:00-12:30 지식 인벤토리 매트릭스 초기화 (30분)
§0.1 채널톡 BE 시니어 Target Profile
| CS 영역 | 채널톡 요구 깊이 (1-5) |
|---|---|
| 자료구조 / 알고리즘 | 5 |
| OS (동시성·프로세스/스레드) | 5 |
| 네트워크 | 4 |
| DB (트랜잭션·격리·인덱스) | 5 |
| 분산 시스템 / 캐시 (Redis) | 4 |
| 시스템 설계 (대용량·스케일링) | 5 |
| 도메인 경험 전이 (결제→메신저) | 3 |
§0.2 매트릭스 초기 템플릿 (15분 안에 '현재 수준' 채우기)
룰: 5점 = 라이브 코딩 가능 / 4점 = 깊은 구술 가능 / 3점 = 개념 설명 가능 / 2점 = 들어본 적 / 1점 = 모름. 고민 30초 안에 입력.
| 주제 | 카테고리 | 요구 깊이 | 현재 수준 | Gap | 상태 | 우선순위 | 검증 질문 |
|---|---|---|---|---|---|---|---|
| 뮤텍스 vs 세마포어 | OS | 5 | ☐ | 차이를 코드로 설명하라 | |||
| 데드락 발생 조건 4가지 | OS | 5 | ☐ | 예방 방법 3가지는? | |||
| 스레드 풀 동작 원리 | OS | 5 | ☐ | 풀 크기 결정 기준은? | |||
| 컨텍스트 스위칭 비용 | OS | 4 | ☐ | 프로세스 vs 스레드 비용 차이 | |||
| 가상 메모리·페이징 | OS | 3 | ☐ | TLB 무효화 발생 시점은? | |||
| ACID 4가지 속성 | DB | 5 | ☐ | 격리수준별 이상 현상 매트릭스는? | |||
| MVCC 동작 원리 | DB | 5 | ☐ | Lock 방식과 다른 점은? | |||
| REPEATABLE READ vs READ COMMITTED | DB | 5 | ☐ | 실 케이스로 차이 설명 | |||
| B-Tree 인덱스 구조 | DB | 4 | ☐ | 복합 인덱스 컬럼 순서가 중요한 이유 | |||
| 낙관적 vs 비관적 락 (DB 구현) | DB | 5 | ☐ | JPA `@Version` 동작 + 충돌 처리 | |||
| Redis Pub/Sub vs Kafka | Cache | 4 | ☐ | 채팅 시스템에서 Pub/Sub 한계는? | |||
| Redis 분산락 ↔ DB 트랜잭션 정합성 | Cache | 4 | ☐ | commit 실패 시 lock 해제 위험은? | |||
| LRU 캐시 구현 | DS-Algo | 5 | ☐ | HashMap+DoublyLinkedList 없이 구현 | |||
| 자료구조 직접 구현 (Stack/Queue/Heap) | DS-Algo | 5 | ☐ | 배열 기반 vs LinkedList 기반 차이 | |||
| 정렬·탐색 (Quick·Merge·Binary) | DS-Algo | 4 | ☐ | Quick Sort 최악 케이스는? | |||
| DFS / BFS | DS-Algo | 4 | ☐ | 최단 경로에 BFS 쓰는 이유 | |||
| TCP 3-way handshake + TIME_WAIT | Network | 4 | ☐ | TIME_WAIT 존재 이유 | |||
| HTTP/2 vs HTTP/1.1 | Network | 3 | ☐ | 멀티플렉싱이 해결하는 문제 | |||
| TCP vs UDP | Network | 3 | ☐ | 채팅 시스템엔 어느 쪽? 왜? | |||
| 대용량 트래픽 처리 시스템 설계 | System Design | 5 | ☐ | 채팅 1억 건/일 처리 시스템 | |||
| 모호 요구사항 구조화 프레임 | System Design | 5 | ☐ | "채팅 시스템 만들어라" 첫 질문 4-5개 | |||
| Spike 트래픽 + 큐 (SQS/Kafka) | System Design | 5 | ☐ | Consumer 비정상 종료 시 멱등성? | |||
| 메시지 순서 ↔ 실시간성 트레이드오프 | System Design | 4 | ☐ | 채팅방 메시지 순서 보장 방법 | |||
| 결제·정산 → 메신저 도메인 전이 | Domain | 3 | ☐ | 결제 정합성이 메시지 순서 보장으로? |
§0.3 갭 계산 + 우선순위 분류 (10분)
자동 룰:
- Gap = 요구 깊이 - 현재 수준
- **P1**: Gap ≤ -2 *AND* 카테고리 ∈ {OS, DB, DS-Algo, System Design}
- **P2**: Gap = -1 또는 (P1 조건 + 카테고리 ∈ {Network, Cache})
- **P3**: Gap = 0 또는 카테고리 = Domain
§0.4 P1 항목 5개 선정 (5분)
위에서 P1으로 분류된 항목 중 상위 5개 골라 학습 순서 결정. Part 1 (CS 딥다이브)에서 다룰 우선순위.
| # | P1 주제 | 학습 슬롯 (12:30-14:30 중) |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 | ||
| 4 | ||
| 5 |
---
Part 1 — 12:30-14:30 CS 딥다이브 P1 집중 (2h)
§0.4에서 선정한 P1 5개를 각 24분씩 집중. 학습 패턴:
1. 개념 읽기 (5분) — Day3 OS+DB 가이드 또는 인터넷 1차 자료
2. Feynman 작성 (5분) — 본인 언어로 한 단락 작성
3. 검증 질문 구술 (10분) — 매트릭스 검증 질문에 60초 PREP 답변. 타이머
4. 재평가 + 매트릭스 갱신 (4분) — 만족스러우면 현재 수준 +1, 모호하면 모호함 표시
보조 자료: [Day3 OS+DB 가이드](2026-05-23-cs-interview-day3-os-db.html) — 개념 정리용. Feynman은 본인 표현으로.
P1 항목 1 — 주제: ___________________
Feynman 작성:
> ___________________________________________________________
>
> ___________________________________________________________
검증 질문 답변 (60초 PREP):
- Point: ___________________
- Reason: ___________________
- Example: ___________________
- Point (한계): ___________________
재평가: 현재 수준 ___ → ___ (☐ 만족 / ☐ 모호 / ☐ 미완)
---
P1 항목 2 — 주제: ___________________
(같은 구조 반복 — 빈 칸 채우기)
---
P1 항목 3, 4, 5 — (동일 구조)
---
Part 2 — 14:30-16:30 CS 연계 라이브 코딩 (2h)
중요: 채널톡 1차 = 2시간 라이브 코딩. 바로 코딩 = 광탈. 요구사항 분석 → 설계 → 구현 → 트레이드오프 4단.
§2.1 모호 요구사항 질문 카드 7개 (5분 암기)
문제 받으면 반드시 4-5개 즉시 던질 것.
1. 사용자 정의: "사용자가 누구인가요?"
2. 규모 추정: "예상 RPS·동시 사용자·데이터 양은?"
3. 읽기/쓰기 비율: "읽기 위주? 쓰기 위주? 균형?"
4. 정합성 요구: "강한 일관성 vs 최종 일관성 구분?"
5. 성능 vs 정확성: "응답 속도 우선? 정확성 우선?"
6. 장애 대응 수준: "단일 인스턴스 장애 시 동작 정의? RPO/RTO?"
7. 확장성 미래: "10배·100배 성장 시 같은 설계여야?"
자가 테스트: 책 안 보고 5개 즉시 나오면 통과.
§2.2 자료구조 직접 구현 (50분, 2개 골라)
구현 1: LRU 캐시 (HashMap + DoublyLinkedList 없이)
```java
class LRUCache
private final int capacity;
// 본인 작성: 데이터 구조 + put + get + 동시성 처리
}
```
완성 시간: ___ 분 (목표 25분)
트레이드오프 한 줄: ___________________
구현 2: 스레드 세이프 큐 (예: BlockingQueue 직접)
```java
class ThreadSafeQueue
// 본인 작성: 동시성 메커니즘 선택 (synchronized vs Lock vs CAS) + 근거
}
```
완성 시간: ___ 분 (목표 25분)
트레이드오프 한 줄: ___________________
§2.3 모호 요구사항 라이브 설계 (50분, 1개 골라)
§2.1 질문 카드로 최소 4개 질문 → 가정 명시 → 설계. 코드 X, 데이터 모델 + 컴포넌트 다이어그램 + 핵심 동시성 처리.
주제 후보 (1개 선택)
A. 채팅방 메시지 읽음 처리 시스템
B. 대규모 푸시 발송 큐 시스템
C. 외부 메신저 채널(이메일/SMS/카카오) 통합 발송
D. 실시간 채팅 메시지 순서 보장
본인이 던진 질문 4개
- ☐ ___________________
- ☐ ___________________
- ☐ ___________________
- ☐ ___________________
가정 명시
- ___________________
- ___________________
설계 메모
- 데이터 모델: ___________________
- 컴포넌트: ___________________
- 동시성 처리: ___________________
- 병목 예상 지점: ___________________
- 트레이드오프 (A vs B 선택 근거 + 한계 방어): ___________________
---
Part 3 — 16:30-17:30 Raphael 모의 면접 (1h)
#study Slack에서 Raphael과 진행. CS 꼬리 질문 방어 시뮬레이션.
§3.1 진행 룰
- Raphael이 P1 5개 중 *3개를 무작위* 선택해 질문
- 각 질문 후 *꼬리 질문 3단* (표면→근거→확장) 강제
- 사용자 답변은 *PREP 60초* 디폴트
- Raphael은 *위험 패턴 즉시 정지* (narrative 재현·평가절하·수동·flattery·단정적 표현)
§3.2 면접 후 자가 평가
| 항목 | 통과 기준 |
|---|---|
| PREP 60초 호흡 | 30초 미만 답변 = 0회 |
| 트레이드오프 구조 ("A vs B → 선택 → 한계 방어") | 3회 이상 |
| 본인 7년 경험 인용 (결제·정산) | 질문 50% 이상 |
| 위험 패턴 4종 | 0회 |
| Raphael 정정 요구 횟수 | 3회 이하 |
---
Part 4 — 17:30-18:00 Narrative 압축 점검 (30분)
중요: v1 워크북 Part 1 Narrative(3h)는 과도. 압축해서 결제→CS 답변 연결 1-2개만 입에 붙임.
§4.1 핵심 연결 카드 2개
카드 1: 결제 정합성 → DB 격리수준
> "결제·정산에서 동시성 충돌 처리한 경험이 있어서, DB 격리수준과 락 메커니즘은 실 운영 감각으로 답변할 수 있습니다. 예를 들면 ___________________."
(빈 칸 본인 사례)
카드 2: 결제 트랜잭션 → 메신저 메시지 처리
> "결제 트랜잭션에서 멱등성·순서 보장을 다룬 경험이, 채널톡의 메시지 ack 중복·메시지 순서 같은 문제로 자연스럽게 옮겨갈 수 있다고 봅니다."
§4.2 AI 활용 60초 카드 (보강)
v1 §1.3에서 작성한 카드 재검토. "아키텍처 시뮬레이터" 결 유지하되 채널톡 CTO/리더가 강조한 "기초가 탄탄해야 어떤 기술이든 빠르게 적응" 결과 연결.
> "AI 도구를 도메인 학습 속도 가속에 썼습니다. 사내 토큰 1위였고, Claude Code 플레이북을 직접 설계해 운영했습니다. 새 도메인에 합류하면 기초 위에 빠르게 적응하는 능력을 보여드릴 수 있을 거라고 봅니다."
---
Part 5 — 18:00 자가 검증 + 매트릭스 갱신
§5.1 통과 기준
- ☐ 매트릭스 24행 모두 *현재 수준* 입력 (Part 0)
- ☐ P1 항목 5개 중 *최소 3개* 학습 + 매트릭스 점수 +1 이상
- ☐ 라이브 코딩 자료구조 2개 *완성* (Part 2)
- ☐ 모호 요구사항 설계 1개 *완성*
- ☐ 모의 면접 PREP 60초 통과
- ☐ Narrative 압축 카드 2개 *입에 붙음*
§5.2 매트릭스 점수 변화 기록
| P1 주제 | 시작 | 종료 | 변화 | 메모 |
|---|---|---|---|---|
§5.3 #study Slack 한 줄 보고
형식:
> "Day3 완료. 매트릭스 P1 N/5 +1, 라이브 코딩 M/2 완성. 다음 P1: ___ (5/24)."
---
복습 일정
| 단계 | 날짜 | 완료 |
|---|---|---|
| Day 0 (초학습) | 2026-05-23 | ☐ |
| Day 7 | 2026-05-30 | ☐ |
| Day 37 | 2026-06-29 | ☐ |
| Day 127 | 2026-09-27 | ☐ |
참고
- ⭐ [CS 인터뷰 준비 시스템 설계 advisory](../advisories/2026-05-22-cs-interview-prep-system-design.html) — 이 워크북의 *시스템 근거*
- [Day3 OS+DB 가이드](2026-05-23-cs-interview-day3-os-db.html) — Part 1 CS 딥다이브 보조 자료
- [Redis lock + DB transaction mismatch](2026-05-22-redis-lock-db-commit-mismatch.html) — Part 1 P1 후보 항목 보강
- [채널톡 D-4 전략 advisory (Manus + Gemini 1차)](../advisories/2026-05-22-channeltalk-interview-strategy.html) — 선행 자문
- [영속 룰: 외부 자문 격리](../../../.claude/projects/-Users-hangman-Workspace/memory/feedback_external_advisory_quarantine.md)
- HAN-271: silent fail 재발 이슈