면접 카타 3,4 답
질문 : async/await 이란 무엇인지 설명해주세요.
답: async/await는 JavaScript의 비동기 프로그래밍을 간결하고 직관적으로 작성할 수 있게 해주는 문법입니다.
async 함수: async 키워드를 함수 앞에 붙이면 해당 함수는 항상 프라미스를 반환합니다. 함수 내부에서 비동기 작업을 수행할 수 있습니다.
await 키워드: await는 async 함수 안에서만 사용할 수 있으며, 프라미스가 처리될 때까지 함수의 실행을 일시 정지시킵니다. 프라미스가 해결되면 그 결과를 반환합니다.
이 문법을 사용하면 비동기 코드를 마치 동기 코드처럼 작성할 수 있어 가독성이 높아집니다. 예를 들어, 여러 개의 비동기 작업을 순차적으로 처리할 때 콜백 지옥을 피할 수 있습니다.

꼬리질문 :
1. async/await의 장점과 단점은 무엇인가요?
장점: 코드 가독성 향상, 콜백 지옥 방지, 에러 처리 간편화.
단점: 오래 걸리는 작업을 병렬로 처리하기 어려움, await가 블로킹처럼 보일 수 있음.
2. async/await와 Promise의 차이점은 무엇인가요?
async/await는 Promise를 더 쉽게 사용할 수 있게 해주는 문법적 설탕입니다. Promise 체인보다 코드가 간결하고 읽기 쉽습니다.
3. await를 사용할 때 주의할 점은 무엇인가요?
await는 async 함수 내에서만 사용할 수 있습니다. 여러 비동기 작업을 병렬로 처리해야 할 때는 Promise.all을 사용하는 것이 좋습니다.
4. 에러 처리는 어떻게 하나요?
try/catch 블록을 사용하여 await에서 발생하는 에러를 처리할 수 있습니다.
5. async/await가 동작하는 방식은 무엇인가요?
async 함수는 항상 프라미스를 반환합니다. await는 프라미스가 해결될 때까지 함수의 실행을 일시 정지시킵니다.
질문 : Hostiong 이란 무엇인지 설명해주세요.
답 : 호이스팅은 JavaScript의 독특한 동작으로, 변수와 함수 선언이 코드 실행 전에 해당 스코프의 최상위로 끌어올려지는 것을 의미합니다.
변수 호이스팅: var로 선언된 변수는 선언만 끌어올려지고, 초기화는 원래 위치에서 이루어집니다. 따라서 선언 전에 변수를 참조하면 undefined가 반환됩니다.
함수 호이스팅: 함수 선언은 전체가 끌어올려지기 때문에, 함수 선언 전에 호출이 가능합니다.
let과 const: let과 const로 선언된 변수는 호이스팅되지만, TDZ(Temporal Dead Zone) 때문에 선언 전에 접근할 수 없습니다.
꼬리질문 :
1. 호이스팅이 발생하는 이유는 무엇인가요?
JavaScript의 컴파일 단계에서 변수와 함수 선언을 미리 처리하기 때문입니다.
2. let과 const의 호이스팅은 어떻게 다른가요?
let과 const도 호이스팅되지만, TDZ(Temporal Dead Zone) 때문에 선언 전에 접근할 수 없습니다.
3. 호이스팅이 코드에 미치는 영향은 무엇인가요?
변수 선언 위치에 관계없이 코드가 실행되므로, 의도치 않은 undefined 참조가 발생할 수 있습니다.
4. 호이스팅을 피하기 위한 방법은 무엇인가요?
변수를 사용하기 전에 항상 선언하고, let과 const를 사용하여 TDZ를 활용합니다.
5. 함수 표현식과 함수 선언의 차이는 무엇인가요?
함수 선언은 호이스팅되지만, 함수 표현식은 변수 호이스팅만 발생하여 선언 전에 호출할 수 없습니다.
6. TDZ란 무엇인가요?
tdz는(temporal dead zone)는 javascrpt에서 let 과 const 로 선언된 변수가 초기화 되기 전까지 접근할 수 없는 구간을 말합니다.
tdz의 시작 : 변수가 선언된 시점부터 초기화되기 전까지의 구간입니다.
tdz의 끝 : 변수가 실제로 초기화 되는 시점입니다.
예시로는
console.log(x); // referenceError
let x = 5;
위 코드에서 x 는 let 으로 선언되었기 때문에, 선언 전에 접근하면 referenceError 가 발생합니다. tdz는 변수가 선언되었지만 아직 초기화되지 않은 상태를 보호합니다.
tdz는 코드의 안정성을 높이고, 변수를 사용하기 전에 반드시 선언하고 초기화 하도록 강제합니다.
'부트캠프' 카테고리의 다른 글
| 69일차 TIL ( 면접 카타 3일차 ) (0) | 2025.02.12 |
|---|---|
| NEST.js 에 대한 정리 (0) | 2025.02.11 |
| 67일차 TIL (면접카타 1일차) (0) | 2025.02.10 |
| WIL (0) | 2025.02.07 |
| 66일차 TIL (0) | 2025.02.07 |