REACT FRONTEND || НЕСТАНДАРТНОЕ СОБЕСЕДОВАНИЕ В СБЕР || ДАЛИ ОФФЕР НА 250К
Нестандартное React-собеседование с рассказом о продуктовой команде и живым разбором реализации виртуализированного списка. Практическая задача проверяет вёрстку, модель рендера React, обработку scroll и оптимизацию обновлений.
Запись показывает реальное техническое собеседование frontend-разработчика: интервьюер сначала описывает продукт «Навигатор», состав команды, процессы и условия работы, затем кандидат рассказывает о своём опыте в банковском B2C. Основная практическая часть — проектирование упрощённого виртуализированного списка на React: нужно рендерить только видимые строки фиксированной высоты, правильно размещать их в прокручиваемой области и не вызывать перерисовку на каждый пиксель скролла. В конце интервьюер сообщает, что завершает встречи с кандидатами и обещает обратную связь на следующей неделе; подтверждения решения по кандидату в captions нет.
Для виртуализированного списка с элементами фиксированной высоты нужно вычислять startIndex через floor(scrollTop / itemHeight), а диапазон отображения — по высоте viewport.
Недостаточно отрендерить только видимые элементы: их нужно позиционировать по полному индексу, например абсолютно с отступом index × itemHeight, иначе при прокрутке середины списка пользователь увидит пустое пространство.
Состояние виртуального списка разумно хранить как границы видимого диапазона, а обновлять его лишь когда меняется startIndex или endIndex, а не на каждый пиксель события scroll.
Если новое React-состояние зависит от предыдущего, в обсуждении рекомендуют функциональную форму setState, чтобы не опираться на потенциально устаревшее замыкание.
Кандидат описывает практику: тестировать критичный клиентский функционал, требовать два ревью и не принимать изменения в важных частях без тестов; при этом он считает избыточным тестировать микродетали без заметного влияния на продукт.
По словам интервьюера, команда планирует работу поквартально, но способна менять приоритеты из-за срочных проблем клиентов; оценку обычно даёт исполнитель задачи, а не вся команда целиком.