面试刷题 Agent:别只报答案,要逼自己讲证明
面试刷题 Agent:别只报答案,要逼自己讲证明
刷题系统如果只给答案,学习效果很有限。面试时,面试官不只看你会不会写代码,还看你能不能讲清思路、证明正确性、分析复杂度、处理边界。一个好的面试刷题 Agent,应该像一个有点严格的面试官,别只报答案,要逼自己讲证明。
我更喜欢把刷题 Agent 分成四步:先追问思路,再要求证明,再跑边界用例,最后让用户复述。只有代码过了,不代表面试过了。
一、面试过程要结构化
flowchart TD
A[题目] --> B[用户讲思路]
B --> C[Agent 追问边界]
C --> D[用户写代码]
D --> E[运行测试]
E --> F[复杂度和证明复盘]
Agent 不应该一上来给标准答案。它可以给提示,但要分层:方向提示、关键观察、伪代码、完整代码。提示太快,学习者会变成复制机器。
二、追问模板要覆盖证明链
interview_prompts:
invariant: "你的循环不变量是什么?"
correctness: "为什么这个选择不会漏答案?"
complexity: "每个指针最多移动几次?"
edge_case: "空数组、重复元素、极值怎么处理?"
这些问题比“你会了吗”有用。会不会,证明链最诚实。
三、代码运行只是其中一步
Agent 要自动跑样例、边界、随机用例。对可暴力验证的小规模题,还可以用 brute force 对拍。
def brute(nums):
best = 0
for i in range(len(nums)):
for j in range(i, len(nums)):
best = max(best, sum(nums[i:j+1]))
return best
对拍能让用户看到:优化算法不是玄学,它和暴力解在小规模上应该一致。
四、复述比看答案更重要
最后让用户用自己的话复述思路。Agent 可以打分:是否讲清状态、转移、边界、复杂度。复述卡住的地方,就是还没真正懂。
学习不是把答案看顺眼,而是能在压力下重新构造出来。面试场景尤其如此。
Agent 还可以给表达反馈。比如用户讲双指针时,只说“左右指针移动”,但没解释为什么不会漏答案,就提示补证明。面试官听的不是关键词,而是逻辑闭环。
answer_score:
idea: 4
correctness_proof: 2
complexity: 3
edge_cases: 2
suggestion: "补充为什么左指针移动不会错过最优解"
这个评分不必太精确,但能让用户知道自己短板在哪里。刷题不只是写代码,也是练表达。
最后,Agent 要避免“鼓励式废话”。别只说“你做得很好”,要指出具体哪里好、哪里还缺。温柔可以有,但别糊弄。
它还可以模拟追问。用户给出 O(n) 解法后,继续问“如果输入全是相同元素怎么办”“如果数组为空怎么办”。这些追问能逼出边界意识。面试里,很多人不是不会写,而是一追问就露出没想全。
follow_up:
- 这个算法在重复元素下是否仍然正确?
- 你能给出循环不变量吗?
- 如果要求返回所有答案,需要改哪里?
追问不是刁难,是帮你提前经历面试压力。
如果 Agent 能把每次追问结果存下来,下一轮训练就能针对性补弱项,而不是重新从零开始问。
五、总结
面试刷题 Agent 不应该只给答案。它要追问思路、要求证明、运行测试、组织复述,帮助用户建立完整表达链。
代码提交通过是题库的终点,但只是面试表达的起点。
更多推荐



所有评论(0)