취업 준비 과정에서 자주 접하게 되는 CS 주제를 매주 하나씩 학습하고, 학습한 내용을 꾸준히 기록하는 것을 목표로 합니다.
단순히 내용을 정리하는 것에서 끝나지 않고, 다른 스터디원의 글을 읽고 질문하거나 서로의 생각을 공유하면서 함께 학습합니다.
스터디 전반부에는 Frontend와 Backend가 함께 공통 CS를 학습하고, 후반부에는 각 직군에서 중요하게 다루는 주제를 중심으로 심화 학습을 진행합니다.
| 이름 | 개인 브랜치 |
|---|---|
| 유용선 | yongseon-yoo |
| 정푸름 | pureum-jung |
| 박유민 | yumin-park |
| 성태경 | taegyeong-sung |
| 이경준 | gyeongjun-lee |
| 박윤지 | yunji-park |
| 김예원 | yewon-kim |
| 임세윤 | seyun-lim |
| 이예나 | yena-lee |
| 이재현 | jaehyeon-lee |
| 이윤지 | yunji-lee |
| 고경수 | gyeongsu-ko |
| 강서현 | seohyeon-kang |
| 이준교 | junkyo-lee |
매주 스터디장이 해당 회차의 주제와 필수 학습 키워드를 공유합니다.
스터디원은 해당 키워드를 중심으로 개별 학습을 진행한 뒤, 학습한 내용을 정리하여 GitHub Organization에 PR을 작성합니다.
각자 Issue로 등록된 해당 주차 주제를 확인하고, 본인의 개인 브랜치(참여 멤버 표 참고)에서 학습 내용을 정리한 뒤 개인 브랜치으로 PR을 올리고, 리뷰가 끝나면 머지합니다.
Frontend와 Backend가 동일한 공통 CS 주제를 학습합니다.
각 주차에는 공통 학습 키워드와 함께 Backend / Frontend 선택 심화 키워드가 제공됩니다.
- 공통 키워드: 모두 학습
- 직군별 심화 키워드: 본인의 직군 또는 관심 분야에 따라 자유롭게 선택하여 추가 학습
모든 키워드를 백과사전처럼 정리하기보다는, 기본 개념을 이해한 뒤 본인이 중요하다고 생각하거나 관심 있는 내용을 조금 더 깊게 학습하는 것을 권장합니다.
Backend와 Frontend가 각 직군에서 중요하게 다루는 주제를 중심으로 직군별 심화 학습을 진행합니다.
작성한 PR 링크를 해당 회차의 Notion 페이지에 공유합니다.
이름 | 직군 | PR 링크 | 리뷰 완료 여부
Notion 페이지를 통해 매주 학습 및 리뷰 진행 상황을 함께 확인합니다.
다른 스터디원이 작성한 PR을 읽어보고 서로 질문과 의견을 나눕니다.
단순히 내용을 확인하는 것에서 끝나지 않도록, 매주 최소 1명의 PR을 리뷰합니다.
리뷰에서는 아래와 같은 내용을 자유롭게 작성할 수 있습니다.
- 읽으면서 궁금했던 내용
- 이해하기 어려웠던 부분
- 추가로 찾아본 내용
- 다른 관점이나 의견
- 면접에서 나올 것 같은 질문 또는 꼬리질문
공통 CS를 학습하는 1~7주차에는 Frontend와 Backend가 서로의 PR을 리뷰할 수 있도록 섞어서 진행하고, 직군별 심화 학습이 시작되는 8~13주차에는 같은 직군을 중심으로 리뷰합니다.
| 주차 | 구분 | 공통 / 메인 주제 | Backend 심화 | Frontend 심화 |
|---|---|---|---|---|
| 1주 | 공통 | 자료구조 / 시간복잡도 Big-O, Array, LinkedList, Stack, Queue, Hash Table, Tree, Heap |
Java Collection Framework, HashMap 내부 구조, ConcurrentHashMap | JS Array/Object/Map/Set, 배열 연산의 시간복잡도, 불변성 |
| 2주 | 공통 | OS - Process / Thread / 동시성 Process, Thread, Context Switching, 동시성/병렬성, Race Condition, Mutex/Semaphore |
Java Thread, Thread Pool, synchronized, Atomic, WAS Thread | JS Single Thread, Web Worker, 브라우저 Multi-Process 구조 |
| 3주 | 공통 | OS - Memory / Virtual Memory Memory 구조, Stack/Heap, Virtual Memory, Paging, Page Fault |
JVM Runtime Data Area, Heap/Stack, GC | JS Memory Heap, Call Stack, Garbage Collection, Memory Leak |
| 4주 | 공통 | Network OSI 7 Layer/TCP-IP, IP, TCP/UDP, 3-way/4-way Handshake, DNS, Port |
Socket, Server Connection 관리, Connection Timeout | 브라우저 Network 요청, WebSocket, SSE |
| 5주 | 공통 | HTTP / HTTPS HTTP, Stateless, Method, Status Code, HTTP/1.1·2·3, HTTPS, TLS |
Keep-Alive, REST API, Connection/Timeout | HTTP Cache, Fetch/Axios, Resource Loading |
| 6주 | 공통 | Database RDB/NoSQL, PK/FK, 정규화, JOIN, Index, B+Tree |
Composite/Covering Index, Query Plan, EXPLAIN, Query 최적화 | Server State, API 데이터 관리, Client Cache와 서버 데이터 정합성 |
| 7주 | 공통 | Web Security / 인증 SOP, CORS, XSS, CSRF, 인증/인가, Cookie/Session, JWT, OAuth |
Spring Security, JWT 검증, Refresh Token, OAuth 서버 처리 | Preflight, Cookie 옵션, Token 저장 방식, OAuth Redirect |
| 8주 | 직군 심화 | - | Java / JVM JVM/JDK/JRE, Generic, Collection, Exception, JVM Architecture, Class Loader, GC |
JavaScript Core Scope, Hoisting, Closure, this, Prototype, Execution Context |
| 9주 | 직군 심화 | - | Spring Core IoC/DI, Bean, BeanFactory, ApplicationContext, BeanDefinition, Bean Lifecycle, Proxy |
비동기 / Event Loop Call Stack, Web API, Event Loop, Promise, async/await, Microtask/Macrotask |
| 10주 | 직군 심화 | - | JPA / 영속성 컨텍스트 Entity Lifecycle, 1차 Cache, Dirty Checking, Flush, Lazy/Eager, N+1 |
Browser / Rendering DOM, CSSOM, Render Tree, Critical Rendering Path, Layout, Paint, Composite |
| 11주 | 직군 심화 | - | Transaction / 동시성 ACID, Isolation Level, Lock, Deadlock, 낙관적/비관적 Lock, Transaction Propagation |
DOM / Rendering 최적화 Reflow, Repaint, Virtual DOM, Reconciliation, React Rendering |
| 12주 | 직군 심화 | - | Redis / Cache Local/Distributed Cache, Redis, TTL, Cache Aside, Cache Invalidation, Distributed Lock |
Rendering Architecture SPA/MPA, CSR/SSR/SSG, Hydration, Server/Client Component |
| 13주 | 직군 심화 | - | Scale-out / Backend Architecture Scale-up/out, Load Balancing, Stateless Server, Replication, MQ, Sync/Async |
Web Performance / Cache Browser Cache, Cache-Control, Lazy Loading, Code Splitting, Web Vitals, Debounce/Throttle |
| 14주 | 종합 | CS + 직군별 모의면접 | Java / Spring / JPA / DB / Redis / Architecture | JavaScript / Browser / React / Rendering / Web Performance |
Frontend와 Backend가 개발자로서 공통적으로 알아야 하는 CS 기반을 함께 학습합니다.
공통 CS 학습
↓
기본 개념 이해
↓
직군별 선택 심화
↓
PR 작성 및 상호 리뷰
직군별 심화 내용은 필수가 아닌 선택 사항이며, 본인의 관심 분야에 따라 자유롭게 추가 학습할 수 있습니다.
공통 CS에서 학습한 내용을 각자의 기술 스택과 연결하여 조금 더 깊게 학습합니다.
Java / JVM
↓
Spring Core
↓
JPA
↓
Transaction / 동시성
↓
Redis / Cache
↓
Backend Architecture
JavaScript Core
↓
Event Loop / 비동기
↓
Browser / Rendering
↓
Rendering 최적화
↓
Rendering Architecture
↓
Web Performance / Cache
마지막 주차에는 새로운 내용을 학습하기보다 그동안 공부한 내용을 바탕으로 CS + 직군별 기술 모의면접을 진행합니다.
공통 CS 질문과 직군별 질문을 랜덤으로 선정하고, 실제 기술 면접처럼 답변에 따라 꼬리질문을 이어갑니다.
Q. HTTP가 Stateless하다는 것은 무엇인가요?
→ 그렇다면 로그인 상태는 어떻게 유지할 수 있나요?
→ Session과 JWT의 차이는 무엇인가요?
→ JWT를 사용하면 서버가 완전히 Stateless해질까요?
정답을 바로 맞히는 것보다는 자신이 공부한 내용을 직접 설명하고, 부족한 부분을 확인하는 것을 목표로 합니다.
스터디는 약 14주 동안 진행되는 만큼 꾸준한 참여를 가장 중요하게 생각합니다.
다만 학업, 인턴, 취업 준비 등 개인 일정이 있을 수 있기 때문에 전체 기간 동안 최대 3회까지 쉬어갈 수 있습니다.
휴식하는 주차에는 PR 작성 및 리뷰에 참여하지 않아도 됩니다.
그 외 주차에는 아래 활동에 최대한 꾸준히 참여해주세요.
- 해당 주차 CS 주제 학습
- 학습 내용 정리 및 PR 작성
- 다른 스터디원의 PR 최소 1개 리뷰
- 주간 온라인 스터디 참여
서로의 학습을 강제하기보다는, 14주 동안 함께 꾸준히 공부하고 기록을 남기는 것을 가장 중요한 목표로 합니다.
혼자 하면 미루게 되는 CS 공부를 함께 꾸준히 해봅시다! 🚀