5 번째 질문 (async/await)에 대하여 설명하시오.
ES6에 도입된 화살표 함수는 기존 함수 표현식을 간결하게 작성할 수 있게 해 주는 문법입니다.
주요 특징:
- 간결한 문법: 함수 선언을 축약하여 코드의 가독성을 높입니다.
- Lexical this: 자신만의 this를 가지지 않고 상위 스코프의 this를 그대로 참조합니다.
- 생성자 함수로 사용 불가: new 연산자로 호출하여 인스턴스를 생성할 수 없습니다.
- arguments 객체 없음: 일반 함수와 달리 arguments 객체를 제공하지 않습니다.
// 간단한 화살표 함수 예시
const add = (a, b) => a + b;
console.log(add(3, 4)); // 출력: 7
// this 바인딩 예시
const obj = {
value: 10,
// 화살표 함수 사용 시, 상위 스코프의 this(여기서는 전역 객체)를 참조하여 의도와 다른 결과가 발생할 수 있음
getValue: () => {
return this.value;
}
};
console.log(obj.getValue()); // 예상과 달리 undefined 출력될 수 있음
예상 꼬리질문 및 답변
- Q1. Arrow Function과 일반 함수의 가장 큰 차이는 무엇인가요?
답변: "Arrow Function은 자신의 this, arguments, super, new.target 등을 갖지 않고 상위 스코프의 값을 그대로 참조합니다. 반면, 일반 함수는 호출 방식에 따라 동적으로 this를 결정합니다."
- Q2. 어떤 경우에 Arrow Function 사용을 피해야 하나요?
답변: "생성자 함수로 사용해야 하거나, arguments 객체를 활용해야 하는 경우에는 일반 함수를 사용하는 것이 적합합니다."
- Q3. Arrow Function의 장점과 단점은 무엇인가요?
답변: "장점은 코드가 간결해지고, 콜백 함수에서 상위 스코프의 this를 자연스럽게 참조할 수 있다는 점입니다. 단점은 생성자로 사용 불가능하며, arguments 객체가 제공되지 않아 특정 상황에서 불편할 수 있다는 점입니다."
6 번째 질문 (Express)에 대하여 설명하시오.
Express는 Node.js 기반의 경량 웹 프레임워크로, 웹 애플리케이션 및 API 서버를 쉽게 구축할 수 있도록 다양한 기능(라우팅, 미들웨어, 에러 처리 등)을 제공합니다.
필요한 이유!
- 간편한 라우팅: URL 경로와 HTTP 메서드(GET, POST 등)를 쉽게 매핑할 수 있습니다.
- 미들웨어 체인: 요청과 응답 사이의 로직을 모듈화하여 관리할 수 있습니다.
- 에러 처리: 기본적인 에러 핸들링을 내장하여 복잡한 예외 처리를 단순화합니다.
- 확장성: 다양한 서드파티 미들웨어를 통해 기능 확장이 용이합니다.
대안으로는?
- Hapi: 플러그인 기반의 구조로 확장성과 구성 관리가 용이합니다.
- Fastify: 높은 성능과 효율적인 JSON 직렬화를 강조하는 프레임워크입니다.
- NestJS: Express 또는 Fastify 위에서 동작하며, 모듈화와 의존성 주입을 지원하는 구조적 프레임워크입니다.
const express = require('express');
const app = express();
const port = 3000;
// 간단한 GET 라우트 예시
app.get('/', (req, res) => {
res.send('Hello, Express!');
});
// 서버 실행
app.listen(port, () => {
console.log(`서버가 http://localhost:${port} 에서 실행 중입니다.`);
});
예상 꼬리질문 및 답변
- Q1. Express의 미들웨어란 무엇이며, 왜 중요한가요?
답변: "Express의 미들웨어는 요청과 응답 처리 과정에 끼어들어, 인증, 로깅, 데이터 파싱 등 다양한 작업을 모듈화하여 처리할 수 있게 해주는 함수들입니다. 이를 통해 코드의 재사용성과 유지보수성을 크게 높일 수 있습니다."
- Q2. Node.js의 http 모듈과 비교했을 때, Express를 사용하면 어떤 장점이 있나요?
답변: "기본 http 모듈은 라우팅, 요청 파싱, 에러 처리를 직접 구현해야 하지만, Express는 이러한 기본 기능들을 내장하고 있어 개발 시간이 단축되고 코드 관리가 쉬워집니다."
- Q3. Express와 Koa의 주요 차이점은 무엇인가요?
답변: "Express는 전통적인 콜백 기반 미들웨어 체인을 사용하지만, Koa는 async/await를 기본으로 하여 비동기 처리가 보다 깔끔합니다. 다만, Koa는 기본 제공 기능이 적어 필요한 기능을 추가 미들웨어로 구현해야 합니다."
- Q4. 대규모 애플리케이션 개발 시 Express의 한계는 무엇이며, 어떤 대안을 고려할 수 있나요?
답변: "Express는 경량 프레임워크로 단순 애플리케이션에는 적합하지만, 대규모 프로젝트에서는 코드 구조 관리와 확장성 측면에서 한계가 있을 수 있습니다. 이 경우, NestJS와 같은 구조화된 프레임워크를 고려하면 더욱 체계적인 애플리케이션 개발이 가능합니다."
'내일배움캠프 TIL' 카테고리의 다른 글
nest 같은 매서드 순서의 문제 본캠프 TIL 02/14 (0) | 2025.02.14 |
---|---|
(async/await), (Hoisting) 본캠프 TIL (0) | 2025.02.11 |
(var, let, const), (Promise) 본캠프 TIL 02/10 (0) | 2025.02.10 |
docker에 다해여 본캠프 TIL 02/07 (0) | 2025.02.07 |
EFK란? 본캠프 TIL 02/05 (0) | 2025.02.05 |