渲染流水线与性能优化

共 78 题
#

1. OffscreenCanvas 在 Worker 中的合成与渲染能力

A OffscreenCanvas 只支持 2D 上下文
B 每帧都必须重新传输控制权
C OffscreenCanvas 在 Worker 中绘制并直接合成,transferControlToOffscreen 零拷贝传输,渲染计算脱离主线程 ✓ 正确答案
D Worker 内可以自由使用 CSS
#

2. Chrome 的 DevTools Layers 面板与图层边界可视化分析

A Layers 面板只能看图层数量
B Layers 面板展示图层边界、内存与提升原因,用于识别图层爆炸并治理合成开销 ✓ 正确答案
C 所有元素都应独立成层
D will-change 不会产生图层
#

3. 合成层纹理的分配、回收与 GPU 内存曲线

A 纹理只分配一次永不回收
B 合成层纹理按提升与重绘分配、销毁时回收,GPU 内存曲线不回落说明图层未回收需治理 ✓ 正确答案
C 内容变化不产生纹理上传
D GPU 内存与合成层无关
#

4. 主线程阻塞时合成线程仍能流畅的效果类型

A transform/opacity 动画与滚动由合成器线程处理,主线程阻塞时仍流畅,但交互与布局类效果仍卡顿 ✓ 正确答案
B 主线程阻塞时所有动画都卡顿
C 合成线程依赖主线程每帧计算
D 视频播放也需要主线程合成
#

5. V8 的 Maglev(中级优化)与 TurboFan 在不同函数调用频率的工程价值

A V8 只有一个优化编译器
B Maglev 比 TurboFan 优化更深
C Maglev 为中等热度函数快速优化、TurboFan 为热点函数深度优化,函数按调用频率升级编译层级 ✓ 正确答案
D 去优化不会影响性能
#

6. Concurrent Marking 与 Incremental Compaction 在主线程阻塞的缓解

A 并发标记与增量/并发压缩把 GC 工作移出主线程,缩短停顿,但堆增长仍会放大主线程 GC 成本 ✓ 正确答案
B GC 标记必须独占主线程
C 压缩阶段与主线程无关
D GC 暂停与堆大小无关
#

7. V8 的 TurboFan 优化触发条件(热点函数、类型稳定性)

A TurboFan 对每个函数都做深度优化
B 类型反馈只影响解释器
C 去优化与性能无关
D TurboFan 按调用热度与类型反馈做专业化优化,类型不稳定会触发去优化循环,保持单态是工程关键 ✓ 正确答案
#

8. V8 垃圾回收(Orinoco、Scavenge、Mark-Sweep、Mark-Compact、并发标记、增量压缩)

A V8 只有一个 GC 阶段
B 新生代 GC 停顿时间很长
C Mark-Compact 不会产生碎片
D V8 分新生代(Scavenge 复制)与老生代(Mark-Sweep/Compact),Orinoco 以并发标记与增量压缩缩短主线程停顿 ✓ 正确答案
#

9. V8 的解释执行、JIT 编译、隐藏类与内联缓存

A 属性访问总是动态查找
B 动态添加属性不影响性能
C 隐藏类固化对象形态、内联缓存记忆访问类型,JIT 基于反馈优化,对象形态稳定是性能关键 ✓ 正确答案
D 解释器永远比 JIT 快
#

10. V8 GC Minor/Major/Incremental 在团队规范与可维护性

A GC 行为与团队规范无关
B Minor/Major/Incremental 的特征应映射为分配纪律、缓存有界与生命周期清理规范,并以 GC 观测和内存回归作门禁 ✓ 正确答案
C Major GC 不需要治理
D 内存观测无法自动化
#

11. 滚动事件节流与 Scroll-Linked Animations 在主线程释放的工程价值

A Scroll-Linked Animations 由合成器线程驱动(transform/opacity),配合节流与 Observer,释放滚动场景主线程 ✓ 正确答案
B 滚动动画必须逐帧用 JS 计算
C 滚动事件处理不需要优化
D 滚动驱动动画在所有浏览器原生支持
#

12. WebAssembly 与 V8 的 Liftoff/TurboFan 多层编译策略的工程价值

A WASM 只能全量深度编译
B Liftoff 比 TurboFan 峰值性能更高
C WASM 编译没有分层
D Liftoff 快速基线编译实现快启动,TurboFan 对热点深度优化达峰值性能,WASM 分层按热度分配 ✓ 正确答案
#

13. IntersectionObserver 的 rootMargin 与渲染节流的协作

A rootMargin 改变元素的真实可见性
B 懒加载不能用 IntersectionObserver
C rootMargin 越大越省资源
D rootMargin 扩展观察范围提供加载/渲染提前量,按资源成本调优,与 content-visibility 组合节流 ✓ 正确答案
#

14. 连续微任务阻塞绘制的原因与缓解

A 微任务只会在所有宏任务执行完后才执行一次
B 增加微任务数量可以提升动画流畅度
C 微任务与渲染完全无关,不会影响任何帧率
D 连续微任务会阻塞渲染,因为渲染发生在宏任务边界,微任务队列不清空则无法推进到渲染 ✓ 正确答案
#

15. requestAnimationFrame、requestIdleCallback、Scheduler API 的渲染时机分工

A requestAnimationFrame 在每帧绘制之后执行,适合做计算
B requestIdleCallback 在浏览器空闲时执行低优先级可中断任务,rAF 在渲染前同步视觉更新,Scheduler API 按优先级显式调度 ✓ 正确答案
C Scheduler API 与普通 setTimeout 完全等价
D requestIdleCallback 在每帧渲染前严格固定执行
#

16. 浏览器 IntersectionObserver/ResizeObserver/MutationObserver 在渲染时机的工程取舍

A 三种 Observer 都在同步阶段立即触发回调
B MutationObserver 回调在宏任务阶段执行,不会影响渲染
C ResizeObserver 只能监听 window 的尺寸变化
D IO 处理可见性、RO 处理尺寸变化、MO 处理 DOM 变化,回调应轻量并把渲染交给下一帧 ✓ 正确答案
#

17. requestAnimationFrame 与 scheduler.yield 在主任务让步的现代取舍

A scheduler.yield 只能在帧边界让出主线程
B rAF 绑定帧边界适合视觉同步,scheduler.yield 按优先级让出且可恢复,适合长任务切分 ✓ 正确答案
C requestAnimationFrame 与 scheduler.yield 是完全等价的 API
D scheduler.yield 会永久阻塞主线程
#

18. LCP/INP/CLS 的定义、阈值(Good/Needs Improvement/Poor)与各自优化手段的工程矩阵

A LCP Good ≤2.5s、INP Good ≤200ms、CLS Good ≤0.1,均取 p75 分位数,并各有针对性优化手段 ✓ 正确答案
B LCP 的 Good 阈值是 ≤500ms
C CLS 的 Good 阈值是 ≤0.5
D INP 的 Poor 阈值是 >1000ms
#

19. web-vitals 库的 onCLS/onINP/onLCP 上报时机、归因(attribution)字段与目标页面识别(pageId)

A onLCP 在页面加载一开始就上报中间值
B attribution 构建会显著减小包体积
C web-vitals 在指标最终确定后上报,attribution 提供元素/资源/来源归因,pageId 用于区分目标页面 ✓ 正确答案
D pageId 只能用于服务端渲染页面
#

20. PerformanceObserver 与 Long Animation Frames API(LoAF)在长任务诊断与交互延迟归因的工程应用

A LoAF 只报告脚本总时长,无法区分来源
B LoAF 与 INP 完全无关
C longtask 条目只在上报时一次性生成
D PerformanceObserver 观察 LoAF 条目,LoAF 提供 duration/scripts 分段归因,可结合 INP 定位阻塞交互的主线程来源 ✓ 正确答案
#

21. RUM(真实用户监控)与合成监测(Synthetic/Lighthouse)的数据偏差与互补关系

A RUM 数据完全可控且无噪声
B 合成监测结果可复现便于回归,RUM 反映真实用户分布,二者互补构成 Lab 定位 + Field 验证闭环 ✓ 正确答案
C Lighthouse 结果能直接代表所有真实用户
D RUM 与合成监测之间不存在任何偏差
#

22. 浏览器的分层、合成器线程与 will-change/transform 提升到独立图层的工程价值

A transform/opacity 动画必须在主线程重新绘制
B will-change 可以无限使用而不消耗内存
C 浏览器把页面拆为图层由合成器线程合成,transform/opacity 等合成属性动画不必重绘,will-change 可提前提升图层但需警惕内存与图层爆炸 ✓ 正确答案
D 所有元素都应默认提升为独立图层
#

23. Server Timing API 在 CDN/后端响应时间透传与前端性能端到端关联的工程落地

A 服务器通过 Server-Timing 响应头透传后端各阶段耗时,前端可关联 TTFB 定位是网络、CDN 还是后端导致的慢 ✓ 正确答案
B Server Timing API 只能看到 CDN 的缓存命中率
C Server Timing 数据无法被浏览器读取
D Server-Timing 头不能包含任何性能数据
#

24. INP 问题的监控-定位-治理闭环,LoAF attribution 到代码级的诊断流程与优化验证

A INP 治理只需关注数值,无需定位到代码
B 优化 INP 后无需回归验证
C LoAF 无法区分第一方与第三方脚本
D INP 治理闭环是监控采集 + LoAF attribution 代码级定位 + 优化治理 + 验证固化,归因字段让样本可反查根因 ✓ 正确答案
#

25. web-vitals 的 attribution build 与未 attribution build 的体积差异与功能取舍

A attribution build 额外提供元素/资源/来源等归因字段但体积更大,生产按需启用以平衡开销与可观测性 ✓ 正确答案
B attribution build 比基本 build 更小
C 两种构建功能完全一致
D 基本 build 无法上报任何数值
#

26. 浏览器同源策略的执行边界,哪些行为被限制(读取跨源响应、DOM 访问),哪些被允许(嵌入 script/img/iframe 发起请求)

A 同源策略禁止一切跨源请求
B 同源策略限制跨源读取响应与 DOM 访问,但允许嵌入 script/img/iframe 加载执行并发起请求 ✓ 正确答案
C 跨源 iframe 可以自由访问父页面 DOM
D 同源策略只限制 Cookie,不限制其他资源
#

27. 浏览器对 CSP 的解析与拦截时机(script-src/nonce/strict-dynamic 的生效方式),以及 report-only 模式与强制模式的区别

A CSP 只在资源加载完成后才检查
B Report-Only 模式会拦截所有违规脚本
C nonce 与 strict-dynamic 完全互斥
D CSP 在资源加载/执行前解析拦截,strict-dynamic 让 nonce 信任的脚本动态加载也受信,Report-Only 只报告不拦截而强制模式才拦截 ✓ 正确答案
#

28. 浏览器对 Cookie SameSite(Strict/Lax/None)的强制执行机制,及其对跨站请求自动携带凭证的影响

A SameSite=None 的 Cookie 不需要 Secure
B Lax 模式下所有跨站请求都不发送 Cookie
C SameSite 只影响同站请求
D SameSite 控制跨站请求是否携带 Cookie,Strict 全不发送、Lax 默认平衡安全与体验、None 跨站发送但需 Secure,是 CSRF 防御关键 ✓ 正确答案
#

29. 从浏览器解析管线看 XSS 三类(存储/反射/DOM 型)的注入点与触发时机差异

A 三类 XSS 都在服务端触发
B DOM 型 XSS 会经过服务端拼接
C 存储型存于数据源、反射型经请求参数反射、DOM 型在客户端 DOM 写入时执行,注入点与解析上下文决定触发时机与防御侧重 ✓ 正确答案
D 反射型 XSS 不依赖用户点击
#

30. Long Task 与渲染中断对 INP 的影响

A 长任务阻塞主线程、延迟输入处理与绘制,拆分长任务与降载可降低 INP ✓ 正确答案
B 长任务只影响网络请求,不影响 INP
C 渲染中断与长任务无关
D INP 只关注输入事件,不关注渲染
#

31. Layout Thrashing(强制同步布局)的成因与 fastdom 治理

A 读取布局属性绝不会触发布局
B Layout Thrashing 源于读写交替触发多次强制同步布局,fastdom 通过批量调度读写在帧内合并布局 ✓ 正确答案
C 强制同步布局是无害的
D fastdom 会增加布局次数
#

32. 图层爆炸(Layer Explosion)的诱因与 will-change 治理

A 图层爆炸源于过多独立合成层造成内存与合成开销,will-change 应只对确需动画的元素使用并在动画后移除 ✓ 正确答案
B 图层数量越多性能越好
C will-change 可以无限使用
D 图层爆炸只影响首屏加载
#

33. V8 内存压缩指针 在性能优化与 GC 压力的取舍

A 压缩指针会增大对象引用占用
B 压缩指针把地址压缩为 32 位减少内存、提升缓存并缓解 GC 压力,但受约 4GB 堆上限约束 ✓ 正确答案
C 压缩指针无任何限制
D 压缩指针与 GC 无关
#

34. 布局属性、绘制属性与合成属性的性能差异

A 所有 CSS 属性触发相同开销
B transform 动画会触发布局
C 布局属性触发重排、绘制属性触发重绘、合成属性(transform/opacity)只走合成器,动画优先用合成属性最流畅 ✓ 正确答案
D opacity 动画需要主线程重绘
#

35. DOM/CSSOM 构建、样式计算、布局、绘制、光栅化、合成的完整流水线

A 完整流水线是 DOM/CSSOM 构建→样式计算→布局→绘制→光栅化→合成,属性变化决定从哪一阶段重新开始 ✓ 正确答案
B 渲染流水线从光栅化开始
C 布局与绘制在 GPU 线程完成
D 合成属性变化需要重新解析 HTML
#

36. Transfer Size 在现代前端项目的工程价值

A Transfer Size 是资源的解压后大小
B Transfer Size 指实际传输的压缩后字节数,直接影响网络耗时与 LCP,应作为性能预算与监控指标 ✓ 正确答案
C Transfer Size 与 TTFB 无关
D 压缩对 Transfer Size 毫无影响
#

37. Compositor-only 属性(transform/opacity)

A transform/opacity 动画会触发主线程重排
B 合成属性动画无法使用 GPU
C opacity 动画必须重新绘制
D transform/opacity 是 compositor-only 属性,动画只走合成器与 GPU,不触发布局/绘制,从而保持流畅 ✓ 正确答案
#

38. position: sticky 的容器边界与父级 overflow 失效条件

A sticky 元素可以脱离父级任意粘性
B sticky 与父级高度无关
C overflow 设置对 sticky 无任何影响
D sticky 相对最近滚动容器粘性,父级高度决定范围,祖先 overflow 非 visible 会成为滚动容器导致失效 ✓ 正确答案
#

39. 跨域 iframe 的 Site Isolation 与渲染边界

A Site Isolation 把跨站 iframe 放进独立进程,增强安全隔离但增加进程与内存开销,跨源只能 postMessage 通信 ✓ 正确答案
B Site Isolation 让所有页面共享一个进程
C 跨域 iframe 可以访问父页面 DOM
D Site Isolation 只影响缓存
#

40. CSS Containment(contain: layout/paint/size)的隔离与性能收益

A contain: layout 会放大对外部的布局影响
B CSS Containment 把子树渲染隔离,contain: layout/paint/size 分别隔离布局、绘制、尺寸,减少重排传播提升性能 ✓ 正确答案
C contain 只影响样式计算
D contain: size 会让元素尺寸依赖内容
#

41. V8 字节码解释器 Ignition 与 Sparkplug 的协作机制

A Ignition 与 Sparkplug 没有任何关系
B Sparkplug 直接优化编译热点函数
C Ignition 是字节码解释器负责快速启动,Sparkplug 是基线编译器从字节码生成机器码,配合优化编译器形成渐进升级的 tier 架构 ✓ 正确答案
D V8 只使用解释器不编译
#

42. Weak Ref 与 Finalization Registry 在 V8 GC 的暂停与调度策略

A WeakRef 会阻止对象被回收
B WeakRef 与 FinalizationRegistry 等价
C FinalizationRegistry 回调同步执行
D WeakRef 弱引用不阻止回收,FinalizationRegistry 在对象被 GC 后调度回调,回调时机不可控,不应依赖其做确定性清理 ✓ 正确答案
#

43. JIT 优化中的去优化(Deoptimization)触发场景

A 去优化会让代码执行更快
B 去优化与类型无关
C 去优化是优化代码在类型变化、隐藏类破坏等场景失效回退到解释执行,会造成性能抖动,应保持类型与对象形状稳定 ✓ 正确答案
D 去优化不会影响性能
#

44. 对象晋升(Promotion)到老生代的判别与堆统计

A 新生代对象在 Scavenge 中存活达到阈值或空间不足时晋升老生代,通过堆快照可分析晋升与堆分布 ✓ 正确答案
B 对象晋升后仍在新生代
C 晋升与 GC 无关
D 所有对象永不晋升
#

45. V8 的 WebAssembly 编译管线与多线程优化能力

A Wasm 只有一个编译层级
B Wasm 无法使用多线程
C V8 用 Liftoff 基线 + TurboFan 优化编译 Wasm,支持多线程编译与运行,可并行处理 CPU 密集型任务 ✓ 正确答案
D Wasm 线性内存由 GC 管理对象图
#

46. TurboFan、Sparkplug、Maglev 各阶段的优化目标

A 三层编译器优化程度相同
B Maglev 是最顶级优化编译器
C TurboFan 编译最快
D Sparkplug 基线编译、Maglev 中级优化、TurboFan 顶级优化,编译成本与优化程度逐级递增,依据热度和 feedback 逐级升级 ✓ 正确答案
#

47. Mark-Compact 算法在 V8 老生代内存回收的工程实践

A Mark-Sweep 不会产生碎片
B Mark-Compact 从不移动对象
C Mark-Sweep 清除产生碎片,Mark-Compact 移动存活对象消除碎片,配合并发标记与增量压缩控制停顿,需留意老生代膨胀与碎片 ✓ 正确答案
D 老生代不使用标记算法
#

48. V8 的内存泄漏常见模式(闭包、全局变量、定时器、Detached DOM)

A 闭包不会导致内存泄漏
B Detached DOM 永远被回收
C 闭包捕获外部作用域、全局变量累积、定时器未清理、Detached DOM 被引用都会导致内存泄漏,需用堆快照对比排查 ✓ 正确答案
D 定时器不会持有对象
#

49. WebAssembly 与 V8 引擎的协作(线性内存、垃圾回收的边界)

A Wasm 线性内存与 JS 堆共享同一 GC
B Wasm 线性内存与 JS 堆分离,Wasm 本身无 GC 由模块显式管理内存,通过 TypedArray 与函数与 JS 互操作 ✓ 正确答案
C Wasm 只能调用自身函数
D Wasm 内存由 JS GC 自动管理
#

50. V8 引擎的 cause 属性在堆栈捕获错误链路的应用

A cause 属性丢弃底层错误
B cause 属性只能用于同步错误
C Error 的 cause 属性在包装错误时保留原始错误,通过 cause 链还原根因,配合结构化上报提升排障效率 ✓ 正确答案
D cause 属性与堆栈无关
#

51. gc() 函数(仅暴露给 V8 内部)在内存压力测试的应用

A gc() 通过 --expose-gc 暴露并强制触发 GC,用于内存压力测试与泄漏检测,对比 GC 前后堆用量发现持续增长 ✓ 正确答案
B gc() 在浏览器中默认可用
C gc() 无法用于内存测试
D gc() 会降低内存使用率
#

52. V8 的堆快照(Heap Snapshot)与 chrome://inspect 在内存分析的应用

A 堆快照无法显示引用关系
B chrome://inspect 无法分析内存
C 堆快照捕获对象与引用关系,配合 Comparison 对比与 chrome://inspect 远程调试定位持续增长的未释放对象 ✓ 正确答案
D 堆快照只能用于浏览器
#

53. V8 的 Promise Hooks 在异步追踪与 APM 工具的集成

A Promise Hooks 无法捕获异步操作
B Promise Hooks 捕获 Promise 生命周期做异步上下文传播,APM 工具据此关联异步操作与错误,实现端到端追踪 ✓ 正确答案
C async_hooks 与异步追踪无关
D 异步追踪无任何性能开销
#

54. V8 的 async stack traces(Error.captureStackTrace)在调试的工程价值

A async stack traces 无法追溯异步上下文
B captureStackTrace 不能过滤内部帧
C 异步错误没有堆栈
D Error.captureStackTrace 定制堆栈,async stack traces 让异步错误保留调用链,提升异步代码调试与根因定位 ✓ 正确答案
#

55. V8 的 Sparkplug 编译器(baseline tier)

A Sparkplug 是基线编译器,从字节码快速生成机器码、开销小、优化程度低,作为解释与优化之间的中间层 ✓ 正确答案
B Sparkplug 是 V8 的深度优化编译器
C Sparkplug 编译比解释器还慢
D Sparkplug 直接处理 AST
#

56. V8 的字节码解释器(Ignition)与 TurboFan 的协作在内存与启动的取舍

A 全量优化编译能提升启动速度
B TurboFan 比解释器启动更快
C Ignition 解释字节码启动快内存低,TurboFan 优化编译执行快但开销大,按函数热度渐进升级在启动与峰值性能间平衡 ✓ 正确答案
D 解释器与优化编译互斥
#

57. requestIdleCallback 在低优先级后台任务的应用与 polyfill(scheduler-polyfill)

A requestIdleCallback 在空闲期执行低优先级可中断任务,scheduler-polyfill 提供跨浏览器兼容,需配合 timeout 兜底 ✓ 正确答案
B rIC 会强制在空闲期执行所有任务
C rIC 任务优先级最高
D scheduler-polyfill 无法模拟空闲调度
#

58. Long Tasks(>50ms)对 INP 的影响与切片策略

A 长任务只影响网络性能
B INP 与主线程阻塞无关
C 长任务不影响输入处理
D 长任务(>50ms)阻塞主线程推高 INP,通过时间切片、scheduler.yield、Worker 拆分可降低交互延迟 ✓ 正确答案
#

59. document.timeline.currentTime 与 CSS 动画时间轴对齐的工程价值

A document.timeline 与动画无关
B document.timeline.currentTime 是文档动画时间轴参考,与 CSS 动画/WAAPI 一致,用于 JS 与动画时间对齐 ✓ 正确答案
C currentTime 返回的是系统时钟
D 动画时间轴无法被 JS 读取
#

60. requestIdleCallback 在兼容性与 polyfill 的现代工程取舍

A rIC 在各大浏览器都默认支持
B polyfill 能精确模拟空闲
C rIC 支持有限且语义不保证,polyfill 精度有限,可优先用 Scheduler API 替代并设计任务为可延后可丢弃 ✓ 正确答案
D rIC 保证每次都在空闲期执行
#

61. Chrome 的 Priority Hints(fetchpriority)对关键资源加载的优先调度

A fetchpriority 只对图片生效
B fetchpriority 会强制立即加载所有资源
C fetchpriority 显式声明资源优先级(high/low/auto)影响加载调度,与 preload 配合优化关键资源加载,但需谨慎使用 ✓ 正确答案
D preload 与 fetchpriority 完全无关
#

62. 浏览器后台节流对定时器与 rAF 的精度影响

A 后台标签页定时器精度不受影响
B 后台节流只影响动画不影响定时器
C rAF 在后台仍持续触发
D 后台标签页定时器被节流放大、rAF 暂停,后台任务可用 Worker 或 performance.now() 规避精度问题 ✓ 正确答案
#

63. CLS 的 session window 算法与 layout shift clusters 在分数计算中的边界(最大 5s 窗口/1s gap)

A CLS 是所有偏移量之和
B CLS 只统计一次偏移
C CLS 用 session window 聚合偏移,最大 5s 窗口、偏移间隔超 1s 分新窗口,取最大窗口作为 CLS,关键是减少单窗口内偏移量 ✓ 正确答案
D 窗口边界对 CLS 无影响
#

64. INP 的 Input Delay/Processing Time/Presentation Delay 三段拆解与针对性优化路径

A INP 只有一段不可拆分
B INP 拆为输入延迟、处理时长、呈现延迟,各有针对性优化(减阻塞、精简回调、减渲染),先测各段占比再重点优化 ✓ 正确答案
C 优化 INP 只需减少网络请求
D 三段对 INP 无影响
#

65. Web Vitals 与业务指标(转化率/留存)的关联分析方法,性能分数与商业价值的因果推断

A 关联分析需用分组对比、A/B 与控制变量做因果推断,识别混淆变量,避免相关性误判为因果 ✓ 正确答案
B 性能好转转换率一定高
C 相关性等同因果
D 性能与业务指标完全无关
#

66. 点击劫持的浏览器机制,X-Frame-Options 与 CSP frame-ancestors 的优先级与覆盖关系

A 点击劫持用透明 iframe 覆盖诱骗点击,CSP frame-ancestors 优先于 X-Frame-Options,二者都限制页面被嵌入 ✓ 正确答案
B X-Frame-Options 永远优先于 CSP
C 点击劫持与 iframe 无关
D frame-ancestors 无法防御点击劫持
#

67. 浏览器 CORS 预检(preflight)的触发条件与 Access-Control-Max-Age 缓存机制

A 所有跨源请求都触发预检
B Max-Age 缓存的是实际响应
C 简单请求也触发预检
D 非简单请求(自定义头/非简单方法)触发 OPTIONS 预检,Access-Control-Max-Age 缓存预检结果减少重复预检 ✓ 正确答案
#

68. 浏览器在 HTML 不同上下文(标签体、属性、script 块)解析注入内容的差异,与 Trusted Types 强制 sink 校验的机制

A 标签体/属性/script 上下文注入语义不同需按上下文编码,Trusted Types 强制 sink 校验拒绝不可信字符串进 DOM ✓ 正确答案
B 所有 HTML 上下文注入编码方式相同
C Trusted Types 只影响样式
D 属性上下文无需转义
#

69. V8 的 super 属性访问在内联缓存(IC)的工程性能差异

A super 访问与普通属性访问 IC 完全一致
B super 访问不经过内联缓存
C super 访问性能总是更高
D super 属性访问沿原型链查找,其 IC 处理与普通属性访问不同、性能可能略低,热路径可考虑直接引用 ✓ 正确答案
#

70. V8 的字符串优化(Sliced String、ConsString、SeqString)

A 所有字符串都立即复制存储
B V8 字符串只有一种表示
C 字符串拼接总是最慢的
D ConsString 惰性拼接、Sliced String 惰性切片避免重复复制,SeqString 是扁平存储,优化了拼接与切片性能 ✓ 正确答案
#

71. V8 的 Map(hidden class)在对象创建顺序敏感性的工程实践

A 对象属性顺序不影响优化
B 动态增删属性会提升性能
C V8 用 hidden class 记录对象形状,属性创建顺序影响形状与 IC 缓存,保持对象创建一致可提升性能 ✓ 正确答案
D hidden class 与优化无关
#

72. V8 的 BigInt 与 Number 在算术运算时的隐式转换边界

A 1n + 1 可直接计算
B BigInt 运算自动转 Number
C BigInt 与 Number 完全等价
D BigInt 与 Number 混合算术会抛 TypeError,需显式转换并注意精度,避免隐式转换丢精度 ✓ 正确答案
#

73. WebAssembly GC(垃圾回收扩展提案)在跨语言内存管理的现代进展

A Wasm GC 提案让所有语言都必须用线性内存
B Wasm GC 提案引入可 GC 对象类型,支持多语言直接编译到 Wasm 并改善与 JS 的互操作,减少手动内存管理 ✓ 正确答案
C Wasm GC 与 JS GC 完全无关
D Wasm 无法创建对象
#

74. V8 的 Code Caching(代码缓存)在二次访问首屏加载的性能收益

A 代码缓存无法复用编译结果
B V8 代码缓存复用脚本编译产物,二次访问跳过解析编译加速启动,命中率受脚本版本与缓存策略影响 ✓ 正确答案
C 代码缓存只对首次访问有效
D 代码缓存会降低加载速度
#

75. scheduler.postTask({ priority: user-blocking }) 优先级队列的工程价值

A postTask 不区分优先级
B background 优先级最高
C scheduler.postTask 用 user-blocking/user-visible/background 优先队列调度,关键任务优先、非关键降级,优化交互与主线程 ✓ 正确答案
D postTask 无法调度任务
#

76. Element Timing API 在自定义 LCP 元素标记与 RUM 归因的工程边界

A Element Timing 可以标记任何元素为 LCP
B Element Timing 只统计资源加载
C Element Timing 无法被浏览器读取
D Element Timing 通过 elementtiming 属性标记自定义元素做 LCP 归因,但覆盖渲染时间且需元素带 id,是辅助归因而非替代浏览器判定 ✓ 正确答案
#

77. First Input Delay(FID)被 INP 替代的历史原因与旧版数据兼容性处理

A FID 与 INP 完全等价
B FID 覆盖处理时长
C INP 只测首次输入
D FID 只测首次输入延迟,INP 覆盖所有交互的完整响应性,替代后需注意口径差异并平滑迁移旧数据 ✓ 正确答案
#

78. 浏览器存储分区(Storage Partitioning)对第三方 Cookie、缓存与 IndexedDB 在跨站上下文下的隔离行为

A 存储分区按顶级站点隔离第三方 Cookie、缓存与 IndexedDB,防止跨站关联,增强隐私但需适配嵌入应用 ✓ 正确答案
B 存储分区让第三方存储跨站共享
C 存储分区只影响 IndexedDB
D 第三方 Cookie 不受分区影响