본문 바로가기

programming_kr/기술면접2

Javascript에서 Microtask에 대해서 설명하여 보세요. 면접관 : Javascript에서 Microtask에 대해서 설명하여 보세요. 면접자 : 비동기 작업을 처리하려면 관리가 필요한데 EMCA에서는 PromiseJobs라는 내부 큐를 명시합니다. V8 엔진에서는 이를 V8 엔진에선 이를 '마이크로태스크 큐(microtask queue)'라고 부릅니다. 마이크로태스크 큐는 먼저 들어온 작업을 먼저 실행합니다(FIFO, first-in-first-out) 실행할 것이 아무것도 남아있지 않을 때만(call stack이 비어있을 때) 마이크로태스크 큐에 있는 작업이 실행되기 시작합니다. 실제로 코드가 실행되면서 일반적인 함수들은 콜스택에 쌓이게 되고 마이크로태스크는 마이크로태스크 큐에, 매크로태스크는 매크로태스크 큐에 쌓이게 됩니다. 이벤트루프가 주기적으로 돌면서.. 2023. 2. 11.
Javascript에서 호출스택(callstack)과 태스크 큐의 관계는 무엇인가요? 면접관 : Javascript에서 호출스택(callstack)과 태스크 큐의 관계는 무엇인가요? 면접자 : 호출 스택(콜 스택)은 코드를 실행하면서 수행할 코드를 쌓고 메모리 힙에서 필요한 것들을 찾아 수행하는 공간입니다. 참고로 메모리 힙은 변수, 함수 저장 등 작업이 발생하는 공간입니다. 비동기 함수를 실행시키면 호출 함수는 콜 스택에 쌓여 차례로 실행되고 콜백 함수는 특정영역에 쌓이게 되는데 이 영역이 태스크 큐입니다. 태스크 큐는 이런 태스크들이 적재되는 공간입니다. 콜 스택에 있는 작업이 실행되면서 이벤트 루프는 계속 콜 스택이 비어있는지 체크를 합니다. 이벤트 루프가 콜 스택이 비어있다는 걸 확인하게 되면 비로소 태스크 큐에 있던 작업들이 콜 스택으로 옮겨진 후 차례로 실행되게 됩니다. 참조 .. 2022. 10. 8.