СОБЕСЕДОВАНИЕ JUNIOR FRONTEND РАЗРАБОТЧИКА | FRONTEND | REACT
Публичное техническое интервью фронтенд-разработчика с практическими задачами по JavaScript, TypeScript и React. В конце — развёрнутый фидбэк и разговор о переезде кандидата в Норвегию.
Ayub Begimkulov
Открыть на YouTube- Опубликовано на YouTube:
- Просмотры на YouTube: 40,4 тыс.
- Лайки на YouTube: 1,1 тыс.
Таймлайн
Коротко о видео
Автор проводит публичное техническое собеседование с фронтенд-разработчиком Тарасом, который рассказывает о четырёх годах опыта, React и работе над медицинским продуктом в Норвегии. Основная часть состоит из задач и разбора JavaScript, TypeScript и React: замыкания, ссылки, Map, event loop, React.memo, useCallback, useRef и оптимизация обработчика событий окна. В финале интервьюер даёт кандидату обратную связь о пробелах в базе, а кандидат делится личным опытом переезда и своим взглядом на рынок IT Норвегии.
Затронутые темы
Что взять на заметку
- Для задач наподобие createCounter важно отличать замыкание с «живым» доступом к переменной от свойства объекта, куда примитив был записан как снимок текущего значения.
- Замыкание стоит объяснять через сохранение доступа функции к лексическому окружению, а не только через шаблон «функция возвращает функцию».
- Нужно уверенно различать передачу примитивов по значению и работу объектов по ссылке; это проверяется и в сравнении объектов, и в удалении дубликатов массива.
- Map полезен, когда ключами должны быть не только строковые свойства: например, объекты или массивы; его get возвращает значение либо undefined, что нужно учитывать в TypeScript.
- В event loop микрозадачи обрабатываются после освобождения call stack с более высоким приоритетом, а рендеринг браузера — отдельный процесс, не «макрозадача».
- React.memo не предотвращает ререндер, если в дочерний компонент передаётся новая ссылка на функцию; useCallback имеет смысл для стабильности ссылки и связки с мемоизацией, а не ради уменьшения числа созданных функций.
- Для универсального хука подписки на window-событие можно хранить актуальный обработчик в useRef: подписка остаётся стабильной, а listener вызывает handlerRef.current.