Загрузка…
Загрузка…
frontend / middle / tech_screening
Формат
online
Стадия
tech_screening
Когда
within_quarter
Длительность
27 мин
01
Поведенческий
Расскажи про свой опыт работы — где сейчас работаешь и чем занимаешься.
Вступительная часть с тимлидом Дмитрием
02
Поведенческий
Что ты делал на проекте по фронтовой части?
Кандидат рассказал про разработку компонентов с нуля и локализацию через i18n на 3 языка
03
Поведенческий
Сколько человек было в команде и какой состав?
04
Поведенческий
Расскажи, что ты писал для себя — пет-проекты, сайд-проекты.
Кандидат упомянул интернет-магазин на SSR с авторизацией, деплой на Selectel
Заметки
Техническое собеседование на позицию frontend-разработчика (React). Со стороны компании присутствовали HR/рекрутер (предположительно ведущая), тимлид Дмитрий и разработчик Александр; ранее с кандидатом общалась Регина. Кандидат — Камил(а). Спонсор-вставка в начале записи — сообщество «Criminal IT» (не работодатель). Название компании-работодателя в тексте не звучит. Актуальный проект, под который ищут специалиста, — «паспорт железнодорожных путей»: карта предприятий, отчёты, диаграммы, схемы; ведётся несколько проектов параллельно. Кандидат писал в основном на JS, со слабым знанием TypeScript; многие ответы были неуверенными.
Подготовка
Подтянуть TypeScript (типы, interface, generics, отличия от JS), типизацию в React (PropTypes, JSDoc), основы асинхронности (Promise, async/await, event loop), хуки (useState, useMemo, useCallback), Virtual DOM, разницу контекста и state-менеджеров, CORS и базовые механизмы авторизации (JWT).
Стиль интервьюера
Доброжелательный формат, два технических интервьюера задают вопросы по очереди (Дмитрий — JS/React, Александр — безопасность/общие темы). Вопросы преимущественно теоретические, с уточняющими follow-up'ами по ходу ответов. Были технические проблемы со звуком (интервьюеры несколько раз не слышали кандидата). Обратная связь обещана в течение недели.
05
Поведенческий
Помимо JavaScript, какими ещё языками владеешь?
06
Теория
Расскажи про типы данных в JavaScript. Какие они?
Просили перечислить примитивы
07
Теория
Какие типы данных появились в TypeScript?
Кандидат не понял/не ответил на вопрос
08
Теория
Что такое Promise?
09
Теория
Что такое async/await, чем отличается от промисов и почему это синтаксический сахар?
10
Теория
Ты пользовался промисами или async/await, что используешь чаще?
11
Теория
В чём разница между двойным (==) и тройным (===) равенством?
12
Теория
Что такое функция высшего порядка / каррирование (функция, принимающая функцию и возвращающая функцию)?
13
Теория
Что такое Generic (дженерик) в TypeScript и зачем он нужен?
14
Код
Как в JS/TypeScript проверить, является ли число чётным?
Ответ: деление по модулю на 2
15
Теория
Как в JS определить наличие свойства у объекта?
Уточнение: как именно вызвать метод на объекте (hasOwnProperty)
16
Теория
Как проверить, является ли значение массивом?
Ответ: Array.isArray
17
Теория
Что такое interface (тип interface) в TypeScript?
18
Теория
Если нужно прикрутить типизацию в React, используя JS, как это можно сделать?
Ожидались PropTypes / JSDoc
19
Теория
Что такое пропсы (props) в React?
20
Теория
Как можно прокидывать данные между компонентами, в том числе между страницами?
Ответ: контекст или state-менеджер
21
Теория
В чём концептуальная разница между контекстом и state-менеджером, что лучше и почему?
22
Теория
Ты работал со state-менеджером — с Redux Toolkit или с обычным Redux? Что удобнее и почему?
Ответ: RTK удобнее, меньше бойлерплейта
23
Теория
Каким образом отправляются сетевые запросы на бэкенд, через какой клиент/инструмент?
Ответ: createAsyncThunk
24
Теория
Как в React использовать предыдущее состояние при обновлении state?
Ответ: колбэк в setState, аргумент — предыдущее состояние
25
Теория
Зачем нужен useMemo?
26
Теория
Чем useMemo отличается от useCallback?
Ответ: useCallback мемоизирует ссылку на функцию
27
Теория
Что такое Virtual DOM и как он работает?
Ответ про сравнение двух виртуальных деревьев и обновление реального DOM
28
Теория
Что конкретно делает хук useState?
Ответ: создаёт локальное состояние, возвращает массив из двух элементов
29
Теория
Взаимодействовал ли ты из React напрямую с базой данных?
Ответ: только через API
30
Теория
Что такое CORS?
Вторая часть собеседования, вопросы от разработчика Александра
31
Теория
Использовали ли вы способы аутентификации/авторизации, и какие?
Ответ: авторизация через JWT-токены
32
Теория
Чем были защищены запросы на бэкенд?
33
Теория
Что в твоём понимании есть интерфейс (более общий вопрос)?
Повторный вопрос про интерфейсы от Александра
34
Теория
Была ли у тебя работа с какими-то базами данных, расскажи?
Ответ: в пет-проекте через обычные SQL-запросы (упоминал Next.js)