[면접준비] 아침 면접 준비 (24/04/17)

2024. 4. 17. 09:43공부/면접 준비

1. Promise란 무엇입니까?


Promise는 비동기 작업의 미래 완료 또는 실패와 그 결과 값을 나타내는 객체입니다. Promise가 생성될 때 반드시 알 수 없는 값에 대한 대리자로, 비동기 연산 종료 이후 결과 값과 실패 사유를 처리하기 위한 처리기를 연결할 수 있다. 프로미스를 사용하여 비동기 메서드를 마치 동기 메서드처럼 다룰 수 있다. 다만, 최종 결과를 반환하는게 아니라 어느 미래 시점에 결과를 제공하겠다는 약속(promise)를 반환한다.


대기(pending): Promise의 초기 상태입니다. 결과는 아직 결정되지 않았습니다.
이행(fulfilled): 작업이 성공적으로 완료되었으며 이제 Promise는 결과 값을 보유합니다.
거부(rejected): 작업이 실패했으며 Promise에는 실패 이유가 포함됩니다.

 
Promise는 서버에서 데이터 가져오기, 파일 읽기, 시간이 많이 걸리는 작업 실행과 같은 비동기 작업을 처리하는 데 사용되며 성공 또는 실패를 처리하는 방법을 제공합니다.

 

2. async/await란 무엇입니까?

async 및 await는 JavaScript의 비동기 함수 작업을 단순화하는 Promise의 확장입니다.

async와 await를 사용하면 동기 코드와 비슷하게 보이고 작동하는 비동기 코드를 작성할 수 있습니다.

async: 함수 선언 앞에 async를 배치하여 함수가 비동기 작업을 수행하고 약속을 반환함을 나타냅니다.
await: async 함수 내에서 await를 사용하여 Promise가 해결되거나 거부될 때까지 함수 실행을 일시 중지합니다. 이를 통해 기존 Promise 구문(.then 및 .catch 등)의 복잡성을 피하면서 간단하고 선형적인 방식으로 비동기 코드를 작성할 수 있습니다.

 

3. Hoisting이란 무엇입니까?

Hoisting은 코드가 실행되기 전 컴파일 단계에서 변수 및 함수 선언이 포함 범위의 맨 위로 이동되는 JavaScript 메커니즘입니다. 본질적으로 이는 변수와 함수를 선언하기 전에 사용할 수 있음을 의미합니다.

변수 호이스팅: var로 선언된 변수의 경우 호이스팅은 선언을 맨 위로 재배치하지만 초기화하지는 않습니다. 변수가 선언되고 초기화되기 전에 변수를 사용하려고 하면 변수는 존재하지만 값은 '정의되지 않음'이 됩니다.
함수 호이스팅: 함수 선언이 완전히 호이스팅됩니다. 즉, 선언과 정의가 모두 맨 위로 이동됩니다. 이를 통해 함수가 코드에 나타나기 전에 호출될 수 있습니다.
ES6에서는 'let' 및 'const' 선언과 함께 호이스팅이 다르게 동작한다는 점에 유의하는 것이 중요합니다. 이러한 선언은 코드의 실제 선언 줄에 도달할 때까지 초기화되지 않으며, 선언이 초기화될 때까지 블록 시작부터 일시적인 데드존이 생성됩니다.