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

JS引擎与运行时原理专题测试

20 题 60 分钟 难度:

考察知识点

知识模块题数核心考点
内存管理与优化4题V8内存分代、垃圾回收算法、内存泄漏检测
编译与解释执行2题字节码编译、JIT编译机制
JIT编译优化2题内联缓存、热点代码优化、去优化机制
JavaScript引擎架构2题引擎组件、解析器与解释器
V8引擎内部机制2题Ignition解释器、TurboFan优化编译器
执行上下文与调用栈2题执行上下文创建、调用栈追踪
跨平台运行时差异1题浏览器与Node.js运行时差异
this绑定规则1题this指向、绑定规则
事件循环与宏任务/微任务3题事件循环机制、任务队列、执行顺序
垃圾回收机制1题GC算法、分代回收
1
多选题

在V8引擎中,以下哪些措施可以有效预防和检测内存泄漏?

A

使用WeakMap和WeakSet存储对象引用

B

在组件卸载时清除定时器和事件监听器

C

使用Chrome DevTools的Memory面板进行堆快照对比

D

将所有变量声明为全局变量以便于访问

E

避免创建闭包来防止内存占用

F

使用performance.memory API监控内存使用趋势

2
单选题

V8引擎将堆内存分为新生代(New Space)和老生代(Old Space),以下关于这种分代设计的描述,哪项是正确的?

A

新生代使用标记-清除算法,老生代使用Scavenge算法

B

新生代存放存活时间短的对象,老生代存放存活时间长的对象

C

新生代和老生代的内存空间大小相同

D

对象一旦创建就无法从新生代晋升到老生代

3
填空题

现代JavaScript引擎(如V8)主要使用_________算法进行垃圾回收,该算法通过从______开始遍历,标记所有可达对象,未被标记的对象将被回收。

4
判断题

在JavaScript中,将变量赋值为null可以立即触发垃圾回收器回收该变量引用的对象。

A

B

5
多选题

关于JavaScript的编译与解释执行,以下哪些说法是正确的?

A

JavaScript是纯解释型语言,代码不会经过任何编译过程

B

V8引擎在执行前会先将JavaScript编译为字节码

C

JIT编译器会将热点代码编译为机器码以提高执行效率

D

首次执行时代码以字节码或解释方式运行,性能较低

E

编译后的机器码会永久缓存,不会重新编译

F

优化编译器会基于类型反馈信息进行激进优化

6
多选题

V8引擎的TurboFan优化编译器会进行多种优化,以下哪些是TurboFan可能执行的优化策略?

A

内联(Inlining)小函数以减少调用开销

B

逃逸分析(Escape Analysis)优化对象分配

C

循环不变量外提(Loop Invariant Code Motion)

D

基于类型反馈的去优化(Deoptimization)

E

将所有函数强制编译为机器码

F

死代码消除(Dead Code Elimination)

7
单选题

函数内联(Function Inlining)是JIT编译的重要优化手段,以下关于内联的说法正确的是?

A

内联会减少函数调用开销,但可能增加代码体积

B

所有函数都应该被内联以获得最佳性能

C

内联只能由开发者手动完成,编译器不会自动内联

D

递归函数最适合内联优化

8
多选题

一个完整的JavaScript引擎通常包含以下哪些组件?

A

解析器(Parser)

B

解释器(Interpreter)

C

JIT编译器(JIT Compiler)

D

垃圾回收器(Garbage Collector)

E

DOM渲染引擎

F

调用栈(Call Stack)

9
单选题

JavaScript引擎与浏览器的关系是什么?

A

JavaScript引擎内置了DOM渲染功能

B

JavaScript引擎独立于浏览器,浏览器通过API调用引擎

C

JavaScript引擎只负责网络请求处理

D

不同浏览器必须使用相同的JavaScript引擎

10
单选题

V8引擎执行JavaScript代码时,字节码由哪个组件生成和执行?

A

TurboFan

B

Ignition

C

Parser

D

GC

11
多选题

JavaScript执行上下文包含哪些组成部分?

A

变量环境(Variable Environment)

B

词法环境(Lexical Environment)

C

this绑定(This Binding)

D

外部环境引用(Outer Environment Reference)

E

作用域链(Scope Chain)

F

参数对象(Arguments Object)

12
单选题

当函数A调用函数B,函数B调用函数C时,调用栈的状态是什么?

A

从栈底到栈顶:全局 → A → B → C

B

从栈底到栈顶:C → B → A → 全局

C

只有当前执行的函数C在栈中

D

只有全局上下文在栈中

13
多选题

以下哪些是浏览器与Node.js运行环境的主要差异?

A

全局对象:浏览器是window,Node.js是global

B

模块系统:浏览器使用ES Modules,Node.js支持CommonJS和ES Modules

C

DOM API:浏览器有DOM,Node.js没有

D

文件系统:Node.js可以直接访问,浏览器受限

E

事件循环机制完全不同

F

异步API:浏览器有fetch,Node.js有http模块

14
多选题

JavaScript中this的绑定遵循四种规则,以下关于绑定规则的说法正确的是?

A

默认绑定:独立调用函数时,this指向全局对象(严格模式下为undefined)

B

隐式绑定:通过对象调用函数时,this指向该对象

C

显式绑定:使用call/apply/bind时,this指向指定的对象

D

new绑定:构造函数中的this指向新创建的实例对象

E

箭头函数遵循上述四种绑定规则

F

绑定规则的优先级:new绑定 > 显式绑定 > 隐式绑定 > 默认绑定

15
多选题

关于JavaScript事件循环的执行顺序,以下哪些说法是正确的?

A

每个事件循环周期开始时,先执行同步代码

B

同步代码执行完毕后,先清空微任务队列

C

微任务清空后,从宏任务队列取出一个任务执行

D

每个宏任务执行完毕后,都会清空微任务队列

E

微任务可以在当前宏任务执行过程中添加新的微任务,并在当前周期清空

F

宏任务和微任务的执行顺序由添加时间决定

16
多选题

以下代码执行后,输出顺序是什么?

JavaScript
console.log('1');

setTimeout(() => console.log('2'), 0);

Promise.resolve().then(() => console.log('3'));

console.log('4');
A

1, 4, 3, 2

B

1, 4, 2, 3

C

1, 2, 4, 3

D

1, 3, 4, 2

17
单选题

async函数中的await表达式后面的代码何时执行?

A

立即执行,与同步代码相同

B

在await后的Promise resolve时,作为微任务执行

C

在await后的Promise resolve时,作为宏任务执行

D

在下一个事件循环周期执行

18
填空题

Node.js事件循环分为多个阶段,其中______阶段执行setTimeout/setInterval回调,______阶段执行I/O回调,______阶段执行setImmediate回调。

19
单选题

在标记-清除垃圾回收算法中,"根对象"包括哪些?

A

只有全局对象

B

全局对象、当前执行栈中的变量、全局环境中的变量

C

所有对象都是根对象

D

只有被引用的对象

20
填空题

V8引擎为了减少垃圾回收造成的全停顿,引入了________技术,将标记工作分成多个小步骤穿插执行;还引入了________技术,利用辅助线程在主线程执行JavaScript时并行进行GC工作。

← 上一个试卷 JS异步进阶与并发控制测试
下一个试卷 → JS模块化与工程化基础专题测试

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

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

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

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