Загрузка…
Загрузка…
frontend / middle_plus / tech_deep
Формат
online
Стадия
tech_deep
Когда
within_quarter
Длительность
—
01
Теория
Расскажите, как устроен event loop в JavaScript (очереди задач, микротаски, макротаски, порядок выполнения).
02
Теория
Для чего придумали event loop, какую проблему он решает?
03
Теория
Что знаете про однопоточность/многопоточность приложения в JavaScript?
04
Теория
Если запустить в коде бесконечный цикл, справится ли event loop с этим или нет? Что произойдёт с интерфейсом?
Заметки
Реальное собеседование в Сбербанк на вакансию middle+/senior frontend-разработчик с зарплатой ~300 000 рублей. Кандидат — Антон. По итогу команда дала положительный фидбэк с приглашением на следующий этап. Рассматривают в фич-команду биллинга (два дашборда — для руководителя и для заказчиков, графики на canvas, таблицы, детализация по срезам), а также проекты мониторинга и журналирования (админки-плагины, встраиваемые в единый портал самообслуживания на микрофронтендах, графана и плагины графаны). Формат работы — гибрид (3/2), офис в Москве. Обратная связь обещана после выходных через HR.
Подготовка
Глубоко разобраться в event loop, микро-/макротасках, поведении промисов и блокировке потока; понимать var/let и создание связываний в цикле, передачу по значению/ссылке. Подготовиться к секции code review React-компонента: зависимости и async в useEffect, корректная отписка от event listener (одинаковая ссылка), key в списках, useMemo/вынос вычислений, виртуализация/пагинация, инициализация состояния без мерцания. Знать CORS (кто выполняет защиту, обход через прокси/whitelist), WebSocket и альтернативы (polling, long polling, SSE), RTK Query (кеширование, инвалидация по тегам), TypeScript generics и utility types.
Стиль интервьюера
Двое интервьюеров (включая будущего тимлида/нанимающего). Стиль — наводящий: задают вопрос, при неполном ответе подталкивают уточняющими подсказками и follow-up'ами, докапываются до сути ('а что под капотом', 'а кто это выполняет'). Много вопросов вшито в практические секции (лайвкодинг и code review). Дружелюбный тон, экономят время к концу, переходят к финальным организационным вопросам.
05
Теория
Как нужно писать код, чтобы тяжёлые вычисления / асинхронный код не блокировали интерфейс?
06
Теория
Если в теле промиса (функции-экзекьюторе) написать бесконечный цикл while(true), заблокирует ли это основной поток и сколько микротасок получится?
07
Теория
Как выполняется запрос к бэкенду через промис (fetch) и почему он не блокирует поток?
08
Теория
Что такое async/await и как они связаны с промисами?
Кандидат упомянул, что async-функция всегда возвращает промис и про обработку ошибок через try/catch.
09
Теория
Что такое замыкание (closure) и как его можно использовать?
10
Теория
Когда мы в React передаём колбэк внутри пропсов, это будет замыкание?
11
Теория
Как реализовано прототипное наследование в JavaScript (прототипы, __proto__, цепочка прототипов)?
12
Теория
Как определяются и используются статические методы класса? Используете ли их в практике?
13
Теория
В каких случаях вы использовали статический метод, а не член класса?
14
Теория
Чем отличаются структуры данных Set, Map и обычный массив?
15
Теория
Что знаете про сборщик мусора (garbage collector) в JavaScript?
16
Теория
В каких случаях сборщик мусора начинает работать?
17
Кейс
Для чего нужно запускать сборщик мусора и если бы вы сами писали такой функционал, когда бы его вызывали? Знаете ли про ограничения по памяти у приложений/вкладок браузера?
Вопрос на рассуждение: например запускать GC при приближении к лимиту памяти (~4 ГБ на вкладку).
18
Теория
С какими CSS-препроцессорами работали?
19
Теория
С какими CSS-методологиями и подходами сталкивались?
20
Теория
Какую проблему решает модульный CSS (CSS Modules), для чего его придумали?
21
Теория
Как сделать так, чтобы у селектора в стилях был максимально возможный вес (специфичность)?
22
Теория
Что такое Virtual DOM, как он работает (reconciliation, diffing, эвристический алгоритм, key)?
23
Теория
В каком коде приходится принудительно указывать проп key?
24
Теория
Что такое JSX и можно ли использовать React без JSX?
25
Теория
Чем отличается функциональный подход от классового в React-компонентах?
26
Теория
В каких случаях стоит и не стоит использовать хук useCallback?
27
Теория
Что предпочтёте использовать — Context API или Redux, и почему?
28
Теория
Знакомы ли с React Portals и для чего они нужны?
29
Теория
Опишите жизненный цикл данных в Redux (Flux): action → dispatch → reducer → обновление состояния → интерфейс.
30
Теория
Чем отличается action от reducer в Redux?
31
Теория
Что такое чистая функция и что относится к побочным эффектам?
32
Теория
Как работает кеширование данных в RTK Query?
33
Теория
Как провести инвалидацию кеша в RTK Query (теги, providesTags/invalidatesTags)?
34
Теория
Что такое дженерики (generics) в TypeScript?
35
Теория
Приведите примеры утилитарных типов (utility types) в TypeScript.
Кандидат назвал Record, Pick, Omit, ReturnType, Partial, Required.
36
Теория
Что такое протокол HTTP и из чего состоит HTTP-запрос (метод, путь, body, заголовки)?
37
Теория
Сталкивались ли с CORS и какими способами его можно обойти/решить?
38
Теория
На чьей стороне реализуется CORS и кто выполняет CORS-защиту (сервер или браузер)? Будет ли CORS работать, если делать запрос из консольной утилиты (curl, wget) или Postman?
39
Теория
Как настроить прокси, чтобы при разработке фронтенда обращаться к произвольным бэкенд-стендам и не получать ошибку CORS?
40
Теория
Как организовать передачу данных через WebSocket и какие есть альтернативы (polling, long polling, Server-Sent Events)?
41
Код
Что выведет в результате выполнения функция a с пустым массивом (вопрос на event loop и var в цикле с setTimeout)? Запустите и объясните, почему выводится массив из трёх единиц три раза.
Лайвкодинг. Кандидат предположил 4 единицы, фактически — три единицы (массив в глобальной области), три раза.
42
Код
Как изменить код, чтобы он выводил массив последовательно: сначала с одной единицей, потом с двумя, потом с тремя (а не три раза по три)?
Кандидат пробовал замену var на let; для массива потребовалось создавать новый массив на каждой итерации.
43
Теория
Что под капотом делает браузер при использовании let вместо var в цикле (создание нового связывания на каждой итерации)?
44
Теория
В чём разница передачи в функцию примитива и объекта/массива (по значению vs по ссылке)?
45
Код
Сделайте code review кода джуна (React-компонент, отображающий список справочников с замоканными данными и положением скролла). Найдите максимальное количество замечаний и предложите, как сделать код лучше.
Большая секция code review с множеством follow-up'ов (см. отдельные пункты).
46
Теория
Почему нельзя делать колбэк useEffect асинхронным (async) напрямую и как это правильно сделать?
Follow-up в рамках code review.
47
Теория
Что произойдёт, если в addEventListener и removeEventListener передавать функцию без выноса в отдельную переменную (разные ссылки, отписка не сработает, утечка памяти)?
Follow-up в рамках code review.
48
Теория
Как правильно хранить статичный/имитирующий ответ сервера массив данных (testData) в компоненте — стоит ли выносить в state, useMemo или утилиту, и какие проблемы при перерендере?
Follow-up в рамках code review.
49
Теория
Почему плохая практика использовать inline-стили (как и !important) и когда они всё-таки уместны?
Follow-up в рамках code review.
50
Теория
Как инициализировать значение numberOfRows/положение скролла, чтобы у пользователя не было мерцания (0 → актуальное значение) и прыжка страницы при рефреше?
Follow-up в рамках code review: брать window.scrollY при инициализации вместо 0.