cs 링크 정리
cs 정리 깃허브 1
https://github.com/JaeYeopHan/Interview_Question_for_Beginner?tab=readme-ov-file
구성
개발 상식
Part 1-1 Development common sense
좋은 코드란 무엇인가
Object Oriented Programming
객체 지향적 설계 원칙
Reference
Personal Recommendation
RESTful API
REST 6 가지 원칙
RESTful 하게 API 를 디자인 한다는 것은 무엇을 의미하는가.(요약)
어떠한 장점이 존재하는가?
단점은 뭐가 있을까?
Reference
TDD
TDD 란 무엇인가
Add a test
Run all tests and see if new one fails
Refactor code
의문점들
Q. 코드 생산성에 문제가 있지는 않나?
Q. 테스트 코드를 작성하기가 쉬운가?
Q. 모든 상황에 대해서 테스트 코드를 작성할 수 있는가? 작성해야 하는가?
Personal Recommendation
Reference
함수형 프로그래밍
immutable vs mutable
first-class citizen
Reactive Programming
Reference
MVC 패턴이란 무엇인가?
Git 과 GitHub 에 대해서
자료 구조
Part 1-2 DataStructure
Array vs Linked List Array
Linked List
Personal Recommendation
Stack and Queue
Stack
Queue
Personal Recommendation
Tree
트리를 구성하고 있는 구성요소들(용어)
Binary Tree (이진 트리)
Perfect Binary Tree (포화 이진 트리), Complete Binary Tree (완전 이진 트리), Full Binary Tree (정 이진 트리)
BST (Binary Search Tree)
Personal Recommendation
Binary Heap
Personal Recommendation
Red Black Tree
Red-Black Tree 의 정의
Red-Black Tree 의 특징
삽입
삭제
Hash Table
Hash Function
그렇다면 좋은 hash function는 어떠한 조건들을 갖추고 있어야 하는가?
Resolve Conflict
-
Open Address 방식 (개방주소법)
-
Separate Chaining 방식 (분리 연결법)
Open Address vs Separate Chaining
보조 해시 함수
해시 버킷 동적 확장(Resize)
Reference
Graph
정점과 간선의 집합, Graph
그래프 관련 용어 정리
Undirected Graph 와 Directed Graph (Digraph)
Degree
가중치 그래프(Weight Graph)와 부분 그래프(Sub Graph)
그래프를 구현하는 두 방법
인접 행렬 (adjacent matrix) : 정방 행렬을 사용하는 방법
인접 리스트 (adjacent list) : 연결 리스트를 사용하는 방법
그래프 탐색
깊이 우선 탐색 (Depth First Search: DFS)
너비 우선 탐색 (Breadth First Search: BFS)
Minimum Spanning Tree
Kruskal Algorithm
어떻게 cycle 생성 여부를 판단하는가?
Time Complexity
Prim Algorithm
Time Complexity
네트워크
Part 1-3 Network
HTTP의 GET과 POST 비교
GET
POST
TCP 3-way Handshake
Reference
TCP와 UDP의 비교
UDP
TCP
Reference
HTTP와 HTTPS
HTTP 의 문제점
TCP/IP 는 도청 가능한 네트워크이다.
보완 방법
통신 상대를 확인하지 않기 때문에 위장이 가능하다.
보완 방법
완전성을 증명할 수 없기 때문에 변조가 가능하다
보완 방법
HTTPS
모든 웹 페이지에서 HTTPS를 사용해도 될까?
Reference
DNS round robin 방식
DNS Round Robin 방식의 문제점
Weighted round robin (WRR)
Least connection
웹 통신의 큰 흐름
in 브라우저
in 프로토콜 스택, LAN 어댑터
in 허브, 스위치, 라우터
in 액세스 회선, 프로바이더
in 방화벽, 캐시서버
in 웹 서버
Personal Recommendation
운영체제
Part 1-4 운영체제
프로세스와 스레드의 차이
프로세스(Process)
프로세스 제어 블록(Process Control Block, PCB)
스레드(Thread)
스택을 스레드마다 독립적으로 할당하는 이유
PC Register 를 스레드마다 독립적으로 할당하는 이유
멀티 스레드
멀티 스레딩의 장점
멀티 스레딩의 문제점
멀티 스레드 vs 멀티 프로세스
스케줄러
장기스케줄러(Long-term scheduler or job scheduler)
단기스케줄러(Short-term scheduler or CPU scheduler)
중기스케줄러(Medium-term scheduler or Swapper)
Process state - suspended
CPU 스케줄러
FCFS(First Come First Served)
특징
문제점
SJF(Shortest - Job - First)
특징
문제점
SRTF(Shortest Remaining Time First)
특징
문제점
Priority Scheduling
특징
문제점
해결책
Round Robin
특징
장점
주의할 점
동기와 비동기의 차이
비유를 통한 쉬운 설명
Sync vs Async
Reference
프로세스 동기화
Critical Section(임계영역)
Critical Section Problem(임계영역 문제)
Requirements(해결을 위한 기본조건)
해결책
Mutex Lock
한계
Semaphores(세마포)
종류
단점
Deadlock(교착상태)
모니터
메모리 관리 전략
메모리 관리 배경
Paging(페이징)
Segmentation(세그멘테이션)
가상 메모리
가상 메모리 개발 배경
프로그램의 일부분만 메모리에 올릴 수 있다면…
가상 메모리가 하는 일
가상 주소 공간
프로세스간의 페이지 공유
Demand Paging(요구 페이징)
Page fault trap(페이지 부재 트랩)
페이지 교체
기본적인 방법
페이지 교체 알고리즘
FIFO 페이지 교체
최적 페이지 교체(Optimal Page Replacement)
LRU 페이지 교체(LRU Page Replacement)
LFU 페이지 교체(LFU Page Replacement)
MFU 페이지 교체(MFU Page Replacement)
캐시의 지역성
캐시의 지역성 원리
Caching line
데이터베이스
Part 1-5 Database
데이터베이스
데이터베이스를 사용하는 이유
데이터베이스의 특징
데이터베이스의 성능?
Index
인덱스(Index)란 무엇인가?
Index 자료구조
B+-Tree 인덱스 알고리즘
Hash 인덱스 알고리즘
왜 index 를 생성하는데 b-tree 를 사용하는가?
Primary Index vs Secondary Index
Composite Index
Index 의 성능과 고려해야할 사항
정규화에 대해서
- 정규화는 어떤 배경에서 생겨났는가?
1-1. 갱신 이상에는 어떠한 것들이 있는가?
- 그래서 정규화란 무엇인가?
2-1. ‘나쁜’ 릴레이션은 어떻게 파악하는가?
2-2. 함수적 종속성이란 무엇인가?
2-3. 각각의 정규형은 어떠한 조건을 만족해야 하는가?
제 1 정규형
제 2 정규형
제 3 정규형
BCNF(Boyce-Codd) 정규형
-
정규화에는 어떠한 장점이 있는가?
-
단점은 없는가?
-
단점에서 미루어보았을 때 어떠한 상황에서 정규화를 진행해야 하는가? 단점에 대한
-
대응책은?
반정규화(De-normalization, 비정규화)
5-1. 무엇이 반정규화의 대상이 되는가?
5-2. 반정규화 과정에서 주의할 점은?
Transaction
트랜잭션(Transaction)이란 무엇인가?
트랜잭션과 Lock
트랜잭션의 특성
원자성(Atomicity)
일관성(Consistency)
고립성(Isolation)
지속성(Durability)
트랜잭션의 상태
Active
Failed
Partially Committed
Committed
Aborted
Partially Committed 와 Committed 의 차이점
트랜잭션을 사용할 때 주의할 점
교착상태
교착상태란 무엇인가
교착상태의 예(MySQL)
교착 상태의 빈도를 낮추는 방법
Statement vs PreparedStatement
참고 자료
NoSQL
정의
CAP 이론
-
일관성(Consistency)
-
가용성(Availability)
-
네트워크 분할 허용성(Partition tolerance)
저장 방식에 따른 NoSQL 분류
-
Key-Value Model
-
Document Model
-
Column Model
디자인 패턴
Part 1-6 Design Pattern
Singleton
필요성
구현
Reference
알고리즘
Algorithm
코딩 테스트를 위한 Tip
-
칠판에 글쓰기를 시작하십시오.
-
그것을 통해 이야기하십시오.
-
알고리즘을 생각하세요.
-
데이터 구조를 생각하십시오.
-
이전에 보았던 관련 문제와 해결 방법에 대해 생각해보십시오.
-
문제를 작은 문제로 분해하여 수정하십시오.
-
되돌아 오는 것을 두려워하지 마십시오.
문제 해결을 위한 전략적 접근
코딩 테스트의 목적
접근하기
생각할 때
해결 방법 분류
DP(동적 계획법)
접근방법
Greedy (탐욕법)
접근 방법
Divide and Conquer (분할 정복)
접근 방법
DP vs DIVIDE&CONQUER vs GREEDY
Reference
Sorting Algorithm
Comparisons Sorting Algorithm (비교 방식 알고리즘)
Bubble Sort
code
Selection Sort
code
Insertion Sort
code
Merge Sort
Heap Sort
Quick Sort
Quick Sort’s worst case
Balanced-partitioning
Partitioning
code
non-Comparisons Sorting Algorithm
Counting Sort
Radix Sort
Sorting Algorithm’s Complexity 정리
더 읽을거리
Prime Number Algorithm
에라토스테네스의 체 [Eratosthenes’ sieve]
code
Time Complexity
알고리즘 문제 연습 사이트
JAVA
Part 2-1 Java
JVM 에 대해서, GC 의 원리
Collection
Annotation
Reference
Generic
final keyword
Overriding vs Overloading
Access Modifier
Wrapper class
AutoBoxing
Multi-Thread 환경에서의 개발
Field member
동기화(Synchronized)
ThreadLocal
Personal Recommendation
JAVASCRIPT
Part 2-2 JavaScript
JavaScript Event Loop
Hoisting
Critical Rendering Path
정의
Closure
클로저 생성하기
Reference
this 에 대해서
상황 1. 객체의 메서드를 호출할 때
상황 2. 함수를 호출할 때
상황 3. 생성자 함수를 통해 객체를 생성할 때
상황 4. apply, call, bind 를 통한 호출
Promise
Reference
Personal Recommendation
Async/Await
Reference
Arrow Function
짧은 함수
상위 스코프 this
Reference
PYTHON
Part 2-3 Python
Generator
예제
동작
이점
Generator, Iterator, Iterable 간 관계
Reference
클래스를 상속했을 때 메서드 실행 방식
Reference
GIL 과 그로 인한 성능 문제
GIL(Global Interpreter Lock)
GIL 의 장점
Reference
GC 작동 방식
레퍼런스 카운팅
순환 참조
가비지 컬렉터
가비지 컬렉션의 작동 방식
어떤 기준으로 가비지 컬렉션이 일어나는가
라이프 사이클
어떻게 순환 참조를 감지하는가
예제
더 정확하고 자세한 설명
Reference
Celery
Reference
PyPy 가 CPython 보다 빠른 이유
PyPy
실행 추적 JIT 컴파일
RPython(Restricted Python)
Reference
메모리 누수가 발생할 수 있는 경우
Reference
Duck Typing
Reference
Timsort : Python의 내부 sort
Reference
CS 지식 정리 2
https://gyoogle.dev/blog/
기타 CS 정리
https://rok93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-TCP-%ED%9D%90%EB%A6%84%EC%A0%9C%EC%96%B4%ED%98%BC%EC%9E%A1%EC%A0%9C%EC%96%B4
https://togomi.tistory.com/19
코테용 지식
[구름] 코딩테스트 대비 JAVA BufferedReader 사용법
https://realtree.tistory.com/26
자바 코딩테스트 문법 정리
https://mighty96.github.io/coding%20test/java-ct/
[JAVA] 자주 사용하는 코딩테스트 문법 정리
https://earthteacher.tistory.com/169#gsc.tab=0
[JAVA] 문법 정리 (for 코딩테스트)
https://velog.io/@kkyes1210/JAVA-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%A6%AC-for-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8
[코딩 테스트 Java] 코딩 테스트 필수 문법
https://goldenrabbit.co.kr/2024/02/26/%EC%BD%94%EB%94%A9-%ED%85%8C%EC%8A%A4%ED%8A%B8-java-%EC%BD%94%EB%94%A9-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%95%84%EC%88%98-%EB%AC%B8%EB%B2%95/
cs 지식
https://github.com/BCS-study/basic-computer-science?tab=readme-ov-file
📌 Contents
Network
네트워크의 기초
TCP/IP 4계층 모델
네트워크 기기
IP 주소
HTTP
네트워크 인터뷰 빈출 & 예상 질문
Operating System
운영체제와 컴퓨터
메모리
프로세스와 스레드
CPU 스케줄링 알고리즘
운영체제 인터뷰 빈출 & 예상 질문
Database
데이터베이스의 기본
ERD와 정규화 과정
트랜잭션과 무결성
데이터베이스의 종류
인덱스
조인의 종류
조인의 원리
데이터베이스 인터뷰 빈출 & 예상 질문
댓글남기기