Питання на співбесіді з NestJS (Senior) з відповідями
75 запитань для співбесіди з теми NestJS (Senior) - з правильними відповідями, поясненнями й посиланнями на документацію.
Пройти цей тест- 1.Як Nest знає, що впровадити в
constructor(private users: UsersService)? - 2.Чому бандлер чи компілятор без підтримки метаданих декораторів може зламати Nest-застосунок?
- 3.Як DI-контейнер організований між модулями?
- 4.Провайдер з областю REQUEST впроваджено в сервіс-синглтон. Що станеться?
- 5.Для чого durable-провайдери?
- 6.Як впровадити поточний запит у провайдер і чого це коштує?
- 7.Як під час запуску знайти всі провайдери з власним декоратором, наприклад щоб автоматично зареєструвати обробники подій?
- 8.Як
ConfigurableModuleBuilderдопомагає писати перевикористовуваний динамічний модуль? - 9.Чому
forwardRefможе приховати проблему дизайну, навіть якщо виправляє помилку? - 10.Чому при циклічних залежностях впроваджене значення може бути
undefinedу конструкторі, але визначеним пізніше? - 11.Де накладні витрати Nest зазвичай важливі, а де ні?
- 12.Чому серіалізація
class-transformerможе стати вузьким місцем для великих відповідей? - 13.Як скоротити час холодного старту Nest-застосунку на serverless-платформах?
- 14.Чому в розробці на Nest часто використовують SWC?
- 15.До чого мають бути готові обробники в мікросервісах Nest на Kafka?
- 16.Чому «запит-відповідь» (
client.send) між мікросервісами може бути ризикованим на масштабі? - 17.Як надійно публікувати події з Nest-сервісу, що також пише в базу?
- 18.На що спирається транспорт gRPC у Nest?
- 19.Як передавати trace чи correlation ID між мікросервісами Nest?
- 20.Як структурувати велику кодову базу Nest, щоб межі лишалися чіткими?
- 21.Як виглядає гексагональна архітектура (ports and adapters) у Nest?
- 22.Коли
@nestjs/cqrsокупається? - 23.Як тримати транзакції узгодженими між кількома сервісами в одному запиті, не передаючи об'єкт транзакції всюди?
- 24.Як реалізувати в Nest мультитенантність з базою на кожного тенанта?
- 25.Чим ризиковано тримати логіку авторизації лише в guards?
- 26.Чому корисно мати однакові валідацію й авторизацію для HTTP, GraphQL і обробників повідомлень?
- 27.Як Nest-застосунок має зупинятися в Kubernetes, щоб не губити запити?
- 28.Що має перевіряти readiness-перевірка в Nest і чого має уникати liveness?
- 29.Як зробити вихідні HTTP-виклики з Nest стійкими?
- 30.Яку проблему може спричинити глобальний
@Cronу масштабованому розгортанні Nest і як її розв'язати? - 31.Як розгортати BullMQ-воркери Nest під навантаженням?
- 32.Чому помилки в обробниках подій (
@OnEvent) треба обробляти обережно? - 33.Як додати розподілений трейсинг у Nest-застосунок?
- 34.Як зробити логи Nest структурованими й пов'язаними між собою?
- 35.Як протестувати модуль, що використовує request-scoped провайдер?
- 36.Яка добра стратегія тестування шару бази Nest-застосунку в CI?
- 37.Як перевірити, що guards, pipes і фільтри правильно підключені до маршруту?
- 38.Як захистити GraphQL API на Nest від дуже дорогих запитів?
- 39.Чому екземпляри DataLoader у GraphQL-застосунку на Nest треба створювати на кожен запит?
- 40.Що дозволяє Apollo Federation (який підтримує GraphQL-модуль Nest)?
- 41.Які налаштування роблять Nest API безпечнішим за замовчуванням?
- 42.Як запобігти mass assignment при оновленні сутностей у Nest?
- 43.Чому секрети не повинні потрапляти в логи винятків чи запитів Nest?
- 44.Як безпечно обробляти завантаження файлів на масштабі в Nest?
- 45.Який розумний підхід до оновлення великого Nest-застосунку до нової мажорної версії?
- 46.Чому команда може обрати Nest замість мінімалістичного фреймворку на кшталт самого Fastify?
- 47.Як ділити DTO й валідацію між бекендом на Nest і фронтендом на TypeScript?
- 48.Чим тривожить відкритий Swagger UI у продакшені?
- 49.Як один interceptor може реалізувати ключі ідемпотентності для POST-ендпоінтів?
- 50.Як реалізувати кешування відповідей, що залежить від користувача, у Nest?
- 51.Як реалізувати версіонування API без дублювання цілих контролерів?
- 52.Яка пастка
@Res()безpassthroughдля interceptors і фільтрів? - 53.Як віддати великий файл стрімом у Nest, не завантажуючи його в пам'ять?
- 54.Чим
onModuleInitвідрізняється відonApplicationBootstrap? - 55.Чому хуки життєвого циклу не спрацьовують звичним чином для request-scoped чи transient провайдерів?
- 56.Що відбувається з глобальними enhancers у мікросервісній частині гібридного застосунку за замовчуванням?
- 57.Як написати guard, що працює і для HTTP, і для GraphQL?
- 58.Що станеться, якщо кинути помилку всередині оператора
mapв interceptor? - 59.Чому довгу CPU-важку роботу не варто виконувати в обробнику запиту Nest?
- 60.Як автоматично забезпечувати межі модулів у монорепозиторії Nest?
- 61.Чому добре відокремити запуск Nest-застосунку (
main.ts) від його налаштування (наприклад, функціїconfigureApp(app))? - 62.Як зробити помилки
ValidationPipeкориснішими для клієнтів API? - 63.Чого НЕ дає
app.useGlobalInterceptors()порівняно зAPP_INTERCEPTOR? - 64.Як глобально фільтрувати м'яко видалені записи з TypeORM у Nest?
- 65.Чому обробники
@nestjs/event-emitterможуть виконатися до commit транзакції бази? - 66.Що отримує
onApplicationShutdown(signal)і чим це корисно? - 67.Як обмежити вплив повільного сервісу нижче за течією на Nest API?
- 68.Чому тести контролерів не мають бути єдиними тестами правил авторизації?
- 69.З чим допомагає
useMocker()у білдері тестового модуля? - 70.Як Nest може отримувати повідомлення з брокера, для якого немає вбудованого транспорту, як-от AWS SQS?
- 71.Чому доменні сервіси мають кидати доменні помилки, а не
HttpException? - 72.Як обмежувати частоту запитів для кожного автентифікованого користувача, а не за IP, у
@nestjs/throttler? - 73.Як розсилати WebSocket-повідомлення між кількома інстансами Nest?
- 74.Що таке Backend for Frontend (BFF) і як Nest може його реалізувати?
- 75.Чому глобальний
ClassSerializerInterceptorможе не ховати поля, коли ви повертаєте результати Prisma?