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

请说明在 Node.js 环境下如何利用 Web Workers 进行多线程处理?

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

考察说明

考查对 Node.js 中 Web Workers 概念、用法及适用场景的理解。

回答思路

  1. 【回答框架 1】Node.js 中的 Web Workers 通过 worker_threads 模块实现,用于在独立线程中运行 JavaScript 代码,从而利用多核 CPU 并行处理 CPU 密集型任务。
  2. 【回答框架 2】使用 worker_threads 时,主线程通过 new Worker(__filename) 或指定脚本路径创建 Worker 实例,并通过 postMessage 和 on('message') 与 Worker 通信。
  3. 【回答框架 3】Worker 内部通过 parentPort.postMessage 向主线程发送消息,主线程可监听 'error' 和 'exit' 事件处理异常和退出。
  4. 【回答框架 4】worker_threads 适用于 CPU 密集型任务(如数据处理、图像处理),不适用于 I/O 密集型任务,因为 Node.js 的异步 I/O 已足够高效。
  5. 【回答框架 5】使用 Worker 时需注意线程间通信开销,避免频繁传递大数据,并合理管理 Worker 生命周期,防止资源泄漏。
  6. 【关键点 1】worker_threads 模块提供 Web Workers 功能,实现多线程并行。
  7. 【关键点 2】主线程与 Worker 通过 postMessage 和事件监听进行通信。
  8. 【关键点 3】Worker 适合 CPU 密集型任务,I/O 密集型应使用异步 I/O。
  9. 【关键点 4】需管理 Worker 生命周期,避免资源泄漏。
  10. 【关键点 5】通信开销需考虑,避免频繁传递大数据。
  11. 【易错点 1】将 Web Workers 与浏览器中的 Web Worker API 混淆,Node.js 使用 worker_threads。
  12. 【易错点 2】认为 Worker 能提升所有任务性能,实际仅对 CPU 密集型有效。
  13. 【易错点 3】忽略 Worker 的错误处理,导致进程崩溃。