Node.js 用 Transform 解析 NDJSON 时,最后一块没有换行也应产出一条记录,应放在哪里处理?
围绕“Node.js 用 Transform 解析 NDJSON 时,最后一块没有换行也应产出一条记录,应放在哪里处理”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖实现时要设计按行缓存,flush 把剩余缓冲作为最后记录并处理空行。
Node.js面试题第 5 页,显示第 201–217 题,共找到 217 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“Node.js 用 Transform 解析 NDJSON 时,最后一块没有换行也应产出一条记录,应放在哪里处理”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖实现时要设计按行缓存,flush 把剩余缓冲作为最后记录并处理空行。
围绕“多个 Node.js Readable 同时 pipe 到同一个 Writable 时,如何避免 chunk 交错导”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖要回答默认并发写会交错,需串行 pipeline 或自定义合流按边界帧化。
围绕“Node.js 流的 objectMode 改变了 highWaterMark 和 chunk 的什么计量方式”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖要回答对象模式按条数而非字节计数、push 非 Buffer 对象的约束。
围绕“用 Node.js PassThrough 给上传流统计字节数时,它是否改变数据内容,又如何避免自身成为背压死角”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖要说明 PassThrough 原样透传但仍是独立缓冲环节,统计需放在 _transform 并让下游控制流速。
围绕“Node.js 用 pause/resume 对 Readable 做限速时,为什么不能保证精确速率,还要配合什么机”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖要回答 pause 只停止事件投递不撤销已缓冲数据,精确限流需令牌桶并尊重 drain。
比较 pipe 的连接与背压能力和 pipeline 的整链完成、错误及销毁管理,用对象转换示例验证成功与中途失败,并说明 HTTP 响应销毁后无法补写错误页及流外资源的清理责任。
围绕“Node.js stream/promises 的 pipeline 与 finished 相比事件回调写法解决了哪”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖要回答 Promise 化便于 await 完成或失败并统一清理,但仍不替代业务状态码处理。
解释 read 返回 null 的多种情况,区分生产方 push(null)、缓冲读完和 end 事件,并用可控 Readable 示例验证暂时无数据、随后到达的数据以及 readableEnded 的变化。
围绕“消费方对 Node.js Readable 调用 destroy 后,底层定时器或数据库游标为什么不一定自动释放”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖要回答自定义流需实现 _destroy 释放外部资源,destroy 只保证流生命周期回调。
围绕“Node.js Readable.from 把数组或异步迭代器转成流时,背压是否自动生效”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖要回答 Readable.from 按拉取节奏消费迭代器并支持对象模式,但仍受下游 write/drain 制约。
围绕“Node.js net.Socket 作为 Duplex 出现 EAGAIN 或写返回 false 时,应用层应暂停”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖要指出 Socket 写端缓冲满应停推上游待 drain,读端 pause 控制入流量。
围绕“Node.js 把一个上传流同时写磁盘和转发到远端时,复制成两个 PassThrough 为什么会放大背压”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖要说明任一分支变慢都会要求源端暂停,需按最慢消费者限速或落盘缓冲解耦。
围绕“Node.js Transform 按行切分文本时,换行符被拆到两个 chunk 应如何保留状态而不丢行”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖实现时要设计内部残留缓冲区,仅在遇到完整分隔符时 push,结束在 flush 处理最后半行。
围绕“Node.js Transform 的 _transform 与 _flush 分别适合处理哪类边界,GZIP 收尾”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖要区分逐块转换与流结束前补尾部状态,给出跨 chunk 数据需要在 flush 输出残量。
围绕“Node.js 流式按 chunk 解码 UTF-8 时,为什么不能直接对每个 Buffer 调 toString ”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖要说明多字节字符可能落在 chunk 边界,需 StringDecoder.write/end 保留未完成序列。
围绕“Node.js Worker 返回 ArrayBuffer 结果时,共享 SharedArrayBuffer 与 p”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖要比较共享内存需 Atomics 同步而拷贝隔离更简单,按是否并发读写选择。
围绕“Node.js zlib 变换流在高压缩比数据上输出突增时,背压如何沿 pipeline 反向传到文件读端”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖要解释写端 false 逐段停上游,压缩器内部缓冲也会受 highWaterMark 限制。