1. 이벤트루프에 대해 설명해주세요.
<알고있는대로 먼저 적은 내용>
이벤트 루프는 자바스크립트 엔진이 비동기 작업을 처리하는 방식입니다. 자바스크립트는 싱글스레드 기반으로 동작하기 때문에 모든 작업들은 하나씩 처리되고, 콜스택에 작업이 쌓이게 됩니다. API를 통해 데이터를 받거나 오래걸리는 작업 등의 처리를 위해 비동기 처리가 필수적으러 이루어져야 하는데요, 이때 Web API를 통해 비동기 작업이 이루어질 수 있습니다. 콜스택에 비동기 작업이 실행되면 비동기함수는 Web API를 호출하고 Web API는 Task queue라고도 하는 Callback Queue에 콜백 함수를 넣습니다. 이벤트 루프는 콜스택과 콜백큐를 계속 확인하여 콜스택에 있는 작업을 우선적으로 처리하고 콜스택이 비면 콜백큐에 있는 작업을 콜스택에 넣어 처리하는 방식으로 자바스크립트가 동작합니다.
<공부 이후 수정한 내용>
이벤트 루프는 자바스크립트 엔진이 비동기 작업을 처리할 수 있게 해주는 중요한 메커니즘입니다. 자바스크립트는 싱글스레드 기반으로 동작하기 때문에 모든 작업들은 하나씩 처리되고, 콜스택에 현재 실행 중인 코드들이 쌓이게 됩니다. 하지만 자바스크립트 fetch를 통해 데이터를 받거나 setTimeout 함수 등의 Web API를 사용하여 비동기 작업을 수행할 수 있습니다. 콜스택에 비동기 작업이 실행되면 비동기함수는 Wep API를 호출하고 Web API는 Callback Queue라고도 하는 Task Queue에 콜백함수를 넣습니다. 이벤트 루프는 콜스택과 태스크큐를 관리하며 콜스택에 있는 작업을 우선적으로 처리하고 콜스택이 비워지면 태스크큐에 있는 작업을 콜스택에 넣어 처리하는 방식으로 자바스크립트가 동작합니다.
2. 앞서 말씀하신 태스크 큐의 종류에는 무엇이 있나요?(매일메일 질문)
<알고있는대로 먼저 적은 내용>
태스크 큐는 마이크로 태스크 큐와 매크로 태스크 큐라는 두 종류가 있습니다. 각각 어떤 역할을 하는 지는 잘 모르겠습니다. 해당 부분에 대해 더 공부하도록 하겠습니다.
<공부 이후 수정한 내용>
태스크 큐는 매크로 태스크 큐와 마이크로 태스크 큐로 나뉩니다. 매크로 태스크 큐는 setTimeout, setInterval 과 같은 일반적인 비동기 작업들이 대기하는 큐입니다. 매크로 태스크 큐는 이벤트 루프가 콜스택과 마이크로 태스크 큐의 작업을 모두 처리한 후 하나씩 처리됩니다.
마이크로 태스크 큐는 Promise.then()과 같이 높은 중요도의 작업들이 대기하는 큐입니다. 마이크로 태스크 큐는 매크로 태스크 큐보다 우선순위가 높으며 콜스택이 비워져있으면 마이크로 태스크 큐의 작업들을 먼저 처리합니다.
정리하면, 태스크큐는 매크로 태스크 큐와 마이크로 태스크 큐로 이루어져 있으며, 마이크로 태스크 큐에 있는 작업들이가 매크로 태스크 큐보다 우선순위가 높아 먼저 처리됩니다.
'Private > 면접' 카테고리의 다른 글
프론트엔드 면접(HTTP 통신) (1) | 2024.11.18 |
---|---|
프론트엔드 면접(props, state) (1) | 2024.11.16 |
프론트엔드 면접(이미지 최적화) (0) | 2024.11.12 |
프론트엔드 면접(실행컨텍스트, 스코프 체인) (0) | 2024.11.11 |
프론트엔드 면접(reflow, repaint) (0) | 2024.11.10 |