intermediate
Event loop
Call stack, task queue, microtask queue, Promise, async/await и наблюдаемый порядок выполнения.
Call stack выполняется синхронно до опустошения. Реакции Promise попадают в microtasks; таймеры и многие I/O callbacks — в macrotasks. После каждой macrotask рантайм очищает все microtasks перед следующей macrotask.
console.log('sync');
setTimeout(() => console.log('task'), 0);
Promise.resolve().then(() => console.log('microtask'));
// sync → microtask → task
`setTimeout(..., 0)` не мгновенен — он планирует task. Длинные цепочки microtasks могут задержать rendering и таймеры.
На интервью объясняйте концепцию на конкретном примере и называйте поведение рантайма, которое проверяют.
Типовые ошибки: путать похожие API и забывать edge cases в live coding.
Компромисс часто между ясностью и производительностью или между безопасностью и удобством.
Чеклист:
- Синхронный код выполняется первым.
- Promise планируют microtasks.
- Таймеры планируют macrotasks.
- Microtasks очищаются между macrotasks.