...

[Nodejs] 기술면접 예상 질문

cattaku 2021. 2. 2. 15:14

 

노드 서버 개발자로 취직 준비를 하면서 면접 때 받았던 질문들을 정리해 보았다.
포트폴리오로 제출한 토이프로젝트를 nodejs와 reactjs로 구현을 했었기 때문에 노드와 리액트에 대한 질문을 동시에 받았다.

 

=====Nodejs란?
클라이언트의 브라우저 외부에서 웹 애플리케이션을 실행하기위한 오픈 소스, 크로스 플랫폼 자바 스크립트 런타임 환경 및 라이브러리로, 웹 서버의 기능을 가지고 있다. 

===== 웹서버란 무엇인가?

===== Nodejs를 사용하는 이유?   

===== Node의 작동 원리   

===== 비동기처리란? 
자바스크립트의 비동기 처리란 ‘특정 코드의 실행이 완료될 때까지 기다리지 않고 다음 코드를 먼저 수행하는 자바스크립트의 특성’을 의미합니다. 

===== 싱글쓰레드란?
자바스크립트의 경우 싱글 쓰레드로 처리하는 방식을 채택하고 있다.  
Node.JS 는 이러한싱글쓰레드의단점을멀티쓰레드방식과 비슷하게 같은 동작을 병렬로 처리할 수 있는 방법들로 개선함.

===== Promise란? 
비동기 처리에서 callback함수를 이용하는 것 대신 promise를 이용하여 비동기를 처리
웹브라우저에 종속적인 자바스크립트에서 외부에서 실행할 수 있는 Runtime 환경을 Chrome V8 엔진을 제공하여 여러 OS 환경에서 실행할 수 있는 환경을 제공   

===== MongoDB를 사용한 이유? 

===== require 
외부 모듈을 가져오는 역할  

===== I/O (Non-Blocking) 
비동기적 처리(Asyncronous Processing)의 태스크들을 호출 스택에서 태스크 큐로 보내거나 태스크 큐로 부터 이벤트 루프를 통해 다시 스택으로 가져오는 I/O의 형태를 Non-Blocking  

===== HOC란? 
Higher-order Component 
HOC는 컴포넌트를 인자로 받아 새로운 컴포넌트를 반환하는 함수 
컴포넌트 로직을 재사용 하기 위한 방식으로, HOC의 이름은 with이름지정 규칙을 따름 
리액트 컴포넌트를 작성하게 될 때 반복될 수 있는 코드들은, HOC  만들어서 해결 auth.js처럼 페이지 별로 유저 권한을 확인해야 하는 기능을 함수로 만들어 사용

 

[ ReactJS ]  

===== 리덕스 
자바스크립트 애플리케이션에서 상태를 효율적으로 관리할 수 있게 도와주는 도구 
리액트의 데이터 흐름은 단방향이기 때문에, 부모 컴포넌트 레이아웃 안에 존재하는 자식 컴포넌트(stateless한 컴포넌트)들은 부모 컴포넌트의 상태를 props로 전달받게 되죠. 그러다 부모 컴포넌트의 상태값이 변하게 되면, 자식 컴포넌트들은 변화된 상태에 맞게 data 혹은 UI를 변경합니다. 즉, 리랜더링 과정을 거치게 됩니다. 
스토어를 사용하여 상태를 컴포넌트 구조 바깥에 두고 스토어라는 중간자를 통해 상태를 업데이트하거나, 새로운 상태를 전달받습니다. 
즉, 리덕스를 사용하면, 상태값을 컴포넌트에 종속시키지 않고, 상태관리를 바깥에서 할 수 있게 해줍니다. 

=====  리액트에서 useState(상태관리)란? 
데이터 객체 
예를 들어 ajax를 활용해서 registerPage를 만든다고 할 때 
registerPage에 들어가는 data(parameter)의 관리 

===== props 
props 는 부모 컴포넌트가 자식 컴포넌트에게 주는 값입니다. 자식 컴포넌트에서는 props  받아오기만하고, 받아온 props  직접 수정 할 수 는 없다. 

state 는 컴포넌트 내부에서 선언하며 내부에서 값을 변경  

===== axios 
axios는 ajax 라이브러리 중 하나이다.  ajax 구현방식에는 fetch와 axios가 있다. 

===== Ajax  
Asynchronous Javascript and Xml 의 약자로, 비동기식 자바스크립트와 XML 이다. 
javascript  XMLHttpRequest   이용하여 직접 구현하여도 되지만,  jQuery  이용하는 것이 훨씬 더 간단하게 구현할 수 있다. 

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