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

Приведи пример задачи которая вызвала трудность

Однажды столкнулся с задачей реализации бесконечной ленты с виртуализацией и сохранением позиции скролла при переходе между страницами. Основная сложность была в том, что нужно было:

  1. Корректно рассчитать высоту контейнера
  2. Сохранять и восстанавливать позицию скролла
  3. Оптимизировать производительность при быстром скролле

Решил через IntersectionObserver и кастомный хук:

jsx
function useScrollPosition(key) {
  const [scrollPos, setScrollPos] = useState(0);
  
  useEffect(() => {
    const handleScroll = () => {
      localStorage.setItem(key, window.scrollY);
    };
    
    window.addEventListener('scroll', handleScroll);
    return () => window.removeEventListener('scroll', handleScroll);
  }, [key]);

  useEffect(() => {
    const savedPos = localStorage.getItem(key);
    if (savedPos) window.scrollTo(0, savedPos);
  }, [key]);

  return [scrollPos, setScrollPos];
}

Проблема была в синхронизации состояния при быстром скролле - решал через троттлинг и debounce.

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

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

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

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