👑
A-Z
, , — / .
📋 전체 학습 목차
+ GitHub +
— README GitHub
📋
- NestJS
- REST API
- Redis API 300ms → 40ms (85%)
- DAU 50
- PR 30%
💻 GitHub
- ( )
- ()
- 2~3
- /
- GitHub Stats
- (WHY )
- .env.example
- ( )
- CI (GitHub Actions)
📚
- NestJS + WebSocket
- JWT
- PostgreSQL
- Docker
- Railway/Render
- GraphQL + REST API
- Redis
- AWS ECS
- GitHub Actions CI/CD
- Kafka
- Kubernetes (EKS)
- Terraform IaC
- Prometheus
LeetCode
🏋 (90 )
- ,
- ,
- LeetCode Easy 50
- BFS/DFS
- LeetCode Medium 50
🏌 7
let left = 0, sum = 0;
for (let right = 0; right < n; right++) {
sum += arr[right];
while (sum > k) sum -= arr[left++];
}
const map = new Map();
for (let i = 0; i < nums.length; i++) {
const comp = target - nums[i];
if (map.has(comp)) return [map.get(comp), i];
map.set(nums[i], i);
}
const visited = new Set([start]);
while (queue.length) {
const node = queue.shift();
for (const next of graph[node]) {
if (!visited.has(next)) {
visited.add(next);
queue.push(next);
}
}
}
const dp = [0, 1];
for (let i = 2; i <= n; i++) {
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n]; // O(n) , O(n)
⌛
⚔️ Chapter 05
기술 면접 완전 정복 — CS 기초부터 실전 답변까지
"면접관이 실제로 원하는 답변은 암기가 아닌 이해에서 나옵니다"
🎯 기술 면접이란 무엇인가?
기술 면접은 단순한 지식 테스트가 아닙니다. 면접관은 여러분이 문제를 어떻게 분석하고 해결하는지를 보고 싶어합니다. 마치 요리 대회처럼, 재료(지식)도 중요하지만 요리하는 과정(사고방식)이 더 중요합니다.
OS, 네트워크, DB
API 설계, 보안
확장성, 가용성
📚 CS 기초 — 면접 최빈출 100문제 완전 정복
🔷 운영체제(OS) 핵심 면접 질문
→ 메모리 공간 완전 독립, 통신 비용 큼 (IPC 필요)
스레드 = 같은 주방에서 함께 요리하는 요리사들
→ 메모리 공간 공유, 통신 빠름, 동기화 문제 발생 가능
2. 컨텍스트 스위칭 비용 (프로세스 > 스레드)
3. 멀티프로세스 vs 멀티스레드 장단점
4. 실제 사용 예시 (Chrome 탭 = 프로세스, Node.js 이벤트 루프 = 단일 스레드)
→ 아무도 움직이지 못하는 영원한 대기 상태
발생 조건 4가지 (Coffman Conditions):
1. 상호 배제 (Mutual Exclusion)
2. 점유 대기 (Hold and Wait)
3. 비선점 (No Preemption)
4. 순환 대기 (Circular Wait)
해결 방법:
• 예방: 4가지 조건 중 하나 제거
• 회피: Banker Algorithm
• 탐지 및 회복: Resource Allocation Graph
→ 내부 단편화 발생, 외부 단편화 없음
세그멘테이션 = 논리적 단위(함수, 배열 등)로 분할
→ 외부 단편화 발생, 내부 단편화 없음
현대 OS: 페이징 + 세그멘테이션 혼합 사용
🔷 네트워크 핵심 면접 질문
→ 받았는지 확인 (ACK), 순서 보장, 재전송, 연결형
→ 사용: HTTP, HTTPS, 이메일, 파일 전송
UDP = 일반 우편
→ 보냈는지 확인 X, 빠름, 비연결형
→ 사용: 실시간 스트리밍, 게임, DNS, VoIP
3-Way Handshake (TCP 연결):
Client: SYN → Server: SYN-ACK → Client: ACK
HTTPS = HTTP + TLS/SSL 암호화
TLS Handshake 과정:
1. Client Hello (지원 암호화 목록 전송)
2. Server Hello + Certificate 전송
3. Client가 공개키로 Pre-Master Secret 암호화 전송
4. 양측 세션키 생성 → 대칭키 암호화 통신 시작
HTTP/2 개선점:
• 멀티플렉싱 (여러 요청 동시 처리)
• 헤더 압축 (HPACK)
• 서버 푸시
• 바이너리 프레이밍
도메인 이름(google.com) → IP 주소(142.250.x.x) 변환
조회 순서:
1. 브라우저 캐시 확인
2. OS 캐시 확인 (hosts 파일)
3. Resolver(ISP DNS 서버) 조회
4. Root DNS → TLD DNS(.com) → Authoritative DNS
5. IP 주소 반환 + 캐시 저장 (TTL 기간)
🔷 데이터베이스 핵심 면접 질문
→ 전체 페이지를 하나씩 찾지 않고 목차에서 빠르게 위치 파악
B-Tree 인덱스 구조:
• Root Node → Branch Node → Leaf Node (실제 데이터 포인터)
• 균형 트리: 모든 Leaf가 같은 깊이 → O(log N) 검색
인덱스 사용 시 주의사항:
• WHERE, JOIN, ORDER BY 컬럼에 적용
• 카디널리티 높은 컬럼 선택 (성별 X, 이메일 O)
• 과도한 인덱스 = INSERT/UPDATE/DELETE 성능 저하
• Covering Index: 인덱스만으로 쿼리 완성
→ 은행 이체: 출금 성공했는데 입금 실패 불가
C - Consistency (일관성): 트랜잭션 전후 DB 상태 일관
→ 제약조건 항상 유지 (잔액 마이너스 불가)
I - Isolation (격리성): 동시 트랜잭션 서로 간섭 없음
→ 격리 수준: READ UNCOMMITTED < READ COMMITTED
< REPEATABLE READ < SERIALIZABLE
D - Durability (지속성): 커밋된 트랜잭션은 영구 저장
→ 시스템 장애에도 데이터 보존 (WAL, Redo Log)
예시: 10명의 사용자 조회 → 각 사용자 주문 목록 조회
→ 1 + 10 = 11번의 쿼리 실행 (최악의 경우 1+1000!)
해결 방법:
1. JOIN (EAGER LOADING): 한 번에 모든 데이터 조회
SELECT * FROM users JOIN orders ON users.id = orders.user_id
2. Batch Loading: 사용자 ID 목록으로 한 번에 조회
SELECT * FROM orders WHERE user_id IN (1,2,3...10)
3. JPA: @EntityGraph, fetch join, BatchSize 어노테이션
4. DataLoader (GraphQL): 배치 + 캐싱
🔐 보안 면접 핵심 질문
입력: admin' OR '1'='1
쿼리: SELECT * FROM users WHERE id='admin' OR '1'='1'
→ 항상 TRUE → 모든 유저 데이터 노출!
// 방어: Prepared Statement 사용
// ❌ 위험한 코드
query("SELECT * FROM users WHERE id='" + userId + "'")
// ✅ 안전한 코드
query("SELECT * FROM users WHERE id=?", [userId])
→ 입력값을 데이터로만 취급, SQL 구조 변경 불가
댓글에 입력: <script>document.cookie='hacked';</script>
→ 다른 사용자가 해당 댓글 보면 스크립트 실행!
방어 방법:
1. 출력 인코딩 (< → <, > → >)
2. CSP (Content Security Policy) 헤더 설정
3. HttpOnly 쿠키 (JS 접근 불가)
4. DOMPurify 등 라이브러리 사용
Header: 알고리즘 정보
Payload: 사용자 정보 (Base64 인코딩, 암호화 X!)
Signature: 서버 비밀키로 서명
⚠️ 보안 주의사항:
1. Payload에 민감정보(비밀번호, 카드번호) 절대 저장 금지
2. Access Token은 짧게 (15분), Refresh Token은 길게
3. LocalStorage 저장 위험 (XSS 취약), HttpOnly Cookie 권장
4. alg:none 취약점 주의 (서명 검증 강제)
5. Refresh Token Rotation으로 탈취 대응
🏗️ Chapter 06
시스템 설계 면접 완전 정복 — 대규모 서비스 설계 실전
"시스템 설계 면접은 정답이 없습니다. 트레이드오프를 논하는 것이 핵심입니다"
🎯 시스템 설계 면접 접근 프레임워크 (RESHADED)
• 읽기 vs 쓰기 비율?
• 지연시간 요구사항?
• 가용성 목표 (99.9%? 99.99%?)
• 데이터 보존 기간?
• 저장 용량 추정
• 네트워크 대역폭 추정
• 캐시 메모리 추정
• 서버 대수 추정
• 주요 컴포넌트 식별
• 데이터 흐름 정의
• DB 선택 (SQL vs NoSQL)
• 기본 아키텍처 그림
• 캐싱 전략
• 데이터 파티셔닝
• 장애 대응 방안
• 확장성 개선
💡 실전 설계 문제: URL 단축 서비스 (bit.ly 클론)
• DAU: 100만 명, 하루 1억 회 조회
• 쓰기:읽기 = 1:100 (읽기 매우 많음)
• URL 만료: 5년
• 가용성: 99.9% 이상
📐 용량 추정:
• 초당 쓰기 QPS: 1M / 86400 ≈ 12 QPS
• 초당 읽기 QPS: 12 × 100 = 1,200 QPS
• 5년 URL 수: 12 × 86400 × 365 × 5 ≈ 2억 개
• 저장 공간: 2억 × 500바이트 = 100GB
🏗️ 핵심 설계:
1. 단축 키 생성: Base62 인코딩 (a-z, A-Z, 0-9) → 7자리 = 62^7 = 3.5조 개 가능
2. DB: 쓰기용 MySQL + 읽기용 Redis 캐시
3. 캐시: 20% 핫 URL이 80% 트래픽 → LRU 캐시로 1일 메모리: 1200 × 86400 × 0.2 × 100B = 2GB
4. API:
POST /api/v1/data/shorten { longUrl }
GET /api/v1/data/{shortUrl}
5. 리디렉션: 301 (영구, 브라우저 캐시) vs 302 (임시, 항상 서버 거침)
→ 분석 기능 필요 시 302 선택
💡 실전 설계 문제: 채팅 서비스 (Slack/KakaoTalk)
핵심 기술 선택:
1. 실시간 통신: WebSocket (HTTP는 단방향, WS는 양방향)
- Long Polling: 최대 30초 대기 후 응답 (비효율)
- Server-Sent Events: 서버→클라이언트만 가능
- WebSocket: 양방향 실시간 ✅
2. 메시지 저장 DB:
- 쓰기 많음 + 조회 패턴 단순 → Cassandra (NoSQL) 적합
- 최신 메시지 캐시 → Redis
3. 메시지 전달 보장:
- 각 메시지에 고유 ID (Snowflake: 타임스탬프+서버ID+시퀀스)
- ACK 기반 재전송 메커니즘
- 오프라인 유저: Push Notification (APNs/FCM)
4. 대규모 채팅방:
- Fan-out 방식: 각 참여자에게 메시지 복사 (소규모 적합)
- Fan-out on Read: 읽을 때 조합 (대규모 적합)
🏢 Chapter 07
국내외 주요 기업 기술 스택 및 면접 전략
"각 회사의 기술 스택과 문화를 이해하면 면접 준비가 달라집니다"
🇰🇷 국내 주요 IT 기업 분석
| 회사 | 주요 기술 스택 | 면접 특징 | 연봉 수준 |
|---|---|---|---|
| 카카오 | Java/Kotlin, Spring, Kafka, Redis, MySQL | 코딩테스트(카카오 공채), CS 심층 질문, 문화 적합성 | 신입 5,000~7,000만원 |
| 네이버 | Java, Spring, MySQL, Hadoop, Spark | 서류→코딩→기술면접→임원, 대규모 트래픽 경험 중시 | 신입 5,000~6,500만원 |
| 라인 | Java, Spring Boot, gRPC, MySQL, Redis | 글로벌 서비스, 영어 면접 가능, 시스템 설계 중시 | 신입 5,500~7,000만원 |
| 쿠팡 | Java, Kotlin, Spring, AWS, Kubernetes | Amazon 스타일, OLP 원칙, 높은 코딩 난이도 | 신입 6,000~8,000만원 |
| 토스(Viva) | Kotlin, Spring, Kafka, Redis, AWS | 과제 전형 중심, 실용성 중시, 빠른 기술 습득력 | 신입 5,000~7,000만원 |
| 당근마켓 | Go, Ruby on Rails, PostgreSQL, Redis | 소규모 팀, 자율성 높음, 주도적 개발 경험 중시 | 신입 4,500~6,000만원 |
🌍 외국계 기업 (국내 지사/원격) 분석
| 회사 | 면접 프로세스 | 핵심 준비사항 |
|---|---|---|
| 코딩 4~5회 + 시스템 설계 1~2회 + 행동 면접 | LeetCode Hard, STAR 방식 답변, 시스템 설계 책 정독 | |
| Amazon | OA + 5~6라운드 (코딩+시스템설계+행동면접) | 16 Leadership Principles 암기 + 실제 경험 STAR 준비 |
| Microsoft | 전화 스크리닝 + 4~5회 on-site (코딩+설계+행동) | Azure 경험, OOP 설계 원칙, .NET/C# 또는 다양한 언어 |
| Meta | 코딩 2회 + 시스템 설계 1회 + 행동 면접 | 그래프/DP 알고리즘, 분산 시스템, Bootcamp 문화 |
💰 Chapter 08
연봉 협상 완전 마스터 — 최대한 받는 법
"협상은 요청이 아닌 근거 제시입니다"
📊 2024 백엔드 개발자 연봉 현황 (국내)
| 경력 | 하위 25% | 중위 50% | 상위 25% | 상위 10% |
|---|---|---|---|---|
| 신입(0년) | 3,200만원 | 4,000만원 | 5,500만원 | 7,000만원+ |
| 2~3년차 | 4,500만원 | 5,500만원 | 7,000만원 | 9,000만원+ |
| 4~6년차 | 6,000만원 | 8,000만원 | 1억원 | 1.3억원+ |
| 7~10년차 | 8,000만원 | 1.1억원 | 1.5억원 | 2억원+ |
💡 연봉 협상 실전 스크립트
"최대한 많이 주세요" → 비전문적
"경쟁사가 얼마 줬어요" → 협박처럼 들릴 수 있음
"생활비가 필요해서요" → 회사에 상관없는 개인 사정
([직군] [경력] 기준 OOO만원~OOO만원 수준임을 확인했습니다.
저는 [핵심 기술/성과]를 보유하고 있어서
OOO만원을 희망합니다. 협의 여지가 있으신가요?"
🚀 Chapter 09
신입 vs 이직자 차별화 전략 — 나만의 강점 만들기
"신입은 가능성을, 이직자는 검증된 결과를 어필하세요"
🆕 신입 개발자 취업 전략
✅ 신입의 강점 어필 포인트
1. 최신 기술 습득력
→ "GPT API 활용 프로젝트 완성"
→ "Spring Boot 3.x, Java 21 LTS 사용"
2. 열정과 성장 의지
→ GitHub 잔디 꾸준히 심기
→ 기술 블로그 운영 (꾸준히)
→ 오픈소스 기여 경험
3. 실전 프로젝트 임팩트
→ "사용자 100명 실제 서비스 운영"
→ "API 응답시간 50% 개선"
→ "도커로 배포 자동화 구현"
⚠️ 신입이 피해야 할 실수
1. 토이 프로젝트만 나열
→ CRUD 게시판만 있으면 차별화 X
→ 트래픽, 성능, 배포까지 다뤄야
2. 기술 나열식 자기소개
→ "Java, Python, Spring 가능합니다"
→ 어떤 문제를 해결했는지 서술해야
3. GitHub README 부실
→ 프로젝트 설명 없으면 면접관이 파악 불가
→ 아키텍처 다이어그램, 기술 선택 이유 필수
📋 신입 취업 타임라인 (6개월 계획)
자료구조/알고리즘
+ 코딩테스트 시작
+ 지원 시작
모의 면접
재도전 전략 수립
🔄 이직자 전략 — 3년차 이상 필독
기술 부채가 심해 개발보다 유지보수에 80% 시간 소모 ✓
연봉 인상이 인플레이션보다 낮을 때 ✓
팀 리더십/문화가 성장을 막을 때 ✓
새로운 도메인/기술에 도전하고 싶을 때 ✓
⚠️ 이직 후회 방지 3원칙:
1. 도망치는 이직 X → 향하는 이직 O
2. 연봉만 보고 이직 시 6개월 내 후회율 60%
3. 인터뷰에서 전 회사 욕 절대 금지
📊 이직 성공 이력서의 숫자화 예시
| ❌ 일반적 서술 | ✅ 성과 중심 서술 |
|---|---|
| API 서버 개발 및 유지보수 | RESTful API 30개 설계/구현, 평균 응답시간 200ms → 80ms 개선 (60% 향상) |
| 데이터베이스 최적화 | 슬로우 쿼리 15개 튜닝으로 DB CPU 사용률 70% → 30% 감소, 월 클라우드 비용 200만원 절약 |
| 모니터링 시스템 구축 | Grafana/Prometheus 도입으로 장애 탐지 시간 30분 → 3분으로 단축 (90% 개선) |
| MSA 전환 참여 | 모놀리식→MSA 전환 프로젝트 리드, 배포 주기 4주→1주로 단축, 서비스 독립 배포 달성 |
📈 Chapter 10
백엔드 개발자 성장 로드맵 — 시니어까지 가는 길
"기술만 잘하면 시니어가 되나요? 아닙니다. 영향력을 키워야 합니다"
🗺️ 레벨별 성장 로드맵
핵심 스킬: 기본 CRUD API, 테스트 코드 작성, Git 사용, 코드 리뷰 받기
성장 지표: 코드 리뷰 반영률, PR 당 리뷰 코멘트 수 감소
추천 공부: Clean Code, 이펙티브 자바, 테스트 주도 개발
핵심 스킬: 시스템 설계, 성능 최적화, 코드 리뷰 제공, 주니어 멘토링
성장 지표: 팀 배포 빈도, 버그 재발률, 기술 부채 감소
추천 공부: 가상 면접 사례로 배우는 대규모 시스템 설계, DDIA
핵심 스킬: 아키텍처 설계, 기술 로드맵 제시, 채용/면접, 스테이크홀더 커뮤니케이션
성장 지표: 팀 성과, 아키텍처 결정의 비즈니스 임팩트
추천 공부: Staff Engineer (책), 개발자 원칙, CTO로의 성장 경로
🎓 반드시 읽어야 할 필독서 & 자료
📚 기초 다지기
- Clean Code - Robert C. Martin
- 이펙티브 자바 - Joshua Bloch
- Head First 디자인 패턴
- HTTP 완벽 가이드
📚 시스템 설계
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 데이터 중심 애플리케이션 설계 (DDIA)
- 마이크로서비스 패턴
- 쿠버네티스 인 액션
🖥️ 온라인 플랫폼
- LeetCode (코딩테스트)
- System Design Primer (GitHub)
- Educative.io (Grokking 시리즈)
- Udemy - Java/Spring 실전 강의
📝 기술 블로그
- 카카오 테크 블로그
- 네이버 D2
- 토스 테크 블로그
- 쿠팡 기술 블로그
📋 취업/이직 최종 체크리스트
📄 서류 준비
☐ 각 항목에 숫자 지표 포함
☐ GitHub README 완성도 확인
☐ 포트폴리오 사이트 또는 PDF
☐ 블로그/기술 글 3개 이상
💻 기술 준비
☐ CS 기초 30문제 예상 답변 작성
☐ 내 프로젝트 기술 선택 이유 정리
☐ 시스템 설계 2~3개 연습
☐ 모의 면접 3회 이상 (녹화 권장)
🏢 회사 리서치
☐ 주요 서비스 직접 사용해보기
☐ 최근 채용 공고 기술 스택 분석
☐ 현직자 LinkedIn/커피챗 연락
☐ 회사 문화 인터뷰 질문 준비
🎯 멘탈 관리
☐ 1일 1커밋 루틴 유지
☐ 개발 커뮤니티 참여 (오픈카톡 등)
☐ 번아웃 예방 (주 1회 쉬는 날)
☐ 취업 성공 일기 작성 (작은 성공 기록)
BackendDevGuide0014 완성!
백엔드 개발자 취업과 이직 완전 가이드 A-Z
이 가이드를 완독한 당신은 이미 상위 10% 준비된 개발자입니다.
자신감을 갖고 면접에 도전하세요! 💪