# 1. CRaC(Coordinated Restore at Checkpoint)的原理,JVM 检查点与恢复的协作流程 A CRaC 基于 CRIU 冻结整个进程状态,恢复时跳过初始化,但需应用协同清理/重建资源 ✓ 正确答案 B CRaC 通过重新执行 main 方法实现冷启动优化 C CRaC 只保存堆,不保存线程与 JIT 状态 D CRaC 与操作系统无关
# 2. CRaC 与 Spring Boot 集成,Resource 接口的 beforeCheckpoint/afterRestore 回调 A 检查点前无需清理资源,恢复后自动重建 B beforeCheckpoint 关闭不可冻结资源,afterRestore 重建连接池等,通过 Resource 接口/@Checkpoint 协调 ✓ 正确答案 C CRaC 只支持非 Spring 应用 D 连接池在恢复后无需重建
# 3. 检查点保存的内容,堆、类加载状态与 JIT 编译产物整体冻结,恢复后为何无需重新类加载与预热 A 检查点冻结堆、类加载状态与 JIT 产物,恢复后无需重新类加载与预热 ✓ 正确答案 B 检查点只保存堆,不保存 JIT 编译产物 C 恢复后仍需重新编译所有热点方法 D 检查点无法保存预热状态
# 4. CRaC 与 GraalVM Native Image 的冷启动优化路径对比 A 两者优化路径完全相同 B Native Image 保留全部反射特性 C CRaC 保留 JVM 冻结状态、依赖 CRIU,Native Image 静态编译、动态特性受限 ✓ 正确答案 D CRaC 不依赖操作系统
# 5. CRaC 对网络连接(连接池/线程池/定时器)恢复的处理,为何需要重建资源 A 连接池在恢复后自动保持可用,无需重建 B 文件描述符在恢复后自动有效 C 定时器无需处理 D 连接/FD/定时器等外部资源无法随进程冻结,需 beforeCheckpoint 关闭、afterRestore 重建 ✓ 正确答案
# 6. CRaC 的检查点触发方式,JFR 事件驱动与外部工具(CRIU)协作 A 检查点只能手动触发 B CRIU 与 JVM 无关 C 可通过应用代码、JFR 事件或外部工具触发,底层由 CRIU 执行冻结与恢复 ✓ 正确答案 D JFR 事件无法触发检查点
# 7. CRIU(Checkpoint/Restore In Userspace)在容器环境的使用与权限要求 A CRIU 无需任何权限即可运行 B CRIU 需 ptrace 与特定 CAP_* 能力,受限容器需调整运行时配置 ✓ 正确答案 C CRIU 与内核无关 D CRIU 在容器中一定可用
# 8. CRaC 与 Redis/数据库连接池,检查点前关闭、恢复后重连的边界 A 连接池的连接在恢复后自动有效 B 检查点窗口内可正常处理业务请求 C 连接池无需纳入 CRaC 回调 D 需在检查点前关闭连接池、恢复后重连,并主动预热避免恢复后连接失效 ✓ 正确答案
# 9. CRaC 与虚拟线程的兼容性现状 A 虚拟线程与 CRaC 完全兼容,无需验证 B 虚拟线程的挂起/调度状态冻结是挑战,兼容性在演进,需在目标 JDK 上验证 ✓ 正确答案 C 虚拟线程在检查点后必然失效 D CRaC 不支持任何虚拟线程
# 10. CRaC 在生产中的限制,PID、文件描述符、随机数种子与加密密钥恢复 A 恢复后 PID 与随机种子保持不变,无需处理 B 加密密钥可安全持久化到检查点镜像 C PID 变化、FD 失效、随机种子可预测与密钥落盘都需在恢复后处理 ✓ 正确答案 D 文件描述符恢复后自动有效
# 11. 检查点镜像的安全与合规,敏感内存数据持久化到磁盘的风险 A 检查点镜像不含敏感数据 B 镜像可能持久化密钥/token 等敏感数据,需检查点前清理、镜像加密与访问控制 ✓ 正确答案 C 密钥可安全保存在镜像中 D 镜像文件无需权限控制
# 12. 冷启动优化手段全景,CDS/AppCDS、AOT 缓存、分层 jar 与 CRaC 的收益叠加 A 各手段互斥,只能选其一 B CDS/AppCDS、AOT、分层 jar 与 CRaC 可组合叠加,按启动需求分层采用 ✓ 正确答案 C CRaC 与 CDS 完全冲突 D 分层 jar 只影响磁盘,不影响启动
# 13. 无状态服务与有状态服务的 CRaC 适配差异 A 两者适配完全一致 B 有状态服务更适合 CRaC C 无状态服务状态在外部、适配简单,有状态服务需保证进程内状态一致性并处理检查点窗口 ✓ 正确答案 D 无状态服务无法用 CRaC
# 14. CRaC 与 Kubernetes 的整合,初始化容器做检查点、主容器快速恢复 A 主容器负责做检查点并恢复 B init 容器做检查点、主容器从共享存储恢复,实现毫秒级快速启动 ✓ 正确答案 C 检查点镜像无需共享存储 D 主容器必须重新预热
# 15. 检查点的触发与恢复参数,-XX:CRaCCheckpointTo 指定目录、恢复时重新指定堆大小等 JVM 参数的差异 A -XX:CRaCCheckpointTo 指定检查点目录,恢复时可重新指定堆大小等参数 ✓ 正确答案 B 恢复时只能使用与检查点完全相同的参数 C 恢复参数与检查点参数无关 D 堆大小在恢复时无法调整
# 16. 检查点窗口的流量处理,与 Kubernetes preStop 钩子、优雅下线配合,如何避免检查点期间请求丢失 A 检查点期间可继续处理请求 B 就绪探针与检查点无关 C 通过 preStop 摘流量、就绪探针失败与优雅下线,让检查点窗口无流量,避免请求丢失 ✓ 正确答案 D 检查点期间请求会排队等待
# 17. CRaC 的故障恢复语义,检查点后代码变更失效与版本绑定 A 检查点镜像与代码版本无关,可任意复用 B 旧检查点镜像可安全用于新代码 C 检查点绑定代码版本,代码变更后旧镜像失效,需重新生成并校验版本 ✓ 正确答案 D 恢复时无需校验镜像版本
# 18. CRaC 与 Serverless/FaaS 场景的冷启动收益 A CRaC 对冷启动无帮助 B CRaC 通过恢复预热态实例显著降低 Serverless 冷启动延迟,需环境支持与版本匹配 ✓ 正确答案 C Serverless 环境天然支持 CRaC D 冷启动只影响成本,不影响延迟
# 19. CRaC 的生态系统支持,Spring Boot、Quarkus、Helidon 的 CRaC 支持现状 A 只有 Quarkus 支持 CRaC B 所有框架对 CRaC 支持完全一致 C Spring Boot 不支持 CRaC D Spring Boot、Quarkus、Helidon 均提供 CRaC 集成,但资源处理与成熟度不同 ✓ 正确答案
# 20. 检查点前的预热策略,主动执行代表性请求把热点代码编译进镜像,恢复后首次请求延迟的优化 A 无需预热,恢复后首次请求自动无延迟 B 预热请求会污染所有业务数据 C 主动执行代表性请求触发 JIT 编译,让热点代码随检查点冻结,优化恢复后首次请求延迟 ✓ 正确答案 D JIT 在检查点前自动编译所有方法