awesome-everything EN
↑ Обратно к восхождению

Браузер и фронтенд-рантайм

Воркеры: тест с выбором ответа

Суть Тест с выбором на синтез по всему юниту — изоляция потоков, стоимость structured clone и transfer, ловушки жизненного цикла service worker, гейт COOP/COEP, backpressure пула и ошибка с DOM в воркере.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 13 min

Шесть вопросов поперёк всего юнита. Каждый отражает архитектурное решение под реальной нагрузкой — какой примитив подходит, чего он стоит и какой сбой он не способен решить — а не определение для заучивания.

Цель

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

Викторина

Коллега переносит медленный ре-рендер React-списка в web worker, чтобы убрать джанк при скролле, и ничего не меняется. Почему и что реально помогает?

Викторина

Ты делаешь postMessage с Float32Array на 40 МБ в воркер, и отправляющий поток всё равно замирает на ~40 мс ещё до старта воркера. Лучший фикс?

Викторина

Ты деплоишь новый service worker, перезагружаешь — и всё ещё старое поведение без ошибок. Новый воркер установился нормально. Что происходит?

Викторина

Многопоточный WASM-модуль тихо работает однопоточно в проде. typeof SharedArrayBuffer равно 'undefined', а crossOriginIsolated равно false; COOP: same-origin выставлен, а COEP — нет. Точный фикс и его цена?

Викторина

Кнопка запускает задачу обработки изображения на 400 мс. Пользователи жмут часто; вкладка спавнит по воркеру на клик, доходит до 400 МБ и убивается на мобиле. Какая правильная архитектура?

Викторина

Service worker перехватывает навигацию и отдаёт app shell cache-first. Ты выкатываешь баг в shell; часть пользователей бьётся в сломанный кэшированный shell на каждой перезагрузке без кнопки восстановления. Какая архитектурная защита?

Итог

Сквозная линия юнита — одно дерево решений: выбери примитив под задачу — web worker для вычислений вне главного потока, service worker для сетевого прокси, SharedArrayBuffer для разделяемой памяти — потом заплати правильную стоимость транспорта (clone для мелких данных, transfer для крупного бинарного, SAB для конкурентного доступа за COOP+COEP). Вокруг этого повторяются три ловушки: воркер не может трогать DOM (поэтому мутацию DOM не вынести), service worker ждёт перед активацией и труден в восстановлении, когда ломает навигацию, а пулам нужен backpressure, иначе они текут. Ни один примитив не чинит DOM-боттлнек на главном потоке — эта работа остаётся там, где живёт DOM.

Продолжить восхождение ↑Воркеры: тест на свободное припоминание
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.