NodeJS运行时原理专题测试
考察知识点
| 知识模块 | 题目数 | 核心考点 |
|---|---|---|
| libuv工作原理 | 6题 | 事件循环阶段、线程池机制、Handle/Request区别、跨平台封装 |
| V8引擎与Node.js交互 | 4题 | Isolate概念、binding机制、启动流程、Hidden Class优化 |
| 垃圾回收机制 | 6题 | 分代回收算法、GC优化技术、内存泄漏、晋升条件、参数调优 |
| 网络编程底层实现 | 2题 | TCP socket异步机制、libuv网络封装 |
| 综合原理 | 1题 | 异步操作完整执行流程 |
libuv作为Node.js的底层异步IO库,其核心架构不包括以下哪个组件?
libuv线程池默认处理以下哪些类型的异步操作?
libuv事件循环包含哪些主要阶段?
libuv通过封装不同平台的异步IO机制(Linux的epoll、macOS的kqueue、Windows的IOCP),实现了跨平台的统一异步IO接口。
Node.js如何将C++功能暴露给JavaScript调用?
V8引擎中Isolate是指什么?
Node.js应用启动时,执行流程包括以下哪些步骤?
Node.js的net模块底层使用哪个库实现网络通信?
Node.js的TCP socket通过libuv的非阻塞异步机制实现,网络连接和数据读写不会阻塞主线程。
Node.js(V8引擎)使用的垃圾回收策略是?
V8垃圾回收器采用哪些优化技术减少GC暂停时间?
哪些情况下对象可能无法被垃圾回收器正确回收?
Node.js垃圾回收触发时机由V8引擎自动判断,主要依据是内存分配量和堆使用情况,不是固定的时间间隔。
libuv线程池默认 ______ 个线程,可通过 __________________ 环境变量调整大小,最大建议不超过 _________ 。线程池处理 ______ 、 _______ 、 ________ 等异步任务,而 ______ 使用系统原生异步机制不占用线程池。
Node.js异步操作从JavaScript调用到回调执行的完整流程包括哪些步骤?
libuv中handle代表长期存在的对象(如TCP socket),request代表一次性操作(如文件读取),两者生命周期管理方式不同。
Node.js可通过V8参数调整内存和GC行为: ____________________ 设置老生代最大内存(如 ______ 表示4GB); ___________ 允许手动触发 ___________ ; __________ 输出 ______ 用于分析垃圾回收行为; ____________________ 已废弃,V8会自动管理新生代大小。
V8引擎使用Hidden Class(隐藏类)机制优化对象属性访问,动态添加属性会导致隐藏类变化,可能影响性能。
V8堆内存分为 ______ 和 ______ 。新生代使用 ________ 算法,空间小(约 ______ ),回收 ______ 。老生代使用 __________________ 算法,空间大,回收 ______ 。对象从新生代 ______ 到老生代的条件包括存活多次Scavenge或 ______ 使用超过25%。
📝 发现内容有误?点击此处直接编辑
长按或扫描二维码,立即体验