3차 모의면접의 면접카타 50문제를 하루에 2문제씩 정리하도록 하겠습니다!
1 번째 질문 (var, let, const)에 대하여 설명하시오.
요소별 상세 설명
스코프 (Scope)
var: 함수 레벨 스코프 (함수 내에서 선언되면 함수 내에서만 유효)
let, const: 블록 레벨 스코프 ({} 내에서 선언되면 블록 내에서만 유효)
호이스팅 (Hoisting)
var: 선언 단계와 초기화 단계가 동시에 발생 (값 할당 전 undefined로 초기화).
let, const: 선언 단계와 초기화 단계가 분리되어, 스코프 시작 지점에서 선언은 되지만 초기화는 실제 코드 위치에서 발생.
→ TDZ (Temporal Dead Zone) 구간에서 참조 시 오류 발생.
재할당 및 재선언
var: 재선언 가능, 재할당 가능.
let: 재선언 불가능, 재할당 가능.
const: 재선언 불가능, 재할당 불가능 (단, 객체 내부 프로퍼티는 수정 가능) -- 배열이나, 객체의 경우 안의 밸류 값은 수정 가능
if (true) {
var varVar = "var";
let letVar = "let";
const constVar = "const";
}
console.log(varVar); // "var" (정상)
console.log(letVar); // ReferenceError (블록 밖 접근 불가)
2. Promise란 무엇인지 설명
요소별 상세 설명
정의: 비동기 작업의 완료(성공/실패) 를 나타내는 객체.
목적: 콜백 지옥(callback hell)을 해결하고 가독성 있는 코드 작성 가능.
상태
---pending: 초기 상태 (미완료).
---resolve: 작업 성공.
--- rejected: 작업 실패.
메서드:
.then(): 성공 시 실행.
.catch(): 실패 시 실행.
.finally(): 성공/실패 여부와 무관하게 실행.
const promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("성공!"), 1000);
});
promise
.then(result => console.log(result)) // "성공!"
.catch(error => console.log(error));
예상 꼬리질문 & 대답
1. var, let, const 관련
Q1. TDZ(Temporal Dead Zone)가 무엇인가요?
A: let/const가 선언되기 전에 접근을 막는 구간으로, 초기화 전 변수 참조 시 ReferenceError가 발생합니다.
Q2. const로 선언된 객체의 프로퍼티를 수정할 수 있는 이유는?
A: const는 재할당을 금지할 뿐, 객체의 내부 값 변경은 허용하기 때문입니다.
Q3. var의 호이스팅과 let의 호이스팅 차이는?
A: var는 선언과 동시에 undefined로 초기화되지만, let은 초기화되지 않은 상태로 호이스팅되어 TDZ가 생깁니다.
2. Promise 관련
Q1. Promise 체이닝(Promise Chaining)이란?
A: .then()을 연속적으로 사용하여 여러 비동기 작업을 순차적으로 처리하는 방식입니다.
Q2. async/await과 Promise의 차이는?
A: async/await은 Promise를 기반으로 하며, 동기 코드처럼 비동기 로직을 작성할 수 있게 해줍니다.
Q3. Promise.all()과 Promise.race()의 차이는?
A: Promise.all(): 모든 Promise가 성공해야 결과를 반환.
Promise.race(): 가장 먼저 완료된 Promise의 결과를 반환.
'내일배움캠프 TIL' 카테고리의 다른 글
docker에 다해여 본캠프 TIL 02/07 (0) | 2025.02.07 |
---|---|
EFK란? 본캠프 TIL 02/05 (0) | 2025.02.05 |
nest에서의 jest기본 문법 본캠프 TIL 02/04 (0) | 2025.02.04 |
모니터링 & 로깅 → EFK 스택 본캠프 TIL 02/03 (0) | 2025.02.03 |
LexoRank 를 적용하여 카드 순서 이동하기 본캠프 TIL 01/31 (0) | 2025.02.01 |