Lexicon | Angular вопросы
#quiz #lexicon #собеседование #angular #senior #angular_http
🧠 HttpInterceptor: повторные запросы и кеширование
Anonymous Quiz
100%
retry()
0%
repeat()
0%
replay()
📘 Разбор опроса
HttpInterceptor: повторные запросы и кеширование
Вопрос: Какой оператор RxJS используют в HttpInterceptor для повторных запросов?
✅ Правильный ответ: retry()
retry() повторяет запрос при ошибке. repeat() для успешных запросов. replay() кеширует потоки.
HttpInterceptor: повторные запросы и кеширование
Вопрос: Какой оператор RxJS используют в HttpInterceptor для повторных запросов?
✅ Правильный ответ: retry()
retry() повторяет запрос при ошибке. repeat() для успешных запросов. replay() кеширует потоки.
❓ Вопрос
Расскажите конкретный пример, как через фабрику провайдера (useFactory) реализовать условный выбор провайдера в зависимости от среды (например, production или development). Какие ключевые моменты нужно учесть?
✅ Ответ
Для условного выбора провайдера через useFactory необходимо реализовать функцию, которая возвращает нужный сервис в зависимости от текущей среды (например, process.env.NODE_ENV или Angular environment). Ключевые моменты: инжектирование необходимых зависимостей в фабрику через параметры, надежная проверка условий для выбора нужного класса, а также корректная регистрация провайдера с useFactory в массиве providers модуля или компонента. Это позволяет гибко подменять реализации без дополнительного изменения кода.
#lexicon #собеседование #angular #senior #angular_injection
Расскажите конкретный пример, как через фабрику провайдера (useFactory) реализовать условный выбор провайдера в зависимости от среды (например, production или development). Какие ключевые моменты нужно учесть?
✅ Ответ
#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
Многие думают, что это “магия фреймворка”.
На самом деле — это связка Zone.js + Change Detection.
Разобрал в новой статье:
— что именно делает Zone.js (и чего он НЕ делает)
— как Angular узнаёт про async-операции
— зачем нужен NgZone
— как работает OnPush
— что меняется в 2026 с signals и zoneless-подходом
— и что по этому спрашивают на собеседованиях
Если хочешь наконец-то понять механизм обновления UI, а не просто «так работает» — статья обязательна к прочтению 👇
🔗 Zone.js и механизм обновления UI в Angular
lexiconium.ru
Zone.js и механизм обновления UI в Angular: как это работает
Разбираем, как Angular обновляет UI: роль Zone.js, связь с Change Detection, microtask/macrotask, NgZone, OnPush, zone-less режим и Signals в 2026.
❓ Вопрос
Как ты управляешь жизненным циклом подписок в Angular компонентах, чтобы избежать утечек памяти? Приведи конкретный пример кода или подход, который используешь.
✅ Ответ
Управление жизненным циклом подписок в Angular компонентах предполагает своевременное отписывание, чтобы предотвратить утечки памяти. Часто используют оператор takeUntil с Subject, который вызывается в ngOnDestroy, либо применяют pipe с take или first для автоматического завершения подписки. Например, в ngOnDestroy вызывается next и complete у Subject, что завершает все подписки, связанные через takeUntil. Такой подход обеспечивает аккуратное управление ресурсами и поддерживает производительность приложения.
#lexicon #собеседование #angular #middle #angular_reactive
Как ты управляешь жизненным циклом подписок в Angular компонентах, чтобы избежать утечек памяти? Приведи конкретный пример кода или подход, который используешь.
✅ Ответ
#lexicon #собеседование #angular #middle #angular_reactive
❓ Вопрос
Какие хуки из Angular применяете для оптимизации и контроля жизненного цикла HTTP-запросов в компонентах? Приведите примеры их использования.
✅ Ответ
Для управления жизненным циклом HTTP-запросов в компонентах Angular применяются хуки ngOnInit и ngOnDestroy. В ngOnInit обычно инициализируют и запускают HTTP-запросы через HttpClient. В ngOnDestroy важно отписываться от Observable из HTTP-запроса, чтобы избежать утечек памяти, используя подходы с ручной отпиской или оператор takeUntil. Это обеспечивает контроль и очистку ресурсов при уничтожении компонента.
#lexicon #собеседование #angular #junior #angular_http
Какие хуки из Angular применяете для оптимизации и контроля жизненного цикла HTTP-запросов в компонентах? Приведите примеры их использования.
✅ Ответ
#lexicon #собеседование #angular #junior #angular_http
❓ Вопрос
Как можно оптимизировать время сборки проекта при использовании Webpack, и какие инструменты для этого применяешь?
✅ Ответ
Для оптимизации времени сборки в Webpack применяются техники кэширования, такие как использование кеша загрузчиков (loader cache) и плагина HardSourceWebpackPlugin. Также важна настройка точек входа и разделение кода (code splitting) для уменьшения размера бандлов. Применение многопроцессного или многопоточного запуска через плагин thread-loader и настройка режима разработки с быстрым обновлением (Hot Module Replacement) также ускоряют сборку.
#lexicon #собеседование #angular #middle #frontend_tooling #frontend_core
Как можно оптимизировать время сборки проекта при использовании Webpack, и какие инструменты для этого применяешь?
✅ Ответ
#lexicon #собеседование #angular #middle #frontend_tooling #frontend_core
📘 Разбор опроса
Angular: Shared vs Core модули
Вопрос: Что обычно помещают в Shared модуль?
✅ Правильный ответ: Общие UI-компоненты без бизнес-логики
Shared модуль содержит общие компоненты, директивы и пайпы для повторного использования в разных модулях, без бизнес-логики.
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
Приведите пример, когда стандартный механизм change detection в Angular не сработает корректно, и опишите, каким образом можно решить эту проблему через манипуляции с NgZone или использованием markForCheck.
✅ Ответ
#lexicon #собеседование #angular #senior #angular_lifecycle
Lexicon | Angular вопросы
#quiz #lexicon #собеседование #angular #senior
🧠 Zone.js и Change Detection: когда нужен ручной запуск?
Anonymous Quiz
0%
При вызове setTimeout() внутри компонента
0%
При обработке события DOM через (click)
100%
При использовании WebSocket вне NgZone.run()
🚀 Готовитесь к 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 каждый день публикуются:
• вопросы с реальных интервью
• задачи для тренировки
• разборы ответов
📚 Полная тренировка интервью доступна на платформе:
🤖 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
Как в архитектуре data flow Angular организовать передачу закешированных данных между компонентами без дополнительного запроса к серверу?
✅ Ответ
#lexicon #собеседование #angular #junior
Lexicon | Angular вопросы
#quiz #lexicon #собеседование #angular #senior
🧠 Обработка ошибок в NgRx Effects: catchError
Anonymous Quiz
0%
Эффект завершится, подписка автоматически отпишется, состояние не изменится
0%
Ошибка пробросится в глобальный обработчик Angular, эффект 'умрёт', подписка отпишется
100%
NgRx автоматически задиспатчит action с ошибкой, эффект продолжит работу
Lexicon | Angular вопросы
🧠 Обработка ошибок в NgRx Effects: catchError
📘 Разбор опроса
Обработка ошибок в NgRx Effects: catchError
Вопрос: Что произойдёт, если в эффекте не обработать ошибку через catchError, а сервер вернёт 500?
✅ Правильный ответ: Ошибка пробросится в глобальный обработчик Angular, эффект 'умрёт', подписка отпишется
1) Идея вопроса: Проверить понимание критичности обработки ошибок в NgRx Effects и поведения Observable потоков при необработанных исключениях. Вопрос сфокусирован на последствиях пропуска catchError в pipe эффекта. 2) Почему правильный вариант верный: Второй вариант корректен. Когда Observable в эффекте выбрасывает ошибку без перехвата catchError, поток завершается с ошибкой. NgRx Effects автоматически отписывается от этого потока (эффект 'умирает'), и ошибка всплывает в глобальный обработчик Angular ErrorHandler, если её не перехватить раньше. Состояние через dispatch не изменится, так как поток завершён. 3) Почему остальные варианты неверные: Первый вариант неверен: хотя эффект завершится, ключевая ошибка в утверждении 'подписка автоматически отпишется'. В NgRx Effects подписка управляется фреймворком, и при ошибке без catchError она действительно отпишется, но это описывается как 'эффект умирает', а не просто 'завершается'. Также важно, что ошибка не останется незамеченной - она попадёт в ErrorHandler. Третий вариант полностью ошибочен: NgRx не выполняет автоматический dispatch action при ошибке. Это ответственность разработчика - явно обработать ошибку в catchError и задиспатчить соответствующий action. Без этого никакие actions не будут отправлены. 4) Где ловушка: Ловушка в первом варианте, который выглядит правдоподобно для новичка. Он частично верен (эффект завершится, состояние не изменится), но содержит критическую неточность про автоматическую отписку и умалчивает о пробросе ошибки в ErrorHandler. Также ловушка в том, что некоторые могут подумать, будто NgRx имеет встроенную автоматическую обработку ошибок. 5) Практический вывод: Всегда обрабатывайте ошибки в Effects с помощью catchError, возвращая новый Observable (часто с action ошибки). Игнорирование catchError приводит к 'смерти' эффекта - он перестаёт реагировать на последующие actions. Это нарушает работу функциональности. Глобальный ErrorHandler - последняя линия защиты, но он не восстанавливает работу эффекта. Правильная практика: в catchError диспатчить action failure, который обработается в редьюсере, а сам эффект должен возвращать action или EMPTY, чтобы поток не завершался с ошибкой.
Обработка ошибок в NgRx Effects: catchError
Вопрос: Что произойдёт, если в эффекте не обработать ошибку через catchError, а сервер вернёт 500?
✅ Правильный ответ: Ошибка пробросится в глобальный обработчик Angular, эффект 'умрёт', подписка отпишется
1) Идея вопроса: Проверить понимание критичности обработки ошибок в NgRx Effects и поведения Observable потоков при необработанных исключениях. Вопрос сфокусирован на последствиях пропуска catchError в pipe эффекта. 2) Почему правильный вариант верный: Второй вариант корректен. Когда Observable в эффекте выбрасывает ошибку без перехвата catchError, поток завершается с ошибкой. NgRx Effects автоматически отписывается от этого потока (эффект 'умирает'), и ошибка всплывает в глобальный обработчик Angular ErrorHandler, если её не перехватить раньше. Состояние через dispatch не изменится, так как поток завершён. 3) Почему остальные варианты неверные: Первый вариант неверен: хотя эффект завершится, ключевая ошибка в утверждении 'подписка автоматически отпишется'. В NgRx Effects подписка управляется фреймворком, и при ошибке без catchError она действительно отпишется, но это описывается как 'эффект умирает', а не просто 'завершается'. Также важно, что ошибка не останется незамеченной - она попадёт в ErrorHandler. Третий вариант полностью ошибочен: NgRx не выполняет автоматический dispatch action при ошибке. Это ответственность разработчика - явно обработать ошибку в catchError и задиспатчить соответствующий action. Без этого никакие actions не будут отправлены. 4) Где ловушка: Ловушка в первом варианте, который выглядит правдоподобно для новичка. Он частично верен (эффект завершится, состояние не изменится), но содержит критическую неточность про автоматическую отписку и умалчивает о пробросе ошибки в ErrorHandler. Также ловушка в том, что некоторые могут подумать, будто NgRx имеет встроенную автоматическую обработку ошибок. 5) Практический вывод: Всегда обрабатывайте ошибки в Effects с помощью catchError, возвращая новый Observable (часто с action ошибки). Игнорирование catchError приводит к 'смерти' эффекта - он перестаёт реагировать на последующие actions. Это нарушает работу функциональности. Глобальный ErrorHandler - последняя линия защиты, но он не восстанавливает работу эффекта. Правильная практика: в catchError диспатчить action failure, который обработается в редьюсере, а сам эффект должен возвращать action или EMPTY, чтобы поток не завершался с ошибкой.
❓ Вопрос
Как браузер управляет памятью при работе с DOM, и какие приемы используются для оптимизации производительности при манипуляциях с DOM-деревом?
✅ Ответ
Браузер выделяет и освобождает память для DOM-элементов, используя сборщик мусора, который удаляет объекты без ссылок. При манипуляциях с DOM рекомендуется минимизировать количество изменений, использовать DocumentFragment или клонирование узлов для пакетного обновления, а также применять отложенное или батчевое обновление для снижения числа перерасчетов стилей и перерисовок. Важно избегать утечек памяти через ссылки на удалённые элементы и очищать обработчики событий.
#lexicon #собеседование #angular #middle #frontend #core
📚 4000+ вопросов для подготовки к IT-собеседованиям
Как браузер управляет памятью при работе с DOM, и какие приемы используются для оптимизации производительности при манипуляциях с DOM-деревом?
✅ Ответ
#lexicon #собеседование #angular #middle #frontend #core
📚 4000+ вопросов для подготовки к IT-собеседованиям
❓ Вопрос
Как конкретно в Angular вы реализуете автоматическую отписку от Observable при уничтожении компонента?
✅ Ответ
Для автоматической отписки в Angular обычно используют оператор takeUntil в сочетании с subject, который вызывается в ngOnDestroy. В компоненте создают subject, например, private destroy$ = new Subject<void>(), и в ngOnDestroy вызывают destroy$.next() и destroy$.complete(), что завершает поток подписок. Это позволяет избежать утечек памяти, гарантируя отписку от всех Observable при уничтожении компонента.
#lexicon #собеседование #angular #junior
📚 4000+ вопросов для подготовки к IT-собеседованиям
Как конкретно в Angular вы реализуете автоматическую отписку от Observable при уничтожении компонента?
✅ Ответ
#lexicon #собеседование #angular #junior
📚 4000+ вопросов для подготовки к IT-собеседованиям