Lexicon | Angular вопросы
19 subscribers
15 photos
15 links
Подготовка к собеседованиям для Angular разработчиков.

Публикуем вопросы и разборы задач, которые встречаются на интервью frontend разработчиков. Подходит для подготовки к позициям от junior до senior.

Новые вопросы выходят регулярно.
Download Telegram
📘 Разбор опроса

Композиция потоков RxJS в Angular

Вопрос: Какой оператор RxJS используют для параллельного выполнения HTTP-запросов?

Правильный ответ: forkJoin

forkJoin выполняет несколько Observable параллельно и возвращает массив результатов.
Вопрос

Объясните, как работает механизм Shadow DOM и какие преимущества он дает при создании веб-компонентов? Приведите пример использования Shadow DOM в проекте.

Ответ

Shadow DOM — это технология, позволяющая инкапсулировать внутреннюю разметку и стили компонента, создавая изолированное дерево DOM, которое не влияет на основной документ и не подвержено внешним стилям. Она обеспечивает отдельный CSS scope и защищает компоненты от конфликтов стилей и скриптов. При использовании Shadow DOM веб-компоненты становятся более модульными и переиспользуемыми. Например, в проекте может быть создан кастомный элемент с внутренней структурой и стилями, инкапсулированными в Shadow Root, что предотвращает их затенение или переопределение.

#lexicon #собеседование #angular #senior #frontend_dom #frontend_core
📘 Разбор опроса

HttpInterceptor: повторные запросы и кеширование

Вопрос: Какой оператор RxJS используют в HttpInterceptor для повторных запросов?

Правильный ответ: retry()

retry() повторяет запрос при ошибке. repeat() для успешных запросов. replay() кеширует потоки.
Вопрос

Расскажите конкретный пример, как через фабрику провайдера (useFactory) реализовать условный выбор провайдера в зависимости от среды (например, production или development). Какие ключевые моменты нужно учесть?

Ответ

Для условного выбора провайдера через useFactory необходимо реализовать функцию, которая возвращает нужный сервис в зависимости от текущей среды (например, process.env.NODE_ENV или Angular environment). Ключевые моменты: инжектирование необходимых зависимостей в фабрику через параметры, надежная проверка условий для выбора нужного класса, а также корректная регистрация провайдера с useFactory в массиве providers модуля или компонента. Это позволяет гибко подменять реализации без дополнительного изменения кода.

#lexicon #собеседование #angular #senior #angular_injection
⚡️ Как Angular понимает, что нужно обновить UI?

Многие думают, что это “магия фреймворка”.
На самом деле — это связка Zone.js + Change Detection.

Разобрал в новой статье:

— что именно делает Zone.js (и чего он НЕ делает)
— как Angular узнаёт про async-операции
— зачем нужен NgZone
— как работает OnPush
— что меняется в 2026 с signals и zoneless-подходом
— и что по этому спрашивают на собеседованиях

Если хочешь наконец-то понять механизм обновления UI, а не просто «так работает» — статья обязательна к прочтению 👇

🔗 Zone.js и механизм обновления UI в Angular
Вопрос

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

Ответ

Управление жизненным циклом подписок в Angular компонентах предполагает своевременное отписывание, чтобы предотвратить утечки памяти. Часто используют оператор takeUntil с Subject, который вызывается в ngOnDestroy, либо применяют pipe с take или first для автоматического завершения подписки. Например, в ngOnDestroy вызывается next и complete у Subject, что завершает все подписки, связанные через takeUntil. Такой подход обеспечивает аккуратное управление ресурсами и поддерживает производительность приложения.

#lexicon #собеседование #angular #middle #angular_reactive
Вопрос

Какие хуки из Angular применяете для оптимизации и контроля жизненного цикла HTTP-запросов в компонентах? Приведите примеры их использования.

Ответ

Для управления жизненным циклом HTTP-запросов в компонентах Angular применяются хуки ngOnInit и ngOnDestroy. В ngOnInit обычно инициализируют и запускают HTTP-запросы через HttpClient. В ngOnDestroy важно отписываться от Observable из HTTP-запроса, чтобы избежать утечек памяти, используя подходы с ручной отпиской или оператор takeUntil. Это обеспечивает контроль и очистку ресурсов при уничтожении компонента.

#lexicon #собеседование #angular #junior #angular_http
Вопрос

Как можно оптимизировать время сборки проекта при использовании Webpack, и какие инструменты для этого применяешь?

Ответ

Для оптимизации времени сборки в Webpack применяются техники кэширования, такие как использование кеша загрузчиков (loader cache) и плагина HardSourceWebpackPlugin. Также важна настройка точек входа и разделение кода (code splitting) для уменьшения размера бандлов. Применение многопроцессного или многопоточного запуска через плагин thread-loader и настройка режима разработки с быстрым обновлением (Hot Module Replacement) также ускоряют сборку.

#lexicon #собеседование #angular #middle #frontend_tooling #frontend_core
📘 Разбор опроса

Angular: Shared vs Core модули

Вопрос: Что обычно помещают в Shared модуль?

Правильный ответ: Общие UI-компоненты без бизнес-логики

Shared модуль содержит общие компоненты, директивы и пайпы для повторного использования в разных модулях, без бизнес-логики.
Вопрос

Приведите пример, когда стандартный механизм change detection в Angular не сработает корректно, и опишите, каким образом можно решить эту проблему через манипуляции с NgZone или использованием markForCheck.

Ответ

Стандартный механизм change detection в Angular может не сработать корректно, если изменения происходят вне зоны Angular, например, внутри колбэков сторонних библиотек или setTimeout без вызова Angular API. В таких случаях Angular не видит изменений, и view не обновляется. Для решения используют NgZone.run(), чтобы вручную вернуть выполнение к зоне Angular и запустить детекцию изменений, либо вызывают ChangeDetectorRef.markForCheck() для пометки компонента как нуждающегося в проверке в OnPush стратегии. Это позволяет избежать необходимости полного обхода дерева и повысить производительность.

#lexicon #собеседование #angular #senior #angular_lifecycle
🚀 Готовитесь к IT-собеседованиям?

В каналах Lexicon каждый день публикуются:
• вопросы с реальных интервью
• задачи для тренировки
• разборы ответов

📚 Полная тренировка интервью доступна на платформе:
🤖 AI-мок интервью
🧠 база вопросов по стеку
📊 разбор ваших ответов

Попробовать → https://lexiconium.ru

📢 Основной канал Lexicon
новости платформы, полезные материалы и навигация по всем каналам
👉 @lexicon_interview

Если нужно готовиться по другим направлениям, смотрите все каналы Lexicon 👇

🐹 Go — @lexicon_go
☕️ Java — @lexicon_java
⚛️ React — @lexicon_react
🅰️ Angular — @lexicon_angular
🐍 Python — @lexicon_python
📊 Системный аналитик — @lexicon_sa
🧪 QA — @lexicon_qa
💚 Vue — @lexicon_vue
Lexicon | Angular вопросы pinned «🚀 Готовитесь к IT-собеседованиям? В каналах Lexicon каждый день публикуются: • вопросы с реальных интервью • задачи для тренировки • разборы ответов 📚 Полная тренировка интервью доступна на платформе: 🤖 AI-мок интервью 🧠 база вопросов по стеку 📊 разбор ваших…»
Вопрос

Как в архитектуре data flow Angular организовать передачу закешированных данных между компонентами без дополнительного запроса к серверу?

Ответ

Для передачи закешированных данных между компонентами в архитектуре data flow Angular следует использовать сервисы с BehaviorSubject или ReplaySubject, которые хранят текущее состояние данных и обеспечивают их реактивную передачу. Данные в сервисе запрашиваются один раз и сохраняются, что позволяет избежать дополнительных запросов к серверу при переходе между компонентами. Компоненты подписываются на эти observable, получая актуальные данные из кеша и автоматически обновляясь при изменениях.

#lexicon #собеседование #angular #junior