5 분 소요

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

  1. Open Address 방식 (개방주소법)

  2. 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-1. 갱신 이상에는 어떠한 것들이 있는가?

  1. 그래서 정규화란 무엇인가?

2-1. ‘나쁜’ 릴레이션은 어떻게 파악하는가?

2-2. 함수적 종속성이란 무엇인가?

2-3. 각각의 정규형은 어떠한 조건을 만족해야 하는가?

제 1 정규형

제 2 정규형

제 3 정규형

BCNF(Boyce-Codd) 정규형

  1. 정규화에는 어떠한 장점이 있는가?

  2. 단점은 없는가?

  3. 단점에서 미루어보았을 때 어떠한 상황에서 정규화를 진행해야 하는가? 단점에 대한

  4. 대응책은?

반정규화(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 이론

  1. 일관성(Consistency)

  2. 가용성(Availability)

  3. 네트워크 분할 허용성(Partition tolerance)

저장 방식에 따른 NoSQL 분류

  1. Key-Value Model

  2. Document Model

  3. Column Model

디자인 패턴

Part 1-6 Design Pattern

Singleton

필요성

구현

Reference

알고리즘

Algorithm

코딩 테스트를 위한 Tip

  1. 칠판에 글쓰기를 시작하십시오.

  2. 그것을 통해 이야기하십시오.

  3. 알고리즘을 생각하세요.

  4. 데이터 구조를 생각하십시오.

  5. 이전에 보았던 관련 문제와 해결 방법에 대해 생각해보십시오.

  6. 문제를 작은 문제로 분해하여 수정하십시오.

  7. 되돌아 오는 것을 두려워하지 마십시오.

문제 해결을 위한 전략적 접근

코딩 테스트의 목적

접근하기

생각할 때

해결 방법 분류

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와 정규화 과정

트랜잭션과 무결성

데이터베이스의 종류

인덱스

조인의 종류

조인의 원리

데이터베이스 인터뷰 빈출 & 예상 질문

댓글남기기