前端/移动开发面试题更新 2026-08-05

请列举 Node.js 中 Streams(流)的几种类型,并简要说明各自的用途或特点。

前端/移动开发技术原理Node.js

考察说明

考查对 Node.js 核心模块 Streams 的掌握程度,以及实际应用中的选择能力。

回答思路

  1. 【回答框架 1】Node.js Streams 是处理流式数据的抽象接口,主要有四种类型:Readable、Writable、Duplex 和 Transform。Readable 用于读取数据,例如 fs.createReadStream;Writable 用于写入数据,例如 fs.createWriteStream。
  2. 【回答框架 2】Duplex 流同时实现 Readable 和 Writable 接口,可读可写,例如 net.Socket。Transform 流是特殊的 Duplex 流,在读写过程中可以修改或转换数据,例如 zlib 的压缩流和 crypto 的加密流。
  3. 【回答框架 3】实际操作中,可通过管道(pipe)方法将 Readable 流连接到 Writable 流,实现数据的自动流动和背压管理。背压机制会在数据消费速度跟不上生产速度时,自动调节数据流动,避免内存溢出。
  4. 【回答框架 4】选择流类型时,需要根据数据流向判断:只读用 Readable,只写用 Writable,需要同时读写且互不影响用 Duplex,需要边读边处理再输出用 Transform。
  5. 【关键点 1】Node.js Streams 有四种类型:Readable、Writable、Duplex、Transform。
  6. 【关键点 2】Duplex 是可读可写流,但读写操作相对独立;Transform 是 Duplex 的扩展,会在读写过程中修改数据。
  7. 【关键点 3】pipe 方法可以简化流操作,并自动处理背压,防止内存溢出。
  8. 【易错点 1】容易混淆 Duplex 和 Transform:Transform 必须重写 _transform 方法,而普通的 Duplex 不需要。
  9. 【易错点 2】忽略背压处理可能导致数据丢失或内存暴涨,使用 pipe 或正确监听 drain 事件可以缓解。