全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页

NodeJS进程与线程管理专题测试

22 题 50 分钟 难度:

考察知识点

  • 进程与线程概念:Node.js单线程事件循环本质、进程线程区别、进程模型特点、多进程多线程应用场景
  • child_process模块:四种创建子进程方法区别、spawn使用方式、exec回调参数、fork与IPC通信
  • cluster模块:工作模式、主进程工作进程判断、进程管理策略、调度策略、常用事件
  • 进程间通信:IPC消息通道、通信数据限制、通信使用方法、其他通信方式
  • worker_threads模块:与cluster区别、创建Worker方法、parentPort通信、数据传递方式、核心对象
  • 事件循环与线程池:libuv线程池作用、线程池配置、阻塞主线程影响
  • 进程管理与监控:process对象作用、process.exit使用、信号处理、优雅关闭、PM2进程守护
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
单选题

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

A

child_process.exec()

B

child_process.execFile()

C

child_process.spawn()

D

child_process.fork()

5
单选题

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

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

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

B

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

C

默认1MB,无法调整

D

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

6
多选题

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

A

spawn返回的ChildProcess对象具有stdin、stdout、stderr三个流对象

B

spawn默认会创建shell来执行命令

C

spawn可以通过stdout.on('data')实时获取子进程输出

D

spawn适合执行需要大量输出的命令

7
填空题

child_process.exec()方法的回调函数接收三个参数:______表示执行错误,______表示标准输出内容,______表示标准错误输出。当命令执行成功时,error参数为______

8
单选题

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

A

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

B

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

C

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

D

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

9
单选题

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

A

cluster.isPrimary

B

cluster.isMaster

C

cluster.isWorker

D

process.isMaster

10
单选题

当cluster工作进程异常退出时,以下哪种策略可以自动重启工作进程?

A

在worker的'exit'事件中调用cluster.fork()

B

设置cluster.autoRestart = true

C

使用cluster.restart()方法

D

工作进程会自动重启,无需处理

11
多选题

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

A

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

B

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

C

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

D

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

12
填空题

cluster模块的调度策略可以通过________________________设置,其中________________表示轮询调度策略,__________________表示让操作系统决定调度策略。Linux默认使用________策略。

13
单选题

在Node.js中,父子进程之间最常用的通信方式是?

A

共享内存

B

管道(Pipe)

C

IPC消息通道

D

网络Socket

14
多选题

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

A

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

B

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

C

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

D

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

15
单选题

worker_threads模块与cluster模块的主要区别是?

A

cluster创建进程,worker_threads创建线程

B

cluster共享内存,worker_threads不共享

C

cluster更轻量,worker_threads开销更大

D

cluster只能用于HTTP服务器,worker_threads只能用于计算

16
单选题

以下哪个方式可以正确创建一个Worker线程?

A

new Worker('./worker.js')

B

Worker.create('./worker.js')

C

worker_threads.spawn('./worker.js')

D

thread.new('./worker.js')

17
多选题

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

A

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

B

postMessage - 运行时传递消息

C

SharedArrayBuffer - 共享内存

D

MessageChannel - 创建专用通信通道

18
填空题

worker_threads模块中,______类用于创建工作线程,__________用于Worker与主线程通信,__________用于传递初始数据,______________用于创建专用通信通道。

19
单选题

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

A

网络I/O操作

B

CPU密集型计算

C

文件系统操作和DNS解析

D

定时器回调执行

20
多选题

关于libuv线程池,以下说法正确的是?

A

默认线程池大小为4个线程

B

可以通过UV_THREADPOOL_SIZE环境变量调整线程数

C

线程池用于处理文件I/O等阻塞操作

D

增加线程数可以提高并发性能

21
单选题

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

A

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

B

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

C

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

D

process.exit()会触发beforeExit事件

22
多选题

实现Node.js进程优雅关闭的关键步骤包括?

A

监听SIGTERM信号

B

停止接收新请求

C

等待现有请求处理完成

D

关闭数据库连接等资源

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

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

想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析

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

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