JS JavaScript  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Событийный цикл и очереди задач

Тест проверяет порядок синхронного кода, микрозадач, таймеров и продолжений async-функций в современном браузере. Вопросы требуют восстановить точную последовательность вывода, распознать голодание очереди и отличить задержку таймера от гарантированного времени запуска.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 25 вопросов и 70 минут; код лучше читать построчно, не полагаясь на первое впечатление. После завершения откроются общий процент, 5 тематических шкал и объяснение каждого решения.
Вопрос 1 из 25
В какой последовательности выполнятся вложенные вызовы?
JavaScript
console.log("start");
function outer() {
  console.log("outer");
  inner();
}
function inner() { console.log("inner"); }
outer();
console.log("end");
Вопрос 2 из 25
Почему таймер не может выполниться во время долгого цикла на главном потоке?
JavaScript
setTimeout(() => console.log("timer"), 0);

const started = performance.now();
while (performance.now() - started < 800) {}
console.log("loop end");
Вопрос 3 из 25
Что будет выведено до начала таймера?
JavaScript
console.log("A");
function schedule() {
  console.log("B");
  setTimeout(() => console.log("T"), 0);
}
schedule();
console.log("C");
Вопрос 4 из 25
Что лучше всего объясняет «замороженную» страницу при вычислении большого отчёта?
Вопрос 5 из 25
Когда вызов функции снимается со стека?
Вопрос 6 из 25
Какой порядок вывода получится?
JavaScript
setTimeout(() => console.log("timer"), 0);
Promise.resolve().then(() => console.log("promise"));
console.log("sync");
Вопрос 7 из 25
Как расположатся две микрозадачи?
JavaScript
Promise.resolve()
  .then(() => {
    console.log("A");
    queueMicrotask(() => console.log("B"));
  })
  .then(() => console.log("C"));
Вопрос 8 из 25
Что выведет async-функция относительно внешней строки?
JavaScript
async function run() {
  console.log("A");
  await 0;
  console.log("B");
}
run();
console.log("C");
Вопрос 9 из 25
Что происходит, если каждая микрозадача без остановки ставит следующую?
JavaScript
function again() {
  queueMicrotask(again);
}
again();
setTimeout(() => console.log("timer"), 0);
Вопрос 10 из 25
Чем queueMicrotask удобнее Promise.resolve().then для простой постановки работы?
Вопрос 11 из 25
Что означает задержка 0 в setTimeout?
JavaScript
const started = performance.now();
setTimeout(() => {
  console.log(performance.now() - started);
}, 0);

for (let i = 0; i < 50_000_000; i++) {}
Вопрос 12 из 25
Какой порядок вероятен в современном браузере?
Вопрос 13 из 25
Почему setInterval может быть плох для долгой повторяющейся операции?
JavaScript
setInterval(async () => {
  await rebuildIndex(); // иногда дольше интервала
}, 1000);
Вопрос 14 из 25
Как отменить ещё не выполненный таймер?
JavaScript
const id = setTimeout(sendDraft, 5000);
// Пользователь закрыл редактор до истечения пяти секунд.
Вопрос 15 из 25
Что гарантирует таймер с задержкой 100 мс под нагрузкой?
JavaScript
setTimeout(() => console.log("ready"), 100);
blockMainThreadFor(700);
Вопрос 16 из 25
Какой полный порядок вывода?
JavaScript
console.log("A");
setTimeout(() => console.log("B"), 0);
console.log("C");
Promise.resolve().then(() => console.log("D"));
Вопрос 17 из 25
Какой порядок даст вложенное планирование?
JavaScript
console.log("A");
Promise.resolve().then(() => {
  console.log("B");
  setTimeout(() => console.log("D"), 0);
});
setTimeout(() => console.log("C"), 0);
Вопрос 18 из 25
Какой порядок вывода у двух await?
JavaScript
async function run() {
  console.log("A");
  await null;
  console.log("B");
  await null;
  console.log("C");
}
run();
console.log("D");
Вопрос 19 из 25
Когда браузер обычно получает возможность отрисовать кадр?
Вопрос 20 из 25
Почему тест с await new Promise(r => setTimeout(r, 10)) не гарантирует точный порядок сложной гонки?
JavaScript
startSync();
await new Promise(resolve => setTimeout(resolve, 10));
expect(state).toBe("done");
Вопрос 21 из 25
Профилировщик показывает одну задачу длиной 900 мс. Какой вывод обоснован?
Вопрос 22 из 25
Как отличить бесконечную микрозадачную цепочку от одного долгого цикла?
JavaScript
queueMicrotask(function step() {
  doSmallPart();
  queueMicrotask(step);
});
Вопрос 23 из 25
Какой фрагмент наиболее вероятно создаст голодание очереди задач?
Вопрос 24 из 25
Что измерять при жалобе «кнопка реагирует через секунду»?
Вопрос 25 из 25
Как безопаснее разбить обработку 100 000 элементов на главном потоке?

Ответьте на все 25 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу