이 저장소가 대체 무엇인가.
CS-Fundamentals는 소프트웨어를 실행하는 프로젝트가 아니다. 7개의 주제 폴더와 루트의 문서 5개로 이뤄진 학습 자료 인덱스다. README가 목차 역할을 하고, 진짜 내용은 각 폴더의 PDF·docx·md 파일에 담겨 있다.
겨냥하는 독자는 분명하다. 전공 취업 면접(코딩 테스트 + CS 이론 면접 + 인성 면접)을 앞둔 신입·학생이다. 그래서 7과목 이론뿐 아니라 "회사 리스트·커버레터 양식·면접 준비 프롬프트"까지 함께 묶여 있다.
저장소를 펼치면 폴더 이름이 그대로 공부 범위가 된다: DSA, Computer-Network, DBMS-and-SQL, OOPs, Operating-System, System-Design, Software-Engineering.
여기에 면접 직결 자료 — HR-Interview-Questions.pdf(인성 면접), LeetCode-Problems.pdf(코딩 문제), Cover-Letter-Template.docx(커버레터),
List-of-Companies-Hiring-Freshers-Offcampus.md(신입 채용 회사 목록) — 가 루트에 흩뿌려져 있다.
한마디로 "전공 취업 준비 풀패키지를 한 저장소로 압축"한 모음집이다.
트렌딩 이유 · 경쟁 대비 장점 · 그리고 솔직한 한계.
이 저장소가 TrendShift 상위에 오른 이유는 "취준생의 가장 큰 통증을 한 번에 긁어준다"는 데 있다. CS 면접 준비는 자료가 사방에 흩어져 있다는 게 최대 난관인데, 이 저장소는 "7과목 + 면접 부록"을 폴더 하나로 정리해 그 마찰을 없앤다. GitHub 스타는 아직 ★5로 작지만, TrendShift 순위는 별 수가 아니라 X(트위터) 등에서의 사회적 멘션·공유량으로 매겨진다 — 즉 "갓 올라왔는데 빠르게 입소문 타는 중"인 신생 레포다.
| 비교 대상 | 한계 | CS-Fundamentals의 접근 |
|---|---|---|
| 구글링 / 블로그 서핑 | 매번 새로 검색, 품질 들쭉날쭉, 범위가 빠짐 | 7과목을 폴더로 고정 — "빠뜨린 주제"를 구조가 막아준다 |
| 유튜브 강의 | 되감기·요약이 어렵고, 면접 직전 속독에 부적합 | 치트시트·노트 PDF라 면접 전날 빠른 복습에 강함 |
| 유료 인터뷰 플랫폼 | 구독료, 특정 회사·언어에 치우침 | 무료, 언어 무관(OOP는 Java·Python·C++·JS 4종 병기) |
| 흩어진 면접 후기 | 이론·코딩·인성·서류가 따로 논다 | 이론+LeetCode+HR+커버레터+회사목록을 한 저장소에 통합 |
면접 D-7에 DSA는 이 블로그, OS는 저 PDF, SQL은 또 다른 사이트… 자료를 찾고 모으는 데만 에너지를 쓰다 정작 공부할 시간이 사라진다. 게다가 어떤 주제를 빠뜨렸는지조차 모른다.
7개 폴더가 곧 체크리스트다. 각 폴더를 하나씩 비우면 "면접에 나올 CS 이론"을 빠짐없이 훑게 된다. 자료 수집 단계를 통째로 건너뛰고 바로 공부에 진입할 수 있는 게 이 모음의 진짜 가치다.
다만 이 딥다이브는 단점도 솔직히 짚는다. 이 저장소를 "그대로 신뢰하고 별을 누르기" 전에 알아둘 게 있다.
그래서 똑똑한 사용법은 "이 저장소를 지도로만 쓰고, 각 주제의 원본 1차 자료로 갈아타는 것"이다. 폴더 구조로 "무엇을 공부할지"의 범위를 잡되, 실제 학습은 공식 문서·교과서·검증된 강의로 보강하는 식이다. (구체적 1차 자료는 11번 참고 링크에 정리했다.)
반전 — "소프트웨어 스택이 거의 없다". 그래서 진짜 '스택'은 7과목 그 자체다.
보통 트렌딩 저장소를 분석하면 화려한 프레임워크 목록(React·Postgres·Docker…)이 나온다. CS-Fundamentals는 정반대다. 실행할 코드도, 서버도, 빌드도 없다. 기술 구성을 솔직히 적으면 표 하나로 끝난다.
| 레이어 | 실제 구성 | 역할 |
|---|---|---|
| 콘텐츠 | PDF (대부분) · docx · md | 노트·치트시트·면접 문제집. 약 30여 개 파일. |
| 인덱스 | README.md (표) | 폴더·파일을 표로 안내하는 단일 목차. |
| 호스팅 / 배포 | GitHub | 파일을 그대로 저장·다운로드. 빌드·CI 없음. |
| 백엔드 / 프론트 / DB | 없음 | 실행 코드 0. "웹사이트"조차 없다(free-for-dev와도 다른 점). |
그러니 이 섹션에서 진짜로 봐야 할 "스택"은 소프트웨어가 아니라 이 저장소가 가르치려는 7과목이다. 면접에서 각 과목이 어디에 쓰이는지를 한 장으로 정리하면 이렇다 — 이게 이 저장소를 공부하는 지도다.
| 과목(폴더) | 한 줄 정의 | 면접에서의 위치 |
|---|---|---|
| DSA | 데이터를 담는 그릇 + 다루는 절차(정렬·탐색·DP·그래프) | 코딩 테스트·기술면접의 최대 비중 |
| OOP | 객체로 코드를 조직하는 4대 원칙(캡슐화·상속·다형성·추상화) | "이 개념 설명해보라"식 단골 질문 |
| OS (운영체제) | 프로세스·스레드·스케줄링·메모리·데드락 | 이론 면접의 핵심 축 |
| DBMS/SQL | 데이터 저장·조회. 정규화·트랜잭션·인덱스 + SQL 작성 | 이론 + 라이브 SQL 작성 둘 다 |
| CN (네트워크) | OSI 7계층·TCP/IP·HTTP·DNS | "URL 치면 무슨 일이?"류 통합 질문 |
| System Design | 위 전부를 합쳐 큰 서비스를 설계(로드밸런서·캐시·DB 분할) | 경력·고연봉 트랙의 결정타 |
| SE (소프트웨어공학) | SDLC·애자일·테스트 등 개발 프로세스 상식 | 가벼운 상식·인성 면접 보조 |
DSA-Cheatsheet.pdf, Complete-SQL-Cheatsheet.pdf, System-Design-Cheatsheet.pdf가 대표적이다. "처음 배우는 용도"가 아니라 "이미 배운 걸 빠르게 되살리는" 용도다.시스템 구조가 없으니 — 대신 '지식 지도'와 '면접 파이프라인'을 그린다.
이 저장소엔 분석할 서버 구조나 데이터 흐름이 없다. 그래서 딥다이브의 "아키텍처"를 두 가지 진짜 구조로 바꿔 그린다: ① 7과목이 서로 어떻게 쌓이는가(지식 의존 지도), ② 그 과목들이 실제 면접의 어느 단계에서 쓰이는가(채용 파이프라인). 이 둘을 머릿속에 넣으면 "무엇을 먼저, 왜 공부하는지"가 잡힌다.
핵심 직관: DSA·OOP·OS는 "기초 기둥"이고, DBMS와 CN은 그 위에 얹히는 "응용 기둥"이며, System Design은 이 모든 걸 합쳐야 비로소 풀리는 꼭대기다. 그래서 신입은 보통 아래(DSA)부터, 경력은 위(System Design)까지 본다. 공부 순서도 이 그림을 따르면 자연스럽다.
이 파이프라인이 저장소의 파일 배치를 설명한다. LeetCode-Problems.pdf와 DSA/가 1차용,
이론 7과목 폴더가 2차용, 루트의 HR-Interview-Questions.pdf·Cover-Letter-Template.docx·List-of-Companies-Hiring-Freshers-Offcampus.md가 3차·지원 관리용이다.
즉 폴더 구조 자체가 "면접 단계별 준비물 체크리스트"로 설계돼 있다.
이런 "자료 덤프형(resource-dump) 저장소"는 잘 정리된 책장과 같다. 책장(폴더 구조)이 좋으면 어떤 책이 어디 있는지 한눈에 보이지만, 책장이 책을 대신 읽어주지는 않는다. 설계 패턴으로 보면 "README = 단일 인덱스, 폴더 = 주제 분류, 파일 = 콘텐츠"라는 단순·견고한 구조인데, 대신 검색·버전관리가 약한 바이너리 PDF라는 대가를 치른다.
폴더 7개 + 루트 문서 5개 — 어디에 무엇이 있나.
각 폴더가 담는 "알맹이"를 풀어보면 이렇다.
| 폴더 | 파일 수 | 핵심 알맹이 |
|---|---|---|
| DBMS-and-SQL | 9 | 가장 풍부. 이론 노트 + SQL 치트시트·튜토리얼 + 면접 100문·Top 50 + LeetCode SQL까지 |
| DSA | 6 | 치트시트·종합자료 + Striver SDE 시트 풀이(인기 문제 세트) + Top 50 면접 |
| OOPs | 5 | 한 개념(OOP)을 4개 언어로 — Java·Python·C++·JavaScript 병기 |
| Operating-System | 5 | 2부작 정식 노트 + 단기 암기노트 + 면접 Q&A + 교과서 한 권 |
| System-Design | 3~4 | 치트시트(PDF·md 둘 다) + 노트 + 면접 Q&A |
| Computer-Network | 3 | placements/GATE용 노트 + 면접 Q&A + 로드맵 |
| Software-Engineering | 2 | 가장 얇음. 개념 노트 + 면접 Q&A |
각 폴더에서 무엇을 배우고 · 면접에 뭐가 나오고 · 무엇을 손으로 해볼까.
이 저장소의 핵심 가치는 "범위"다. 아래는 7과목 각각에서 꼭 챙길 개념 + 면접 단골 질문 + 손으로 해볼 실습을 한 묶음으로 정리한 것이다. 여기 적힌 개념을 폴더의 PDF로 채우고, 모르는 건 11번의 1차 자료로 보강하면 된다.
O(1)(즉시) → O(log n)(이분탐색) → O(n)(한 번 훑기) → O(n log n)(좋은 정렬) → O(n²)(이중 반복) 순으로 느려진다. DSA 면접의 모든 답은 "그래서 복잡도가 얼마?"로 끝난다. 가장 먼저 체화할 언어다.배울 것: 배열·문자열·해시맵·스택/큐·연결리스트·트리·그래프 + 정렬·이분탐색·재귀·동적계획법(DP). 패턴(투 포인터·슬라이딩 윈도우·BFS/DFS)으로 묶어 외우는 게 핵심.
면접 단골: "이 코드의 시간복잡도는?", "해시맵으로 O(n)에 풀어보라", "이 트리를 순회하라."
실습 한 줄: LeetCode Easy 50문제를 풀고 패턴별로 다시 분류해 노트로 묶기.
배울 것: 4대 원칙(캡슐화·상속·다형성·추상화) + SOLID 5원칙. 이 저장소는 같은 개념을 Java·Python·C++·JS 4개 언어로 보여줘 "언어 무관한 원리"를 잡게 한다.
면접 단골: "오버로딩 vs 오버라이딩", "추상 클래스 vs 인터페이스", "다형성 예시를 코드로."
실습 한 줄: 같은 "도형(Shape) 클래스 계층"을 Java와 Python 두 언어로 똑같이 설계해보기.
배울 것: 프로세스 vs 스레드, CPU 스케줄링, 동기화(뮤텍스·세마포어), 데드락 4조건, 가상메모리·페이징.
면접 단골: "프로세스와 스레드 차이", "데드락이 생기는 4가지 조건", "페이징이 왜 필요한가."
실습 한 줄: 생산자-소비자(producer-consumer) 문제를 세마포어로 직접 코딩해 경쟁 상태를 눈으로 확인.
배울 것: 정규화(1~3NF), 트랜잭션과 ACID, 인덱스 원리, JOIN·서브쿼리·집계. 폴더가 9개로 가장 두툼하니 여기 시간을 많이 쓰자.
면접 단골: "인덱스는 왜 조회를 빠르게 하나", "정규화 vs 비정규화 트레이드오프", "트랜잭션 격리수준."
실습 한 줄: LeetCode SQL 20문제로 JOIN·GROUP BY·윈도우 함수 손에 익히기.
배울 것: OSI 7계층, TCP vs UDP, 3-way handshake, HTTP/HTTPS, DNS, IP/포트.
면접 단골: "브라우저에 URL을 치면 무슨 일이 일어나는가"(거의 모든 과목을 엮는 통합 질문).
실습 한 줄: 그 "URL → 화면" 전 과정을 DNS·TCP·HTTP 단계로 직접 다이어그램으로 그려보기.
배울 것: 수평 확장, 로드밸런서, 캐시(Redis), DB 복제·샤딩, CAP 정리, 메시지 큐. 앞의 6과목을 합쳐야 풀린다.
면접 단골: "URL 단축 서비스를 설계하라", "읽기 1억 건을 어떻게 버티나."
실습 한 줄: "URL 단축기" 한 개를 골라 요구사항→API→DB 스키마→확장 전략까지 설계 문서 1장 쓰기.
배울 것: SDLC(개발 생명주기), 애자일·스크럼, 테스트 종류(단위·통합·시스템), 버전관리 기본.
면접 단골: "애자일 vs 워터폴", "단위 테스트와 통합 테스트 차이."
실습 한 줄: 작은 토이 프로젝트에 깃 브랜치 전략 + 칸반 보드를 실제로 적용해보기.
소프트웨어가 아니니 — 사실상 없다. 대신 '학습 환경'을 세팅하자.
이 저장소는 실행할 코드가 없으므로 사양 요구가 사실상 제로다. PDF 뷰어와 인터넷만 있으면 폰에서도 본다. 의미 있는 건 하드웨어가 아니라 "효율적으로 공부할 환경"이라, 그쪽으로 바꿔 안내한다.
| 준비물 | 왜 |
|---|---|
| PDF 뷰어 + 인터넷 | 자료 열람의 전부. 별도 설치 없음. |
| LeetCode / HackerRank 계정 | DSA·SQL은 읽기만으론 안 늘고 직접 풀어야 한다(무료). |
| 코드 에디터 (VS Code 등) | OOP·OS 실습 코드를 직접 돌려볼 공간. |
| 노트 앱 / 화이트보드 | System Design은 "그림으로 설명"이 핵심 — 손으로 그리는 연습 필수. |
PDF를 읽는 건 워밍업일 뿐이다. DSA는 문제를 풀고, SQL은 쿼리를 짜고, System Design은 직접 그려봐야 면접에서 말이 나온다. 이 저장소는 "무엇을 연습할지"의 목록으로 쓰고, 시간의 대부분은 손을 움직이는 데 쓰자.
읽기에서 끝내지 않도록 — 난이도별 5개.
DBMS-and-SQL 치트시트를 옆에 두고 LeetCode SQL Easy 10문제를 푼다. JOIN·GROUP BY·HAVING을 손에 익히는 게 목표. 막히면 치트시트의 문법을 그 자리에서 찾아 쓰면 된다 — 외우지 말고 찾아 쓰며 익히기.
"동물(Animal) → 개·고양이" 같은 작은 클래스 계층을 만들어 캡슐화·상속·다형성·추상화가 코드 어디서 나타나는지 주석으로 표시한다. 같은 걸 Java와 Python 두 언어로 써서 "원리는 같고 문법만 다르다"를 체감.
Operating-System 노트의 세마포어 개념을 코드로 옮긴다. 스레드 두 개(생산자·소비자)가 공유 버퍼를 두고 경쟁할 때, 세마포어 없이는 어떻게 깨지고(경쟁 상태) 있으면 어떻게 안전해지는지 직접 출력으로 확인.
System-Design 치트시트를 참고해 URL 단축 서비스(bit.ly류)를 설계 문서로 정리한다: ① 요구사항 → ② API 형태 → ③ DB 스키마 → ④ 짧은 키 생성 방식 → ⑤ 읽기 폭증 시 캐시·샤딩 전략. 한 장이면 충분 — 면접에서 말할 순서대로 쓰는 게 포인트.
이 저장소의 약점(바이너리 PDF라 검색·갱신이 어렵다)을 직접 개선하는 과제다. 내가 공부한 7과목 요약을 마크다운(.md)으로 정리해 GitHub 레포로 만들고, free-for-dev처럼 Docsify로 빌드 없이 웹페이지화한다. "자료를 모으는 사람"에서 "자료를 구조화하는 사람"으로 올라서는 연습이자, 그 자체가 포트폴리오가 된다.
이 저장소를 8주 placement 준비 플랜으로 굴리면.
폴더 7개를 무작정 위에서 아래로 훑으면 지친다. 면접 비중과 의존 관계(4번 지도)를 따라 순서를 짜면 효율이 다르다. 아래는 하루 2~3시간 기준 8주 플랜이다. 비중 큰 DSA·DBMS에 시간을 더 얹었다.
| 주차 | 집중 과목 | 그 주의 산출물 |
|---|---|---|
| 1주 | DSA 기초 + Big-O | 배열·문자열·해시 패턴 정리 + Easy 30문제 |
| 2주 | DSA 심화 | 트리·그래프·DP + Medium 20문제, 패턴 노트 |
| 3주 | DBMS / SQL | 정규화·트랜잭션·인덱스 요약 + LeetCode SQL 20문제 |
| 4주 | 운영체제(OS) | 프로세스/스레드·데드락·페이징 1장 요약 + 생산자-소비자 코드 |
| 5주 | 네트워크(CN) + OOP | "URL 치면?" 다이어그램 + OOP 4원칙 2언어 구현 |
| 6주 | System Design 입문 | URL 단축기·뉴스피드 등 설계 문서 2장 |
| 7주 | 모의면접 + 부록 | HR 답변 스크립트 + 커버레터 완성 + 지원 회사 리스트업 |
| 8주 | 약점 보강 + 복습 | 틀린 문제 재풀이 + 나만의 치트시트 1장으로 압축 |
로드맵은 운동 루틴과 같다. 큰 근육(DSA·DBMS)에 더 많은 세트를, 작은 근육(SE)엔 가볍게. 그리고 마지막 주의 "치트시트 1장으로 압축"이 곧 면접 전날 펼칠 나만의 요약본이 된다 — 남의 PDF가 아니라 내가 만든 게 시험장에서 진짜 힘이 된다.
7과목을 가로지르는 면접 빈출 용어 한 줄 정리.
| 용어 | 한 줄 뜻 |
|---|---|
| Big-O | 입력이 커질 때 알고리즘이 느려지는 속도. 모든 DSA 답의 마무리. |
| 해시맵 (Hash Map) | 키→값을 평균 O(1)에 찾는 자료구조. "빠른 조회"의 단골 해법. |
| 동적계획법 (DP) | 큰 문제를 작은 문제로 쪼개 답을 저장·재사용. 중복 계산 제거. |
| 정규화 (Normalization) | 데이터 중복을 줄이려 테이블을 쪼개는 DB 설계 규칙(1~3NF). |
| 트랜잭션 / ACID | 여러 DB 작업을 "전부 성공 또는 전부 취소"로 묶는 단위 + 그 4보장(원자성·일관성·고립성·지속성). |
| 인덱스 (Index) | 책 색인처럼 특정 열을 빨리 찾게 하는 보조 구조. 조회↑ 쓰기↓. |
| 프로세스 vs 스레드 | 프로세스=독립 메모리의 실행 단위, 스레드=한 프로세스 안에서 메모리를 공유하는 실행 흐름. |
| 데드락 (Deadlock) | 서로 상대의 자원을 기다리며 멈춘 교착 상태. 성립 4조건이 단골 질문. |
| 페이징 (Paging) | 메모리를 고정 크기 조각으로 나눠 관리하는 가상메모리 기법. |
| OSI 7계층 | 네트워크 통신을 7단계(물리~응용)로 나눈 표준 모델. |
| TCP vs UDP | TCP=신뢰성 있는 연결형, UDP=빠르지만 보장 없는 비연결형. |
| 3-way handshake | TCP 연결을 여는 3단계 인사(SYN→SYN/ACK→ACK). |
| OOP 4원칙 | 캡슐화·상속·다형성·추상화. 객체지향의 뼈대. |
| SOLID | 유지보수 좋은 객체지향 설계 5원칙(단일책임·개방폐쇄 등). |
| 로드밸런서 | 들어오는 요청을 여러 서버로 분산하는 교통정리 장치. |
| 캐시 (Cache) | 자주 쓰는 데이터를 빠른 곳(메모리)에 미리 둬 응답을 가속(예: Redis). |
| 샤딩 (Sharding) | 거대한 DB를 여러 조각으로 수평 분할해 부하를 나누는 기법. |
| CAP 정리 | 분산 시스템은 일관성·가용성·분단내성 중 셋을 동시에 다 못 가진다는 원칙. |
| SDLC | 소프트웨어 개발 생명주기(요구분석→설계→구현→테스트→유지보수). |
저장소 + "지도로 쓰고 갈아탈" 검증된 1차 자료.
이 저장소는 "무엇을 공부할지"의 지도로 쓰고, 실제 깊이는 아래의 공식·검증 자료로 채우는 걸 권한다.
| 분류 | 자료 / 링크 |
|---|---|
| 저장소 원본 | github.com/Krishnagangwal/CS-Fundamentals |
| DSA 연습 | LeetCode · NeetCode(패턴별 로드맵) · takeUforward(Striver SDE 시트) |
| System Design | donnemartin/system-design-primer (이 인덱스에도 정리됨) |
| 운영체제(OS) | OSTEP — 무료 OS 교과서 |
| 네트워크(CN) | Cloudflare Learning Center |
| DBMS / SQL | Use The Index, Luke! · LeetCode Top SQL 50 |
| OOP / 설계 | Refactoring.Guru |
| 면접 종합 | jwasham/coding-interview-university (이 인덱스에도 정리됨) |