Загрузка…
Загрузка…
frontend / middle / tech_deep
Формат
online
Стадия
tech_deep
Когда
within_quarter
Длительность
—
01
Поведенческий
Расскажите кратко о себе: на каких проектах работали, что в них делали, на каком стеке.
Вводный вопрос; кандидат рассказал про опыт в Яндексе, Лаборатории Касперского, стек React/TypeScript, Vue, Node.js, Go
02
Теория
Как относишься к разным фронтенд-фреймворкам (React, Vue, Angular)? В чём видишь разницу между ними?
Кандидат обсуждал отсутствие стандартизации в React-экосистеме, строгость Angular, цельность Vue
03
Поведенческий
Насколько ты следишь за новшествами в браузерах, новыми стандартами и спецификациями?
04
Теория
Что последнее интересное из добавленного в браузеры запомнилось / какое браузерное API недавно изучил?
Заметки
Транскрипт — видео блогера, который ходит по собеседованиям ради контента (1–2 раза в месяц). Собеседование в IT-подразделение Госзнака (проекты для Министерства финансов: планирование бюджета, согласования, большие таблицы-реестры). У компании самописный фронтенд-фреймворк на веб-компонентах — реплика Polymer без virtual DOM (прямые точечные изменения DOM), без TypeScript (чистый JS + JSDoc/d.ts), без препроцессоров, целевой браузер Chrome 130+. Кандидат — Даниил, 5+ лет опыта, ранее работал в Яндексе (со стажёра) и Лаборатории Касперского (фулстек). По итогам одного этапа технического собеседования кандидату дали оффер; сумма в транскрипте не распознана. Значительная часть беседы — рассказ интервьюера о фреймворке и процессах (Kanban-подобный процесс, двухнедельные спринты, дейлики) и встречные вопросы кандидата (virtual DOM, батчинг, найм, отказ от TS).
Подготовка
Интервьюер подчёркивал: важно знать чистый JavaScript и браузерные API, а не только React («если человек не знает, как работает браузер, лучше не соваться»); за каждым простым вопросом есть «второе дно» — спрашивают детали уровня движка (TDZ, производительность var/let, стоимость Proxy, stacking context, AbortController, Popover API).
Стиль интервьюера
Интервьюер предупредил, что будет задавать «глупые» на вид вопросы со вторым дном; вопросы «из середины темы», блиц-формат без углублений из-за нехватки времени; охотно сам дораскрывал правильные ответы (каррирование через bind, замедление Proxy в 1000 раз, AbortController, Popover API); много и подробно рассказывал о своём фреймворке и проекте. По оценке кандидата — технически сильный специалист, отвечал адекватно на встречные вопросы.
Follow-up к вопросу про слежение за новшествами; кандидат рассказал про Selection API (работа с выделением текста и кареткой)
05
Кейс
Насколько ты готов погружаться в кастомную самописную библиотеку (не React, не Vue, не Angular)?
Контекст: у компании собственный фреймворк на веб-компонентах — реплика Polymer, без virtual DOM, без TypeScript
06
Поведенческий
Нравится ли больше работать руками или руководить? Есть ли опыт руководства?
Кандидат рассказал про опыт техлидства фичи в Яндексе и Касперском: декомпозиция большого проекта и раздача задач
07
Теория
В чём разница между const, let и var, в том числе с точки зрения движка JavaScript?
Обсуждались хойстинг, temporal dead zone, присваивание var в window/globalThis, объявление без ключевого слова вне strict mode
08
Теория
Есть ли разница по производительности между const/let и var — чем выгоднее пользоваться?
Follow-up; интервьюер отметил, что var быстрее из-за отсутствия проверок dead zone
09
Код
Как создать массив из n элементов и заполнить его числами 1, 2, 3, 4, 5 … n?
Практический вопрос, решался устно (new Array(n) + map по индексу)
10
Теория
А если я скажу, что map по массиву из new Array(n) так не сработает — почему и как это исправить?
Follow-up про «дырявые» массивы; правильный ответ — сначала fill, потом map
11
Теория
Чему будет равен this в обычной функции, объявленной в файле?
Интервьюер отметил, что на этом вопросе все промахиваются: в обычной функции this = window, в strict mode — undefined
12
Теория
Как можно подменить this для функции?
13
Теория
Что будет, если в bind передать больше одного параметра (this плюс дополнительные аргументы)?
Follow-up; ответ интервьюера: это фактически каррирование, bind «запекает» аргументы по очереди
14
Теория
Можно ли сделать промисы без самих промисов — написать собственную реализацию Promise, если в браузере его нет? Как конкретно?
Кандидат предложил реализацию на колбэках с использованием queueMicrotask; интервьюер подтвердил (библиотеки промисов существовали до нативных)
15
Теория
Приходилось ли сталкиваться с Proxy-объектами? Как они работают?
Обсуждали на примере реактивности Vue (перехват get/set)
16
Теория
Сколько стоит пользоваться Proxy-объектами с точки зрения перформанса?
Follow-up; ответ интервьюера: Proxy замедляет доступ к полям примерно в 1000 раз (в Chrome), два уровня прокси — в миллион
17
Теория
Как рассчитывается специфичность CSS-селекторов? В каком порядке идут селекторы по весу?
Обсудили important, inline-стили, id, классы/псевдоклассы, теги и суммирование весов
18
Теория
Чем отличается display: none от visibility: hidden?
19
Теория
За что отвечает flex-shrink?
20
Теория
Знаком ли с методологией БЭМ? Как считаешь, нужна ли она в 2025 году?
Кандидат: изоляцию стилей теперь дают scoped/модульные стили, но БЭМ-разметка остаётся полезной для читаемости вёрстки
21
Теория
Сталкивался ли с CSS-переменными (CSS Custom Properties)? Как используются?
Обсудили задание цветов, темизацию и то, что нативные переменные можно менять в рантайме в отличие от препроцессорных
22
Теория
Расскажи, как работает z-index.
23
Теория
Можно ли любой элемент с помощью z-index вытащить на самый верх? Какое ограничение этому мешает?
Follow-up «с подвохом»: про stacking context — нельзя выпрыгнуть за пределы своего родительского контекста наложения; кандидат деталей не вспомнил
24
Теория
Знаешь ли современные техники, которые позволяют делать модалки/выпадающие элементы поверх всего без порталов?
Ответ интервьюера: Popover API — выталкивает элемент в псевдоэлемент после body, при этом DOM-позиция сохраняется
25
Теория
Расскажи, как обрабатываются события в браузере: погружение и всплытие, как навесить и удалить слушатель, как отменять события.
26
Теория
Можно ли удалить обработчик события без запоминания ссылки на функцию (для removeEventListener)?
Follow-up; ответ интервьюера: в addEventListener можно передать signal от AbortController, который при срабатывании отменяет слушатель
27
Теория
Как работает Intersection Observer API?
28
Поведенческий
После того как ты выслушал, как у нас всё устроено, — интересно ли тебе такое предложение?
Кандидат взял паузу подумать день-два; договорились о сроках ответа