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

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

Middle · 2–4 года опыта

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

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

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

6 вопросов уровня Middle с ответами

1

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

Ответ

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

2

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

Ответ

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

3

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

Ответ

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

4

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

Ответ

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

5

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

Ответ

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

6

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

Ответ

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

🦎

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

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

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

Другие уровни — Angular Frontend

Junior Angular FrontendSenior Angular FrontendВсе вопросы Angular Frontend

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

🔍Middle QA Manual🤖Middle QA AutomationMiddle Java Backend🐍Middle Python Backend🐘Middle PHP Backend🦫Middle Go Backend🟢Middle Node.js Backend⚛️Middle React Frontend💚Middle Vue FrontendMiddle Next.js