Node.js 的 poll 阶段何时等待 I/O,何时继续进入后续阶段?
Node.js 的 poll 阶段何时等待 I/O,何时继续进入后续阶段? 本文先给出可直接复述的结论,再用最小代码说明Node.js poll 阶段 阻塞 计算超时的工作方式、判断依据、项目边界和常见误区。
Node.js面试题第 2 页,显示第 51–100 题,共找到 217 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
Node.js 的 poll 阶段何时等待 I/O,何时继续进入后续阶段? 本文先给出可直接复述的结论,再用最小代码说明Node.js poll 阶段 阻塞 计算超时的工作方式、判断依据、项目边界和常见误区。
Node.js 进程什么时候自然退出?哪些未决的句柄或定时器会阻止退出? 本文先给出可直接复述的结论,再用最小代码说明Node.js 进程退出 活跃句柄 ref unref的工作方式、判断依据、项目边界和常见误区。
Node.js 中什么时候用 setImmediate,什么时候用 setTimeout? 本文先给出可直接复述的结论,再用最小代码说明setImmediate 设计意图 适用场景的工作方式、判断依据、项目边界和常见误区。
Node.js 的 setTimeout 为什么无法保证精确的毫秒级触发,最小延迟和影响因素有哪些? 本文先给出可直接复述的结论,再用最小代码说明setTimeout 最小延迟 精度 Node.js 1ms的工作方式、判断依据、项目边界和常见误区。
解释顶层注册时计时阈值和启动过程如何影响观察,给出独立 CommonJS 脚本用于记录顺序,说明重复结果不是保证,并区分 I/O 回调、ESM 与真实业务依赖。
Node.js 中给定时器调用 unref() 后进程行为有什么变化,典型用途是什么? 本文先给出可直接复述的结论,再用最小代码说明timer unref Node.js 不阻止进程退出的工作方式、判断依据、项目边界和常见误区。
async_hooks 的 init、before、after、destroy 四个回调分别在异步资源生命周期的什么时候触发? 本文先给出可直接复述的结论,再用最小代码说明async_hooks init before after destroy 时机的工作方式、判断依据、项目边界和常见误区。
Node.js 的 async_hooks 模块能追踪什么,为什么它被标记为实验性但仍被广泛使用? 本文先给出可直接复述的结论,再用最小代码说明async_hooks 用途 实验性 asyncId的工作方式、判断依据、项目边界和常见误区。
AsyncLocalStorage 如何在 Node.js 中实现跨异步调用的请求级上下文(如 traceId)传递? 本文先给出可直接复述的结论,再用最小代码说明AsyncLocalStorage 请求上下文 traceId 传递的工作方式、判断依据、项目边界和常见误区。
哪些写法会导致 AsyncLocalStorage 的上下文在 Node.js 中丢失,比如事件监听或连接池复用? 本文先给出可直接复述的结论,再用最小代码说明AsyncLocalStorage 上下文丢失 EventEmitter 连接池的工作方式、判断依据、项目边界和常见误区。
在 Node.js 里做请求上下文传递,为什么优先 AsyncLocalStorage 而不是第三方 cls 或 zone 方案? 本文先给出可直接复述的结论,再用最小代码说明AsyncLocalStorage 对比 cls 请求上下文方案的工作方式、判断依据、项目边界和常见误区。
Node.js 的 AsyncResource 类解决什么问题,自定义异步资源(如手写队列)为什么要显式使用它? 本文先给出可直接复述的结论,再用最小代码说明AsyncResource 自定义异步资源 AsyncLocalStorage的工作方式、判断依据、项目边界和常见误区。
Node.js 中 executionAsyncId 和 triggerAsyncId 分别代表什么,如何用它们还原异步调用因果链? 本文先给出可直接复述的结论,再用最小代码说明executionAsyncId triggerAsyncId 区别的工作方式、判断依据、项目边界和常见误区。
Node.js EventEmitter 的 captureRejections 选项解决了异步监听器里的什么问题? 本文先给出可直接复述的结论,再用最小代码说明EventEmitter captureRejections 异步监听器 rejection的工作方式、判断依据、项目边界和常见误区。
设计一个 Node.js 内部模块时,什么时候应该继承 EventEmitter 而不是直接回调或返回 Promise? 本文先给出可直接复述的结论,再用最小代码说明继承 EventEmitter 设计决策 回调 Promise 对比的工作方式、判断依据、项目边界和常见误区。
为什么 Node.js 约定 EventEmitter 的 'error' 事件没有监听器时会直接抛出异常? 本文先给出可直接复述的结论,再用最小代码说明EventEmitter error 事件 未监听 抛出的工作方式、判断依据、项目边界和常见误区。
Node.js 的 events.on() 把 EventEmitter 转成异步迭代器,适用于什么场景,背压如何处理? 本文先给出可直接复述的结论,再用最小代码说明events.on 异步迭代器 EventEmitter Node.js的工作方式、判断依据、项目边界和常见误区。
Node.js EventEmitter 监听器里的 this 指向什么,箭头函数和普通函数有何差别? 本文先给出可直接复述的结论,再用最小代码说明EventEmitter 监听器 this 箭头函数的工作方式、判断依据、项目边界和常见误区。
Node.js EventEmitter 的 'newListener' 事件能在什么场景派上用场,使用时有什么坑? 本文先给出可直接复述的结论,再用最小代码说明EventEmitter newListener 事件 用途 递归的工作方式、判断依据、项目边界和常见误区。
在 Node.js 循环里反复给同一个 EventEmitter 绑 once 监听器,为什么可能内存泄漏,如何规避? 本文先给出可直接复述的结论,再用最小代码说明EventEmitter once 内存泄漏 监听器累积的工作方式、判断依据、项目边界和常见误区。
Node.js 中对 once 注册的监听器调用 removeListener 时应该传原函数还是包装函数? 本文先给出可直接复述的结论,再用最小代码说明once removeListener 包装函数 EventEmitter的工作方式、判断依据、项目边界和常见误区。
Node.js EventEmitter 的 prependListener 与 on 在什么场景下有意义,比如要保证某监听器最先执行? 本文先给出可直接复述的结论,再用最小代码说明prependListener 监听器顺序 EventEmitter的工作方式、判断依据、项目边界和常见误区。
为什么用匿名箭头函数注册的 EventEmitter 监听器常常 removeListener 失败? 本文先给出可直接复述的结论,再用最小代码说明removeListener 移除失败 函数引用 EventEmitter的工作方式、判断依据、项目边界和常见误区。
Node.js 的 EventEmitter.emit 是同步还是异步派发?这对监听器里的异常有什么后果? 本文先给出可直接复述的结论,再用最小代码说明EventEmitter emit 同步 监听器异常的工作方式、判断依据、项目边界和常见误区。
Node.js 中 async 函数里 await 一个 Promise 后,后续代码作为什么类型的任务恢复执行? 本文先给出可直接复述的结论,再用最小代码说明await 恢复执行 微任务 Node.js async的工作方式、判断依据、项目边界和常见误区。
在 fs 回调等 I/O 回调里创建的 Promise.then 和 setImmediate 谁先执行? 本文先给出可直接复述的结论,再用最小代码说明I/O 回调内 Promise setImmediate 执行顺序的工作方式、判断依据、项目边界和常见误区。
Node.js 中 new Promise 的 executor 是同步还是异步执行,这对错误捕获有什么影响? 本文先给出可直接复述的结论,再用最小代码说明Promise executor 同步执行 错误捕获 Node.js的工作方式、判断依据、项目边界和常见误区。
在 Node.js 中嵌套的 Promise.then 链与多个并行 Promise 的回调按什么顺序交错执行? 本文先给出可直接复述的结论,再用最小代码说明Promise then 执行顺序 嵌套 微任务队列 Node.js的工作方式、判断依据、项目边界和常见误区。
Node.js 中每个事件循环阶段结束后微任务队列是如何被清空的? 本文先给出可直接复述的结论,再用最小代码说明Node.js 微任务队列 阶段之间 清空时机的工作方式、判断依据、项目边界和常见误区。
Node.js 的 queueMicrotask() 与 process.nextTick、Promise.resolve().then() 有什么语义差别? 本文先给出可直接复述的结论,再用最小代码说明queueMicrotask process.nextTick 区别 Node.js的工作方式、判断依据、项目边界和常见误区。
官方建议哪些场景使用 process.nextTick,例如保证回调总是异步的 API 设计? 本文先给出可直接复述的结论,再用最小代码说明process.nextTick 使用场景 回调异步化的工作方式、判断依据、项目边界和常见误区。
为什么在 Node.js 中递归调用 process.nextTick 会导致 I/O 饿死,而递归 setImmediate 不会? 本文先给出可直接复述的结论,再用最小代码说明process.nextTick 递归 I/O 饿死的工作方式、判断依据、项目边界和常见误区。
process.nextTick 队列和 Promise 微任务队列都清空时谁先执行?为什么? 本文先给出可直接复述的结论,再用最小代码说明process.nextTick Promise 微任务 执行顺序的工作方式、判断依据、项目边界和常见误区。
如何在运行期程序化地获取当前 Node.js 版本的内置模块清单? 本文先给出可直接复述的结论,再用最小代码说明module.builtinModules isBuiltin 内置模块列表的工作方式、判断依据、项目边界和常见误区。
用三个独立 CommonJS 文件复现循环依赖中的初始化顺序,区分复制属性值与保留导出对象引用,解释 module.exports 重新赋值的风险,并给出拆分依赖和显式初始化的改法。
CommonJS 模块里的 exports、require、module 等变量是从哪来的? 本文先给出可直接复述的结论,再用最小代码说明Node.js CommonJS module wrapper 函数包装的工作方式、判断依据、项目边界和常见误区。
区分 require ESM 的引入版本、默认启用和警告变化,解释同步模块图、间接顶层 await、返回命名空间与动态 import 的边界,避免只按 Node 大版本判断兼容性。
沿文件扩展名、最近 package.json 和歧义输入语法检测定位 Node.js 模块格式,给出嵌套包作用域示例,说明动态 import、构建工具和命令行输入的区别。
exports 中 require、import、node、default 等条件的匹配顺序如何决定? 本文先给出可直接复述的结论,再用最小代码说明条件导出 conditional exports 匹配顺序 node default的工作方式、判断依据、项目边界和常见误区。
Corepack 如何在团队内统一锁定 yarn/pnpm 的版本? 本文先给出可直接复述的结论,再用最小代码说明Corepack packageManager 字段 锁定包管理器的工作方式、判断依据、项目边界和常见误区。
在 ESM 文件里如何拿到可用的 require 函数以加载 CJS 资源? 本文先给出可直接复述的结论,再用最小代码说明module.createRequire ESM 使用 require的工作方式、判断依据、项目边界和常见误区。
dependencies 与 devDependencies 的划分在库和应用两种场景下判断标准有何不同? 本文先给出可直接复述的结论,再用最小代码说明dependencies devDependencies 区别 判断标准的工作方式、判断依据、项目边界和常见误区。
为什么 Node.js 废弃了 exports 里的 './features/*' 目录映射式写法? 本文先给出可直接复述的结论,再用最小代码说明package exports 目录映射 deprecated folder mapping的工作方式、判断依据、项目边界和常见误区。
同时发布 CJS 与 ESM 双格式的包为什么会导致 instanceof 判断失效? 本文先给出可直接复述的结论,再用最小代码说明dual package hazard 双包危害 instanceof的工作方式、判断依据、项目边界和常见误区。
解释 Node.js 如何为 CommonJS 合成命名导出,复现动态属性可默认导入却不能可靠命名导入的情况,区分静态检测、属性读取和 ESM 实时绑定,并讨论包升级与转译差异。
ESM 导出的值在导入方为什么能感知后续变化,与 CJS 有何本质不同? 本文先给出可直接复述的结论,再用最小代码说明ESM live bindings 只读绑定 CommonJS 拷贝的工作方式、判断依据、项目边界和常见误区。
Node.js 的 module customization hooks(resolve/load)能解决什么 CJS 做不到的问题? 本文先给出可直接复述的结论,再用最小代码说明Node.js loader hooks register resolve load 自定义加载的工作方式、判断依据、项目边界和常见误区。
ESM 中没有 __dirname 和 __filename,如何等价获取当前模块路径? 本文先给出可直接复述的结论,再用最小代码说明ESM __dirname import.meta.url fileURLToPath的工作方式、判断依据、项目边界和常见误区。
为什么 ESM 中相对路径 import 必须写全扩展名而 CJS 可以省略? 本文先给出可直接复述的结论,再用最小代码说明ESM specifier 扩展名 mandatory file extension的工作方式、判断依据、项目边界和常见误区。
Node.js 中 import assertions 与 import attributes 的语法演进要点是什么? 本文先给出可直接复述的结论,再用最小代码说明import assert with 语法变更 Node.js的工作方式、判断依据、项目边界和常见误区。