NestJS 中如何注册依赖异步初始化(如数据库连接)的 Provider?
围绕“NestJS 中如何注册依赖异步初始化(如数据库连接)的 Provider”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 useFactory 返回 Promise 时框架如何等待解析。
NestJS 架构专题面试题第 1 页,显示第 1–41 题,共找到 41 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“NestJS 中如何注册依赖异步初始化(如数据库连接)的 Provider”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 useFactory 返回 Promise 时框架如何等待解析。
围绕“NestJS 的 beforeApplicationShutdown 钩子在停机流程中处于什么位置”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明它在收到终止信号后、连接清理前的位置及适合停止接收新任务的用途。
围绕“NestJS 内置的 ParseIntPipe、ParseBoolPipe 等解析管道失败时行为是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明内置解析管道的校验语义与默认 HTTP 异常。
围绕“NestJS 中两个模块或类循环依赖时如何用 forwardRef 解决”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖给出模块级与类级循环依赖的 forwardRef 用法,并指出根本解法是重构而非掩盖。
围绕“NestJS 中 ValidationPipe 如何配合 class-validator 的 DTO 做请求体校验”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清 DTO 装饰器校验、whitelist 与 forbidNonWhitelisted 的含义。
围绕“NestJS 的 ConfigurableModuleBuilder 相比手写 forRoot 有什么优势”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明它如何自动生成 register/forRoot 及 options token 的注入方式。
围绕“如何为 NestJS 编写一个把字符串 ID 转换为实体对象的自定义管道”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖给出一个带数据库查询的转换管道设计与失败处理。
围绕“NestJS 自定义 Provider 的 useClass、useValue、useFactory、useExis”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖逐一给出四种 Provider 注册方式的适用场景。
围绕“NestJS 动态模块的 forRoot/forFeature 约定解决了什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明可配置模块为何需要静态方法返回 DynamicModule。
围绕“NestJS 的 ExecutionContext 如何统一 HTTP、WebSocket 和微服务上下文”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 getType/switchToHttp 等 API 如何让守卫拦截器跨传输协议复用。
围绕“全局注册 NestJS 认证守卫后如何让某些路由跳过认证”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖给出基于元数据的 IS_PUBLIC 豁免模式及守卫内 reflector.getAllAndOverride 的读取。
围绕“NestJS 中 @Global() 全局模块的适用场景和滥用风险是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖给出适合全局化的基础设施类型与全局模块破坏显式依赖的风险。
围绕“NestJS 管道绑定在全局、控制器、方法、参数四个级别有何区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要比较四种绑定位置的执行范围与选择依据。
围绕“为什么 NestJS 守卫设计为在拦截器之后、管道之前执行”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖从认证授权应先于参数验证、但拦截器需包裹整个调用链的角度解释顺序设计。
围绕“NestJS 守卫的 canActivate 如何通过 ExecutionContext 判断放行”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明守卫返回 boolean/Promise/Observable 的语义与拒绝时抛出的异常。
围绕“NestJS 守卫和 Express 中间件在职责上如何分工”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖从执行时机、能否访问 ExecutionContext、依赖注入能力三方面区分。
围绕“NestJS 中什么时候必须用 @Inject() 装饰器显式注入”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清基于类的注入与基于字符串/Symbol token 注入的区别。
围绕“NestJS 拦截器在控制器级、方法级和全局级注册各有什么影响”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 @UseInterceptors 与 APP_INTERCEPTOR token 全局注册的区别。
围绕“NestJS 拦截器适合实现日志耗时统计与响应缓存的理由是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖从横切关注点角度说明为何选拦截器而非管道或守卫。
围绕“如何用 NestJS 拦截器统一捕获并映射下游抛出的异常”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明在 pipe 中用 catchError 转换异常的写法及与异常过滤器的职责分工。
围绕“NestJS 拦截器如何用 RxJS 操作符统一包装响应格式”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 intercept 返回 next.handle().pipe(map()) 的响应变换模式。
围绕“NestJS 请求经过中间件、守卫、拦截器、管道的执行顺序是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖按请求流入与响应流出两阶段给出完整顺序。
围绕“NestJS 中基于 Passport 的 JWT 认证守卫如何与 @UseGuards 结合”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 AuthGuard('jwt') 触发策略校验与公开接口豁免的常见做法。
围绕“NestJS 的懒加载模块适合什么场景,如何实现”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明按需加载减少冷启动的机制与适用场景(如 CRON/CLI)。
围绕“NestJS 中如何用 onModuleDestroy 等钩子实现数据库连接的优雅关闭”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明销毁钩子触发条件、enableShutdownHooks 的必要性与倒序销毁。
围绕“NestJS 的 onModuleInit 和 onApplicationBootstrap 分别在什么时机触发”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖区分模块依赖解析完成后与应用完全启动后两个钩子的使用场景。
围绕“NestJS 中间件无法拿到路由处理器的哪些信息,导致应改用拦截器”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖指出中间件在路由匹配前后执行、缺少 handler/class 元数据这一关键限制。
解释NestJS中imports、providers、exports的协作规则:Provider默认私有,必须导出才能被其他模块注入。通过机制说明、具体场景和边界条件,帮助理解模块作用域与依赖可见性。
围绕“NestJS 中模块可以再导出另一个模块吗?这样做意味着什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明在 exports 中放模块等于转发其全部导出 Provider 的语义。
围绕“NestJS 的 ModuleRef 如何在运行时动态获取 Provider 实例”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 ModuleRef.get 与 resolve 的区别(含瞬态作用域)。
本文解释 NestJS @Optional() 装饰器的作用:依赖缺失时注入 undefined 而非抛错;说明其适用场景、判空要求,以及不能替代默认值或条件注入等边界。
围绕“NestJS 管道的验证与数据转换两类职责分别如何实现”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖区分 transform 阶段的类型转换与抛 BadRequest 的验证逻辑。
围绕“NestJS 支持属性注入吗?与构造函数注入相比应如何选择”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 @Inject() 属性注入的适用场景(如继承基类)及可测试性差异。
围绕“NestJS Provider 的 DEFAULT、REQUEST、TRANSIENT 三种作用域有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要比较三种作用域的实例化时机与性能影响。
围绕“为什么 NestJS 中请求作用域的 Provider 会影响整个依赖链的性能”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释作用域冒泡导致上游单例变请求作用域的机制及规避策略。
围绕“NestJS 如何用 Reflector 配合元数据实现基于角色的 RBAC 守卫”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清 @SetMetadata 自定义装饰器与守卫读取元数据的完整链路。
围绕“NestJS 测试中如何 overrideGuard 绕过认证以专注业务逻辑测试”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 overrideGuard().useValue({canActivate:()=>true}) 的用法与适用边界。
围绕“NestJS 单元测试中如何用 overrideProvider 替换掉真实的数据库服务”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖给出 Test.createTestingModule 加 overrideProvider().useValue() 的替换模式。
围绕“NestJS 请求作用域的 Provider 在测试中如何被 mock”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明用 overrideProvider 提供固定值及通过 resolve 获取实例的注意事项。
围绕“NestJS 单元测试与 E2E 测试在 TestingModule 搭建上有什么关键差异”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要比较只编译目标模块与创建完整应用实例(含 init 与 supertest)的区别。
围绕“NestJS 中的依赖注入机制是如何工作的”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 NestJS 如何通过构造函数注入解析 Provider。