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

Автор: Aaron Cao · Обновлено

Вопросы на собеседовании по Angular
Сначала ждите вопросов про change detection: что запускает проверку, что меняет OnPush, и как сюда вписываются signals. Затем dependency injection, выбор оператора RxJS, и очистка подписок. В большинстве процессов добавляется практическое задание вживую, обычно поиск с автодополнением, построенный на service, debounceTime, и switchMap.

Сначала ждите вопросов про change detection: что запускает проверку, что меняет OnPush, и как сюда вписываются signals. Затем dependency injection, выбор оператора RxJS, и очистка подписок. В большинстве процессов добавляется практическое задание вживую, обычно поиск с автодополнением, построенный на service, debounceTime, и switchMap.

Какие концепции Angular спрашивают чаще всего?

Поверхность API Angular велика, и опубликованные списки вопросов трактуют каждый декоратор как одинаково вероятный к появлению. Это не так. В этом разделе рассмотрены области, которые реально решают исход большинства раундов, чтобы ваша практика соответствовала реальному распределению. Доминируют четыре кластера:

  • Change detection: что запускает проверку, как Zone.js патчит асинхронные API, что меняет OnPush, и как signals позволяют Angular пропускать работу.
  • Dependency injection: иерархические инжекторы, providedIn, токены инъекции, и функция inject() вместо параметров конструктора.
  • RxJS: observable против promise, выбор правильного оператора, и очистка подписок перед уничтожением компонента.
  • Архитектура компонентов: standalone-компоненты, input и output, проекция контента, и хуки жизненного цикла.

Осведомлённость о версиях здесь важнее, чем в большинстве раундов по другим фреймворкам, потому что Angular сменил направление. Standalone-компоненты, встроенные блоки управления потоком @if и @for, отложенные представления, и signals — всё это появилось в последних мажорных версиях, поэтому интервьюеры часто спрашивают, что вы написали бы сегодня, в сравнении с тем, что использует более старая кодовая база. Знание обоих подходов, и объяснение, почему фреймворк изменился, производит лучшее впечатление, чем выбор одной стороны.

Насколько глубоко идут вопросы про RxJS и signals?

Глубже, чем названия операторов. Вопрос RxJS, который разделяет уровни, — это какой оператор уплощения подходит: switchMap отменяет предыдущий внутренний запрос и подходит для автодополнения, mergeMap выполняет всё параллельно, concatMap сохраняет порядок, а exhaustMap игнорирует новые события, пока одно ещё выполняется, поэтому он подходит для кнопки отправки. Затем интервьюеры задают вопрос про утечку: что происходит с ручной подпиской при уничтожении компонента, и почему async pipe или takeUntilDestroyed устраняют эту проблему.

Вопросы про signals более новые и обычно начинаются с мотивации, а не с API. Ожидайте объяснить, что такое signal, как computed выводит значение из него, для чего нужен effect, и почему signals дают Angular более тонкий способ узнать, что изменилось, вместо повторной проверки всего дерева компонентов. Сильный ответ связывает обе темы: signals и OnPush оба сокращают работу change detection, но signals делают это, отслеживая чтения, а не сужая момент запуска проверки.

Интервьюеры не ожидают, что вы уже выпустили в продакшен каждую новую функцию. Они ожидают, что вы скажете, в какой версии работали последний раз, и чётко порассуждаете об остальном.

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

Большинство процессов по Angular включают создание чего-то небольшого на глазах у интервьюера. Повторяющиеся задания стабильны от компании к компании:

  • Вызвать API из service и отрендерить результат с помощью async pipe.
  • Построить поиск с автодополнением с помощью debounceTime, distinctUntilChanged, и switchMap.
  • Написать реактивную форму с кастомным валидатором и видимыми состояниями ошибок.
  • Передать данные между родительским и дочерним компонентом, затем поднять их в service.
  • Добавить маршрут с лениво загружаемым компонентом и guard.

Например, фронтенд-инженер, проходящий собеседование на продуктовую роль среднего уровня, может построить автодополнение, а затем получить вопросы о том, что происходит, когда ответы приходят не по порядку, как показать состояние загрузки, и что должно происходить, когда пользователь очищает поле ввода. Именно эти расширения решают исход раунда, поэтому тренируйте уточняющие вопросы, а не только счастливый путь. Соседние наборы, с которых раунды по Angular всё ещё начинаются, включая основы чистого JavaScript и TypeScript, находятся в центре банков вопросов.

Как тренироваться, чтобы это перенеслось на реальный раунд?

Чтение списка вопросов формирует узнавание, а не припоминание, а раунд проверяет припоминание, пока кто-то наблюдает. Решение — повторения в реальной форме раунда: строить стандартные задания с нуля из пустого проекта, проговаривать вслух решения по change detection и подпискам во время печати, и справляться с прерываниями, не теряя нить. Проходить весь набор как устную репетицию, по одному вопросу с уточнениями, — вот для чего нужна тренировка на симулированном собеседовании.

Стоит прямо озвучить одно ограничение: живые раунды по Angular почти всегда проходят в общем редакторе или с видимым экраном, и всё на этом экране видно интервьюеру. Ассистенту место в подготовке и в раундах, ведомых разговором, а не на общем экране. Какие форматы что разрешают, описано в типах собеседований.

Частые вопросы

Нужно ли мне всё ещё знать NgModules?

На уровне чтения — да. Много продакшен-кода на Angular всё ещё работает на NgModules, поэтому ожидайте вопросов о том, что объявлял модуль, и как providedIn заменил большинство массивов provider. Вопросы про новый код задаются в контексте standalone-компонентов, которые являются стандартом в последних версиях.

AngularJS — это то же самое, что Angular?

Нет, и интервьюеры иногда это проверяют. AngularJS — это линия 1.x со scope, циклами digest, и controller. Angular начиная с версии 2 — отдельный фреймворк, построенный на TypeScript и компонентах. Если в описании вакансии написано AngularJS, уточните, что именно имеется в виду, прежде чем готовиться.

Сколько RxJS мне нужно, если команда использует signals?

Всё ещё много. Signals хорошо покрывают состояние компонента, но HTTP-вызовы, события роутера, и потоки значений форм остаются observable, поэтому выбор оператора и очистка продолжают всплывать. Команды сочетают оба подхода, и объяснение, где что уместно, — частый вопрос для сеньоров.

Спрашивают ли интервьюеры про тестирование?

Обычно как стратегию, а не как припоминание API. Ожидайте вопросов о том, что вы тестировали бы на уровне компонента в сравнении с end to end, как TestBed настраивает компонент, и как вы бы подделали service. Назвать компромисс важнее, чем процитировать matcher.

О скольких версиях Angular я должен уметь рассуждать?

О той, в которой вы работали, плюс о том, что изменилось с тех пор. Интервьюеры спрашивают про standalone-компоненты, блоки управления потоком, и signals, потому что эти ответы сигнализируют об актуальности знаний. Сказать, в какой версии вы выпускали последний раз, и порассуждать об остальном — это полный ответ.

Похожие вопросы

← Подробнее: Вопросы на собеседовании по роли и теме