P
prepair.app
Пройти интервью →
EnglishУкраїнськаРусский
🟨

Senior JavaScriptВопросы на собеседовании JavaScript

Senior · 5+ лет опыта

Собеседование по JavaScript крутится вокруг небольшого набора вещей, которые язык делает иначе, чем все остальные: замыкания, `this`, прототипы и event loop. Разберитесь с ними — и большинство остальных вопросов закроются сами. Ниже те, что задают чаще всего, каждый с эталонным ответом. Senior: архитектуру, трейд-оффы, менторство и принятие решений.

Темы для подготовки

Типы и приведение
Замыкания и области видимости
`this` и прототипы
Event loop и асинхронность
Промисы и async/await
DOM, события и браузер

5 вопросов уровня Senior с ответами

1

Страница дёргается при скролле. Как диагностировать?

Ответ

Записать профиль производительности и посмотреть, какая часть кадра вылезает за бюджет: скрипт, стили и layout, отрисовка или композиция. Обычная причина — длинные задачи, блокирующие главный поток, а классическая самонанесённая — принудительный синхронный layout, когда геометрию читают сразу после записи стиля. Анимировать стоит transform и opacity, потому что их можно скомпоновать без layout, длинную работу — резать на куски, а действительно тяжёлые вычисления уносить в Web Worker.

2

Как вы думаете про XSS, CSP и same-origin policy?

Ответ

XSS — это когда недоверенный ввод становится исполняемым скриптом, поэтому защита в контекстном экранировании вывода и в отказе собирать HTML из строк: textContent вместо innerHTML. CSP — второй слой: он говорит браузеру, откуда разрешено исполнять, так что просочившейся инъекции негде выполниться. Same-origin policy не даёт чужому сайту читать вашу страницу и ответы, а CORS — это осознанное ослабление правила сервером, а не средство защиты клиента.

3

Когда `Proxy` уместен и чем он платит?

Ответ

Уместен, когда действительно нужно перехватывать операции, которые нельзя перечислить заранее: системы реактивности, обёртки-валидаторы, моки. Платит стоимостью на каждом обращении, ломает часть оптимизаций движка и усложняет отладку, потому что объект перестаёт вести себя так, как читается в исходнике. Если хватит геттера или обычной обёртки — это лучший ответ.

4

ES-модули против CommonJS — в чём разница по существу?

Ответ

ESM статически анализируем: импорты разрешаются до выполнения, и именно это делает возможным tree shaking. require в CommonJS — вызов во время выполнения, поэтому бандлер не может надёжно доказать, что не используется. ESM ещё и асинхронен и имеет живые привязки, тогда как require отдаёт снимок объекта экспортов. Практическое следствие: острые углы возникают при их смешивании, особенно в Node.

5

Как вы решаете, добавлять ли зависимость?

Ответ

Взвешивая, чего она стоит при поставке и в поддержке, против того, чего стоит написать и владеть самому. Размер бандла важен, но дороже другое: поверхность API, от которой вы теперь зависите, путь обновления и то, что будет, если её забросят. Мелкую утилиту обычно дешевле написать, чем тянуть; библиотеку дат, форм или что угодно, связанное с корректностью, обычно дешевле подключить, чем реализовать верно самому.

🦎

Прочитать ответы недостаточно

На собеседовании ты говоришь вслух под давлением. Кем задаст эти же вопросы, оценит каждый ответ и покажет, что именно подтянуть.

Пройти интервью Senior JavaScript →
Бесплатно · 3 интервью в месяц

Другие уровни — JavaScript

Junior JavaScriptMiddle JavaScriptВсе вопросы JavaScript

Другие специализации

🔍Senior QA Manual🤖Senior QA AutomationSenior Java Backend🐍Senior Python Backend🐘Senior PHP Backend🦫Senior Go Backend🟢Senior Node.js Backend💎Senior Ruby on Rails🔷Senior C++⚛️Senior React Frontend