기술 면접 회고록

Song·2021년 9월 13일
0

회고록

목록 보기
2/47
post-custom-banner

1. 동기 vs 비동기

동기

  • 작업 요청 후 해당 작업의 결과가 나올 때까지 기다린 후 처리하는 것
  • 특정 I/O 작업을 위한 준비가 되어있는지 확인하는것
  • I/O 작업 준비에 대한 이벤트의 발생을 기다린 후 해당 이벤트 발생 시 그에 따른 적합한 처리를 해준다.
  • 메소드를 실행시킴과 동시에 값이 반환될 때까지 Blocking이 되어있다.

Blocking

  • I/O가 끝난 후에 함수를 반환 (return). 즉, 커널이 작업을 완료하기까지 유저 프로세스 작업을 중단한 채 대기
  • return을 기다리는 동안 대기 큐에 머무는 것이 필수

비동기

  • 메소드 실행 시 Blocking 되지 않아 유저 프로세스의 작업을 중단시키지 않는다
  • 이벤트 큐 또는 백그라운드 스레드에게 task를 위임하고 다음 코드를 바로 실행한다.
  • 이후 작업이 완료되었을 때 통지받은 후 작업을 처리한다.

Sum Up
동기는 일이 처리될 때까지 기다려주고,
비동기는 이벤트큐나 백그라운드 스레드에게 일을 맡기고 다른 작업을 진행한다.

2. NoSQL vs RDBMS

NoSQL

  • 대량의 분산된 데이터 저장 및 조회하는 데 특화되어있다.
  • 스키마 (테이블 구조) 없이 또는 자유로운 구조로 사용이 가능하다.
  • Auto sharding, replica set를 통한 데이터 복제 등의 방법으로 관계형 데이터 베이스가 제공하지 못하는 성능과 특징을 통한 가용성 용이하다.
  • 관계형이 아니므로 데이터가 하나가 수정된다면 다른 콜렉션도 동일하게 수정해야한다.
  • 확장 시 서버를 추가하여 DB를 분산할 수 있는 Scale out이 가능하다.

Replica Set
동일한 데이터를 다중 노드에 저장하여 다른 노드에서 오류가 발생하여도 데이터 손실을 방지할 수 있다.

RDBMS

  • 정해진 스키마와 관계를 통해 여러 테이블을 저장 및 분산시킨다.
  • 관계를 통해 데이터 중복없이 한 테이블당 하나의 데이터만 관리할 수 있게 하는데,
  • 이러한 특징은 데이터가 자주 변경되는 경우에 용이하게 사용된다.
  • DB 서버의 성능을 수직적으로 향상시키는 scale up을 통해 db 서버를 확장시킬 수 있다.

3. JWT

  • 사용자의 권한을 인증할 때 사용되는 토큰
  • secret key와 payload 기반으로 만들어지며 payload는 유저의 고유 ID등의 정보를 포함하고 있다.
  • 클라이언트와 Header를 통해 주고받을 수 있으며 유효성 검사는 백에서 진행된다.
  • 일정 기간이 지나면 신규 token을 발행해주는 Refreshtoken를 이용하여 관리가 가능하다.

4. Promise VS Async

  • Async는 Promise의 syntatic sugar 즉, promise를 문법 상으로 더 쉽게 읽고 사용할 수 있도록 만들어진 문법.

5. Node.js 장단점

장점

  • Event Loop를 통한 비동기 I/O 처리
    Node.js는 promise 또는 async를 이용하여 비동기적으로 작업을 처리할 수 있는데, 시간이 오래걸리는 task는 Evnet Loop로 보낸 후 나중에 할 일이 없을 때, task가 끝나서 나온 결과물을 처리할 수 있다.

  • 다양한 모듈들을 통한 확장성
    프레임워크등 Node.js에서 사용할 수 있는 다양한 기능들은 npm를 통해 사용할 수 있으며,
    이러한 package.json으로 쉽게 관리가 가능하다.

단점

  • 한정적인 메모리와 싱글 스레드
    싱글 스레드이기 때문에 하나의 작업이 시간이 많이 걸리면 전체 시스템의 성능이 급격하게 떨어진다. (CPU 처리량이 많아 오래 걸리면 다른 이벤트가 처리되지 않는다.)
profile
Learn From Yesterday, Live Today, Hope for Tomorrow
post-custom-banner

0개의 댓글