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

在 Node.js 环境下,你会采用哪些方式来实现多线程或多进程的并发处理?请说明各自的使用场景和区别。

前端/移动开发技术原理技术选型方案权衡Node.js

考察说明

考查对 Node.js 并发模型的理解,以及多线程与多进程方案的选型能力。

回答思路

  1. 【回答框架 1】Node.js 主线程是单线程事件循环,适合 I/O 密集型任务;CPU 密集型任务会阻塞事件循环,需借助多进程或多线程来利用多核 CPU。
  2. 【回答框架 2】多进程方案使用 child_process 模块,可创建子进程运行独立脚本,进程间通过 IPC 通信,适合隔离性强、稳定性要求高的场景,但资源开销较大。
  3. 【回答框架 3】多线程方案使用 worker_threads 模块,线程共享内存,可传递 ArrayBuffer 等数据,开销较小,适合需要频繁数据交换的 CPU 密集型任务。
  4. 【回答框架 4】cluster 模块基于 child_process 实现,用于负载均衡多个进程处理网络请求,适合提升 HTTP 服务的并发能力。
  5. 【回答框架 5】选择时需权衡:多进程隔离性好但内存占用高,多线程共享内存但需注意同步问题;实际项目中常结合使用,如主进程管理 worker 线程池。
  6. 【关键点 1】Node.js 主线程单线程,适合 I/O 密集;CPU 密集需用多进程或多线程。
  7. 【关键点 2】child_process 用于多进程,worker_threads 用于多线程,cluster 用于多进程负载均衡。
  8. 【关键点 3】多进程隔离性强,多线程共享内存开销小,选型需根据任务类型和资源需求。
  9. 【关键点 4】线程间通信用 postMessage,进程间用 IPC,需注意数据序列化开销。
  10. 【关键点 5】实际方案需结合压测和资源上限调整线程或进程数量。
  11. 【易错点 1】不要将多线程直接等同于性能提升,线程创建和同步也有开销。
  12. 【易错点 2】worker_threads 中共享内存需谨慎处理数据竞争,避免使用未同步的共享变量。
  13. 【易错点 3】cluster 模式不适用于所有场景,如需要保持会话状态时需额外处理粘性会话。