Загрузка…
Загрузка…
frontend / middle / tech_screening
Формат
online
Стадия
tech_screening
Когда
within_quarter
Длительность
—
01
Теория
Вы говорили, что создавали проект с нуля. Какую архитектуру вы выбрали и почему?
Кандидат описал модифицированный FSD: app, pages, shared, entities, widgets, без features
02
Теория
В чём вообще смысл (прикол) FSD? Как ты это понимаешь?
03
Теория
Можно ли в FSD импортировать из любого участка кода в любой другой, или есть ограничения на импорты между слоями?
Ожидаемый ответ: нижележащий слой не может импортировать вышележащий
04
Теория
Какие минусы ты видишь у FSD? Для чего она может быть избыточной или чего в ней может не хватать?
Заметки
Транскрипт видео-разбора собеседования в компанию MVO Эльдорадо на позицию middle frontend разработчика (внутренние проекты). Требования: 3+ лет опыта на React, опыт в B2B-приложениях с микрофронтами и архитектурой; плюсом — опыт в финтехе, логистике или разработке CRM-систем. Интервью: архитектура (FSD), теория по браузеру/сетям/рендерингу, JavaScript, CSS, React, два лайвкодинг-задания и задачка на порядок вывода в Event Loop. В середине транскрипта — рекламная вставка автора про менторство (не часть собеседования). Итог собеседования не озвучен: интервьюер обещал передать фидбэк дальше.
Подготовка
Совет автора: если попадается простая задача, которую вы уже решали десятки раз, всё равно решайте её и делайте вид, что думаете — не признавайтесь, что знаете решение, иначе могут дать более сложную задачу (например, на динамическое программирование), которую можно завалить.
Стиль интервьюера
Доброжелательный, ведёт диалог: подсказывает, поправляет неточные ответы (центрирование, useEffect), задаёт уточняющие follow-up'ы, сам дополняет ответы теорией (эвристичность reconciliation, сложности O(n^3)/O(n)). Скачет между темами, охват широкий, но «по верхам». Просил шерить экран на лайвкодинге и проговаривать ход мыслей.
Интервьюер дополнил: путаница что куда относится, FSD растёт в глубину и вширь, избыточна для маленьких/средних проектов
05
Теория
Что происходит при вводе URL в браузере? Написал google.com, нажал Enter — что произошло?
Кандидат рассказал про протокол, HSTS, порты, DNS-кэш, TCP-рукопожатие, TLS-сертификаты
06
Теория
Со стороны фронтенда: что происходит дальше после того, как с сервера прилетел index.html?
07
Теория
Как называется весь этот процесс рендеринга страницы (последовательность шагов) и какие у него этапы?
Ожидался Critical Render Path: парсинг HTML, DOM-дерево, CSSOM, render tree, layout/reflow, paint, composition
08
Теория
Как можно оптимизировать процесс рендеринга страницы (Critical Render Path)? Какие есть методы?
09
Теория
Если на странице есть большие или долго грузящиеся элементы (например, картинки), что можно сделать?
Ожидаемый ответ: lazy load, подгрузка при попадании во viewport
10
Теория
Чем React (Virtual DOM) отличается от работы с реальным DOM-деревом и в чём его преимущество?
11
Теория
За счёт чего Virtual DOM легковесен? Мы взаимодействуем со всем DOM-деревом или нет?
12
Теория
Что можно сказать про дочерние компоненты при перерендере родительского компонента?
Ожидаемый ответ: дочерние компоненты перерендериваются вместе с родительскими
13
Теория
Как называется механизм, с помощью которого реализован Virtual DOM (reconciliation), и что это такое?
14
Теория
Откуда взялся алгоритм reconciliation, когда он появился и что из себя представляет (к какому типу алгоритмов относится)?
Кандидат не ответил; интервьюер пояснил, что это эвристический алгоритм
15
Теория
Какая алгоритмическая сложность у reconciliation?
Интервьюер: наивный обход дерева O(n^3), с ключами — O(n)
16
Теория
При рендере списка из массива в React что мы должны обязательно указать для каждого элемента?
Ожидаемый ответ: ключи (key) для оптимизации перерендеров
17
Теория
Какие есть типы данных в JavaScript?
18
Теория
Как проверить, что массив — это массив, а не объект? Какие есть варианты?
Обсуждались Array.isArray, instanceof Array, проверка методов в прототипе
19
Теория
Что вернёт typeof null?
Ожидаемый ответ: 'object' — историческая ошибка, оставленная как legacy
20
Теория
Как повесить обработчик клика на кнопку в чистом JavaScript (без React)?
Ожидаемый ответ: onclick в HTML либо addEventListener
21
Теория
Что такое всплытие событий?
22
Теория
Как отменить классическое всплытие события? Какой метод можно использовать?
Ожидаемый ответ: event.stopPropagation()
23
Теория
Что влияет на размер блока в CSS? Какие варианты есть?
Обсуждались width/height, padding, border, margin
24
Теория
Как отцентрировать блок в CSS? Какие есть способы?
Обсуждались margin: 0 auto, flex с justify-content/align-items center
25
Теория
Как отцентрировать блок, если у него position: absolute?
Follow-up к вопросу про центрирование; обсуждались left/top 50% и компенсация половины размера
26
Теория
Что такое CORS?
27
Код
Алгоритмическая задача Two Sum (LeetCode): дан массив чисел nums и target, нужно вернуть массив с индексами двух чисел, которые в сумме дают target.
Лайвкодинг с шерингом экрана; кандидат решил оптимально через объект (hash map) за O(n); интервьюер упомянул неоптимальное решение через цикл в цикле
28
Теория
Что такое Map и Set в JavaScript, зачем они нужны?
Возник как follow-up по ходу задачи Two Sum
29
Теория
Что быстрее работает на уровне движка — получение элемента из Map или из Set (по сложности их методов)?
Вопрос «со звёздочкой»
30
Код
Напишите алгоритм, который преобразует массив пар (name/value) в объект вида { width: 10, height: 20 } — например, с помощью методов массива (reduce).
Кандидат решил через reduce с аккумулирующим объектом
31
Теория
Что такое Event Loop? Расскажи максимально поверхностно, в двух словах.
32
Теория
Какие очереди есть в Event Loop?
Ожидаемый ответ: очереди микрозадач и макрозадач с разными приоритетами
33
Код
Задача на порядок вывода: определить, в каком порядке выведутся console.log в функции с синхронным кодом, setTimeout (в т.ч. с нулевой задержкой) и промисами (resolve, then).
Решалась «в уме», кандидат расставлял порядок цифрами около строк
34
Теория
Какие хуки есть в React и для чего они предназначены? Назови парочку-тройку.
Кандидат назвал useEffect, useState, useCallback, useMemo, useRef, useContext
35
Теория
Когда срабатывает useEffect (в зависимости от массива зависимостей)?
Интервьюер уточнил: пустой массив — один раз, без массива — на каждый рендер
36
Теория
Если в useEffect сделать return (например, return () => console.log(1)), когда выполнится этот код?
Ожидаемый ответ: при размонтировании компонента
37
Поведенческий
На чём ты пишешь код — в какой IDE?
38
Поведенческий
Пользуешься ли Cursor и нейронками?
39
Кейс
Если начинаешь новый проект (пет или рабочий), какие особенности/настройки будешь делать для Cursor?
Обсуждались MCP (в т.ч. для Figma) и практика файла Cursor Rules