Перейти к основному содержимому

NestJS

Экспресс-шпаргалка 20/20

  1. Nest строится вокруг модулей, контроллеров и провайдеров, что задает четкие bounded-context границы.
  2. DI-контейнер управляет lifecycle провайдеров и снижает связность через constructor injection и токены.
  3. Контроллеры только принимают/возвращают transport-данные, бизнес-логика должна жить в service/use-case слое.
  4. DTO + ValidationPipe формируют входной контракт и отсекают некорректный payload до бизнес-логики.
  5. Pipes валидируют/трансформируют, Guards авторизуют, Interceptors оборачивают flow, Filters нормализуют ошибки.
  6. Глобальный exception filter должен отдавать единый error contract с code/message/context/traceId.
  7. JWT+RBAC реализуют через strategy + guards + policy checks, а не только через одну role-проверку.
  8. Версионирование API делают URL/header/media-type подходом с deprecation policy и backward совместимостью.
  9. Конфиг в Nest делают через ConfigModule и схему валидации env (fail-fast при старте).
  10. Слои domain/app/infrastructure позволяют менять transport/DB без переписывания доменной логики.
  11. Работа с БД должна держать транзакционные границы в сервисе и не протекать в контроллеры.
  12. Тестирование в Nest: unit для логики, integration для модулей, e2e для критических API-потоков.
  13. Кэширование включают точечно на read-heavy эндпоинтах с TTL и явной инвалидацией.
  14. Observability: структурные логи, метрики latency/error-rate, трассировка и readiness probes.
  15. Очереди (BullMQ) выносят долгие задачи из request path и требуют idempotency + retry policy.
  16. Graceful shutdown обязан закрыть HTTP, DB и воркеры до завершения процесса.
  17. Circular dependencies лечат рефакторингом границ модулей, forwardRef используют как временный компромисс.
  18. Microservices transport оправдан только при реальной сервисной границе и независимом масштабировании.
  19. Error contract для клиентов должен быть стабильным и одинаковым между всеми endpoint.
  20. Миграция Express -> Nest делается инкрементально по модулям с контрактной совместимостью и shadow-этапами.

1. Как устроена модульная архитектура в NestJS?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

NestJS строится вокруг модулей, контроллеров и провайдеров, что задает четкие границы ответственности.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Сверяю поведение по runbook: детектирование, mitigation и проверка восстановления после сбоя.

Мини-пример

@Injectable()
export class UsersService {
findAll() {
return [];
}
}

Углубление (2-3 минуты)

  1. Свяжите тему "Как устроена модульная архитектура в NestJS?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Держат тяжелую обработку в синхронном request path.
  2. Запускают изменения без наблюдаемости и runbook.
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Как поведение изменится под пиковым трафиком?
  2. Что вынесете в фон, чтобы не блокировать critical path?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Границы Event Loop/I-O/CPU и backpressure.
  2. Runbook деградации внешней зависимости.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

2. Что такое providers и как работает DI в Nest?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

Providers управляются DI-контейнером Nest и внедряются в классы через constructor injection.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Сверяю поведение по runbook: детектирование, mitigation и проверка восстановления после сбоя.

Мини-пример

@Injectable()
export class UsersService {
findAll() {
return [];
}
}

Углубление (2-3 минуты)

  1. Свяжите тему "Что такое providers и как работает DI в Nest?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Покажите, какие сигналы observability подтверждают устойчивость решения.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Держат тяжелую обработку в синхронном request path.
  2. Запускают изменения без наблюдаемости и runbook.
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Что вынесете в фон, чтобы не блокировать critical path?
  2. Какие метрики покажут деградацию раньше инцидента?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Границы Event Loop/I-O/CPU и backpressure.
  2. Health/readiness и корреляцию логов/метрик.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

3. Где должна жить бизнес-логика: controller или service?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

Бизнес-логика должна быть в сервисах/use-case слоях, а контроллер отвечает за HTTP-адаптацию.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Прогоняю нагрузочный кейс, фиксирую лимиты (timeout/concurrency/retry) и проверяю стабильность сервиса.

Мини-пример

@Injectable()
export class UsersService {
findAll() {
return [];
}
}

Углубление (2-3 минуты)

  1. Свяжите тему "Где должна жить бизнес-логика: controller или service?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Покажите, какие сигналы observability подтверждают устойчивость решения.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Запускают изменения без наблюдаемости и runbook.
  2. Не ограничивают ресурсы (конкурентность, очередь, таймауты).
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Что вынесете в фон, чтобы не блокировать critical path?
  2. Какие метрики покажут деградацию раньше инцидента?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Runbook деградации внешней зависимости.
  2. Health/readiness и корреляцию логов/метрик.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

4. Как реализовать DTO и валидацию входящих данных?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

DTO + ValidationPipe задают контракт входных данных и защищают от некорректных payload.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Проверяю сценарий под пиковым трафиком: latency, saturation и поведение при деградации зависимости.

Мини-пример

export class CreateUserDto {
@IsEmail()
email!: string;
}

Углубление (2-3 минуты)

  1. Свяжите тему "Как реализовать DTO и валидацию входящих данных?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Не ограничивают ресурсы (конкурентность, очередь, таймауты).
  2. Запускают изменения без наблюдаемости и runbook.
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Что вынесете в фон, чтобы не блокировать critical path?
  2. Как поведение изменится под пиковым трафиком?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Health/readiness и корреляцию логов/метрик.
  2. Runbook деградации внешней зависимости.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

5. Когда использовать pipes, guards, interceptors и filters?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

Pipes валидируют/трансформируют, guards проверяют доступ, interceptors оборачивают flow, filters обрабатывают исключения.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Проверяю сценарий под пиковым трафиком: latency, saturation и поведение при деградации зависимости.

Мини-пример

@UseGuards(AuthGuard, RolesGuard)
@Get('admin')
getAdminData() {
return { ok: true };
}

Углубление (2-3 минуты)

  1. Свяжите тему "Когда использовать pipes, guards, interceptors и filters?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Не ограничивают ресурсы (конкурентность, очередь, таймауты).
  2. Держат тяжелую обработку в синхронном request path.
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Как поведение изменится под пиковым трафиком?
  2. Какие метрики покажут деградацию раньше инцидента?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Health/readiness и корреляцию логов/метрик.
  2. Границы Event Loop/I-O/CPU и backpressure.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

6. Как организовать глобальную обработку ошибок в NestJS?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

Глобальная обработка ошибок делается через ExceptionFilter и единый error response schema.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Прогоняю нагрузочный кейс, фиксирую лимиты (timeout/concurrency/retry) и проверяю стабильность сервиса.

Мини-пример

@Injectable()
export class UsersService {
findAll() {
return [];
}
}

Углубление (2-3 минуты)

  1. Свяжите тему "Как организовать глобальную обработку ошибок в NestJS?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Запускают изменения без наблюдаемости и runbook.
  2. Держат тяжелую обработку в синхронном request path.
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Какие метрики покажут деградацию раньше инцидента?
  2. Что вынесете в фон, чтобы не блокировать critical path?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Границы Event Loop/I-O/CPU и backpressure.
  2. Runbook деградации внешней зависимости.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

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 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Ошибки в валидации токенов и сроков жизни приводят к уязвимостям и неуправляемым 401.
  3. Как проверяете решение: Прогоняю нагрузочный кейс, фиксирую лимиты (timeout/concurrency/retry) и проверяю стабильность сервиса.

Мини-пример

@Injectable()
export class UsersService {
findAll() {
return [];
}
}

Углубление (2-3 минуты)

  1. Свяжите тему "Как реализовать JWT auth и role-based access (RBAC)?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Не ограничивают ресурсы (конкурентность, очередь, таймауты).
  2. Запускают изменения без наблюдаемости и runbook.
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Как поведение изменится под пиковым трафиком?
  2. Какие метрики покажут деградацию раньше инцидента?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Runbook деградации внешней зависимости.
  2. Границы Event Loop/I-O/CPU и backpressure.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

8. Как строить версионирование API в Nest?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

Версионирование API делают через URL/header/media type и сопровождают deprecation политикой.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Проверяю сценарий под пиковым трафиком: latency, saturation и поведение при деградации зависимости.

Мини-пример

@Injectable()
export class UsersService {
findAll() {
return [];
}
}

Углубление (2-3 минуты)

  1. Свяжите тему "Как строить версионирование API в Nest?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Держат тяжелую обработку в синхронном request path.
  2. Запускают изменения без наблюдаемости и runbook.
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Как поведение изменится под пиковым трафиком?
  2. Что вынесете в фон, чтобы не блокировать critical path?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Runbook деградации внешней зависимости.
  2. Границы Event Loop/I-O/CPU и backpressure.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

9. Как организовать конфигурацию приложения и env?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

Конфиг строят через ConfigModule, env-схемы и fail-fast валидацию при старте.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Проверяю сценарий под пиковым трафиком: latency, saturation и поведение при деградации зависимости.

Мини-пример

@Injectable()
export class UsersService {
findAll() {
return [];
}
}

Углубление (2-3 минуты)

  1. Свяжите тему "Как организовать конфигурацию приложения и env?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Запускают изменения без наблюдаемости и runbook.
  2. Не ограничивают ресурсы (конкурентность, очередь, таймауты).
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Какие метрики покажут деградацию раньше инцидента?
  2. Как поведение изменится под пиковым трафиком?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Health/readiness и корреляцию логов/метрик.
  2. Runbook деградации внешней зависимости.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

10. Как строить слоистую архитектуру (domain/app/infrastructure)?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

Слоистая архитектура отделяет домен от инфраструктуры и упрощает тестирование.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Сверяю поведение по runbook: детектирование, mitigation и проверка восстановления после сбоя.

Мини-пример

@Injectable()
export class UsersService {
findAll() {
return [];
}
}

Углубление (2-3 минуты)

  1. Свяжите тему "Как строить слоистую архитектуру (domain/app/infrastructure)?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Не ограничивают ресурсы (конкурентность, очередь, таймауты).
  2. Держат тяжелую обработку в синхронном request path.
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Какие метрики покажут деградацию раньше инцидента?
  2. Как поведение изменится под пиковым трафиком?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Health/readiness и корреляцию логов/метрик.
  2. Границы Event Loop/I-O/CPU и backpressure.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

11. Как работать с базой данных в Nest (Prisma/TypeORM)?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

Работа с БД в Nest обычно идет через Prisma/TypeORM/QueryBuilder с выделенным data-access слоем.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Сверяю поведение по runbook: детектирование, mitigation и проверка восстановления после сбоя.

Мини-пример

@Injectable()
export class UsersService {
findAll() {
return [];
}
}

Углубление (2-3 минуты)

  1. Свяжите тему "Как работать с базой данных в Nest (Prisma/TypeORM)?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Не ограничивают ресурсы (конкурентность, очередь, таймауты).
  2. Запускают изменения без наблюдаемости и runbook.
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Как поведение изменится под пиковым трафиком?
  2. Какие метрики покажут деградацию раньше инцидента?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Health/readiness и корреляцию логов/метрик.
  2. Границы Event Loop/I-O/CPU и backpressure.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

12. Как тестировать Nest-модули и контроллеры?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

Тестирование включает unit для сервисов, integration для модулей и e2e для HTTP контрактов.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Сверяю поведение по runbook: детектирование, mitigation и проверка восстановления после сбоя.

Мини-пример

@Injectable()
export class UsersService {
findAll() {
return [];
}
}

Углубление (2-3 минуты)

  1. Свяжите тему "Как тестировать Nest-модули и контроллеры?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Покажите, какие сигналы observability подтверждают устойчивость решения.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Держат тяжелую обработку в синхронном request path.
  2. Не ограничивают ресурсы (конкурентность, очередь, таймауты).
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Как поведение изменится под пиковым трафиком?
  2. Что вынесете в фон, чтобы не блокировать critical path?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Runbook деградации внешней зависимости.
  2. Границы Event Loop/I-O/CPU и backpressure.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

13. Как реализовать кеширование и где его лучше включать?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

Кэш включают точечно на read-heavy маршрутах с TTL и стратегией инвалидации.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Прогоняю нагрузочный кейс, фиксирую лимиты (timeout/concurrency/retry) и проверяю стабильность сервиса.

Мини-пример

@Injectable()
export class UsersService {
findAll() {
return [];
}
}

Углубление (2-3 минуты)

  1. Свяжите тему "Как реализовать кеширование и где его лучше включать?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Запускают изменения без наблюдаемости и runbook.
  2. Держат тяжелую обработку в синхронном request path.
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Какие метрики покажут деградацию раньше инцидента?
  2. Что вынесете в фон, чтобы не блокировать critical path?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Границы Event Loop/I-O/CPU и backpressure.
  2. Health/readiness и корреляцию логов/метрик.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

14. Как организовать логирование и observability в Nest?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

Observability в Nest: структурные логи, трассировка, метрики latency/error-rate.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Прогоняю нагрузочный кейс, фиксирую лимиты (timeout/concurrency/retry) и проверяю стабильность сервиса.

Мини-пример

@Injectable()
export class UsersService {
findAll() {
return [];
}
}

Углубление (2-3 минуты)

  1. Свяжите тему "Как организовать логирование и observability в Nest?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Не ограничивают ресурсы (конкурентность, очередь, таймауты).
  2. Держат тяжелую обработку в синхронном request path.
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Что вынесете в фон, чтобы не блокировать critical path?
  2. Какие метрики покажут деградацию раньше инцидента?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Runbook деградации внешней зависимости.
  2. Health/readiness и корреляцию логов/метрик.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

15. Как реализовать очереди задач (BullMQ) в Nest?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

BullMQ/очереди выносят долгие задачи из request-response пути.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Прогоняю нагрузочный кейс, фиксирую лимиты (timeout/concurrency/retry) и проверяю стабильность сервиса.

Мини-пример

@Injectable()
export class UsersService {
findAll() {
return [];
}
}

Углубление (2-3 минуты)

  1. Свяжите тему "Как реализовать очереди задач (BullMQ) в Nest?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Покажите, какие сигналы observability подтверждают устойчивость решения.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Не ограничивают ресурсы (конкурентность, очередь, таймауты).
  2. Держат тяжелую обработку в синхронном request path.
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Как поведение изменится под пиковым трафиком?
  2. Какие метрики покажут деградацию раньше инцидента?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Health/readiness и корреляцию логов/метрик.
  2. Границы Event Loop/I-O/CPU и backpressure.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

16. Как делать graceful shutdown в Nest приложении?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

Graceful shutdown должен корректно закрывать HTTP, БД, брокеры и воркеры.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Проверяю сценарий под пиковым трафиком: latency, saturation и поведение при деградации зависимости.

Мини-пример

process.on('SIGTERM', async () => {
await server.close();
process.exit(0);
});

Углубление (2-3 минуты)

  1. Свяжите тему "Как делать graceful shutdown в Nest приложении?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Покажите, какие сигналы observability подтверждают устойчивость решения.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Запускают изменения без наблюдаемости и runbook.
  2. Не ограничивают ресурсы (конкурентность, очередь, таймауты).
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Что вынесете в фон, чтобы не блокировать critical path?
  2. Какие метрики покажут деградацию раньше инцидента?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Границы Event Loop/I-O/CPU и backpressure.
  2. Health/readiness и корреляцию логов/метрик.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

17. Как избегать circular dependencies между модулями?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

Circular dependencies устраняют пересборкой модулей и выделением интерфейсов/фасадов.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Сверяю поведение по runbook: детектирование, mitigation и проверка восстановления после сбоя.

Мини-пример

@Injectable()
export class UsersService {
findAll() {
return [];
}
}

Углубление (2-3 минуты)

  1. Свяжите тему "Как избегать circular dependencies между модулями?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Опишите границы request path и вынос тяжелых операций в фон.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Запускают изменения без наблюдаемости и runbook.
  2. Держат тяжелую обработку в синхронном request path.
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Что вынесете в фон, чтобы не блокировать critical path?
  2. Как поведение изменится под пиковым трафиком?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Runbook деградации внешней зависимости.
  2. Health/readiness и корреляцию логов/метрик.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

18. Когда использовать microservices transport в Nest?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

Microservices transport в Nest оправдан при реальной сервисной границе, а не «на будущее».

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Сверяю поведение по runbook: детектирование, mitigation и проверка восстановления после сбоя.

Мини-пример

@Injectable()
export class UsersService {
findAll() {
return [];
}
}

Углубление (2-3 минуты)

  1. Свяжите тему "Когда использовать microservices transport в Nest?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Опишите границы request path и вынос тяжелых операций в фон.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Держат тяжелую обработку в синхронном request path.
  2. Запускают изменения без наблюдаемости и runbook.
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Что вынесете в фон, чтобы не блокировать critical path?
  2. Какие метрики покажут деградацию раньше инцидента?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Границы Event Loop/I-O/CPU и backpressure.
  2. Health/readiness и корреляцию логов/метрик.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

19. Как проектировать error contract для клиентских приложений?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

Error contract для клиента должен быть стабильным и предсказуемым.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Проверяю сценарий под пиковым трафиком: latency, saturation и поведение при деградации зависимости.

Мини-пример

@Injectable()
export class UsersService {
findAll() {
return [];
}
}

Углубление (2-3 минуты)

  1. Свяжите тему "Как проектировать error contract для клиентских приложений?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Покажите, какие сигналы observability подтверждают устойчивость решения.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Запускают изменения без наблюдаемости и runbook.
  2. Держат тяжелую обработку в синхронном request path.
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Что вынесете в фон, чтобы не блокировать critical path?
  2. Как поведение изменится под пиковым трафиком?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Runbook деградации внешней зависимости.
  2. Health/readiness и корреляцию логов/метрик.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS

20. Как мигрировать большой Express backend на Nest поэтапно?

Теги: nestjs, backend, typescript Сложность: Middle/Senior

Короткий ответ

Миграцию Express -> Nest делают инкрементально: по модулю, с контрактной совместимостью.

Что сказать на интервью (30-60 секунд)

  1. Где это применяется: Критично для корпоративных backend сервисов с модульной архитектурой и строгими API-контрактами.
  2. Главный риск: Смешивание transport-слоя и бизнес-логики в Nest усложняет тестирование и эволюцию API.
  3. Как проверяете решение: Сверяю поведение по runbook: детектирование, mitigation и проверка восстановления после сбоя.

Мини-пример

@Injectable()
export class UsersService {
findAll() {
return [];
}
}

Куда дальше

  1. Вернитесь в модуль: NestJS.
  2. Сверьтесь с картой темы: NestJS.
  3. Продолжайте по маршруту: Senior трек.
  4. Закрепите один ответ на практике в Песочнице.

Углубление (2-3 минуты)

  1. Свяжите тему "Как мигрировать большой Express backend на Nest поэтапно?" с одним production-сценарием и объясните, почему она влияет на результат.
  2. Разберите поведение системы под пиковым трафиком и деградацией внешних зависимостей.
  3. Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.

Типичные ошибки

  1. Держат тяжелую обработку в синхронном request path.
  2. Не ограничивают ресурсы (конкурентность, очередь, таймауты).
  3. Путают соседние концепции и не обозначают границы применимости выбранного подхода.

Follow-up вопросы

  1. Как поведение изменится под пиковым трафиком?
  2. Что вынесете в фон, чтобы не блокировать critical path?
  3. Какой trade-off на уровне архитектуры здесь самый критичный?

Что повторить

  1. Runbook деградации внешней зависимости.
  2. Границы Event Loop/I-O/CPU и backpressure.
  3. Пройдите 2-3 связных вопроса в Банке вопросов и проверьте устойчивость ответа.

Связанные модули и карта

  1. Обучение: NestJS
  2. Обучение: Node.js
  3. Карта подготовки: NestJS