Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

다재다능 개발자 성장기 🚀

항해99 👩‍💻92일차 TIL 본문

항해99_6기_TIL

항해99 👩‍💻92일차 TIL

merrytang 2022. 6. 6. 21:00

Node.js 기술면접 준비


var, let, const 의 차이점.

var : 변수 재선언이 가능하다. 에러 없이 다른 값이 출력될 수 있다는 문제가 있다.

let : ES6부터 추가. 변수 재선언은 불가능하고 변수 재할당은 가능하다.

const : ES6부터 추가.변수 재선언과 재할당 모두 불가능하다. 초기값을 반드시 지정해줘야 한다.

 

Event Loop란?

자바스크립트는 이벤트 루프를 이용해서 비동기 방식으로 동시성을 지원한다.

이벤트루프에서는 이벤트 발생 시 호출되는 콜백 함수들을 태스크 큐에 전달하고, 콜스택에 쌓여있는 함수가 없을 때 태스크 큐에 담겨있는 콜백 함수들을 콜스택에 넘겨준다.

 

Express의 역할

Node.js를 사용하여 쉽게 서버를 구성할 수 있게 도와주는 프레임워크이다.

웹 애플리케이션을 만들기 위한 각종 라이브러리와 미들웨어등이 내장되어있다.

 

npm과 yarn 각각에 대해 설명

npm : 자바스크립트 언어를 위한 패키지 관리자로, Node.js의 기본 패키지 관리자이다

yarn : npm의  속도, 안정성, 보안성과 관련된 단점을 보완하기 위해 만들어진 매니저 툴이다. 

 

event-driven programming

어떠한 이벤트가 발생하면, 해당 이벤트에 대하여 반응 하는 프로그래밍을 말한다. 

 

Promise란?

비동기 함수를 동기 처리하가 위해 고안한 객체이다. 비동기 작업이 완료된 이후에 다음 작업을 연결시켜 진행할 수 있는 기능을 가지고 있다. 작업 결과에 따라 성공 또는 실패를 리턴하며 결과 값을 전달 받을 수 있다. 

 

node.js의 장단점

- 장점 

싱글 스레드기반 비동기 IO처리로 매우 빠른 고성능 서버이다.

자바와같은 프로그래밍 언어보다 생산성이 좋아서 빠른 개발이 가능하다.

개발자 커뮤니티가 활성화 되어있고 많은 모듈이 이미 구현되어있다. 

- 단점

싱글스레드이기 때문에 하나의 작업 자체가 시간이 많이 걸리면 전체 시스템의 성능이 낮아진다.

스크립트 언어의 특성 상 실행해봐야 에러를 확인 할 수 있다(컴파일시 확인 불가).

코드의 가독성이 낮아 유지 보수가 어려워질 수 있다.

 

콜백지옥 해결방안

- Promise

비동기 요청이 정상종료 되었는지 여부에 따라 resolve와 reject함수를 적절하게 실행함으로 인해 동기적으로 흐름을 제어할 수 있게된다. 비동기 작업이 성공했을 때의 후속조치로는 then, 실패 시의 후속조치는 catch로 지정한다. 

- async / await 

async : 함수에 async만 붙이면 자동 Promise객체로 인식되고 return값은 resolve()값과 같다. 

await : Promise가 완료될 때까지 기다린 후, Promise가 resolve한 값을 반환한다. reject를 반환 할 경우 try-catch문으로 넘어간다. 또한 async함수 안에서만 사용가능하다. 

 

Single Threaded Async

자바스크립트는 싱글 스레드 프로그래밍 언어라 한 번에 하나씩 밖에 실행할 수 없지만  WEB API, Callback Queue, Event roop 덕분에 멀티 스레드처럼 동시성을 지니고 있다. 

 

비동기 처리 Promise와 async/await의 차이

Promise를 활용할 시에는 .catch()문을 통해 에러 핸들링이 가능하지만, async/await 는 핸들링 할 수 있는 기능이 없어 try-catch() 문을 활용해야 한다.

'항해99_6기_TIL' 카테고리의 다른 글

항해99 👩‍💻94일차 TIL  (0) 2022.06.08
항해99 👩‍💻93일차 TIL  (0) 2022.06.07
항해99 👩‍💻91일차 TIL/WIL  (0) 2022.06.05
항해99 👩‍💻90일차 TIL  (0) 2022.06.04
항해99 👩‍💻89일차 TIL  (0) 2022.06.03