백엔드 면접 스크립트 - Node.js

2022. 12. 6. 20:56·BE Study
반응형
해당 자료는 SimpliLearn에서 제공하는 Top 50+ Node.js Interview Questions and Answers for 2023을 토대로 작성되었습니다.

 

 


< 해당 자료는 여러 번의 검토를 통해 최대한 오류 없이 작성하였습니다 >

 

Node.js

 

1. Node.js는 무엇이고 어디에 사용하는가?

- Node.js는 브라우저 외부에서 application을 실행하기 위한 자바스크립트 런타임 환경입니다. 웹 프로그램의 서버를 만드는데 주로 사용됩니다. Node.js는 비동기식 이벤트 중심 모델을 사용하므로 입출력이 많은 데이터 집약적 애플리케이션에 적합합니다. 

 

2. Node.js를 사용하는 이유는?

- I/O요청이 많은 서버에 사용하기 적합하다. (논블로킹 방식으로 처리하기 때문에)

- 따라서, 실시간 데이터를 주고받는 작업에 적합하다.

- 싱글 스레드 방식이기 때문에 상대적으로 서버 구축이 쉽다.

- 한 가지 언어로 웹 페이지 전체를 만들 수 있다.

- npm을 통한 다양한 확장 모듈을 사용할 수 있다(확장성이 높다)

 

3. Node.js는 어떻게 작동하나?

- 기본적으로 Node.js는 싱글 스레드로 동작하는 언어입니다. 하지만, 동시성을 위하여 Event loop라는 개념을 가지고 Non-blocking I/O를 실행할 수 있습니다. 

 

4. Node.js가 단일 스레드인 이유는?

- 동시성을 위해 node.js의 백그라운드에서는 콜백에 대한 처리가 멀티 스레드에서 이루어진다. 그렇기에 Node.js를 단일 스레드라 할 수 없지만, 이벤트 루프 자체가 JavaScript로 이루어져 있고 이는 싱글 스레드로 작동되기에 싱글 스레드라 표현하는 것이 일반적이다.

 

5. Node.js에서 callback이란?

- 다른 함수에 인자로 이용되는 함수 또는 어떠한 이벤트에 의해 호출되는 함수를 callback 함수라 한다.  callback 함수가 실행되는 동안 다른 코드를 실행할 수 있으며 차단을 방지합니다. 비동기 방식이기 때문에 Node.js는 콜백에 크게 의존한다. 

 

6. I/O란?

- Input과 Ouput을 의미한다. 파일 시스템 접근하여 읽기 쓰기 등을 하거나 네트워크를 통한 요청 같은 작업도 I/O의 일종입니다.

 

7. Node.js가 어디에 많이 사용되나?

- 비동기식 이벤트 중심적 모델을 사용하는 데이터 집약적 애플리케이션에 적합하므로 실시간 채팅, iot, 스트리밍, 주식 차트 서비스 등과 같이 데이터를 많이 주고받는 API 서버에 많이 사용한다.

 

8. NPM이란?

- Node.js의 모든 패키지와 모듈을 관리하는 Node package Manager의 약자이다. 다른 사용자들이 만들어 놓은 모듈을 NPM을 통해 간단히 다운로드하여 사용할 수 있다.

 

9. Node.js Module?

- 독립된 기능을 갖는 함수들의 모임이라고 표현할 수 있다. legercy 방식인 절차 지향으로 모든 기능을 써내려 가는 것과 달리 기능별로 함수를 만들어 필요 부분에 함수를 호출하는 방식으로 프로그램의 유지보수성을 높일 수 있다. 모듈에는 node.js에 기본적으로 저장되어있는 core module이 있고, 이를 제외한 직접 만든 모듈이나 npmjs.com에서 받아서 사용할 수 있는 모듈들을 local mudule이라고 합니다.

 

10. Java, PHP 등에 대비한 Node.js의 장점은?

- compile 등의 과정이 없이 소스코드를 바로 번역하여 즉각적으로 실행하여 결과를 바로바로 확인할 수 있다.

- API가 데이터를 반환할 때까지 기다리지 않기 때문에 데이터 집약적 실시간 웹에 적합하다.

- NPM에 개발자들이 사용할 수 있는 무수히 많은 라이브러리들이 있다.

- 동일안 언어 사용으로 클라이언트와 서버의 동기화를 향상한다.

- 진입장벽이 낮다.(single thread 방식이기 때문에)

 

11. Node.js에서 가장 일반적으로 사용되는 라이브러리는?

- Express: 서버를 쉽게 구성할 수 있게 만드는 프레임 워크이다.

- Mongoose, mysql: 애플리케이션을 데이터 베이스에 쉽게 연결할 수 있게 해 주는 프레임 워크이다.

 

12. Node.js의 장단점은?

- 장점

  - 클라이언트와 동일한 자바스크립트를 사용하여 서로 간의 동기화를 향상할 수 있다.

  - Non-blocking 이벤트 기반 비동기 방식으로 처리되어 높은 처리 성능을 가지고 있다.

  - npm을 통해 다양한 패키지를 제공받을 수 있다.

 

- 단점

  - 비동기 방식이 콜백을 이용하여 로직이 작성되는데 이로 인해 로직이 복잡할 경우 콜백 지옥에 빠질 수 있다.

  - Single Thread이기 때문에 하나의 작업 자체가 복잡한 웹서비스에는 어울리지 않는다.

  - Node.jsd의 언어인 JavaScript가 인터 프리티 방식이기 때문에 코드가 수행되어야 에러의 여부를 파악할 수 있고, 에러가 날 경우 프로

    프로세스가 멈추기 때문에 케이스별 테스트 과정이 필요하다.

 

13. 외부 라이브러리를 가져오는 방법은?

- "require / exports"명령를 통해 외부 라이브러리를 가져올 수 있다. ES6부터 새로 도입된 "import / export"도 있지만 서로 차이를 알고 써야 한다.

  - require는 CommonJS를 사용하는 node.js문이지만 import는 ES6에서만 사용 가능하다.

  - require / exports는 모듈 전체를 치환하여 내보내고, import / export는 모듈 내에 정의된 특정한 부분만을 불러올 수 있다.

  - require는 사용될 코드 파일 안에 있으면 가능하지만 import는 항상 맨 위에 있어야 한다.

  - 하나의 프로그램에서 두 키워드를 동시에 사용할 수 없다.

 

14. 이벤트 중심 프로그램이란?

- 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식을 의미한다. Node.js는 이벤트 리스너에 등록해둔 콜백 함수를 실행하는 방식으로 동작한다.

 

15. Event Loop?

- 이벤트 발생 시 호출할 콜백 함수들을 관리하고, 호출된 콜백 함수의 ㅅㄹ행 순서를 결정하는 역할을 담당합니다. 노드가 종료될 때까지 이벤트 처리를 위한 작업을 반복하므로 루프라고 부른다.

 

16. Package.json 파일이란 무엇인가?

- 서비스를 만들다 보면 여러 가지 패키지를 추가하게 되는데 패키지가 계속 늘어나게 되면 해당 패키지를 기록해둘 곳이 필요해진다. 이를 Package.json에 저장할 수 있다. 뿐만 아니라 같은 패키지라도 버전별로 기능이 다를 수 있기 때문에 프로젝트를 설치할 때 패키지도 동일한 버전으로 설치해야 한다. 이 또한 package.json에 기록하고 관리해야 한다. 따라서, 노드 프로젝트를 시작하기 전에는 폴더 내부에 무조건 package.json을 만들고 시작해야 한다.

 

23. Node.js의 Stream?

- 영상파일과 같이 용량이 큰 데이터를 처리해야 하거나, 비동기적으로만 얻을 수 있는 network input 등을 처리할 때 사용하는 node에서 가장 중요한 데이터 타입 중 하나입니다.

- stream이 가능한 source(file, network input)로 부터 핸들러에게 해당 data를 여러 개의 chunk로 나누어 입출력하는 형태의 구현 방식을 취하고 있다.

- data, error, end 등의 이벤트 핸들러를 달아 처리한다.

- 데이터 타입을 특별히 지정하지 않으면 data는 buffer가 된다.

 

24. Node.js로 Hello World를 반환하는 간단한 서버는 어떻게 만드나?

const http = require('http');
const PORT = 3000;

const server = http.createServer((req, res) => {
	res.writeHead(200, {'Content-type':'text/plan'});
	res.end('Hello World');
});

server.listen(PORT, () => {
	console.log(`this server is listening at port: ${PORT}`);
});

 

25. Node.js의 비동기 및 Non-blocking?

- 모든 Node.js 라이브러리 API는 비동기식이므로 non-block이다.

- Node.js 기반 서버는 API가 데이터를 반환할 때까지 기다리고 있지 않는다. 대신 호출 후 다음 API로 이동하고 Node.js 이벤트의 알림 메커니즘이 이전 API 호출에 대해 서버에 응답합니다.

 

26. Node.js에서 비동기를 어떻게 구현하나?

- Promise/then 또는 async/await 구문을 통해 비동기 코드를 구현할 수 있다.

- Promise/then

  - Promise는 순차적으로 여러 콜백 함수를 실행시켜야 할 때 복잡도와 예외처리의 어려움을 해결해준다

  - 성공 여부에 따라 resolve, reject 함수를 실행시킬 수 있다. 성공 여부에 따라 then과 catch로 결괏값을 가져올 수 있다.

- async/await

  - 비동기 처리에 절차적인 프로그래밍이 가능하도록 가독성을 높인 문법이고 에러가 어디서 발생하는지 알기 쉽다.

  - 외부 함수에 async를 앞에 붙여주고 내부 비동기 처리 함수에 await을 앞에 붙여준다. 성공 여부는 try와 catch 문법으로 구분할 수 있다.

 

27. module.exports의 목적은?

- Node.js의 모듈은 모든 관련 코드를 단일 코드 단위로 캡슐화하는 데 사용되며 모든 관련 함수를 단일 파일로 해석할 수 있습니다. module.exports를 사용하여 모듈을 내보낼 수 있으며 필수 키워드를 사용하여 다른 파일로 가져올 수 있습니다.

 

 

28. Node.js의 콜백 함수는 무엇인가?

- 콜백은 주어진 작업이 진행된 후 호출되는 함수이다. 비동기적으로 실행할 수 있다. 하지만 복잡한 로직에 의해 콜백 헬에 빠지게 될 수도 있으므로, Promise, then이나 async/await을 활용하여 가독성 있는 코드를 짤 수 있다.

 

29. 제어 흐름 기능은?

- 비동기적으로 실행되는 함수를 동기적으로 흐름을 제어하는 행위이다.

- Promise/then을 사용하거나, async/await을 이용하여 흐름을 제어할 수 있다.

 

30. Node.js의 버퍼 클래스는 무엇인가?

- 버퍼 클래스는 정수 배열과 유사한 원시 데이터를 저장하지만 V8 힙 외부의 메모리 할당에 해당합니다.

- 순수 JavaScript는 이진 데이터와 호환되지 않기 때문에 버퍼 클래스가 사용됩니다.

 

 

31. 콜백 지옥이란 무엇인가?

- 함수의 매개변수로 넘겨지는 콜백 함수가 반복되어 코드의 들여 쓰기 수준이 감당하기 힘들 정도로 깊어지는 현상을 말한다.

- Promise 객체나, async/await을 통해 콜백 지옥을 탈출할 수 있다.

 

 

32. Node.js의 미들웨어 개념을 설명해라

- 요청-응답 사이에 request, response 객체에 대한 접근 권한을 갖고 변형시킬 수 있으며 미들웨어 내에서 다음 미들웨어 함수 접근권한을 next인자로 갖는 함수입니다.

 

33. NODE_ENV의 목적은 무엇인가?

- 환경변수를 통해 개발환경과 운영환경에 따른 설정 정보를 다르게 가져올 수 있다.

 

 

 

참조 : SimpliLearn ( Top 50+ Node.js Interview Questions and Answers for 2023 )

https://www.simplilearn.com/tutorials/nodejs-tutorial/nodejs-interview-questions

반응형
저작자표시 (새창열림)

'BE Study' 카테고리의 다른 글

[Google Cloud] 서버 배포 오류  (0) 2022.12.25
Node.js + MongoDB App 만들기 (1)  (0) 2022.12.16
백엔드 면접 스크립트 - Database  (0) 2022.11.15
백엔드 면접 스크립트 - 운영체제  (0) 2022.10.21
백엔드 면접 스크립트 - Network  (0) 2022.10.21
'BE Study' 카테고리의 다른 글
  • [Google Cloud] 서버 배포 오류
  • Node.js + MongoDB App 만들기 (1)
  • 백엔드 면접 스크립트 - Database
  • 백엔드 면접 스크립트 - 운영체제
OverFlowBIN
OverFlowBIN
    반응형
  • OverFlowBIN
    OverFlowBIN BE Tech Blog
    OverFlowBIN
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 전체보기
      • Computer Science
      • BE Study
      • MySQL
      • Algorithm
      • Language
        • TypeScript
        • JavaScript
        • Python
        • JAVA
      • Spring Boot
      • Programing Tool
      • Group Study
      • HTTP
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    node.js
    Java
    Google Cloud
    Spring
    axios
    back-end
    의존성 주입
    일급 함수
    MongoDB
    backend
    app engine
    spring boot
    논리연산자
    코딩테스트
    httpie
    Nullish
    javascript
    일급함수
    thymeleaf
    python #내장함수 #자료구조
    이분탐색
    게시판 만들기
    bootstrap
    동작원리
    algorithm
    이진검색
    백엔드
    단축평가
    programers
    기술면접
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
OverFlowBIN
백엔드 면접 스크립트 - Node.js
상단으로

티스토리툴바