本章你将学到
[
- 🎯 与 AI 协作的 5 条黄金规则(可直接背)
- 🎯 6 组坏 Prompt → 好 Prompt 对照(可照抄)
- 🎯 AI 擅长什么、不擅长什么(2 列清单)
- 🎯 识别 AI "confabulation"(胡编)的 6 个信号
- 🎯 60 分钟的开场 5 分钟 + 中段 45 分钟标准脚本
这是本课程最重要的一章。 评分标准告诉你面试官在打什么分;这一章告诉你 60 分钟里该怎样表现才能赚到那些分。
6.1 规则 1:自己主导逻辑
[
在碰 AI 面板之前,先把思路告诉面试官。如果你不能用两句话说清楚思路,你就还没准备好提问。
-
❌ 差:(沉默。把题目粘给 AI。复制回复。)
-
✅ 好:
"这是一个带更丰富状态的 BFS。状态是
(row, col, keys_bitmask),因为每拿一把钥匙都会改变能过哪些门。我先写 BFS 骨架,然后加钥匙逻辑。"
评分奖励工程判断,而判断发生在前 30 秒。
📌 第 5 分钟自检:问自己
"我能不用 AI、慢一点自己写出来吗?"
答不能 —— 你就没法评估 AI 给你的东西。暂停,重读题。
6.2 规则 2:细粒度提问
[
好提问命中一件具体的事。差提问描述整个问题。
6 组对照(可照抄的模板)
[
对照 1 · 要一个算法
[
- ❌ "这道迷宫题最好的解法是什么?"
- ✅ "我用 BFS。状态
(row, col, keys)。写一个bfs(grid, start, target)返回最短步数或 -1。用 deque 和(row, col, keys)的 visited 集合。先只要 baseline,不要闸门/传送门。"
对照 2 · 让它修 Bug
[
- ❌ "测试失败,请修 Bug。"
- ✅ "测试
test_directional_gate失败,报expected 7 got 9。我怀疑 Bug 在can_move_through_gate(current, next)——<闸门比较可能current和next搞反了。能审查那个函数吗?"
对照 3 · 让它重构
[
- ❌ "把这段代码整理一下。"
- ✅ "
process_cell函数 50 行。请把闸门检查抽成is_gate_passable(cell, direction)返回 bool,把钥匙收集抽成collect_keys(cell, keys_state)返回新钥匙状态。BFS 主循环不变。"
对照 4 · 要优化
[
- ❌ "让它更快。"
- ✅ "当前 O(H × W × 2^K),K 最多 10;阶段 3 K 最多 20。两个思路:(a) keys_mask == all_keys_mask 提前终止;(b) 预计算钥匙之间可达性。哪个更好,为什么?"
对照 5 · 写测试
[
- ❌ "写测试。"
- ✅ "写 3 个 unittest:(1) 空网格返回 -1;(2) 5×5 无钥匙清晰路径,返回曼哈顿距离;(3) 必须先拿 3 把钥匙才能出去。每个用 ASCII 字符串描述网格,在辅助函数里解析。"
对照 6 · 卡住时
[
- ❌ "我不知道怎么办。"
- ✅ "我用
(row, col, keys)状态实现了 BFS。小网格对,50×50 超时。不确定瓶颈是状态爆炸(2^K)还是 Python 元组哈希开销。重构前,能加计时插桩让我确认时间花哪了吗?"
模式:好 Prompt 永远包含「你知道的 + 你怀疑的 + 你想要的具体输出」。
📌 发送前自检:问
"我期望什么具体输出?"
如果一句话描述不出来,重写 Prompt。
6.3 规则 3:小块验证后才粘贴
[
每条 AI 回复是不可信输入。粘进编辑器前:
- 逐行读
- 重命名:AI 的
tmp改成你的current_node - 删注释:AI 的投机性注释不要
- 写测试:能抓 AI 错误的一个小测试
AI 给你 30 行代码你一次性集成 → 你放弃了 30 个发现错误的机会。
对比
[
- ❌ 差:AI 产出 40 行 BFS,你粘贴、保存、测试通过、继续。
- ✅ 好:AI 产出 40 行 BFS,你读一遍,发现
visited没含 keys bitmask,说出声 "这在多钥匙时不对",改、粘、保、测、过。
6.4 规则 4:AI 是初级 pair,不是神谕
[
AI 既有用也会错。心态:
- 质疑建议:"这里为什么用堆而不是 deque?"
- 带理由拒绝:"不,这不保留顺序;改 X。"
- 给它缺失上下文:"看
maze.py的Maze类 —— 用同一个Direction枚举。" - 让它做枯燥的事:样板、测试脚手架、字典转 JSON、堆原语。
- 不让它决定算法:那是你的工作。
Meta 内部说法:
"表现好的候选人用自己的思路引导 AI,不是请 AI 给整体方案。"
6.5 规则 5:流水线化工作
[
AI 生成时(5-15 秒),不要闲着。做:
- 回顾之前的 AI 输出(还没重读的 40 行)
- 向面试官叙述下一步
- 写下一个测试用例
- 查看文件树 —— 有什么辅助函数可复用?
60 分钟里这能省下 5-10 分钟死等时间。
6.6 AI 擅长什么 vs 不擅长什么
[
✅ AI 擅长
❌ AI 不擅长
写已知数据结构样板(字典树、堆、LRU)
找到你这道题的核心算法洞察
等价转换(循环转递归、Python 转 JS)
调试它没完整看过的你的代码
解释某个函数做什么
可靠地抓你的 off-by-one
生成测试脚手架
推理你数据模型特有的边缘情况
计算已知算法 Big-O
发现状态定义里的细微正确性问题
写地道语言构造
理解你大声说了但没写下来的约束
机械重构(提取、重命名)
在 tradeoff 之间做判断
这张表告诉你什么该委派、什么不该委派。
6.7 如何识别 AI 在"胡编"(Confabulation)
[
6 个信号:
- 引用你代码里不存在的函数或变量
- 复杂度分析的项与你的状态对不上
- "修复"改了和失败测试无关的代码
- 编造起始代码里没有的 import
- 断言"这应该能跑"不解释为什么
- 回复比需要的长 —— 啰嗦意味着不确定
看到任一种,停下、重读,要么重写 Prompt,要么自己写。
6.8 开场 5 分钟标准脚本
[
可复用脚本(照抄):
"让我花一会儿读题。"
(30 秒静读)
"好,这是带方向符号的迷宫,找从 S 到 E 的最短路径。"
(大声复述)
"一个问题 ——
<和>可以是起点或终点,还是只能穿过?"(澄清)
"看一下起始代码。"
(打开每个文件)
"好。
maze.py有带 Bug 的 BFS。tests.py测路径长度。utils.py有方向元组。我觉得can_move有边界 off-by-one。先跑测试确认。"(假设)
(跑测试,确认)
"就是这里 ——
<=应该是<。改一下。"(叙述修复)
5 分钟开场,4 个维度都拿分,没写一行 AI 代码。
6.9 中段 45 分钟节奏循环
[
好的阶段 2 是重复的 5 分钟循环:
- 叙述下一块要写的(30 秒)
- 提问 AI 用细粒度请求(30 秒)
- 读回复(30-60 秒)
- 编辑 AI 代码到文件,重命名、清理(1 分钟)
- 加一个测试跑这段(1 分钟)
- 运行并观察(30 秒)
- 叙述结果(30 秒)
循环 6-8 次。你会代码干净、全程叙述、持续测试地完成阶段 2。
6.10 心智模型 · 你是机长
[
你是机长。AI 是非常快的副驾驶,有超人手册但无判断力。
你决定去哪里。你决定检查什么。你读每一个仪表。
副驾驶打字更快,但你让他往山上飞他就往山上飞。
6.11 另一个心智模型 · 你是资深评审
[
想象 AI 每天写 100 个 PR,你是资深评审。
- 不读就 merge 吗?当然不会。
- 不读就拒绝吗?当然不会。
- 你读、问、提改进、偶尔带理由拒绝。
每一条 AI 回复 = 一个等你评审的 PR。
6.12 本章小结
[
- 5 条黄金规则:主导 / 细粒度 / 小验证 / 初级 pair / 流水线
- 6 组 Prompt 对照是可照抄的模板 —— 背它们
- AI 擅长清晰任务,不擅长判断性任务 —— 分清楚
- 识别 confabulation 有 6 个信号
- 开场 5 分钟 + 中段 45 分钟 节奏有标准脚本
6.13 思考题
[
- 把 5 条规则按你个人的"最容易忘"排序。你最需要盯的是哪条?
- 从 6 组 Prompt 对照里挑你最容易写差版本的那组。重写 3 个你的变体。
- 写一个你自己的"开场 5 分钟脚本" —— 针对一道你刚刷过的题。