job interview FAQ

Node.js 개발자 면접에서 자주 나오는 질문 5가지

인터뷰미(InterviewMe) 2023. 8. 23. 17:51

 

 

 

 

 

질문: Node.js에서 블로킹과 논블로킹 I/O의 차이점은 무엇인가요?

블로킹 I/O는 작업이 완료될 때까지 다음 작업으로 넘어가지 않고 대기하는 방식입니다. 이는 I/O 작업이 일어나는 동안 다른 작업을 수행할 수 없게 만듭니다. 반면, 논블로킹 I/O는 I/O 작업이 완료되지 않아도 다음 작업으로 넘어갈 수 있게 해줍니다. 이렇게 함으로써 다중 작업을 처리할 수 있으며, I/O 작업이 완료되면 알림을 받아 추가 작업을 수행할 수 있습니다. Node.js는 논블로킹 I/O 모델을 채택하여 단일 스레드에서 많은 동시 연결을 다룰 수 있도록 설계되었습니다.

 

질문: 이벤트 루프란 무엇이며, Node.js에서 어떻게 작동하는지 설명해주세요.

이벤트 루프는 Node.js의 핵심 개념 중 하나로서, 이벤트 처리를 위한 루프를 의미합니다. Node.js의 이벤트 루프는 이벤트 처리를 위한 큐와 백그라운드 작업을 위한 스레드 풀을 관리합니다. 이벤트 루프는 비동기 작업을 처리하고, 작업이 완료되면 콜백 함수를 호출하여 결과를 반환합니다. 이러한 방식으로 Node.js는 단일 스레드에서 비동기 작업을 처리할 수 있으며, 높은 성능을 제공할 수 있습니다. 이벤트 루프는 이벤트 기반 소프트웨어 아키텍처를 구현하는 데 필요한 핵심 구성 요소입니다.

 

질문: 콜백 지옥이란 무엇이며, 이를 해결하기 위한 방법은 무엇인가요?

콜백 지옥은 콜백 함수로 인해 코드의 가독성이 떨어지고 유지보수가 어려워지는 현상입니다. 비동기 작업의 연속적인 호출에 따라 코드가 중첩되어 복잡해지는 경우 발생할 수 있습니다. 이를 해결하기 위한 방법으로는 프로미스, Async/Await, 제너레이터 등이 있습니다. 프로미스는 비동기 작업의 결과를 나타내는 객체로, 연속적인 비동기 작업의 결과를 체인 형태로 처리할 수 있습니다. Async/Await는 비동기 작업을 동기적으로 처리할 수 있는 문법적인 편의를 제공하며, 코드의 가독성을 높일 수 있습니다. 제너레이터는 비동기 작업을 동기적으로 처리할 수 있도록 도와주는 개념적인 기능입니다. 이러한 방법들을 사용하여 콜백 지옥을 해결할 수 있습니다.

 

질문: 모듈이란 무엇이며, 모듈 시스템은 어떻게 구성되어 있는지 설명해주세요.

모듈은 재사용 가능한 코드의 단위로, 함수, 객체, 변수 등이 포함될 수 있습니다. 모듈 시스템은 모듈을 정의하고 사용하는 방법을 제공하는 시스템입니다. Node.js는 CommonJS 모듈 시스템을 사용하며, 모듈은 파일 단위로 정의됩니다. 모듈은 exports 객체를 통해 외부로 노출되며, require 함수를 통해 다른 모듈을 가져올 수 있습니다. 이를 통해 코드의 모듈화와 재사용성을 높일 수 있습니다. 또한, Node.js는 npm (Node Package Manager)을 통해 모듈을 관리하고 공유할 수 있는 기능을 제공합니다.

 

질문: 클러스터링이란 무엇이며, Node.js에서 클러스터링을 사용하는 이유는 무엇인가요?

클러스터링은 여러 개의 프로세스 또는 스레드가 하나의 작업을 공유하도록 하는 기술입니다. Node.js에서 클러스터링은 단일 스레드로 동작하는 Node.js 애플리케이션을 멀티코어 환경에서 실행하기 위해 사용됩니다. 클러스터링을 사용하면 각 CPU 코어에서 애플리케이션을 실행할 수 있으므로 성능을 향상시킬 수 있습니다. 또한, 클러스터링을 통해 애플리케이션의 안정성과 가용성도 향상시킬 수 있습니다. Node.js의 클러스터 모듈을 사용하여 노드 프로세스를 생성하고 관리할 수 있으며, 로드 밸런싱을 통해 작업을 분산 처리할 수 있습니다.