부트캠프

72일차 TIL (면접 카타 5일차 )

ohs020105 2025. 2. 17. 20:49

9. Node.js는 single-threaded 기반 JS 런타임입니다. 이에 대해 아는 만큼 설명해주세요.
    - Node.js는 non-blocking, asynchronous 기반 JS 런타임입니다. 이에 대해 아는 만큼 설명해주세요.

질문 : node.js는 single-threaded 기반 js 런타임 입니다. 이에 대해 아는 만큼 설명해주세요.

답 : node.js는 기본적으로 single-threaded(단일 스레드) 기반의 javascript 런타임 입니다. 단순한 실글 스레드 방식이 아니라, 비동기 이벤트 루프와 멀티스레드 i/o처리를 동시에 많은 요청을 처리할 수 있습니다.


질문 : node.js는 nod-blocking,asynchronous 기반 js 런타임입니다. 이에 대해 아는 만큼 설명해주세요.

답: node.js는 non-blocking(논블로킹)i/o와 asynchronous(비동기) 방식을 사용하는 javaScript런타임 입니다. 이를 통해 단일 스레드 환경에서도 고성능 서버를 운영할 수 있습니다. 


** 면접관이 추가 질문할 가능성이 높은 포인트 **
1. Node.js에서 싱글 스레드와 멀티 스레드의 차이점은?

Node.js는 기본적으로 싱글 스레드지만, 내부적으로는 멀티 스레드 I/O 처리를 지원합니다.
CPU 연산이 많은 작업은 Worker Threads나 클러스터링을 활용하여 해결할 수 있습니다.

2. Node.js의 이벤트 루프(Event Loop)가 어떻게 작동하는가?

이벤트 루프는 비동기 작업을 관리하며, 작업이 완료되면 콜백 큐(Callback Queue)에 추가하여 실행합니다.
Microtask(예: Promise.then())와 Macrotask(예: setTimeout())가 실행되는 순서가 다릅니다.

3. 비동기 프로그래밍에서 콜백과 Promise, async/await의 차이는?

콜백 방식은 코드가 복잡해지기 쉬우므로, Promise나 async/await을 사용하는 것이 더 가독성이 좋습니다.


 

10. Node.js의 이벤트 루프란 무엇이고 왜 필요하며 어떻게 작동하는지 아는 만큼 설명해주세요. 

질문 : Node.js의 이벤트 루프란 무엇이고 왜 필요하며 어떻게 작동하는지 아는 만큼 설명해주세요. 


답 : node.js의 이벤트 루프는 싱글 스레드 환경에서 비동이 작업을 효율적으로 처리하기 위해 필요한 핵심 메커니즘입니다. 이를 통해 node.js는 여러 i/o 작업을 논블로킹 방식으로 실행할 수 있으며, 많은 요청을 동시에 처리할 수 있습니다. 

여기서 이벤트 루프란?
 - 이벤트 루프는 node.js가 비동기 방식으로 동작할 수 있도록 하는 엔진으로, 싱글 스레드 환경에서도 네트워크 요청, 파일 입출력, db 조회 등과 같은 작업을 병렬 처리하는 것처럼 보이게 합니다. 


그럼 이벤트 루프는 왜 필요해?

*문제점 : node.js는 싱글 스레드 기반이기 때문에 동기적인 코드만 실행하면 하나의 요청이 끝날 때까지 다른 요청을 처리 할 수 없습니다.

*해결 방법 : 이벤트 루프는 비동기 i/o 및 논블로킹 작업을 관리하여 여러 요청을 동시에 처리할 수 있도록 도와줍니다 .


** 추가로 질문 할 수 있는거 **

1. 이벤트 루프는 브라우저 환경과 node.js에서 다르게 동작하나요?
- 네, 브라우저의 이벤트 루프는 web apis(dom, fetch api 등)를 포함하지만, node.js에서는 libuv 라이브러리를 사용하여 파일 시스템, 네트워크 요청 등을 관리합니다.


2. 이벤트 루프에서 process.nextick() 과 setImmediate()의 차이점은?
- process.nextick()은 현재 실행 중인 작업이 끝나면 즉시 실행되지만, setImmediate()는 Check 단계에서 실행 됩니다. 

'부트캠프' 카테고리의 다른 글

74일차 TIL (면접 카타 7일)  (2) 2025.02.19
73일차 TIL ( 면접 카타 6일 )  (0) 2025.02.18
71일차 TIL  (0) 2025.02.14
70일차 TIL (면접카타 4일차)  (0) 2025.02.13
class - transfomer 사용법 ( NestJS )  (0) 2025.02.13