ВОПРОС → ПЕРЕВОД → ОТВЕТ → РАЗБОР

Вопросы на собеседовании frontend-разработчика на английском

Двадцать вопросов, которые часто звучат на frontend-интервью на английском: от загрузки страницы и каскада CSS до event loop и доступности форм. У каждого вопроса — перевод, пример ответа от первого лица и разбор, как выстроить свою версию. Примеры не привязаны к фреймворку: React, Vue или Angular вы добавите из своего опыта.

20 примеров · Чтение без регистрации

Разберите вопрос. Ответьте своими словами.

Раскройте ответ, сравните ход мысли и проговорите свою версию вслух.

Технические вопросы

01What happens between typing a URL and seeing the page?Что происходит между вводом адреса и появлением страницы?

Пример ответа · EN

The browser resolves the domain through DNS, opens a connection with TLS and sends an HTTP request. It parses the HTML into the DOM and the CSS into the CSSOM, then builds the render tree. After layout and paint, the page appears. I usually go deeper into the step that matters for the problem, such as a slow server response.

Как построить ответ

Держите ответ как цепочку: сеть → разбор → отрисовка. Связки first, then, after that помогают не потеряться. Не перечисляйте всё подряд: покажите этапы и предложите углубиться в тот, который важен интервьюеру.

02When would you use defer instead of async on a script?Когда вы выберете defer, а не async для скрипта?

Пример ответа · EN

Both attributes let the HTML parser continue while the script downloads. A deferred script runs after parsing finishes, in document order, so I use defer for application code that needs the DOM. An async script runs as soon as it loads, in any order, which suits independent scripts such as analytics. For classic scripts, both work only with an external src.

Как построить ответ

Сравнивайте по двум признакам: когда скрипт выполняется и сохраняется ли порядок. Формула: общее → отличие → пример применения. Оговорка про внешний src показывает точность, но не уходите в детали модулей без вопроса.

03How does CSS specificity decide which rule wins?Как специфичность CSS определяет, какое правило победит?

Пример ответа · EN

When several rules target the same element, the browser compares their selectors by weight: IDs first, then classes, attributes and pseudo-classes, then element types. The higher weight wins, and if the weights are equal, the later rule wins. Origin, !important and cascade layers are checked before specificity. I keep selectors flat so that overrides stay predictable.

Как построить ответ

Назовите порядок весов, правило равенства и то, что проверяется раньше специфичности. Фраза I keep selectors flat переводит теорию в практику. Не начинайте с !important: это звучит как решение конфликтов силой, а не структурой.

04What creates a new stacking context?Что создаёт новый контекст наложения?

Пример ответа · EN

A stacking context is a group of elements that is layered as one unit. It is created by the root element, by a positioned element with a z-index other than auto, and by properties such as opacity below one, transform or isolation: isolate. Children inside it cannot rise above elements outside the group, whatever their z-index is. That explains many bugs where z-index seems to do nothing.

Как построить ответ

Сначала определение, затем два-три типичных триггера, затем практическое следствие. Пример с «не работающим» z-index показывает, что вы с этим сталкивались. Полный список свойств не нужен — достаточно сказать such as.

05When do you choose Grid over Flexbox?Когда вы выбираете Grid вместо Flexbox?

Пример ответа · EN

Flexbox lays out items along one axis, so I use it for toolbars, button groups and lists that wrap. Grid controls rows and columns together, which suits page layouts and card grids that must align in both directions. They work well together: a Grid layout can contain Flexbox components. I decide by whether alignment is needed in one direction or two.

Как построить ответ

Ответ держится на критерии «одна ось или две». Дайте по примеру на каждый инструмент и скажите, что они сочетаются. Избегайте оценок вроде «Grid лучше»: интервьюер ждёт выбор под задачу.

06Why might you prefer rem to em for font sizes?Почему для размера шрифта можно предпочесть rem, а не em?

Пример ответа · EN

For font sizes, an em is relative to the parent element, so nested components can grow or shrink unexpectedly. A rem is relative to the root element, which keeps sizes consistent across the page. Both respect the user's browser font settings better than fixed pixels. I still use em for padding that should scale with a component's own text.

Как построить ответ

Определите обе единицы через то, от чего они считаются, и назовите проблему вложенности. Последняя фраза показывает, что выбор не догматичный. Полезная конструкция: is relative to ….

07How would you explain a closure in JavaScript?Как бы вы объяснили замыкание в JavaScript?

Пример ответа · EN

A closure is a function together with the variables from the scope where it was created. The function keeps access to those variables even after the outer function has returned. For example, a counter factory can return a function that increments a private count. I use closures for private state and callbacks, but I watch for large objects kept alive by mistake.

Как построить ответ

Структура: определение → пример → польза и риск. Пример со счётчиком понятен без кода. Упоминание лишних удерживаемых объектов показывает практический опыт, а не заученное определение.

08What decides the value of this in a function?Что определяет значение this в функции?

Пример ответа · EN

For a regular function, this depends on how the function is called. A method call sets it to the object before the dot, call, apply and bind set it explicitly, and new sets it to the new instance. In strict mode, a plain call leaves it undefined. Arrow functions do not have their own this; they take it from the surrounding scope.

Как построить ответ

Главная мысль — this определяется вызовом, а не местом объявления. Перечислите случаи коротко, затем отдельно стрелочные функции. Не говорите, что this «указывает на саму функцию»: это частая ошибка.

09How do let, const and var differ in scope?Чем отличаются let, const и var по области видимости?

Пример ответа · EN

The var keyword is function-scoped and its declaration is hoisted, so it can be read as undefined before the assignment. Both let and const are block-scoped, and accessing them before the declaration throws an error because of the temporal dead zone. The const keyword prevents reassignment, but an object stored in it can still change. I use const by default and let when the value changes.

Как построить ответ

Сравните по трём признакам: область, поведение до объявления, переназначение. Уточнение про изменяемый объект в const — признак точного понимания. Термин temporal dead zone можно назвать, но поясните его простыми словами.

10Why does a promise callback run before setTimeout?Почему колбэк промиса выполняется раньше setTimeout?

Пример ответа · EN

After the current script finishes, the event loop runs all queued microtasks before it takes the next task. Promise reactions are microtasks, while a setTimeout callback is a task, even with a zero delay. So a then callback runs first. This matters when code relies on timing, and it is also why an endless chain of microtasks can block rendering.

Как построить ответ

Ответ строится на двух очередях: tasks и microtasks. Сначала механизм, затем вывод, затем практическое следствие. Не обещайте точное время срабатывания таймера: задержка означает «не раньше», а не «ровно через».

11What problem does event delegation solve?Какую задачу решает делегирование событий?

Пример ответа · EN

Most events bubble up from the target to its ancestors. With delegation, I attach one listener to a parent and use event.target to find the child that was clicked. That avoids adding a listener to every item and also works for items added later. I use closest() so that clicks on nested elements are handled correctly.

Как построить ответ

Начните со всплытия — без него делегирование не объяснить. Затем два преимущества: меньше обработчиков и динамические элементы. Деталь про closest() показывает, что вы знаете ловушку с вложенной разметкой.

12How does prototypal inheritance work in JavaScript?Как работает прототипное наследование в JavaScript?

Пример ответа · EN

Each object has an internal link to a prototype object. When a property is not found on the object itself, JavaScript looks it up along the prototype chain until it reaches null. The class syntax is built on the same mechanism: methods live on the prototype and are shared by instances. That is why changing a prototype affects every object linked to it.

Как построить ответ

Покажите механизм поиска по цепочке и свяжите его с синтаксисом class. Фраза is built on the same mechanism снимает заблуждение, что классы в JS устроены как в Java. Последнее предложение — практическое следствие.

13Why does a browser block some cross-origin requests?Почему браузер блокирует некоторые запросы к другому источнику?

Пример ответа · EN

Browsers apply the same-origin policy, so by default a script cannot read a response from another origin. CORS lets the server allow it with headers such as Access-Control-Allow-Origin. For requests that are not simple, the browser first sends a preflight OPTIONS request. The fix belongs on the server; disabling checks in the browser only hides the problem locally.

Как построить ответ

Разделите политику браузера и механизм CORS, который её ослабляет. Упоминание preflight показывает, что вы разбирали реальные ошибки. Скажите, где чинится проблема, — так ответ звучит как опыт, а не определение.

14How would you investigate a page that scrolls slowly?Как бы вы искали причину медленной прокрутки страницы?

Пример ответа · EN

I would record a profile in the browser's Performance panel while scrolling and look for long tasks and dropped frames. Then I check whether the time goes to JavaScript, layout or paint. Common causes are heavy scroll handlers, forced layout in a loop and large repaints. I fix the main cause and measure again instead of applying every optimisation at once.

Как построить ответ

Хороший ответ — порядок действий: измерить → найти тип нагрузки → исправить → измерить снова. Назовите две-три типичные причины, но не перечисляйте все приёмы оптимизации. Фраза measure again показывает инженерный подход.

15When would you pick WebSockets over Server-Sent Events?Когда вы выберете WebSockets вместо Server-Sent Events?

Пример ответа · EN

Server-Sent Events send a one-way stream of text messages from the server over plain HTTP, and the browser reconnects automatically. WebSockets provide a two-way channel, which suits chats, collaborative editing or games. For a live feed of notifications, I would start with SSE because it is simpler to run. I choose WebSockets when the client must send frequent messages too.

Как построить ответ

Сравнивайте по направлению данных и сложности. Дайте пример задачи для каждого варианта и скажите, с чего начали бы. Не утверждайте, что WebSockets всегда быстрее: важнее, нужен ли поток от клиента.

16Why connect a label element to every form input?Зачем связывать элемент label с каждым полем формы?

Пример ответа · EN

A label gives the input an accessible name, so screen readers announce what the field is for. It also makes the label clickable, which enlarges the target on touch screens. I connect them with the for attribute or by wrapping the input. A placeholder is not a replacement, because it disappears once the user starts typing.

Как построить ответ

Две пользы — доступность и удобство нажатия — и способ связать элементы. Замечание о placeholder отвечает на частый вопрос-ловушку. Термин accessible name часто звучит на интервью про доступность.

17How do you hide text visually but keep it for screen readers?Как скрыть текст визуально, но оставить его для экранных читалок?

Пример ответа · EN

I use a visually-hidden utility class that clips the element to one pixel and takes it out of the layout without display: none. Both display: none and visibility: hidden remove content from the accessibility tree. For icon buttons, an aria-label can also provide the name. I check the result with a screen reader rather than relying on the code alone.

Как построить ответ

Назовите приём, объясните, почему не подходят display: none и visibility: hidden, и дайте альтернативу. Не прячьте так элементы, которые получают фокус: пользователь клавиатуры их не увидит.

HR-вопросы

18How do you keep up with changes in front-end tooling?Как вы следите за изменениями во фронтенд-инструментах?

Пример ответа · EN

I follow the release notes of the tools we use and read a few trusted sources, such as MDN and web.dev. I try new features in a small side project before suggesting them to the team. I do not chase every new framework; I look at whether a change solves a problem we actually have.

Как построить ответ

Интервьюер проверяет, как вы учитесь и как отсеиваете шум. Назовите конкретные источники и способ проверки идей. Подставьте свои реальные источники: выдуманный список легко раскрыть уточняющим вопросом.

19Tell me about an interface you shipped and what you would change.Расскажите об интерфейсе, который вы выпустили, и что бы вы изменили.

Пример ответа · EN

I built a checkout form for an online store. My main goal was to cut input errors, so I added inline validation and clear messages next to each field. After the release, fewer users abandoned checkout. Today I would test it with keyboard-only users earlier, because we fixed some focus issues only after launch.

Как построить ответ

Используйте структуру STAR: ситуация, задача, действия, результат — и честный вывод в конце. Пример условный: замените его своим проектом и своими цифрами. Признание ошибки звучит сильнее, чем «я бы ничего не менял».

20How do you work with a designer when a mockup is unclear?Как вы работаете с дизайнером, если макет неясен?

Пример ответа · EN

I list the open questions first, such as missing states for loading, errors and empty lists. Then I ask the designer for a short call or leave comments in the design file, so the answers stay visible to the team. If the deadline is close, I suggest a reasonable default and mark it for review instead of guessing silently.

Как построить ответ

Покажите инициативу и прозрачность: сначала вопросы, затем канал общения, затем план на случай спешки. Перечисление состояний (loading, error, empty) показывает продуктовое мышление. Избегайте ответа «делаю как понял».

Теперь — под вашу вакансию

Банк помогает повторить основы. Для конкретной позиции начните подготовку по требованиям вакансии.

Подготовиться под свою вакансию

Регистрация нужна для работы со своей вакансией. Вопросы банка не копируются автоматически.

Перед подготовкой

Почему в подборке нет вопросов по React?

Банк собран вокруг основы, которую спрашивают при любом стеке: браузер, CSS и JavaScript. Вопросы по фреймворку зависят от вакансии — их удобнее готовить под конкретное описание в разделе подготовки.

Как отвечать, если интервьюер просит показать код?

Начните с короткого объяснения словами, затем напишите минимальный пример и проговаривайте шаги по-английски: First I…, then I…. Так интервьюер видит и ход мысли, и код.

Нужно ли знать термины вроде stacking context и temporal dead zone?

Да, их стоит узнавать на слух и уметь пояснить простыми словами. Само слово без объяснения ценится меньше, чем понятный пример из практики.

Подойдут ли примеры для junior-уровня?

Большая часть вопросов про HTML, CSS и JavaScript подходит начинающим. Темы про производительность, CORS и WebSockets чаще задают с уровня middle — отберите их по своему опыту.

Как подготовиться под конкретную вакансию?

Нажмите «Подготовиться под свою вакансию»: после регистрации добавьте описание вакансии, и подготовка подберёт вопросы под её стек и требования.

Проверено: Владелец BroLango ·