全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📝 1 篇文章 20 道配套习题

NodeJS进程与线程管理专题

专题说明

本专题聚焦Node.js进程与线程管理核心技术,涵盖child_process子进程创建、cluster集群模式、worker_threads多线程、进程间通信IPC、libuv线程池原理及进程监控管理。

学习目标

  1. 理解Node.js单线程事件循环模型与多核利用方式
  2. 掌握child_process模块四种方法的使用场景
  3. 学会使用cluster模块构建多进程集群应用
  4. 理解worker_threads模块实现多线程并行计算
  5. 掌握进程间通信IPC机制和进程监控管理

学习内容

专题涵盖以下核心知识点:

  • 进程与线程概念:单线程模型、多核利用、进程与线程区别
  • child_process模块:spawn、exec、execFile、fork四种方法
  • cluster模块:Master-Worker模式、端口共享、负载均衡
  • 进程间通信IPC:消息传递、双向通信、序列化
  • worker_threads模块:Worker创建、数据传递、共享内存
  • 事件循环与线程池:libuv线程池、UV_THREADPOOL_SIZE
  • 进程管理与监控:process对象、退出码、命令行参数

学习建议

  1. 先理解进程与线程的基本概念和Node.js的设计哲学
  2. 从child_process入手,掌握四种方法的适用场景
  3. 学习cluster构建生产级多进程服务
  4. 理解worker_threads处理CPU密集型任务
  5. 完成专题题目练习,巩固理论与实践结合

📝 发现内容有误?点击此处直接编辑

📝 配套习题(20 题)

1
单选题

关于Node.js中进程和线程的说法,正确的是:

A

Node.js是单线程的,因此无法利用多核CPU

B

Node.js主线程是单线程的,但可以通过cluster模块和worker_threads创建多进程/多线程

C

Node.js的每个异步操作都会创建一个新线程

D

Node.js的进程和线程完全等价,可以互换使用

2
单选题

以下关于进程和线程区别的描述,错误的是:

A

进程是资源分配的基本单位,线程是CPU调度的基本单位

B

同一进程内的线程共享内存空间,但进程之间内存相互隔离

C

创建进程的开销比创建线程大

D

线程之间的通信只能通过进程间通信(IPC)机制

3
多选题

Node.js进程模型的特点包括哪些?

A

主线程运行在单个事件循环上

B

所有I/O操作都由主线程处理

C

libuv维护一个线程池用于处理阻塞操作

D

可以通过cluster模块创建多个工作进程

4
多选题

在Node.js中,以下哪些场景适合使用多进程或多线程?

A

处理CPU密集型计算任务

B

提高HTTP服务器的并发处理能力

C

执行简单的字符串拼接操作

D

在后台执行文件压缩任务

5
单选题

child_process模块中,哪个方法最适合执行长时间运行的子进程并与之进行交互式通信?

A

child_process.exec()

B

child_process.execFile()

C

child_process.spawn()

D

child_process.fork()

6
单选题

以下代码执行后,输出结果的最大尺寸受什么参数限制?

JavaScript
const { exec } = require('child_process');
exec('find / -type f', (error, stdout, stderr) => {
  console.log(stdout);
});
A

没有大小限制,取决于系统内存

B

默认200KB,可通过maxBuffer参数调整

C

默认1MB,无法调整

D

默认无限大,直到缓冲区溢出

7
单选题

Node.js cluster模块的工作模式是?

A

主进程将请求均匀分配给每个工作进程

B

工作进程直接监听端口,主进程仅做管理

C

主进程监听端口,将请求分发给工作进程

D

每个工作进程监听不同端口

8
单选题

在cluster模块中,判断当前进程是主进程还是工作进程应使用哪个属性?

A

cluster.isPrimary

B

cluster.isMaster

C

cluster.isWorker

D

process.isMaster

9
多选题

cluster模块支持哪些常用事件?

A

'fork' - 新工作进程被fork时触发

B

'online' - 工作进程准备好接收请求时触发

C

'listening' - 工作进程开始监听端口时触发

D

'exit' - 工作进程退出时触发

10
填空题

在cluster模块中,可以通过______________获取当前工作进程对象,通过_______________获取所有工作进程对象。每个worker对象包含______属性表示进程编号,_______属性表示实际的进程对象。

11
多选题

在Node.js IPC通信中,以下哪些说法正确?

A

父进程使用worker.send()发送消息

B

子进程使用process.send()发送消息

C

子进程可以通过process.on('message')接收消息

D

IPC通信是双向的,双方都可以发送和接收

12
多选题

除了IPC消息通道,Node.js进程间还可以通过哪些方式通信?

A

通过stdin/stdout流管道通信

B

通过TCP Socket通信

C

通过共享文件通信

D

通过Unix Domain Socket通信

13
多选题

worker_threads模块支持哪些数据传递方式?

A

workerData - Worker创建时传递初始数据

B

postMessage - 运行时传递消息

C

SharedArrayBuffer - 共享内存

D

MessageChannel - 创建专用通信通道

14
多选题

Worker对象支持哪些事件?

A

'message' - Worker发送消息时触发

B

'error' - Worker抛出错误时触发

C

'exit' - Worker退出时触发

D

'online' - Worker开始执行时触发

15
单选题

libuv线程池主要用于处理以下哪种类型的操作?

A

网络I/O操作

B

CPU密集型计算

C

文件系统操作和DNS解析

D

定时器回调执行

16
单选题

Node.js事件循环中,执行setImmediate回调的阶段是?

A

timers阶段

B

poll阶段

C

check阶段

D

close callbacks阶段

17
单选题

关于process.exit()方法,以下说法正确的是?

A

process.exit(0)表示正常退出,非0表示异常退出

B

process.exit()会等待所有异步操作完成

C

process.exit()可以在任何地方调用,立即终止进程

D

process.exit()会触发beforeExit事件

18
单选题

以下哪种信号可以通过Ctrl+C触发,用于终止Node.js进程?

A

SIGTERM

B

SIGKILL

C

SIGINT

D

SIGHUP

19
填空题

process.argv数组中,索引______是Node可执行文件路径,索引______是执行的脚本路径,索引______开始是用户传入的命令行参数。可以使用_____________________获取所有用户参数。

20
填空题

Node.js中,可以使用________________________捕获未处理的异常,使用________________________捕获未处理的Promise rejection。建议捕获异常后记录日志并_______________退出进程,避免状态不一致。

← 上一个专题 NodeJS运行时原理专题
下一个专题 → NodeJS错误处理与日志专题

📝 发现内容有误?点击此处直接编辑

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库