Встречается на собеседованиях • сегодня

Как решить проблему с зависанием страницы

Проблема зависания страницы обычно связана с блокировкой основного потока. Основные причины и решения:

  1. Долгие вычисления - выносим в Web Workers
javascript
// Основной поток
const worker = new Worker('worker.js');
worker.postMessage(data);
worker.onmessage = (e) => handleResult(e.data);

// worker.js
self.onmessage = (e) => {
  const result = heavyCalculation(e.data);
  self.postMessage(result);
};
  1. Оптимизация рендеринга:
  • Используем requestAnimationFrame для анимаций
  • Разбиваем большие списки на чанки (виртуализация)
  • Применяем will-change для сложных анимаций
  1. Дебаунс/троттлинг частых событий:
javascript
function debounce(fn, delay) {
  let timer;
  return (...args) => {
    clearTimeout(timer);
    timer = setTimeout(() => fn(...args), delay);
  };
}
  1. Мемоизация дорогих вычислений:
javascript
const memoize = (fn) => {
  const cache = new Map();
  return (...args) => {
    const key = JSON.stringify(args);
    return cache.has(key) ? cache.get(key) : (cache.set(key, fn(...args)), cache.get(key));
  };
};

Для диагностики используйте Performance и Memory инструменты DevTools.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы