iOS 개발자에게 필요한 CS 핵심 주제를 빠르게 정리하고, 실무와 연결하여 면접 질문에 명확하게 답할 수 있도록 훈련하는 스터디입니다.
|
나훈 |
은지 |
기정 |
| 김나훈 | 이은지 | 홍기정 |
study/
├── week1/ # 자료구조 / 알고리즘 기초
│ ├── 나훈/
│ ├── 은지/
│ ├── 기정/
│ └── questions/
├── week2/ # 운영체제 / 메모리 / 동시성
│ ├── 나훈/
│ ├── 은지/
│ ├── 기정/
│ └── questions/
├── week3/ # 네트워크 / HTTP / 통신
│ ├── 나훈/
│ ├── 은지/
│ ├── 기정/
│ └── questions/
└── week4/ # 데이터베이스 / 객체지향 / 면접 정리
├── 나훈/
├── 은지/
├── 기정/
└── questions/
🎯 스터디 목표
- iOS 개발자에게 필요한 CS 핵심 주제를 빠르게 정리한다.
- 단순 개념 암기가 아니라 iOS 실무와 연결해서 설명할 수 있도록 훈련한다.
- 면접 질문에 답할 수 있을 정도로 핵심 개념을 말로 정리하는 연습을 한다.
- 모의 면접을 통해 실제 질문을 받았을 때 짧고 명확하게 답하는 훈련을 한다.
📌 기본 정보
| 항목 | 내용 |
|---|---|
| 기간 | 4주 |
| 빈도 | 주 1회 |
| 회당 시간 | 1시간 (예상) |
| 인원 | 3명 (김나훈, 이은지, 홍기정) |
📏 Base Rule Set
1. 운영 원칙
- 본 스터디는 4주를 기본 단위로 운영한다.
- 4주 진행 후, 상호 협의를 통해 연장 여부를 결정한다.
- 스터디 방식은 고정하지 않고, 더 좋은 방법이 있다면 회고 후 변경할 수 있다.
- 커리큘럼과 세부 진행 내용은 추후 협의를 통해 보완 및 수정할 수 있다.
- 급한 일 등이 생긴다면 스터디를 상호 합의 하에 1주 뒤로 연장할 수 있다.
2. 공개 및 기록 원칙
- 본 스터디 결과물은 추후 GitHub Public Repository에 공개하는 것을 기본으로 한다.
- 클로바노트 등으로 정리한 회의록, 메모, 발표 기록은 함께 공유한다.
- 권장 사항으로, 각자는 당일 스터디에서 다룬 내용을 개인 블로그에 정리해 게시한다.
3. 인원 운영 원칙
- 현재 기본 인원은 3명으로 시작한다.
- 주변에 관심 있는 사람이 있다면 협의 후 추가 영입할 수 있다.
- 인원이 늘어나면 발표 분량과 진행 방식은 상황에 맞게 조정한다.
4. 사전 준비 원칙
- 해당 주차에 다룰 주제는 모두가 공통으로 공부해 온다.
- 특정 발표자만 준비하는 방식이 아니라, 전원이 전체 범위를 미리 학습하는 것을 기본 원칙으로 한다.
5. 발표 방식
- 당일 발표자는 랜덤으로 정한다.
- 발표 주제는 미리 잘게 나눈 세부 주제 단위로 랜덤 배정한다.
- 각자는 자신에게 배정된 주제를 발표한다.
- 발표는 핵심 개념, 이유, 시간복잡도, iOS 연결 포인트 중심으로 짧고 명확하게 진행한다.
6. 질의응답 및 모의 면접 방식
- 각 발표가 끝나면 발표 내용에 대해 질의응답을 진행한다.
- 질의응답은 단순 확인 질문이 아니라, 면접처럼 답변하는 방식으로 진행한다.
- 필요하면 꼬리 질문을 통해 모의 면접 형태로 확장한다.
7. 회고 및 개선
- 매주 스터디 종료 전 짧게 회고를 진행한다.
- 진행 방식, 발표 방식, 질문 방식 등에서 개선점이 있으면 다음 회차부터 반영한다.
⏱️ 1시간 타임테이블 & 역할 분담
| 시간 | 내용 |
|---|---|
| 10분 | 이번 주 범위 체크 및 발표 주제 배정 |
| 30분 | 발표 진행 |
| 15분 | 질의응답 및 모의 면접 |
| 5분 | 회고 및 다음 주 공지 |
역할 분담
- 진행자: 시간 관리, 순서 진행, 질문 정리
- 발표자: 랜덤 배정된 주제 발표
- 기록자: 토론 내용, 질문, 회고 내용 정리 (클로바노트 AI 요약 활용 가능)
- 공통: 해당 주차 전체 범위를 모두 공부해오기
역할은 매주 돌아가면서 맡는 것을 권장한다.
📅 Week 1 — 자료구조 / 알고리즘 기초
목표
- 시간복잡도와 자료구조 선택 기준을 이해한다.
- Swift와 iOS 코드에서 왜 특정 자료구조를 쓰는지 설명할 수 있다.
학습 주제
| # | 주제 |
|---|---|
| 1 | 시간복잡도, 공간복잡도 |
| 2 | Array vs List |
| 3 | Stack, Queue |
| 4 | Hash Table |
| 5 | Tree |
| 6 | Heap, Priority Queue |
| 7 | BST와 균형 트리 |
| 8 | 정렬과 탐색 기초 |
| 9 | 재귀와 반복 / 캐시 지역성 |
iOS 연결 포인트
- Swift Array의 특성과 성능
- Dictionary, Set이 빠른 이유
- UITableView, UICollectionView 데이터 관리
- undo/redo와 Stack
- BFS, DFS가 필요한 탐색 문제
- 우선순위 기반 처리와 Heap / Priority Queue
- 배열 기반 자료구조가 실제로 빠른 이유와 캐시 지역성
예상 질문
- Array와 Linked List의 차이는 무엇인가?
- 왜 이론상 List가 삽입/삭제에 유리한데 실제로는 Array가 빠를 때가 많은가?
- Stack과 Queue의 차이는 무엇인가?
- Dictionary와 Set은 왜 빠른가?
- Hash 충돌이 발생하면 어떻게 되는가?
- Tree와 Heap은 어떤 차이가 있는가?
- Priority Queue는 왜 Heap으로 구현하는가?
- BST는 왜 편향되면 성능이 나빠지는가?
- O(1), O(log n), O(n)의 차이를 설명해봐라.
- iOS에서 자료구조 선택이 중요한 이유는 무엇인가?
📅 Week 2 — 운영체제 / 메모리 / 동시성
목표
- 프로세스, 스레드, 메모리 구조를 이해한다.
- iOS의 동시성과 ARC를 CS 관점에서 설명할 수 있다.
학습 주제
| # | 주제 |
|---|---|
| 1 | 프로세스와 스레드 |
| 2 | 컨텍스트 스위칭 |
| 3 | 동기와 비동기 |
| 4 | 직렬과 병렬 |
| 5 | Race Condition |
| 6 | Deadlock |
| 7 | 메모리 구조 (코드, 데이터, 힙, 스택) |
| 8 | 가상 메모리 / 캐시 메모리 기초 |
| 9 | ARC / retain cycle / iOS 연결 |
iOS 연결 포인트
- 메인 스레드에서 UI를 처리하는 이유
- GCD, OperationQueue, Swift Concurrency
- async/await의 필요성
- ARC와 retain cycle
- struct와 class의 메모리 관점 차이
예상 질문
- 프로세스와 스레드 차이는 무엇인가?
- 동기와 비동기의 차이는 무엇인가?
- 직렬과 병렬의 차이는 무엇인가?
- 힙과 스택은 어떻게 다른가?
- iOS에서 메인 스레드가 중요한 이유는 무엇인가?
- ARC는 무엇인가?
- retain cycle은 왜 생기는가?
📅 Week 3 — 네트워크 / HTTP / 통신
목표
- 네트워크 기초를 이해하고 iOS 네트워킹과 연결한다.
- URLSession, REST API, 인증 방식 등을 설명할 수 있다.
학습 주제
| # | 주제 |
|---|---|
| 1 | IP / DNS |
| 2 | TCP / UDP |
| 3 | HTTP / HTTPS |
| 4 | 요청과 응답 구조 |
| 5 | HTTP Method |
| 6 | 상태 코드 |
| 7 | REST API |
| 8 | 쿠키 / 세션 / 토큰 |
| 9 | 소켓 통신 / WebSocket / iOS 연결 |
iOS 연결 포인트
- URLSession 기본 흐름
- JSON 인코딩/디코딩
- 네트워크 에러 핸들링
- Access Token, Refresh Token
- WebSocket, socket.io 사용 이유
- 일반 API 요청과 실시간 통신 차이
예상 질문
- TCP와 UDP의 차이는 무엇인가?
- HTTP와 HTTPS 차이는 무엇인가?
- GET과 POST 차이는 무엇인가?
- 401과 403 차이는 무엇인가?
- REST API란 무엇인가?
- 소켓 통신은 언제 필요한가?
📅 Week 4 — 데이터베이스 / 객체지향 / 면접 정리
목표
- 데이터 저장과 객체지향 기초를 정리한다.
- 4주 동안 배운 내용을 면접 답변 형태로 정리한다.
학습 주제
| # | 주제 |
|---|---|
| 1 | RDB / NoSQL |
| 2 | 인덱스 |
| 3 | 정규화 |
| 4 | 트랜잭션 / ACID |
| 5 | 객체지향 4대 특성 |
| 6 | SOLID — SRP |
| 7 | SOLID — OCP / LSP / ISP / DIP |
| 8 | 추상화 / Protocol / DI |
| 9 | 디자인 패턴 / iOS 아키텍처 / 최종 면접 정리 |
iOS 연결 포인트
- Core Data, SQLite, Realm 등 로컬 저장소
- 인덱스와 조회 성능
- MVVM, Clean Architecture와 객체지향
- Protocol 기반 설계
- DI와 테스트 가능한 구조
예상 질문
- RDB와 NoSQL 차이는 무엇인가?
- 인덱스는 왜 빠른가?
- 트랜잭션이 필요한 이유는 무엇인가?
- 객체지향 4대 특성을 설명해봐라.
- SOLID 중 SRP와 DIP를 설명해봐라.
- Protocol을 왜 사용하는가?
🏁 최종 목표
4주가 끝났을 때 아래가 가능해야 한다.
- 주요 자료구조와 시간복잡도를 설명할 수 있다.
- 프로세스, 스레드, 메모리, 동시성을 설명할 수 있다.
- HTTP, TCP, 인증 방식을 설명할 수 있다.
- DB와 객체지향을 iOS 구조와 연결할 수 있다.
- 면접 질문에 1~2분 정도로 또렷하게 답할 수 있다.
- 개념 정의만 하지 말고 반드시 iOS 예시와 연결해서 말하기
- 발표는 짧고 명확하게 준비하기
- 질문을 받으면 정의 → 이유 → iOS 예시 순서로 답하기
- 발표 후에는 모의 면접처럼 꼬리 질문까지 받아보기
- 매주 마지막에는 이번 주 핵심 개념 3개를 각자 말로 정리하기