NestJS
Экспресс-шпаргалка 20/20
- Nest строится вокруг модулей, контроллеров и провайдеров, что задает четкие bounded-context границы.
- DI-контейнер управляет lifecycle провайдеров и снижает связность через constructor injection и токены.
- Контроллеры только принимают/возвращают transport-данные, бизнес-логика должна жить в service/use-case слое.
- DTO +
ValidationPipeформируют входной контракт и отсекают некорректный payload до бизнес-логики. - Pipes валидируют/трансформируют, Guards авторизуют, Interceptors оборачивают flow, Filters нормализуют ошибки.
- Глобальный exception filter должен отдавать единый error contract с code/message/context/traceId.
- JWT+RBAC реализуют через strategy + guards + policy checks, а не только через одну role-проверку.
- Версионирование API делают URL/header/media-type подходом с deprecation policy и backward совместимостью.
- Конфиг в Nest делают через
ConfigModuleи схему валидации env (fail-fast при старте). - Слои
domain/app/infrastructureпозволяют менять transport/DB без переписывания доменной логики. - Работа с БД должна держать транзакционные границы в сервисе и не протекать в контроллеры.
- Тестирование в Nest: unit для логики, integration для модулей, e2e для критических API-потоков.
- Кэширование включают точечно на read-heavy эндпоинтах с TTL и явной инвалидацией.
- Observability: структурные логи, метрики latency/error-rate, трассировка и readiness probes.
- Очереди (BullMQ) выносят долгие задачи из request path и требуют idempotency + retry policy.
- Graceful shutdown обязан закрыть HTTP, DB и воркеры до завершения процесса.
- Circular dependencies лечат рефакторингом границ модулей,
forwardRefиспользуют как временный компромисс. - Microservices transport оправдан только при реальной сервисной границе и независимом масштабировании.
- Error contract для клиентов должен быть стабильным и одинаковым между всеми endpoint.
- Миграция Express -> Nest делается инкрементально по модулям с контрактной совместимостью и shadow-этапами.
1. Как устроена модульная архитектура в NestJS?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
NestJS строится вокруг модулей, контроллеров и провайдеров, что задает четкие границы ответственности.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Сверяю поведение по runbook: детектирование, mitigation и проверка восстановления после сбоя.
Мини-пример
@Injectable()
export class UsersService {
findAll() {
return [];
}
}
Углубление (2-3 минуты)
- Свяжите тему "Как устроена модульная архитектура в NestJS?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Держат тяжелую обработку в синхронном request path.
- Запускают изменения без наблюдаемости и runbook.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как поведение изменится под пиковым трафиком?
- Что вынесете в фон, чтобы не блокировать critical path?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Границы
Event Loop/I-O/CPU и backpressure. - Runbook деградации внешней зависимости.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
2. Что такое providers и как работает DI в Nest?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
Providers управляются DI-контейнером Nest и внедряются в классы через constructor injection.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Сверяю поведение по runbook: детектирование, mitigation и проверка восстановления после сбоя.
Мини-пример
@Injectable()
export class UsersService {
findAll() {
return [];
}
}
Углубление (2-3 минуты)
- Свяжите тему "Что такое providers и как работает DI в Nest?" с одним production-сценарием и объясните, почему она влияет на результат.
- Покажите, какие сигналы observability подтверждают устойчивость решения.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Держат тяжелую обработку в синхронном request path.
- Запускают изменения без наблюдаемости и runbook.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что вынесете в фон, чтобы не блокировать critical path?
- Какие метрики покажут деградацию раньше инцидента?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Границы
Event Loop/I-O/CPU и backpressure. - Health/readiness и корреляцию логов/метрик.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
3. Где должна жить бизнес-логика: controller или service?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
Бизнес-логика должна быть в сервисах/use-case слоях, а контроллер отвечает за HTTP-адаптацию.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Прогоняю нагрузочный кейс, фиксирую лимиты (timeout/concurrency/retry) и проверяю стабильность сервиса.
Мини-пример
@Injectable()
export class UsersService {
findAll() {
return [];
}
}
Углубление (2-3 минуты)
- Свяжите тему "Где должна жить бизнес-логика: controller или service?" с одним production-сценарием и объясните, почему она влияет на результат.
- Покажите, какие сигналы observability подтверждают устойчивость решения.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Запускают изменения без наблюдаемости и runbook.
- Не ограничивают ресурсы (конкурентность, очередь, таймауты).
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что вынесете в фон, чтобы не блокировать critical path?
- Какие метрики покажут деградацию раньше инцидента?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Runbook деградации внешней зависимости.
- Health/readiness и корреляцию логов/метрик.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
4. Как реализовать DTO и валидацию входящих данных?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
DTO + ValidationPipe задают контракт входных данных и защищают от некорректных payload.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Проверяю сценарий под пиковым трафиком: latency, saturation и поведение при деградации зависимости.
Мини-пример
export class CreateUserDto {
@IsEmail()
email!: string;
}
Углубление (2-3 минуты)
- Свяжите тему "Как реализовать DTO и валидацию входящих данных?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Не ограничивают ресурсы (конкурентность, очередь, таймауты).
- Запускают изменения без наблюдаемости и runbook.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что вынесете в фон, чтобы не блокировать critical path?
- Как поведение изменится под пиковым трафиком?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Health/readiness и корреляцию логов/метрик.
- Runbook деградации внешней зависимости.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
5. Когда использовать pipes, guards, interceptors и filters?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
Pipes валидируют/трансформируют, guards проверяют доступ, interceptors оборачивают flow, filters обрабатывают исключения.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Проверяю сценарий под пиковым трафиком: latency, saturation и поведение при деградации зависимости.
Мини-пример
@UseGuards(AuthGuard, RolesGuard)
@Get('admin')
getAdminData() {
return { ok: true };
}
Углубление (2-3 минуты)
- Свяжите тему "Когда использовать pipes, guards, interceptors и filters?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Не ограничивают ресурсы (конкурентность, очередь, таймауты).
- Держат тяжелую обработку в синхронном request path.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как поведение изменится под пиковым трафиком?
- Какие метрики покажут деградацию раньше инцидента?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Health/readiness и корреляцию логов/метрик.
- Границы
Event Loop/I-O/CPU и backpressure. - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
6. Как организовать глобальную обработку ошибок в NestJS?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
Глобальная обработка ошибок делается через ExceptionFilter и единый error response schema.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Прогоняю нагрузочный кейс, фиксирую лимиты (timeout/concurrency/retry) и проверяю стабильность сервиса.
Мини-пример
@Injectable()
export class UsersService {
findAll() {
return [];
}
}
Углубление (2-3 минуты)
- Свяжите тему "Как организовать глобальную обработку ошибок в NestJS?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Запускают изменения без наблюдаемости и runbook.
- Держат тяжелую обработку в синхронном request path.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Какие метрики покажут деградацию раньше инцидента?
- Что вынесете в фон, чтобы не блокировать critical path?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Границы
Event Loop/I-O/CPU и backpressure. - Runbook деградации внешней зависимости.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
7. Как реализовать JWT auth и role-based access (RBAC)?
Теги: nestjs, backend, typescript, security, auth
Сложность: Middle/Senior
Короткий ответ
JWT и RBAC реализуют через auth strategy, guards, custom decorators и policy checks.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Ошибки в валидации токенов и сроков жизни приводят к уязвимостям и неуправляемым 401.
- Как проверяете решение: Прогоняю нагрузочный кейс, фиксирую лимиты (timeout/concurrency/retry) и проверяю стабильность сервиса.
Мини-пример
@Injectable()
export class UsersService {
findAll() {
return [];
}
}
Углубление (2-3 минуты)
- Свяжите тему "Как реализовать JWT auth и role-based access (RBAC)?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Не ограничивают ресурсы (конкурентность, очередь, таймауты).
- Запускают изменения без наблюдаемости и runbook.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как поведение изменится под пиковым трафиком?
- Какие метрики покажут деградацию раньше инцидента?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Runbook деградации внешней зависимости.
- Границы
Event Loop/I-O/CPU и backpressure. - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
8. Как строить версионирование API в Nest?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
Версионирование API делают через URL/header/media type и сопровождают deprecation политикой.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Проверяю сценарий под пиковым трафиком: latency, saturation и поведение при деградации зависимости.
Мини-пример
@Injectable()
export class UsersService {
findAll() {
return [];
}
}
Углубление (2-3 минуты)
- Свяжите тему "Как строить версионирование API в Nest?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Держат тяжелую обработку в синхронном request path.
- Запускают изменения без наблюдаемости и runbook.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как поведение изменится под пиковым трафиком?
- Что вынесете в фон, чтобы не блокировать critical path?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Runbook деградации внешней зависимости.
- Границы
Event Loop/I-O/CPU и backpressure. - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
9. Как организовать конфигурацию приложения и env?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
Конфиг строят через ConfigModule, env-схемы и fail-fast валидацию при старте.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Проверяю сценарий под пиковым трафиком: latency, saturation и поведение при деградации зависимости.
Мини-пример
@Injectable()
export class UsersService {
findAll() {
return [];
}
}
Углубление (2-3 минуты)
- Свяжите тему "Как организовать конфигурацию приложения и env?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Запускают изменения без наблюдаемости и runbook.
- Не ограничивают ресурсы (конкурентность, очередь, таймауты).
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Какие метрики покажут деградацию раньше инцидента?
- Как поведение изменится под пиковым трафиком?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Health/readiness и корреляцию логов/метрик.
- Runbook деградации внешней зависимости.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
10. Как строить слоистую архитектуру (domain/app/infrastructure)?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
Слоистая архитектура отделяет домен от инфраструктуры и упрощает тестирование.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Сверяю поведение по runbook: детектирование, mitigation и проверка восстановления после сбоя.
Мини-пример
@Injectable()
export class UsersService {
findAll() {
return [];
}
}
Углубление (2-3 минуты)
- Свяжите тему "Как строить слоистую архитектуру (domain/app/infrastructure)?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Не ограничивают ресурсы (конкурентность, очередь, таймауты).
- Держат тяжелую обработку в синхронном request path.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Какие метрики покажут деградацию раньше инцидента?
- Как поведение изменится под пиковым трафиком?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Health/readiness и корреляцию логов/метрик.
- Границы
Event Loop/I-O/CPU и backpressure. - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
11. Как работать с базой данных в Nest (Prisma/TypeORM)?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
Работа с БД в Nest обычно идет через Prisma/TypeORM/QueryBuilder с выделенным data-access слоем.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Сверяю поведение по runbook: детектирование, mitigation и проверка восстановления после сбоя.
Мини-пример
@Injectable()
export class UsersService {
findAll() {
return [];
}
}
Углубление (2-3 минуты)
- Свяжите тему "Как работать с базой данных в Nest (Prisma/TypeORM)?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Не ограничивают ресурсы (конкурентность, очередь, таймауты).
- Запускают изменения без наблюдаемости и runbook.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как поведение изменится под пиковым трафиком?
- Какие метрики покажут деградацию раньше инцидента?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Health/readiness и корреляцию логов/метрик.
- Границы
Event Loop/I-O/CPU и backpressure. - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
12. Как тестировать Nest-модули и контроллеры?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
Тестирование включает unit для сервисов, integration для модулей и e2e для HTTP контрактов.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Сверяю поведение по runbook: детектирование, mitigation и проверка восстановления после сбоя.
Мини-пример
@Injectable()
export class UsersService {
findAll() {
return [];
}
}
Углубление (2-3 минуты)
- Свяжите тему "Как тестировать Nest-модули и контроллеры?" с одним production-сценарием и объясните, почему она влияет на результат.
- Покажите, какие сигналы observability подтверждают устойчивость решения.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Держат тяжелую обработку в синхронном request path.
- Не ограничивают ресурсы (конкурентность, очередь, таймауты).
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как поведение изменится под пиковым трафиком?
- Что вынесете в фон, чтобы не блокировать critical path?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Runbook деградации внешней зависимости.
- Границы
Event Loop/I-O/CPU и backpressure. - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
13. Как реализовать кеширование и где его лучше включать?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
Кэш включают точечно на read-heavy маршрутах с TTL и стратегией инвалидации.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Прогоняю нагрузочный кейс, фиксирую лимиты (timeout/concurrency/retry) и проверяю стабильность сервиса.
Мини-пример
@Injectable()
export class UsersService {
findAll() {
return [];
}
}
Углубление (2-3 минуты)
- Свяжите тему "Как реализовать кеширование и где его лучше включать?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Запускают изменения без наблюдаемости и runbook.
- Держат тяжелую обработку в синхронном request path.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Какие метрики покажут деградацию раньше инцидента?
- Что вынесете в фон, чтобы не блокировать critical path?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Границы
Event Loop/I-O/CPU и backpressure. - Health/readiness и корреляцию логов/метрик.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
14. Как организовать логирование и observability в Nest?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
Observability в Nest: структурные логи, трассировка, метрики latency/error-rate.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Прогоняю нагрузочный кейс, фиксирую лимиты (timeout/concurrency/retry) и проверяю стабильность сервиса.
Мини-пример
@Injectable()
export class UsersService {
findAll() {
return [];
}
}
Углубление (2-3 минуты)
- Свяжите тему "Как организовать логирование и observability в Nest?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Не ограничивают ресурсы (конкурентность, очередь, таймауты).
- Держат тяжелую обработку в синхронном request path.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что вынесете в фон, чтобы не блокировать critical path?
- Какие метрики покажут деградацию раньше инцидента?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Runbook деградации внешней зависимости.
- Health/readiness и корреляцию логов/метрик.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
15. Как реализовать очереди задач (BullMQ) в Nest?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
BullMQ/очереди выносят долгие задачи из request-response пути.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Прогоняю нагрузочный кейс, фиксирую лимиты (timeout/concurrency/retry) и проверяю стабильность сервиса.
Мини-пример
@Injectable()
export class UsersService {
findAll() {
return [];
}
}
Углубление (2-3 минуты)
- Свяжите тему "Как реализовать очереди задач (BullMQ) в Nest?" с одним production-сценарием и объясните, почему она влияет на результат.
- Покажите, какие сигналы observability подтверждают устойчивость решения.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Не ограничивают ресурсы (конкурентность, очередь, таймауты).
- Держат тяжелую обработку в синхронном request path.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как поведение изменится под пиковым трафиком?
- Какие метрики покажут деградацию раньше инцидента?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Health/readiness и корреляцию логов/метрик.
- Границы
Event Loop/I-O/CPU и backpressure. - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
16. Как делать graceful shutdown в Nest приложении?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
Graceful shutdown должен корректно закрывать HTTP, БД, брокеры и воркеры.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Проверяю сценарий под пиковым трафиком: latency, saturation и поведение при деградации зависимости.
Мини-пример
process.on('SIGTERM', async () => {
await server.close();
process.exit(0);
});
Углубление (2-3 минуты)
- Свяжите тему "Как делать graceful shutdown в Nest приложении?" с одним production-сценарием и объясните, почему она влияет на результат.
- Покажите, какие сигналы observability подтверждают устойчивость решения.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Запускают изменения без наблюдаемости и runbook.
- Не ограничивают ресурсы (конкурентность, очередь, таймауты).
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что вынесете в фон, чтобы не блокировать critical path?
- Какие метрики покажут деградацию раньше инцидента?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Границы
Event Loop/I-O/CPU и backpressure. - Health/readiness и корреляцию логов/метрик.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
17. Как избегать circular dependencies между модулями?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
Circular dependencies устраняют пересборкой модулей и выделением интерфейсов/фасадов.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Сверяю поведение по runbook: детектирование, mitigation и проверка восстановления после сбоя.
Мини-пример
@Injectable()
export class UsersService {
findAll() {
return [];
}
}
Углубление (2-3 минуты)
- Свяжите тему "Как избегать circular dependencies между модулями?" с одним production-сценарием и объясните, почему она влияет на результат.
- Опишите границы request path и вынос тяжелых операций в фон.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Запускают изменения без наблюдаемости и runbook.
- Держат тяжелую обработку в синхронном request path.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что вынесете в фон, чтобы не блокировать critical path?
- Как поведение изменится под пиковым трафиком?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Runbook деградации внешней зависимости.
- Health/readiness и корреляцию логов/метрик.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
18. Когда использовать microservices transport в Nest?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
Microservices transport в Nest оправдан при реальной сервисной границе, а не «на будущее».
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Сверяю поведение по runbook: детектирование, mitigation и проверка восстановления после сбоя.
Мини-пример
@Injectable()
export class UsersService {
findAll() {
return [];
}
}
Углубление (2-3 минуты)
- Свяжите тему "Когда использовать microservices transport в Nest?" с одним production-сценарием и объясните, почему она влияет на результат.
- Опишите границы request path и вынос тяжелых операций в фон.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Держат тяжелую обработку в синхронном request path.
- Запускают изменения без наблюдаемости и runbook.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что вынесете в фон, чтобы не блокировать critical path?
- Какие метрики покажут деградацию раньше инцидента?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Границы
Event Loop/I-O/CPU и backpressure. - Health/readiness и корреляцию логов/метрик.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
19. Как проектировать error contract для клиентских приложений?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
Error contract для клиента должен быть стабильным и предсказуемым.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Проверяю сценарий под пиковым трафиком: latency, saturation и поведение при деградации зависимости.
Мини-пример
@Injectable()
export class UsersService {
findAll() {
return [];
}
}
Углубление (2-3 минуты)
- Свяжите тему "Как проектировать error contract для клиентских приложений?" с одним production-сценарием и объясните, почему она влияет на результат.
- Покажите, какие сигналы observability подтверждают устойчивость решения.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Запускают изменения без наблюдаемости и runbook.
- Держат тяжелую обработку в синхронном request path.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что вынесете в фон, чтобы не блокировать critical path?
- Как поведение изменится под пиковым трафиком?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Runbook деградации внешней зависимости.
- Health/readiness и корреляцию логов/метрик.
- Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.
Связанные модули и карта
20. Как мигрировать большой Express backend на Nest поэтапно?
Теги: nestjs, backend, typescript
Сложность: Middle/Senior
Короткий ответ
Миграцию Express -> Nest делают инкрементально: по модулю, с контрактной совместимостью.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
- Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
- Как проверяете решение: Сверяю поведение по runbook: детектирование, mitigation и проверка восстановления после сбоя.
Мини-пример
@Injectable()
export class UsersService {
findAll() {
return [];
}
}
Куда дальше
- Вернитесь в модуль: NestJS.
- Сверьтесь с картой темы: NestJS.
- Продолжайте по маршруту: Senior трек.
- Закрепите один ответ на практике в Песочнице.
Углубление (2-3 минуты)
- Свяжите тему "Как мигрировать большой Express backend на Nest поэтапно?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.
Типичные ошибки
- Держат тяжелую обработку в синхронном request path.
- Не ограничивают ресурсы (конкурентность, очередь, таймауты).
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как поведение изменится под пиковым трафиком?
- Что вынесете в фон, чтобы не блокировать critical path?
- Какой trade-off на уровне архитектуры здесь самый критичный?
Что повторить
- Runbook деградации внешней зависимости.
- Границы
Event Loop/I-O/CPU и backpressure. - Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.