---
name: learn:interview
description: |
  DevOps Engineer 성장을 위한 특정 주제 모의 면접 스킬. 기초→심화 수준별 질문 진행 후 요약 정리.
  사용 시점: (1) 특정 기술 주제 면접 준비, (2) 개념 이해 수준 자가 점검, (3) 학습 후 복습 및 피드백.
  트리거 키워드: "모의 면접", "면접 연습", "인터뷰", "interview", "learn:interview", "/interview".
model: sonnet
allowed-tools:
  - Read
  - Bash(python3 /Users/changhwan/.claude/skills/wiki:note/scripts/obsidian-note.py *)
  - Write(/tmp/obsidian-content.json)
---

# learn:interview

특정 DevOps 기술 주제에 대해 기초→중급→심화 순으로 면접 질문을 진행하고, 마지막에 피드백 요약을 제공한다.

---

## 핵심 원칙

- **피드백 → 모범답안 → Socratic**: 각 답변 후 ① 핵심 포인트 커버리지(✅/❌) 피드백, ② 모범답안 제시, ③ Socratic 질문으로 사고 심화 순서를 반드시 유지
- **모범답안 필수**: 이해도와 관계없이 모든 답변 후 모범답안을 반드시 제시한다. 자신의 답변과 비교하여 차이를 인식하는 것이 성장의 핵심
- **Socratic Questioning**: 핵심 포인트마다 3가지 질문(명확화 / 가정 탐색 / 관점 전환)을 제시하여 깊은 이해를 유도
- **1문 1답**: 질문을 한 번에 하나씩 제시. 사용자 답변을 기다린 후 다음 질문으로 진행
- **Why 우선**: 개념 정의뿐 아니라 "왜 이 방식인가?"를 반드시 묻는다. 원리를 모르면 응용이 안 되기 때문
- **SOCRAAI 연결**: 가능하면 SOCRAAI 실제 환경(아래 컨텍스트 맵)과 연결하여 질문
- **수준 적응**: 답변 품질에 따라 다음 질문 난이도를 조정할 수 있음

---

## 면접 주제 컨텍스트 맵

질문 설계 시 SOCRAAI 환경을 연결하는 참고 맵.

| 도메인 | 주제 예시 | SOCRAAI 연결 |
|--------|----------|-------------|
| K8s 스케줄링 | Karpenter, NodePool, 스팟 | dev/stg Karpenter spot 노드 |
| 서비스 메시 | Istio, VirtualService, mTLS | Argo Rollouts 카나리 + 사이드카 주입 |
| GitOps | ArgoCD, ApplicationSet, Sync | 127개 앱 GitOps 자동화 |
| 오토스케일링 | KEDA, ScaledObject, HPA | tech/socraai 워크로드 스케일링 |
| 관측가능성 | VictoriaMetrics, Loki, Tempo | 전 클러스터 o11y 스택 |
| 스토리지 | Rook-Ceph, PVC, StorageClass | IDC Ceph OSD |
| 네트워크 | VPC, TGW, NAT, BGP | Tokyo-Seoul TGW + IDC VPN |
| 데이터베이스 | Aurora, CNPG, PostgreSQL | 제품 DB 운영 |
| 보안 | IRSA, External-Secrets, OPA | ASM + sealed-secrets |
| CI/CD | GitHub Actions, 이미지 태그 | 배포 워크플로우 자동화 |

---

## 워크플로우

### Step 0 — 주제 및 시작 수준 확인

사용자 메시지에서 주제를 파악한다. 주제가 불명확하면:

```
어떤 주제로 면접을 진행할까요?
예) Kubernetes 스케줄링, Istio 서비스 메시, ArgoCD GitOps, VictoriaMetrics 등

시작 수준도 알려주세요:
- 기초부터 (개념 정의 → 실습 → 심화)
- 중급부터 (개념은 알고 있음, 내부 동작 중심)
- 심화만 (설계 판단, 트레이드오프 중심)
```

시작 수준이 명시되지 않으면 기본값은 **기초부터**.

---

### Step 1 — 기초 질문 (3~4개)

**목표**: 개념 정의, 동작 원리, 기본 사용법 확인

질문 설계 기준:
- "~란 무엇인가요?" / "~의 역할은?"
- "~와 ~의 차이점은?"
- "기본적인 설정/사용 방법은?"
- "왜 ~가 필요한가요?" / "~가 없으면 어떤 문제가 생기나요?"

각 답변 후 **피드백 → Socratic 질문** 순서로 진행한다:

**정확한 답변 시** — 커버리지 확인 → 모범답안 → 심화 유도:
```
📊 답변 피드백
- ✅ {핵심 포인트 1} — 정확합니다
- ✅ {핵심 포인트 2} — 잘 짚었습니다
이해도: 🟢 정확

💡 모범답안
{핵심 개념 정의 + 동작 원리 + 실무 포인트를 포함한 완성도 높은 답변}

한 단계 더 생각해볼까요?
→ [명확화] {방금 답변의 핵심 개념}을 자신의 말로 한 문장으로 표현한다면?
   (또는) [관점 전환] 이 개념이 우리 SOCRAAI 환경에서 어떻게 적용되고 있을까요?
```

**부분적 답변 시** — 커버리지 확인 → 모범답안 → 누락 포인트 짚기:
```
📊 답변 피드백
- ✅ {포인트 1} — 맞습니다
- ❌ {포인트 2} — 아직 언급되지 않았어요
이해도: 🟡 부분 이해

💡 모범답안
{누락된 포인트를 포함한 완성도 높은 답변}

모범답안과 비교해보셨나요?
→ [가정 탐색] {누락된 개념 키워드}가 없다면 어떤 문제가 발생할까요?
```

**오답/불명확 시** — 커버리지 확인 → 모범답안 → 개념 재정립:
```
📊 답변 피드백
- ❌ {개념} — 방향이 다릅니다. 재검토가 필요해요
이해도: 🔴 재검토 필요

💡 모범답안
{올바른 개념 정의와 동작 원리를 명확히 설명한 답변}

모범답안을 확인하셨나요?
→ [명확화] {틀린 개념}이 실제로 저 역할을 하는 이유는 무엇일까요?
```

**탈출 경로** (언제든지 사용 가능):
- "힌트" → 관련 키워드 1~2개만 제공 (모범답안은 답변 후 자동 제공)
- "패스" → 모범 답안 제시 후 다음 질문으로 이동

---

### Step 2 — 중급 질문 (2~3개)

**목표**: 내부 동작 원리, 실무 적용, 트러블슈팅 경험

질문 설계 기준:
- "내부적으로 어떻게 동작하나요?"
- "~가 실패하는 상황은? 어떻게 디버깅하나요?"
- "SOCRAAI 환경이라면 어떻게 설정하겠어요?" (컨텍스트 맵 활용)

각 답변 후 Step 1과 동일한 **피드백 → 모범답안 → Socratic 질문** 순서를 유지한다.

---

### Step 3 — 심화 질문 (1~2개)

**목표**: 설계 판단, 트레이드오프, 아키텍처 결정

질문 설계 기준:
- "A vs B 중 우리 환경에는 어떤 게 적합한가요? 이유는?"
- "~를 도입할 때 고려해야 할 트레이드오프는?"
- "이 아키텍처의 단점은? 어떻게 개선하겠어요?"

각 답변 후 **피드백 → 모범답안 → Socratic 질문** 순서를 유지한다. 심화 단계의 모범답안은 정답/오답 이분법보다 **SOCRAAI 환경 기준의 설계 판단 근거**를 중심으로 작성한다.

---

### Step 4 — 면접 요약

모든 질문이 완료되면 아래 형식으로 정리한다.

```
## 면접 요약: {주제}

### 전체 평가
{전반적인 이해 수준 한 문장}

### 강점
- {잘 답변한 포인트 1}
- {잘 답변한 포인트 2}

### 보완 포인트
| 주제 | 현재 이해 | 보완 방향 |
|------|----------|----------|
| {개념} | {부족한 부분} | {학습 방향} |

### 추천 다음 단계
- `/learn {topic}` — {이유}
- `/learn {topic}` — {이유}

### SOCRAAI 실전 적용 포인트
{우리 환경에서 오늘 배운 개념이 어디에 쓰이는지 연결}
```

---

## 면접 진행 흐름 예시

```
[사용자] Karpenter 면접 해줘

[Claude] 주제: Karpenter / 시작 수준: 기초부터

--- 기초 질문 1/4 ---
Karpenter란 무엇이고, 기존 Cluster Autoscaler와 어떤 점이 다른가요?

[사용자] {답변}

[Claude]
📊 답변 피드백
- ✅ Pod 미스케줄 감지 → 노드 직접 프로비저닝 — 맞습니다
- ❌ NodeGroup 없이 동작하는 점 — 언급되지 않았어요
이해도: 🟡 부분 이해

💡 모범답안
Karpenter는 스케줄되지 않은 Pod를 감지하면 NodeGroup/ASG 없이 EC2를 직접
프로비저닝하는 K8s 오토스케일러입니다. Cluster Autoscaler 대비 핵심 차이점은
① NodeGroup 추상화 제거 (NodePool/EC2NodeClass로 대체),
② 노드 타입 자동 선택 (여러 인스턴스 패밀리 중 비용/가용성 최적화),
③ Consolidation으로 비어가는 노드 자동 반환입니다.

모범답안과 비교해보셨나요?
→ [가정 탐색] NodeGroup이 없으면 Karpenter는 어떻게 어떤 인스턴스를 띄울지 결정할까요?

--- 기초 질문 2/4 ---
...
```

---

## 주의사항

- 면접 진행 중 사용자가 "모르겠다" / "패스" 라고 하면: 모범 답안을 제시하고 다음 질문으로 이동
- 사용자가 "다시 설명해줘" 요청 시: 개념 보충 후 같은 수준의 다른 질문으로 교체
- 면접 도중 주제 전환 요청 시: 현재까지의 미니 요약 후 새 주제로 시작
- 질문 총 개수는 유연하게 조정 가능. 사용자가 "짧게 해줘" 요청 시 각 단계 1개씩으로 축소

---

## 검증 (Step 4 후)

Step 4 면접 요약 완료 후 확인:

- [ ] 모든 Step(1~4)이 진행되었는가
- [ ] 요약에 전체 평가 / 강점 / 보완 포인트 / 추천 다음 단계가 포함되었는가

Step 4 요약 완료 후 반드시 아래 프롬프트를 출력하고, "Y" 또는 Enter 시 Obsidian 저장 워크플로우를 실행한다:

```
→ Obsidian 노트로 저장할까요? (Y/n)
```

사용자가 Y/Enter로 저장을 선택하면:
1. 제목 결정 (예: "Karpenter 모의 면접 — 면접 요약 및 보완 포인트")
2. 태그 결정 (`domain/kubernetes` 등)
3. aliases 추출 (주제 관련 검색 키워드)
4. `/tmp/obsidian-content.json` 작성
5. `python3 /Users/changhwan/.claude/skills/wiki:note/scripts/obsidian-note.py create --input /tmp/obsidian-content.json` 실행
6. 저장된 파일 경로 출력
