생각정리 및 면접

이병관·2021년 12월 22일
0
post-thumbnail

1. Node란 무엇이고 어디에서 사용되는가

Node.js는 클라이언트 브라우저 외부에서 웹 애플리케이션을 실행하기 위한 오픈 소스 크로스 플랫폼 JavaScript 런타임 환경 및 라이브러리 입니다. 서버 측 웹 응용 프로그램을 만드는 데 사용됩니다.

그냥 간단하게 Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임이다

런타임: 특정 언어로 만든 프로그램을 실행할 수 있는 환경.

Node.js는 비동기식 이벤트 기반 모델을 사용하므로 데이터 집약적인 애플리케이션에 적합합니다.
예를들면 비디오 스트리밍 사이트와 같은 I/O 집약적인 웹 애플리케이션을 사용할 수 있습니다.

  • 실시간 채팅
  • 사물 인터넷
  • 복잡한 SPA(단일 페이지 애플리케이션)
  • 실시간 협업 도구
  • 스트리밍 애플리케이션
  • 마이크로서비스 아키텍처

2.NodeJS는 어떤식으로 동작하나요?

  • 사용자로부터 동기 / 비동기적 요청이 들어옴
  • 해당 요청은 이벤트 큐에 적재
  • 이벤트 큐의 요청들이 하나씩 이벤트 루프로 전달

이벤트 루프는 Node.js에서 비동기 콜백을 처리합니다. Node.js의 논블로킹 입/출력의 기반이 되며 가장 중요한 환경 기능 중 하나입니다.

3. I/O는 무엇인가요

I/O는 매체와 데이터를 주고받는 모든 프로그램, 작업 또는 장치를 말합니다.

4. NPM이 뭔지 아시나용

NPM은 Node.js의 모든 패키지와 모듈을 관리하는 Node Package Manager의 약자입니다.

노드 패키지 관리자는 두 가지 주요 기능을 제공합니다.

  • search.nodejs.org에서 검색 가능한 node.js 패키지/모듈에 대한 온라인 리포지토리 제공.
  • Node.js 패키지를 설치하기 위한 명령 유틸리티를 제공하고 Node.js 버전 및 종속성을 관리합니다.

5. NodeJS에서 모듈은 뭔가욥

모듈은 JavaScript 라이브러리와 같이 NodeJs의 함수들의 집합입니다.
Node.js에서 모듈을 사용하려면 require() 함수를 사용합니다.

6. NodeJS에서 export는 왜 사용할까요?

Node.js에서 모듈은 관련된 코드들을 하나의 코드 단위로 캡슐화 하는 것을 말합니다.
모듈을 내보내고 필요할때, 해당 모듈 안의 기능을 불러올 수 있습니다.

7. 노드의 단점은 뭐라고 생각하시나욥

  • CPU사용이 많은 서버에는 좋지 않음
  • 여러 중첩의 콜백이 들어가기때문에 콜백 사용이 복잡하다
  • 관계형 데이터베이스는 좋은 선택이 아닐수 있음

8. package.json는 뭘까용

package.json 파일은 Node.js 시스템의 핵심입니다. 이 파일에는 특정 프로젝트에 대한 메타데이터가 들어 있습니다. package.json 파일은 모든 Node 애플리케이션 또는 모듈의 루트 디렉터리에 있습니다.

9. Express는 간단하게 뭘까요

Express는 웹 및 모바일 애플리케이션을 모두 개발할 수 있는 다양한 기능을 제공하는 유연한 Node.js 웹 애플리케이션 프레임워크입니다.

10. 미들웨어는 뭘까욥

미들웨어는 요청 및 응답 객체를 수신하는 기능입니다.
미들웨어 기능이 수행하는 대부분의 작업은 다음과 같습니다.

  • 모든 코드 실행
  • 요청 및 응답 개체 업데이트 또는 수정
  • 요청-응답 주기 완료
  • 스택의 다음 미들웨어 호출

11. 동기 / 비동기

  • 동기: 응답을 받을때 까지 프로그램이 대기하고 응답을 받은 후 다시 진행
  • 비동기: 응답을 받을 때 까지 기다리지않고 계속 프로그램을 실행.

12. Promise

  • 순차적이지 않은 비동기 함수의 실행 순서를 제어할수 있도록 도와준다
  • pending(비동기 처리 로직이 아직 완료되지 않는 상태)
    new Promise로 Promise가 생성된 직후부터 resolve나 reject가 호출되기 전까지의 순간을 pending 이라고 합니다.

  • fullfilled(처리가 완료되어 프로미스가 결과값을 반환한 상태)
    만약 비동기 처리함수 값이 성공이라면 resolve 메소드가 호출되고,resolve 메소드의 인자로 설정한, 비동기 함수의 결과값이 전달된다. 이 결과값은 then을 통해 후속 처리된다.

  • Rejected(처리가 실패하거나 오류가 발생한 상태)

await 를 통해 Promise 반환 값을 받아 올 수 있다.

profile
뜨겁고 매콤하고 화끈하게

0개의 댓글