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

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

Собеседование Angular охватывает внедрение зависимостей, RxJS, change detection и TypeScript — фреймворк строгий, поэтому вопросы проверяют, понимаете ли вы его механику. Ниже — самые частые с эталонными ответами.

Junior · без опыта / до 1 годаMiddle · 2–4 года опытаSenior · 5+ лет опыта

Что спрашивают

Dependency Injection
RxJS и Observables
Change Detection
Модули и компоненты
Реактивные формы
TypeScript

8 реальных вопросов с ответами

К каждому вопросу — эталонный ответ, с которым можно сравнить свой.

1

Как работает Dependency Injection в Angular? Что такое провайдеры?

Ответ

В Angular иерархическое дерево инжекторов: запрос зависимости поднимается от инжектора компонента к корневому. Провайдер объясняет инжектору, как создать токен — через useClass, useValue, useFactory или useExisting. Регистрация сервиса в root даёт синглтон на всё приложение; регистрация на компоненте создаёт новый экземпляр на каждый экземпляр компонента, и именно так состояние ограничивают рамками фичи.

2

В чём разница между Observable и Promise?

Ответ

Promise — это одно будущее значение, которое начинает выполняться немедленно и не может быть отменено. Observable — поток из нуля или более значений, ленивый до подписки, отменяемый через отписку и преобразуемый операторами вроде debounce, retry или switchMap. Для HTTP-запросов практическая выгода в отмене: подсказка в поиске может отбросить предыдущий запрос, пока пользователь продолжает печатать.

3

Объясните change detection. Чем OnPush отличается от Default?

Ответ

Change detection обходит дерево компонентов после событий, таймеров или HTTP-ответов и перерисовывает изменившиеся привязки. Default проверяет каждый компонент на каждом цикле. OnPush проверяет компонент только когда изменилась ссылка во входном свойстве, внутри произошло событие или async pipe выдал значение — поэтому OnPush требует иммутабельных данных: изменение объекта на месте не меняет ссылку, и представление не обновится.

4

Что такое map, switchMap и mergeMap? В чём разница?

Ответ

map преобразует каждое пришедшее значение. switchMap и mergeMap разворачивают вложенный observable: switchMap отменяет предыдущую внутреннюю подписку при приходе нового значения, mergeMap выполняет все параллельно. switchMap берут для поиска или навигации, где важен только последний результат, mergeMap — когда каждый запрос обязан завершиться, а concatMap — когда важен порядок.

5

Что такое ngOnInit и чем он отличается от конструктора?

Ответ

Конструктор выполняется при создании экземпляра класса, до того как Angular заполнил входные привязки, поэтому там входные свойства ещё undefined. ngOnInit выполняется после первого прохода привязок, и именно туда относится инициализация, зависящая от входов. По соглашению конструктор только принимает внедрённые зависимости, а реальную подготовку делает ngOnInit.

6

В чём разница между template-driven и reactive формами?

Ответ

Template-driven формы строят модель неявно из директив в шаблоне и подходят для простых случаев. Reactive формы описывают FormGroup в классе компонента, благодаря чему валидация, динамические контролы и тестирование становятся явными и типобезопасными. Reactive рекомендуют по умолчанию для всего сложнее формы логина, потому что состояние формы живёт в коде, где о нём можно рассуждать.

7

Как избежать утечек памяти при работе с Observable?

Ответ

Подписка, которую не закрыли, удерживает свой колбэк и захваченную область видимости живыми и после уничтожения компонента. Самое чистое решение — async pipe, который подписывается и отписывается сам. Иначе применяют takeUntilDestroyed либо собирают подписки и отписываются в ngOnDestroy — типичная промашка это долгоживущий поток вроде событий роутера или вебсокета.

8

Что такое pipe? Как создать свой?

Ответ

Pipe преобразует значение для отображения в шаблоне, удерживая форматирование вне класса компонента. Свой создаётся декоратором @Pipe и методом transform. По умолчанию pipe чистый, то есть Angular пересчитывает его только при смене ссылки на вход, и это делает его дешёвым — пометка pipe как impure заставляет выполнять его на каждом цикле change detection и должна быть крайней мерой.

🦎

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

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

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

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

🔍QA Manual🤖QA AutomationJava Backend🐍Python Backend🐘PHP Backend🦫Go Backend🟢Node.js Backend⚛️React Frontend💚Vue FrontendNext.js📈Business Analyst🎯Product Manager📋Project Manager🎨UI/UX Designer📣Marketing