这不是答案库。每张卡只给问题、源码入口和讨论边界;先用自己的话回答,再打开源码核对。
1. 为什么在原调用处再次求值参数?
入口:prepare_call、resolve_call、runState.resolve。
请区分:提前查找参数失败、原调用处查找失败、准备参数与最终参数不同。哪个阶段能把错误交给 Python?同一值的不同 JSON 表示为什么可能触发保守回退?
2. 什么能回退,什么不能重试?
逐项讨论:handle 为 0、未知 handle、参数失配、工具已完成但返回错误。不要用一句“失败就正常执行”概括它们。
3. 数据会变化时,谁负责 freshness?
当前 opt-in 是什么承诺?如果换成实时价格 API,这个承诺还成立吗?先决定数据语义,不默认添加版本号或证书系统。
4. 取消是不是立刻杀掉一切?
区分 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 章节 解释为什么共享页证据不等于性能收益。