跨端工程化与发布

共 34 题
#

1. Electron 的 nativeTheme 与 OS 主题集成

A nativeTheme 只能在渲染进程使用
B nativeTheme 暴露系统主题状态并支持 themeSource 控制,需通过 IPC 联动渲染层并用设计 Token 治理适配 ✓ 正确答案
C 主题切换只影响主进程
D prefers-color-scheme 在 Electron 中不可用
#

2. 启动速度优化与 v8-compile-cache

A v8-compile-cache 会把源码缓存到内存
B v8-compile-cache 缓存 V8 字节码到磁盘避免重复编译,是启动优化手段之一,需与代码分割、快照等配合 ✓ 正确答案
C 启动速度只取决于硬件
D 缓存永远不会失效
#

3. electron-builder 的 code signing(macOS 公证 + Windows EV 证书)

A macOS 应用签名后无需公证即可无警告安装
B EV 证书与普通证书效果相同
C macOS 需 Developer ID 签名加公证,Windows 用 EV 证书提升 SmartScreen 信任,CI 中需安全托管私钥 ✓ 正确答案
D 签名可以在打包后再修改内容
#

4. electron-builder/electron-forge 在打包/签名/公证/多平台构建的工程取舍

A electron-builder 配置优先且内置更新体系,electron-forge 插件化并贴近官方工作流,多平台构建均依赖 CI 矩阵 ✓ 正确答案
B electron-builder 与 electron-forge 使用完全相同的配置
C electron-forge 不支持代码签名
D 多平台构建必须在同一台机器完成
#

5. Electron 的 webContents.printToPDF/capturePage 在桌面端的能力

A printToPDF 会弹出系统打印对话框
B printToPDF 把页面渲染为 PDF 适合导出场景,capturePage 捕获 webContents 区域图像,均需等待渲染完成 ✓ 正确答案
C capturePage 可以截取整个屏幕
D printToPDF 不关心页面渲染状态
#

6. Vite/Webpack 集成 Electron 的项目结构

A Electron 项目只需一套构建配置
B Electron 项目需分别构建主进程、preload 与渲染层,用 electron-vite 或多 target 的 Webpack 配置协同 ✓ 正确答案
C 主进程可以直接打包进渲染层 bundle
D 渲染层可以使用任意 Node 模块
#

7. asar 打包与安装包瘦身策略

A asar 是压缩格式,天然最小化体积
B asar 归档提升加载与防篡改,瘦身需从依赖裁剪、资源压缩、框架裁剪与构建压缩多层治理并设体积预算 ✓ 正确答案
C 所有文件都应 asarUnpack 外置
D sourcemap 应保留在安装包内
#

8. contentScript/V8 Snapshot/Code Caching 在启动速度的工程价值

A V8 Snapshot 缓存的是编译后的字节码
B 启动优化不需要性能测量
C Code Caching 无需失效机制
D V8 Snapshot 恢复预构建的堆状态,Code Caching 跳过编译,两者配合可降低 Electron 启动各阶段耗时 ✓ 正确答案
#

9. ASAR 归档与 asarUnpack 在大文件/原生依赖的工程价值

A 原生模块可以在 asar 内被 dlopen 直接加载
B asar 内文件可以通过真实路径被外部程序访问
C asarUnpack 会加快启动速度
D asarUnpack 把需真实路径的原生依赖解出到 unpacked 目录并由运行时重定向,应按需最小化使用 ✓ 正确答案
#

10. 自动更新(autoUpdater + Electron Updater)的灰度与回滚

A 自动更新会同时推送给所有用户
B electron-updater 按平台产物差分更新,灰度由服务端策略与可观测性门禁控制,回滚需双向版本兼容 ✓ 正确答案
C 回滚只能靠用户手动卸载重装
D 更新失败不会影响启动
#

11. 多平台差异化构建与 CI/CD

A macOS 产物可以在 Windows runner 上签名公证
B CI 不需要缓存依赖
C 所有平台产物用同一套证书
D 多平台构建用平台原生 runner 矩阵,证书经密钥服务注入,发布由 tag 驱动并生成构建指纹 ✓ 正确答案
#

12. Electron Forge(Electron 团队推荐)在项目脚手架与发布的工程价值

A Electron Forge 只能打 Windows 包
B Electron Forge 提供插件化脚手架与发布体系(makers/publishers),与 Electron 官方安全策略同步演进 ✓ 正确答案
C Electron Forge 不支持 TypeScript
D Forge 与 electron-builder 配置完全互通
#

13. Electron 的自动更新(autoUpdater)通过 Squirrel 的工程实践

A autoUpdater 在 Linux 上同样可用
B autoUpdater 在 Windows 走 Squirrel.Windows、macOS 走 Squirrel.Mac,需处理安装事件、更新时机与失败降级 ✓ 正确答案
C Squirrel 更新不需要签名校验
D 开发模式即可完整验证更新流程
#

14. Electron 的 notarization(Apple 公证)

A Apple 公证需先 Developer ID 签名再提交公证并合并票据,产物修改会导致公证失效 ✓ 正确答案
B 公证后的安装包可以随意修改
C 公证可以在 Windows 环境完成
D 公证是可选项
#

15. Electron Forge 的 Makers(packager、deb、rpm、msi)

A Forge Makers 把打包后的应用目录转为各平台安装包,deb/rpm 需对应 Linux 环境,msi 适合企业静默分发 ✓ 正确答案
B Makers 直接把源码打成安装包
C 所有安装包格式都可以在任何平台生成
D msi 不支持静默安装
#

16. Electron 的 electron-updater 与 GitHub Releases 自动更新的工程实践

A electron-updater 读取 latest.yml 元数据并按 blockmap 差分更新,资产发布到 GitHub Releases 且需处理灰度与失败 ✓ 正确答案
B electron-updater 每次全量下载安装包
C GitHub Releases 必须公开才能更新
D 更新过程不需要签名校验
#

17. Electron Preload 在 contextBridge、contextIsolation 的工程应用

A preload 可以直接操作 DOM
B contextIsolation 开启后 preload 无法通信
C preload 在隔离 context 中通过 contextBridge 暴露白名单 API,保持薄桥职责并做参数校验 ✓ 正确答案
D preload 中应包含完整业务逻辑
#

18. Electron 的 CSP 与 Trusted Types 在桌面应用的工程价值

A file:// 页面可以通过响应头设置 CSP
B Trusted Types 开启后 innerHTML 可以任意使用
C CSP 控制内容来源、Trusted Types 约束 DOM 赋值,两者构成双层 XSS 防护,file:// 下 CSP 需用 meta 配置 ✓ 正确答案
D 远程内容不需要严格 CSP
#

19. Electron Forge 的 Vite 模板在开发体验的工程应用

A Forge Vite 模板让三端统一走 Vite 构建,渲染层 HMR 且主进程改动自动重启,开发与打包管线衔接 ✓ 正确答案
B Vite 模板中渲染层无法热更新
C 主进程与渲染层使用完全相同的构建配置
D preload 可以使用 ESM 直接打包
#

20. Electron 的 Performance Profiler 在内存与启动优化的现代实践

A 内存泄漏只能靠重启解决
B Electron 性能剖析需结合 DevTools 时间线、堆快照与进程监控,并沉淀为 CI 基准与泄漏测试 ✓ 正确答案
C 启动剖析无法记录主进程耗时
D 内存增长都意味着泄漏
#

21. Electron 的 framerate 与 GPU 渲染在视频应用的工程取舍

A 视频应用需权衡硬件加速与驱动兼容,用帧回调与 GPU 进程监控保障帧率并提供降级路径 ✓ 正确答案
B 硬件加速在所有设备上都稳定
C 视频解码完全依赖 CPU
D 帧率无法在 Electron 中测量
#

22. Electron 的 offscreen rendering 在视频编辑软件的工程应用

A offscreen 窗口也会显示在屏幕上
B offscreen rendering 通过 paint 事件输出帧,适合缩略图与预览等后台渲染,需按需渲染并治理内存 ✓ 正确答案
C offscreen 渲染不支持捕获帧
D offscreen 渲染必然使用 GPU 加速
#

23. V8 Isolate / V8 Snapshot 在 Electron 启动性能的工程价值

A 每个 Electron 进程拥有独立 Isolate,V8 Snapshot 反序列化预构建堆状态缩短启动,需与代码缓存分层使用 ✓ 正确答案
B V8 Snapshot 缓存的是编译字节码
C Snapshot 可以包含任意异步状态
D 快照构建不影响启动性能
#

24. Electron 内存管理(webContents 隔离、Node Memory)

A 渲染进程关闭后内存自动全部回收
B 内存问题只能靠重启解决
C Node 侧缓存不需要管理
D Electron 内存治理需分进程定位,窗口与监听器引用需随生命周期清理,并用泄漏回归测试监控 ✓ 正确答案
#

25. Electron Fiddle 与 DevTools 扩展在前端工程师的协作

A Electron Fiddle 便于最小复现与分享,DevTools 扩展可接入渲染层调试,配合规范与知识库提升协作效率 ✓ 正确答案
B Electron Fiddle 无法分享代码
C DevTools 扩展无法在 Electron 中加载
D 生产环境也应加载全部调试扩展
#

26. XSS 防护、CSP、最小权限原则与禁止加载远程内容

A Electron 渲染层可以完全信任
B Electron 安全需渲染层按不可信处理(三件套 + CSP),禁止远程内容进主 UI 并按最小权限暴露主进程能力 ✓ 正确答案
C nodeIntegration 开启后 XSS 危害不变
D 远程内容与本地内容安全等级相同
#

27. 内存泄漏排查与渲染进程隔离

A 泄漏只能通过重启应用解决
B 窗口关闭后内存一定回收
C 事件监听器不需要移除
D 泄漏排查用快照对比与保留路径定位,进程隔离让单窗口泄漏可控并可自动恢复,需配回归测试与监控 ✓ 正确答案
#

28. Web Worker 在 Electron 的多线程能力

A Web Worker 可以访问 Electron 主进程能力
B postMessage 默认零拷贝
C Web Worker 在渲染进程内并行计算不阻塞 UI,系统能力仍走 IPC,Node 侧耗时任务用 worker_threads ✓ 正确答案
D Worker 不需要生命周期管理
#

29. Electron 的 Power Management API(阻止系统休眠)

A powerSaveBlocker 申请后自动释放
B 该 API 在 Linux 上所有版本都完全一致
C 阻止休眠不会影响用户设备
D powerSaveBlocker 可阻止系统休眠以保护下载/录制任务,但必须用后即释并处理平台差异 ✓ 正确答案
#

30. Electron Builder 的多渠道发布(stable、beta、internal)

A 所有渠道共用同一个 latest.yml
B internal 渠道不能用于内部测试
C 渠道之间版本号没有约束
D 多渠道通过不同 channel 生成独立更新元数据,客户端按通道订阅,配合灰度与升级策略管理发布 ✓ 正确答案
#

31. Electron 的 Deep Linking(自定义协议)的现代应用

A 自定义协议经平台注册后可由外部唤起,需配合单实例锁传递参数并做严格校验,用于 OAuth 回调与直达场景 ✓ 正确答案
B Deep Link 不需要注册协议即可唤起
C Windows 上无需注册表即可接收链接
D 唤起链接参数可以无条件信任
#

32. Electron 的 WebContents 与 will-navigate、new-window 的安全工程

A window.open 会直接打开新 Electron 窗口
B 导航校验只需要检查一次
C will-navigate 与 setWindowOpenHandler 让主进程统一校验导航与开窗,外链走系统浏览器且校验需覆盖重定向 ✓ 正确答案
D webview 标签默认安全
#

33. Electron 与 Tauri 选型(包体积、内存、安全、平台特性)

A Tauri 与 Electron 都内置 Chromium
B Electron 内置 Chromium 渲染一致但包体大,Tauri 用系统 WebView 包体小,选型需权衡渲染一致性、内存与生态 ✓ 正确答案
C Tauri 的安全模型弱于 Electron
D Tauri 支持全部 Chromium 特性
#

34. chrome devtools protocol 在 Electron DevTools 的工程价值

A CDP 只能用于手动调试
B CDP 命令在所有 Chromium 版本中不变
C webContents.debugger 暴露 CDP 可编程能力,支撑自动化测试、性能追踪与诊断,但生产环境应关闭 ✓ 正确答案
D CDP 无法模拟网络条件