SWE / MLE / Applied Scientist · ML / System Design

Amazon Code Generation:上下文、沙箱验证与质量闭环

从编辑器请求到代码候选,设计仓库上下文、测试隔离及可衡量的接受质量。

题目重点:从编辑器请求到代码候选,设计仓库上下文、测试隔离及可衡量的接受质量。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 只问设计code generation,无IDE、语言和自动提交要求。练习给用户建议代码,由用户审阅采纳;生成服务没有生产部署权限。
  • 仓库内容和用户prompt为数据,可能包含敏感文件或恶意指令。隔离执行只运行受限测试,不能让生成候选访问任意网络或密钥。

解题路线

  1. 请求包含当前位置、邻近代码、语言、依赖和仓库版本;上下文服务先权限过滤,再用符号/依赖/检索选相关片段,限制token预算。不是把整个私有仓库拼进每次prompt。
  2. 先做静态parse/typecheck,再在隔离环境跑指定测试;失败返回具体诊断用于有限次修订。单测过不证明全部正确,评测还需隐藏测试、边界和人工代码审查。
  3. 输出diff而非无法定位的完整文件,绑定base commit,应用前检查代码未变化;冲突时重新生成/重base,不直接覆盖用户新改动。
  4. 训练/评估按仓库或时间切分,避免相同题解泄漏。指标分为编译率、测试正确率、用户接受、后续回退与缺陷,不以接受率唯一优化;长建议更容易被剪掉也影响统计。
  5. 服务排队和配额按用户/租户,短补全和长重构区分延迟预算。候选缓存必须包含仓库版本与权限,不能跨租户泄漏同prompt命中的私有代码。

手动走一遍

用户在v10请求补函数,生成候选测试通过;其间用户修改到v11。返回diff声明base v10,应用时检测冲突,不能覆盖v11。候选读网络失败属于沙箱限制,不给它真实凭证让测试过。

规模与取舍

输入context C、输出O及模型结构决定推理成本;LLM全注意力预填充通常有C²项,测试成本按用例与运行时另计。练习峰值100请求/s、平均2s持续时间约200在途,批处理收益与交互尾延迟权衡。

易错点与追问

容易失分的边界

  • 拿可见单测全部通过当语义正确证明。
  • 模型建议直接提交/部署无review。
  • 缓存键忽略repo版本和tenant。

继续深挖

  • 代码补全和自动修复应怎样使用不同权限与回合预算?
  • 怎么检测建议引入未授权依赖或许可证不兼容代码?
✓已复制微信号!