네트워크
인프라
운영체제
소프트웨어 엔지니어링
DB
Node.js
CS에 대해 더 알아야할 것들을 조금 정리한 것이다.
네트워크
이외에도 TSL | CORS
| 쿠키&세션, 인증,인가
| REST API | Http 상태코드, 메서드, 헤더, 바디, 컨텐츠 타입 등
위의 동작들이 데이터 계층의 어디에서 일어나는 가등 많은 것들이 있다.
인프라
로드 밸런싱
, scale-up, scale-out
- WebServer & Web Applicaton Server(WAS)
- Docker &
Kubernetes
- Message Queue (Rabbit MQ, Kafka 등)
Reverse proxy / Forward proxy 각 효과
운영체제
운영체제의 역할
- 하드웨어와 소프트웨어 사이의 추상화 제공
소프트웨어가 하드웨어의 자원에 접근하게 해준다.
- 응용프로그램의 실행과 관리
여러 앱을 켜놨을 때 동시에 실행되는것처럼 관리해준다.
- 프로세스 관리, 컴퓨터 리소스 관리
램, 저장장치의 리소스를 사용한다.
- 입&출력 장치 관리
- 네트워크 보안
프로세스와 스레드의 차이
- 프로세스 : 운영체제에서 할당하는 작업 단위
앱은 개별적인 프로세스 단위로 관리된다.
기본적으로 자원을 공유하지 않는다.(IPC 필요)
- 스레드 : 프로세스 내에서의 작업 단위
프로세스는 하나 이상의 스레드로 관리된다.
스레드는 서로 자원을 공유한다.(인터럽트 발생 가능)
- 프로세스는 서로 영향을 주지 않지만, 스레드는 서로 영향을 줄 수 있다.
- 메모리 공간, 스택영역, 힙영역
- 인터럽트
- 시스템콜
- 멀티프로세스, 멀티스레드의 특징 동작방식 장단점, 컨텍스트 스위치, 스타베이션, PCB
- 크리티컬 세션, 데드락, 세마포어, 뮤텍스
- 가상 메모리
- CPU스케줄링, priority
- 가상메모리 페이징, 세그멘테이션
- 페이지 교체 알고리즘
- 파일시스템 등에 대해서도 알아봐야한다.
소프트웨어 엔지니어링
오버라이드와 오버로드의 차이점
- Override
- 상속 관계에 있는 다른 클래스에 같은 메서드 이름에 같은 파라미터가 있는 것이다.
- 클래스마다 동작 방식이 다르다.
- Overload
- 같은 클래스내에서 이름이 같은 메서드에 다른 파라미터를 가진 것이다.
- 메서드마다 다른 동작방식을 가진다.
- 객체 지향(다형성, S.O.L.I.D 패턴)
- 함수형 프로그래밍, 1급함수
- 디자인패턴
MSA
- 가비지 컬렉터의 동작방식, 웹서버와 WAS의 차이점
- 인증, JWT
옛날 방식과 지금의 방식의 차이점
즉, 트렌드
DB
- RDBM 동작방식
- 기본키, 외래키
- join종류, 동작방식
- 트랜잭션
- ORM
- SQL, NoSQL차이, 장단점, Redis
- DB의 인덱스는 어떻게 구현되어 있는가?
- SQL 인젝션
- N+1 쿼리 문제
그리고 위의 기술 스택을 프로젝트에 적용한 이유
Node.js
- 자바스크립트의 작동 방식
브라우저나 Node.js안의 V8 엔진에서 자바스크립트가 작동한다.
- V8엔진 동작방식 Mermory Heap, Call Stack, Web APIs, Callback Queue, Event Loop
- Tomcat(동기 멀티스레드)와 Nginx(비동기 싱글스레드)의 차이
원시타입(심볼), 참조타입
| 변수 선언 var, let, const | 호이스팅
| 스코프 | promise
- this, Prototye,
Closure
이벤트 동작방식, 이벤트 플로우, 이벤트 위임
- JS엔진의 메모리 구조
- 비동기동작이 어떻게 하는지
Promise
- 사용한 프레임워크 : 어째서 도입했는지
테스트 케이스(TC) 만들어보기
로드밸런싱 적용