앞으로 공부할 내용 정리

김민준·2023년 12월 16일
0

네트워크
인프라
운영체제
소프트웨어 엔지니어링
DB
Node.js

CS에 대해 더 알아야할 것들을 조금 정리한 것이다.

네트워크

  • 브라우저에 도메인을 입력하면 어떤 일이 일어날까?

    1. DNS : 도메인 네임을 통해서 IP를 찾는다.
    2. 컴퓨터의 캐시를 확인한다.
      (이전에 방문한 도메인의 IP 주소 확인)
    3. 브라우저, OS, Router, ISP(인터넷 제공 업체) 순으로 도메인을 찾는다. (역순으로 파악)
    4. 찾은 IP주소로 TCP 연결 시도
    5. HTTP 형식으로 리퀘스트 (보안을 위해 HTTPS 사용)
    6. 서버는 header, body의 정보를 본다.
    7. status 코드와 리소스 반환
    8. 클라이언트는 http, css, javascript 코드 등을 받아서 동작을 한다.

이외에도 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
    1. 상속 관계에 있는 다른 클래스에 같은 메서드 이름에 같은 파라미터가 있는 것이다.
    2. 클래스마다 동작 방식이 다르다.
  • Overload
    1. 같은 클래스내에서 이름이 같은 메서드에 다른 파라미터를 가진 것이다.
    2. 메서드마다 다른 동작방식을 가진다.
  • 객체 지향(다형성, 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) 만들어보기
  • 로드밸런싱 적용
profile
node 개발자

0개의 댓글

관련 채용 정보