PPysolate SpineREAD THE CODE · UNDERSTAND THE SYSTEM
课程与章节
IMPLEMENTATION / 13

六张追问卡

带源码入口的问题,不替你写标准答案。

本章目录

这不是答案库。每张卡只给问题、源码入口和讨论边界;先用自己的话回答,再打开源码核对。

1. 为什么在原调用处再次求值参数?

入口:prepare_call、resolve_call、runState.resolve。

请区分:提前查找参数失败、原调用处查找失败、准备参数与最终参数不同。哪个阶段能把错误交给 Python?同一值的不同 JSON 表示为什么可能触发保守回退?

2. 什么能回退,什么不能重试?

入口:prepare、resolve。

逐项讨论:handle 为 0、未知 handle、参数失配、工具已完成但返回错误。不要用一句“失败就正常执行”概括它们。

3. 数据会变化时,谁负责 freshness?

入口:New、demoTools。

当前 opt-in 是什么承诺?如果换成实时价格 API,这个承诺还成立吗?先决定数据语义,不默认添加版本号或证书系统。

4. 取消是不是立刻杀掉一切?

入口:runState.close、Runner.run。

区分 Wasm 执行、协作式 Go 工具和不响应 context 的函数。为什么 Run 结束前要等待 worker?如果工具忽略取消,你会向面试官说明什么限制?

5. Prefix 收到半句或后来出现分支怎么办?

入口:Prefix.feed、Prefix.candidate、Prefix.claim。

哪些输入只被解析、哪些读取可以启动?收齐后无法做 whole-program 优化时,为什么仍可能领取前面准备的结果?不新增预测逻辑,先解释现有范围。

6. Full-copy 和 COW 的区别是什么?

入口:NewPrepared、newGuest。

指出 full-copy 真正复制的对象、COW 共享的对象、两条路径的恢复时点,以及没有复制的 Host 资源。能否把正在处理用户请求的 Guest 直接作为公共 image?结合 COW 章节 解释为什么共享页证据不等于性能收益。