WebRTC 与动画体系

共 73 题
#

1. Motion One(基于 Web Animations API)

A 时间线功能更强
B 基于 Web Animations API,体积小且动画走合成器线程,适合轻量动效 ✓ 正确答案
C 插件生态更丰富
D 必须配合 React
#

2. GSAP 的 gsap.context() 与 React 生命周期清理

A 卸载时不需要清理
B 清理会导致动画报错
C 只能全局 gsap.killAll
D 用 gsap.context() 收集动画并在 effect cleanup 中 revert(),兼容严格模式双调用 ✓ 正确答案
#

3. Lottie 在 React Native 的性能边界与替代方案(Skia、Rive)

A Rive 或 React Native Skia,按动效复杂度与设计工具链选择,简单动效用 Reanimated ✓ 正确答案
B 一律用 Lottie
C 全部用 CSS
D 播放视频代替
#

4. Framer Motion(layoutId、AnimatePresence)

A CSS 类名切换
B 共享元素的位置/尺寸投影过渡(列表项 ⇆ 详情页) ✓ 正确答案
C 文本打字动画
D 背景渐变
#

5. GSAP(Timeline、ScrollTrigger)的动画编排能力

A 自动循环播放
B 鼠标悬停触发
C 动画进度与滚动位置绑定,滚动到哪动画播到哪 ✓ 正确答案
D 定时延迟播放
#

6. position: sticky 边界 在现代组件库的工程价值

A 祖先容器 overflow 非 visible 改变了滚动上下文,或父容器高度不足 ✓ 正确答案
B 元素设置了 z-index
C 元素是内联元素
D 页面太短
#

7. Canvas 2D Path2D/OffscreenCanvas 在复杂路径复用与 Worker 离屏的工程价值

A 自动抗锯齿
B 路径对象可复用、可做复杂裁剪与点包含命中检测 ✓ 正确答案
C 替代所有 Canvas 绘制
D 只在 WebGL 可用
#

8. WebGPU 在 3D 场景渲染与 Three.js WebGPURenderer 的应用

A 完全重写 Three 的 API
B 只支持计算着色器
C 复用场景图/材质体系,材质经 TSL 生成 WGSL 并映射到 WebGPU 管线,场景可平滑迁移 ✓ 正确答案
D 不兼容 GLTF 模型
#

9. requestAnimationFrame 驱动的 Canvas 动画与粒子系统

A 固定每帧移动 1 像素
B 忽略 delta 直接更新
C 提高 setTimeout 频率
D 用两帧时间差 delta 乘速度计算位移,并 clamp 防止跳变 ✓ 正确答案
#

10. 后期处理、阴影、3D 模型加载(GLTF/GLB)

A 增加顶点数
B 每个开阴影的光源都要渲染独立的 shadow map,分辨率与数量需权衡 ✓ 正确答案
C 影响模型加载
D 只影响 CPU 不影响 GPU
#

11. RTCPeerConnection 建立连接的完整流程,信令交换、SDP offer/answer 协商与 ICE candidate 收集交换

A 加密媒体数据
B 认证用户身份
C 交换媒体能力与传输描述(编解码、方向、候选占位),双方达成一致后建连 ✓ 正确答案
D 分配服务器资源
#

12. 缓动函数(Easing)在动画手感中的应用

A 线性匀速
B 全程回弹
C ease-out(先快后慢,自然落位) ✓ 正确答案
D 无缓动
#

13. PIXI.js / Babylon.js / Three.js 在 2D/3D 渲染的工程取舍

A PIXI.js
B 纯 CSS 3D
C Chart.js
D Babylon.js(引擎级能力与工具链最全) ✓ 正确答案
#

14. Canvas 2D 全局状态(globalCompositeOperation)

A 每个元素独立设置样式
B 按状态分组绘制并减少状态切换,复杂混合用离屏缓存预合成 ✓ 正确答案
C 大量使用 save/restore
D 关闭合成
#

15. ICE/STUN/TURN 在 NAT 穿透中的各自作用,以及 P2P 直连与 TURN 中继的成本与延迟取舍

A relay > srflx > host
B 全部相同
C host(本机)> srflx(STUN 反射)> relay(TURN 中继),直连优先、中继兜底 ✓ 正确答案
D 随机选择
#

16. RTCDataChannel 的可靠有序与不可靠(unordered、maxRetransmits/maxPacketLifeTime)模式及各自适用场景

A 默认可靠有序
B 有序但无限重传
C unordered + maxPacketLifeTime/maxRetransmits,容忍丢失追求低延迟 ✓ 正确答案
D 禁用 DataChannel
#

17. getUserMedia 的媒体约束(分辨率/帧率/设备 ID)与 enumerateDevices 设备切换、权限拒绝的处理

A 强制精确匹配,不满足时采集失败,用于 deviceId 精确选择 ✓ 正确答案
B 尽力满足即可
C 表示默认值
D 只能用于帧率
#

18. CSS Animations Level 2 提案(@keyframes 的 composite/timeline-scope)的工程价值

A 时间线反向播放
B 滚动/视口驱动的动画以 CSS 声明,替代 JS 滚动监听 ✓ 正确答案
C 动画随机化
D 自动循环次数
#

19. Scroll-driven Animations 的 animation-range-start/end 与视口驱动滚动

A 页面总滚动百分比
B 动画已播放时长
C 元素自身在滚动容器/视口中的可见进度 ✓ 正确答案
D 鼠标位置
#

20. Lightning CSS 在性能预算与首屏渲染的取舍

A Rust 实现的高速转译/压缩/裁剪,构建性能与体积双优 ✓ 正确答案
B 支持更多 CSS 属性
C 替代 JavaScript
D 只能在浏览器运行
#

21. Flex min-width: 0 与现代浏览器一致的工程取舍

A 让元素宽度为 0
B 禁用 flex 布局
C 允许弹性项压缩到 0(突破 min-width: auto 的内容最小尺寸),修复长内容溢出 ✓ 正确答案
D 固定元素宽度
#

22. prefers-reduced-motion 在现代组件库的工程价值

A 禁用全部动画包括焦点指示
B 忽略该偏好
C 降级/缩短装饰动画,保留焦点指示等功能必需动画 ✓ 正确答案
D 仅影响视差
#

23. SDP(会话描述协议)的作用与编解码协商(H.264/VP9/AV1/Opus)的工程要点

A 压缩率最高
B 编码质量最好
C 全平台硬件编解码支持广,通过 fmtp(profile-level-id 等)参数协商实现互操作 ✓ 正确答案
D 延迟最低
#

24. Simulcast 与 SVC 在多人视频会议弱网下的应用与带宽分配

A 发送端同时编码多路独立分辨率流,SFU 按接收端带宽转发其中一路 ✓ 正确答案
B 单路流内分层
C 只编码一路固定流
D 接收端自行放大
#

25. addTrack/replaceTrack 与 transceiver 在动态媒体流管理(静音、切换摄像头)中的协作

A 重新创建 RTCPeerConnection
B 先 removeTrack 再 addTrack
C 新轨道经 sender.replaceTrack 替换,无需重新协商 ✓ 正确答案
D 只能重启浏览器
#

26. WebRTC 拥塞控制(GCC/transport-cc)与带宽估计的观察手段

A 帧率
B qualityLimitationReason(带宽受限/CPU 受限) ✓ 正确答案
C 候选类型
D 信令耗时
#

27. WebRTC 与 WebSocket/WebTransport 在低延迟场景(实时消息 vs 实时音视频)的取舍

A WebSocket 不支持 TCP
B WebRTC 提供媒体采集/编解码管线、JitterBuffer 与拥塞控制等实时媒体能力 ✓ 正确答案
C WebTransport 不能传数据
D 只有 WebRTC 支持 HTTPS
#

28. 用 getStats 监控 WebRTC 的丢包率、RTT、码率与候选类型(candidate type)的工程实践

A packetsLost 直接就是百分比
B packetsLost / (packetsReceived + packetsLost) ✓ 正确答案
C jitter 值
D 帧率倒数
#

29. SFU/MCU 媒体服务器拓扑在大规模实时音视频中的架构与容量取舍

A 服务器重编码质量更高
B 端侧解码压力最小
C 服务器只做选流转发(成本低),支持 Simulcast/SVC 分层与端侧自由布局 ✓ 正确答案
D 不需要服务器
#

30. CSS transition-property 的 all/transform 等的工程取舍

A transition-property 白名单化,尺寸/位移用 transform 实现以走合成器 ✓ 正确答案
B 一律 transition: all
C 禁用所有过渡
D 只对颜色过渡
#

31. CSS font-size-adjust 与排版微调

A 字体回退/加载时 x-height 差异导致的视觉字号突变 ✓ 正确答案
B 字体文件过大
C 中文标点排版
D 字体版权
#

32. CSS @keyframes 与 WAAPI(Web Animations API)的协作边界

A WAAPI(Element.animate())命令式控制,CSS 定义可复用的 keyframes ✓ 正确答案
B 纯 CSS @keyframes
C 定时修改 style
D 禁用动画
#

33. CSS 物理引擎(弹簧、阻尼)在现代框架(Framer Motion)

A 决定动画时长
B 与 stiffness 无关
C 决定位移距离
D 阻尼大小:越大振荡衰减越快、越不弹跳 ✓ 正确答案
#

34. BFC 触发与边距折叠 在大型设计系统的工程价值

A 兼容性更好
B 支持浮动
C 无裁剪/滚动等副作用,仅建立独立的块级格式化上下文 ✓ 正确答案
D 速度更快
#

35. Rive(.riv 文件 + 状态机)作为 Lottie 的现代替代

A 完全兼容 AE 导出
B 文件格式为 JSON
C 内置状态机与骨骼/网格变形,动效可响应输入交互且跨端一致渲染 ✓ 正确答案
D 只支持 Web
#

36. Lottie(AE 导出 JSON、前端渲染动画)的场景

A 全部用 SVG 渲染
B 提高 JSON 精度
C 复用实例、延迟加载与可见性控制(暂停不可见动画) ✓ 正确答案
D 使用 WebGL 渲染器
#

37. Framer Motion 的 useMotionValue 与弹簧物理动画

A 值更新更慢
B 只能存字符串
C 无法绑定组件
D 高频交互(拖拽/滚动)动画直接驱动合成器,避免每帧 React 渲染开销 ✓ 正确答案
#

38. anime.js、Popmotion、Tone.js 的现代取舍

A anime.js
B Popmotion
C Tone.js(Web Audio 框架) ✓ 正确答案
D GSAP
#

39. JS 动画库经历了哪些版本演进,与 Web Animations API、CSS 动画、Skia 等替代方案相比各自定位是什么

A 全部用 jQuery 动画
B 只用 Skia
C CSS 优先(简单动效)+ WAAPI 增强(动态控制)+ 复杂编排用 GSAP 等库 ✓ 正确答案
D 全部禁用动画
#

40. OffscreenCanvas 在动画渲染的并行

A 每帧克隆整个画布给 Worker
B 分块任务 + transfer 转移所有权/缓冲,结果经 ImageBitmap 提交上屏 ✓ 正确答案
C Worker 无法访问 Canvas
D 所有绘制放主线程
#

41. WebGL 性能瓶颈与 GPU 内存优化

A 每个对象单独 draw 一次
B InstancedMesh 实例化一次调用绘制全部 ✓ 正确答案
C 全部合并为一个纹理
D 使用 CPU 渲染
#

42. Canvas 2D 与 WebGL 在动画渲染的性能与适用场景的工程取舍

A Canvas 2D 逐粒子绘制
B CSS 动画
C SVG 动画
D WebGL/WebGPU 实例化与 GPU 并行处理 ✓ 正确答案
#

43. WebGL 的 requestAnimationFrame 与垂直同步(VSync)

A 显示器的刷新率(VSync),并自动在后台节流 ✓ 正确答案
B setTimeout 设置
C 网络速度
D 每帧计算量
#

44. WebGL 上下文丢失(context lost)事件的监听与自动恢复的工程实践

A 继续使用旧纹理
B 无需处理
C 刷新页面
D 重建所有 GPU 资源(着色器/缓冲/纹理),因此需持有源数据并集中重建 ✓ 正确答案
#

45. FLIP 技术(First、Last、Invert、Play)

A 用 transform 把元素从最终布局位置"移回"初始视觉位置,使后续动画只有 transform ✓ 正确答案
B 反转动画方向
C 翻转元素内容
D 暂停动画
#

46. transform: translateZ(0)/will-change: transform 的图层提升合成与现代取舍

A 没有效果
B 无差别提升消耗 GPU 内存且增加合成成本,应让浏览器自动提升并按需使用 will-change ✓ 正确答案
C 语法错误
D 只影响 IE
#

47. Canvas 动画 requestAnimationFrame 主线程释放到 Worker(OffscreenCanvas + Worker)

A 不能再直接获取其渲染上下文绘制,绘制权在 Worker(或经 ImageBitmap 回传合成) ✓ 正确答案
B 继续正常绘制
C 只能清除画布
D 上下文自动失效需重建连接
#

48. CSS Subgrid 在表单/对话框/Popover 的工程价值

A 定义新的网格轨道
B 子网格继承父网格的轨道定义,实现多层嵌套的对齐 ✓ 正确答案
C 子网格独立计算列宽
D 替代 flex 布局
#

49. Shared Element Transition 在 SPA 与跨视图共享元素的工程价值

A 手写 FLIP 计算
B 新旧 DOM 元素标记相同 view-transition-name,浏览器自动补间位置与尺寸 ✓ 正确答案
C 使用 CSS transition
D 播放视频遮罩
#

50. 微交互、视差滚动、骨架屏的体验设计

A 动画越复杂越好
B 全部使用 3D 效果
C 即时反馈、克制时长、语义明确并保持系统内一致 ✓ 正确答案
D 每次操作都必须播放长动画
#

51. CSS Anchor Positioning 与设计系统令牌(Design Token)

A 设置锚点名称
B 固定弹层位置
C 定义空间不足时的回退放置位置(自动换边) ✓ 正确答案
D 控制弹层动画
#

52. SVG SMIL 动画、<animate>、路径动画 Morphing

A 任意两条路径都可插值
B 只能用于直线
C 必须使用 JS 计算
D 两个路径的 d 命令结构与点数一致,否则插值异常 ✓ 正确答案
#

53. Pointer Events 统一鼠标/触摸/手写笔的工程价值与兼容性,touch-action 与 passive listener 的关系

A touch-action: none(或 manipulation)声明以禁止浏览器默认手势抢占 ✓ 正确答案
B 监听 mouse 事件即可
C 使用 passive: true 的 touchmove 监听
D 禁用 pointercancel
#

54. HTML5 Drag&Drop 与基于 Pointer Events 自实现拖拽的取舍,原生行为 vs 精细控制

A HTML5 Drag&Drop(触摸不支持且样式受限)
B 禁用拖拽
C 用 input range
D Pointer Events 自实现(或 dnd-kit 库)获得完整控制与触摸支持 ✓ 正确答案
#

55. 捏合缩放/滑动手势识别与 touch-action、passive listener 的关系及手势冲突解决

A 在 touchmove 中 preventDefault
B 禁用滚动
C touch-action: pan-y 声明纵向滚动给浏览器,横向手势由应用识别 ✓ 正确答案
D 只用鼠标事件
#

56. 惯性滚动与橡皮筋效果(overscroll-behavior、-webkit-overflow-scrolling)的实现原理与工程边界

A 禁止弹层滚动
B 弹层滚动容器 overscroll-behavior: contain ✓ 正确答案
C 监听 scroll 事件阻止
D 设置 position: fixed
#

57. 拖拽排序在大量列表项下的性能优化,transform 占位、虚拟列表与 FLIP 技术结合

A 每帧 insertBefore
B 被拖项 transform 跟随、其余项只在目标索引变化时用 FLIP 批量过渡 ✓ 正确答案
C 拖拽中禁用动画
D 使用表格布局
#

58. Pointer Events 的 pointercancel/pointerleave 在拖拽中断场景的处理与恢复策略

A 取消拖拽并回滚到初始状态,释放捕获并清理样式与监听 ✓ 正确答案
B 忽略继续监听
C 立即触发放置
D 抛出错误
#

59. 手势识别库(hammer.js)与原生 Pointer Events 手势检测的工程取舍

A 现代手势库(如 @use-gesture)或成熟的 hammer.js 适配,自实现成本高 ✓ 正确答案
B 手写全部识别器
C 只用 hammer.js 旧版
D 放弃触摸支持
#

60. WebGL 动画的着色器(GLSL)复杂度与移动端 GPU 性能的工程取舍

A 增加纹理采样
B 提高精度到 highp
C 减少每像素指令与采样、避免动态分支,用烘焙/预处理替代逐像素计算 ✓ 正确答案
D 增加 uniform 数量
#

61. WebGL 的 Instanced Rendering 在大量相似物体动画的工程价值

A 减少顶点数
B 简化着色器
C 提高纹理清晰度
D 一次绘制调用渲染大量同几何体对象(每实例属性经 divisor 缓冲传入) ✓ 正确答案
#

62. WebGL 的 Vertex Buffer Object(VBO)

A STATIC_DRAW
B DYNAMIC_DRAW(配合 bufferSubData 局部更新) ✓ 正确答案
C 不设 usage
D STREAM_DRAW 只适合索引
#

63. WebGL 的纹理压缩(DXT、ETC、ASTC)在移动端内存与带宽的工程价值

A JPEG 直传
B WebP
C PNG 无损
D KTX2/Basis Universal(体积小,加载时按平台转码为 DXT/ETC/ASTC) ✓ 正确答案
#

64. WebGL 的 Frustum Culling 在大型 3D 场景的渲染优化工程应用

A 对象与相机的距离
B 对象是否遮挡其他对象
C 对象包围体与视锥六平面的相交测试(视锥外即跳过绘制) ✓ 正确答案
D 对象绘制顺序
#

65. Canvas 2D 在 HiDPI 屏幕的清晰渲染与 devicePixelRatio 适配的工程实践

A 增大 CSS 尺寸
B 使用 SVG
C canvas 内部尺寸设为逻辑尺寸 × DPR,CSS 尺寸保持逻辑,绘制时 ctx.scale(dpr, dpr) ✓ 正确答案
D 提高绘图精度
#

66. WebGL 的 Occlusion Culling 在大型场景的现代工程应用

A 每帧先绘制全部对象再查询
B 查询代替视锥剔除
C 上一帧查询结果决定本帧绘制(先渲染遮挡物,查询低细节包围体,按结果绘制) ✓ 正确答案
D 只在 2D 场景使用
#

67. Canvas 2D 的 filter 属性(CSS filter)在 Canvas 滤镜的工程价值

A ctx.filter = 'blur(8px)' 后绘制(GPU 加速、声明式) ✓ 正确答案
B getImageData 手写卷积
C 多次 putImageData
D 使用 CSS 动画
#

68. WebGL 与 WebGPU 在着色器动画(GLSL vs WGSL)

A 更宽松的类型检查
B 兼容 WebGL1
C 更少的代码
D 计算着色器(workgroup/原子操作)与显式资源绑定模型 ✓ 正确答案
#

69. 触觉反馈(Vibration API)与拖拽反馈

A iOS Safari 不支持 navigator.vibrate,需检测并用视觉反馈降级 ✓ 正确答案
B 只在桌面浏览器可用
C 只能振动一次
D 需要用户付费
#

70. SVG SMIL 动画 vs CSS @keyframes vs Web Animations API 的取舍

A SMIL animateMotion
B CSS offset-path(运动路径,合成器执行) ✓ 正确答案
C 逐帧修改 cx/cy
D 使用图片序列
#

71. CSS Grid grid-template-areas 在 RTL/LTR 国际化的取舍

A 数字更精确
B 支持更多行列
C 性能更好
D 布局按书写方向自动镜像,无需为 RTL 重写布局 ✓ 正确答案
#

72. Cascade Layers(@layer) 在 RTL/LTR 国际化的取舍

A 以层序声明优先级,替代权重博弈与 !important 扩散 ✓ 正确答案
B 提高样式解析速度
C 自动适配 RTL
D 压缩 CSS 体积
#

73. 触摸滚动与拖拽的冲突解决,方向锁定(directional lock)与阈值检测的工程实现

A 随机选择方向
B 首次显著位移的方向(累积 |dx| vs |dy| 比较)锁定手势类型 ✓ 正确答案
C 触摸时长
D 手指数量