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

NodeJS事件循环与异步模型专题测试

20 题 60 分钟 难度:

考察知识点

  • 事件循环机制:六阶段执行顺序、各阶段职责、事件循环与主线程关系
  • 微任务与宏任务:任务分类、执行优先级、nextTick与Promise队列
  • process.nextTick:执行时机、使用场景、与setImmediate区别、递归调用风险
  • 定时器与延迟执行:setTimeout/setInterval/setImmediate、延迟精度、执行顺序差异
  • 异步I/O与回调:libuv实现原理、回调执行阶段、非阻塞I/O机制
  • Promise与async/await:async函数执行特点、await与then区别、错误处理、状态管理
  • 事件驱动与EventEmitter:on/once/emit方法、监听器顺序、移除监听器、最大监听器限制
1
单选题

关于Node.js事件循环的六个阶段,以下说法正确的是?

A

timers阶段执行所有到期定时器的回调,然后立即进入pending callbacks阶段

B

poll阶段是事件循环的入口点,负责执行I/O事件回调

C

check阶段在poll阶段之前执行,专门处理setImmediate回调

D

close callbacks阶段会阻塞事件循环直到所有句柄关闭

2
单选题

在Node.js事件循环中,pending callbacks阶段的主要作用是?

A

执行所有被延迟执行的回调函数

B

执行系统操作(如TCP错误)的回调

C

执行setImmediate注册的回调

D

执行nextTick队列中的回调

3
多选题

以下关于Node.js事件循环的说法,正确的是?(多选)

A

timers阶段按照定时器注册顺序执行回调

B

poll阶段可能会阻塞等待I/O事件

C

check阶段专门用于执行setImmediate回调

D

事件循环会在每个阶段之间执行微任务队列

E

一个阶段内的所有回调执行完毕后才会进入下一阶段

4
判断题

Node.js的事件循环运行在独立的线程中,与主线程并行执行,从而实现非阻塞I/O。

A

B

5
单选题

在Node.js中,以下哪个属于微任务(Microtask)?

A

setTimeout回调

B

setImmediate回调

C

process.nextTick回调

D

setInterval回调

6
多选题

以下代码执行后,控制台输出的顺序包含哪些特点?(多选)

JavaScript
console.log('1');
setTimeout(() => console.log('2'), 0);
Promise.resolve().then(() => console.log('3'));
process.nextTick(() => console.log('4'));
console.log('5');
A

'1'最先输出

B

'4'比'3'先输出

C

'3'比'2'先输出

D

'2'最后输出

E

'5'比'4'先输出

7
单选题

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

A

nextTick回调在事件循环的下一轮执行

B

nextTick回调在当前操作完成后、事件循环继续之前执行

C

nextTick回调与Promise.then回调同时执行

D

nextTick回调在setTimeout回调之前、Promise回调之后执行

8
多选题

以下关于process.nextTick()的使用,正确的是?(多选)

A

适合在同步代码执行后立即执行某些操作

B

可以用于确保回调在事件循环继续之前执行

C

应该避免递归调用process.nextTick以防止I/O饥饿

D

process.nextTick的优先级高于Promise.then

E

process.nextTick回调在当前函数调用栈清空后立即执行

9
判断题
A

B

10
单选题

以下代码中,setTimeout的实际延迟时间可能超过100ms的原因是?

JavaScript
setTimeout(() => console.log('done'), 100);
A

setTimeout的最小延迟是4ms,所以会超过100ms

B

如果事件循环在poll阶段被阻塞,回调执行会被延迟

C

setTimeout使用的是系统定时器,精度只有10ms

D

Node.js不支持精确的定时器功能

11
单选题

在Node.js中,以下代码的执行结果是什么?

JavaScript
setTimeout(() => console.log('timeout'), 0);
setImmediate(() => console.log('immediate'));
A

总是先输出'timeout'

B

总是先输出'immediate'

C

在I/O回调中先'immediate',在主模块中顺序不确定

D

两者的执行顺序完全随机

12
填空题

在Node.js中,取消setTimeout定时器使用____________函数,取消setInterval定时器使用_____________函数,取消setImmediate使用______________函数。这些函数接收定时器返回的_________作为参数。

13
单选题

Node.js实现非阻塞异步I/O的核心机制是?

A

使用多线程处理所有I/O操作

B

通过libuv库结合操作系统异步I/O和线程池

C

使用纯JavaScript的Promise实现异步

D

依赖浏览器提供的Web API

14
多选题

以下关于Node.js异步I/O的说法,正确的是?(多选)

A

网络I/O优先使用操作系统的异步机制

B

文件系统I/O主要使用libuv线程池处理

C

I/O回调在poll阶段执行

D

异步I/O操作本身是阻塞的,但回调是非阻塞的

E

一个回调执行时间过长会影响其他I/O回调的执行

15
单选题

以下代码的执行结果是什么?

JavaScript
async function test() {
  console.log('start');
  await Promise.resolve();
  console.log('end');
}
test();
console.log('main');
A

start → end → main

B

start → main → end

C

main → start → end

D

start → end(main不会输出)

16
填空题

Promise有三种状态:_______(进行中)、_________(已成功)、________(已失败)。状态一旦改变就不可逆转,只能从Pending变为_________或从Pending变为________。Promise.all方法在所有Promise都_______时才成功,Promise.race方法返回最先______的Promise结果。

17
单选题

以下代码中,事件监听器的执行顺序是?

JavaScript
const emitter = new EventEmitter();
emitter.on('test', () => console.log('A'));
emitter.on('test', () => console.log('B'));
emitter.prependListener('test', () => console.log('C'));
emitter.emit('test');
A

A → B → C

B

C → A → B

C

C → B → A

D

A → C → B

18
多选题

以下关于Node.js EventEmitter的说法,正确的是?(多选)

A

removeListener()可以移除指定事件的某个监听器

B

removeAllListeners()可以移除所有事件的所有监听器

C

emitter.listenerCount('event')返回指定事件的监听器数量

D

同一个监听器函数可以被多次添加到同一事件

E

默认情况下,单个事件最多可以注册10个监听器

19
填空题

EventEmitter提供了移除监听器的方法:______________用于移除指定事件的某个监听器,__________________用于移除指定事件或所有事件的监听器,______是removeListener的别名。当监听器数量超过_______________方法设置的阈值时会发出警告,默认阈值是______

20
单选题

Node.js采用的单线程并发模型的核心优势是?

A

可以充分利用多核CPU的计算能力

B

避免了多线程编程中的锁和竞态条件问题

C

每个请求都有独立的线程处理,不会相互影响

D

内存使用更高,但吞吐量更大

← 上一个试卷 NodeJS中级技能认证
下一个试卷 → NodeJS事件驱动基础专题测试

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

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

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

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