一、引言
七月的时候,我写了一篇文章《AI 编程助手测评:GitHub Copilot vs 豆包 MarsCode》,推荐了后者。
豆包 MarsCode 团队最近就邀请我,试用他们的新功能"代码练习",它专门用来准备面试和刷题。
试用以后,我有很多想法。
我觉得,AI 会改变程序员的面试,以后是 AI 刷题的后面试时代。
二、面试的 LeetCode 刷题
现在的程序员面试,一般都有算法解题。
为了准备面试,大家都会去刷算法题,最常见的就是使用 LeetCode 题库。
LeetCode 是世界最流行的算法题库。它源自美国,专门收集各种面试算法题,目前已经超过了3000道,不少是互联网大厂的真题。
很多同学坚持不懈,每天投入几个小时,做里面的题目,训练自己的算法能力。一般来说,至少要刷200题,面试才较有把握。
(图片说明:上图是某个老外的刷题统计面板,他一年365天,每天都在刷题,一共刷了1500题。)
三、AI 颠覆 LeetCode
生成式 AI 出现后,越来越多的人发现,有了 AI,人肉刷题似乎不那么必要了。
今年(2024)8月份,一位美国网友在 Reddit 论坛发了这样一个帖子。
他说,自己写了一个脚本,让 AI 自动求解 LeetCode 算法题,一天之内做了633道题目,正确率达到了86%,成本只要9美元。
这个帖子引起了巨大反响。
既然 AI 可以提示正确答案,为什么不参考 AI 来准备面试呢? 何必坚持苦思冥想、徒手 LeetCode 刷题。
四、AI 助手的解题能力
我们完全可以跟着 AI 刷题,做到事半功倍。
我选一道 LeetCode 题目,展示一下这是多么简单的事情。
你是一个 JavaScript 程序员,请补充完成下面的函数。 要求是输入一个代表罗马数字的字符串(比如"IX"),该函数会返回对应的阿拉伯数字(比如9)。 /** * @param {string} s * @return {number} */ var romanToInt = function(s) { };
选择上面这道题,主要是因为它很短,便于展示。而且,这道题的难度不大,但需要考虑多种情况,很适合用在初级面试。
我选择的 AI 工具,就是 VS Code 编辑器的豆包 MarsCode 插件,它是免费的。
在 VS Code 代码编辑器里,从左边栏打开该插件(如果未安装,可以在插件市场搜索"MarsCode")。然后,在对话框输入题目。
稍等片刻,AI 就会给出答案以及代码解释。
哪个地方看不懂,就向 AI 询问。
这节省多少时间啊,大大加快了刷题速度。
五、后面试时代
可以看到,AI 能够快速解决面试算法问题,那么,基于算法解题的面试模式,是不是应该有所改变了?
现在的互联网大厂,都允许工作中使用 AI 模型,面试再要求"徒手解题",已经有点过时了。
AI 将越来越普及,如果未来的面试不使用 AI,就好像不使用 IDE 编辑器一样不合理,应该允许程序员在面试中使用日常工具。
我的想法是,面试的考察重点可能会改变,从让面试者解题,变成让面试者解释和审查 AI 生成的代码。
面试时,给你一段 AI 生成的解题代码,让你解释这段代码,并且修正里面的错误和没有考虑到的地方。
这样做有很多好处:(1)更贴近程序员的实际工作模式;(2)能看出程序员的代码阅读和理解能力;(3)难以事前准备或作弊;(4)更能反映一个人的协作能力;(5)也适用于偏向阅读代码而不是编写代码的岗位,比如项目经理、架构师等等。
这可以称为"基于 AI 的后面试时代",即面试从考察编码解题能力,演变到考察代码的审查理解能力。
六、AI 陪练功能
现在已经有很多工具,为面试提供 AI 辅助训练。
豆包 MarsCode 的"代码练习"就是一个最新的尝试。我用了以后,觉得对准备面试、有效刷题真的有帮助,可以训练自己与 AI 协同编程。
它是一个基于云 IDE 的专门页面,内置了上百道字节跳动的面试真题。
所有相关操作都集中在这个页面上,只要有浏览器就可以使用,刷题全过程不必切换页面,大大方便了使用:选题、解题、调试、AI 对话......
而且,它是免费的,大家现在就可以试试看:进入豆包 MarsCode 官网,点击顶部菜单的"代码练习",就可以进入。
这个页面是云 IDE,不需要任何安装,打开后直接在浏览器使用。
默认状态下,页面分成四栏。左侧是面试真题的目录,目前有100道,以后还会不断增加。选中一道题目,点击后可以看到具体内容。
页面右侧是代码框和 AI 框。
在代码框,需要首先选择你的编程语言,共有8种可选(Python、JavaScript、Go、C++、C、Java、Rust、TypeScript),上图是 JavaScript。然后,输入解题代码,再点击顶部的运行按钮,就可以看到运行结果。
在 AI 框,则是三个预设选项,点击后就可以让 AI 提示思路、代码、检查代码。下方还有对话框,用来跟 AI 对话。
一般来说,拿到题目后,(1)先点击"需要一点思路提示",让 AI 帮助你理解题目。(2)再点击"给我一些代码提示吧",让 AI 给出初步代码。(3)你修改和完善代码,再点击"帮我检查一下代码",看看会不会报错。
此外,这个页面还集成了 IDE 功能,比如语法检查和代码调试。随着代码键入,会自动给出用法提示(下图)。
这样的"代码练习",堪称面试刷题的利器,我觉得,面试指导书籍和辅导班可能都不需要了,以后都会被淘汰。
七、总结
AI 改变软件行业,也必然改变程序员的面试求职。
AI 刷题是未来的趋势,善用者将更容易通过面试,拿到心仪的 offer。
但是,需要提醒的是,AI 只是工具,生成的代码不一定正确和安全,而且项目之中也不应该有黑箱。
正确的做法是,使用 AI 但不依赖,思路比答案更重要,只有理解了每一行代码,才能接受它的结果。我们使用 AI 的首要目的,永远是提升自己的能力,而不是让 AI 替代我们,代码的最后责任人的不是 AI,而是你。
(完)
张大壮 说:
阮老师非常期待讲解下关于“杰弗里·辛顿”涉及的神经网络文章。
2024年10月10日 09:25 | # | 引用
Kifary 说:
刷题是最低效的学习方法
2024年10月10日 09:32 | # | 引用
shylock 说:
那应该怎么学习
2024年10月10日 10:52 | # | 引用
kayotin 说:
虽然是恰饭,但是这个工具确实挺好用的。在Pycharm里也可以直接使用。
2024年10月10日 17:15 | # | 引用
Kai 说:
刷题还是需要思考的,AI 提示和自己想出来是两回事。
2024年10月10日 23:57 | # | 引用
狗头保命 说:
雇会学习的人,然后让他们搞知识付费项目,给我挣钱
2024年10月11日 11:23 | # | 引用
openqt 说:
拿AI刷题,就好比下棋不自己下,让AI去下,没有乐趣也锻炼不了棋艺。
2024年10月11日 14:12 | # | 引用
MGhostSoft 说:
我不否认 AI 在刷题中的价值,但是在罗马数字的例子中,当你让 AI 解释代码的时候,它只是机械地把每行代码直接做什么说了出来,却没真讲清楚为什么这样的算法能解决原问题,更没提到是如何从问题想到这个解法的。
2024年10月12日 12:15 | # | 引用
b2u 说:
現實中碼農幾乎不可能遇到沒人遇過的算法問題,遇到問題google一下就有思路了,手搓苦練算法題跟在學校背公式考試差不多
2024年10月13日 14:38 | # | 引用
Nobita 说:
有实际工作中用过豆包的copilot吗?我一直用的githubCopilot,但是每个月10刀真不便宜,想知道这俩区别大不大
2024年10月15日 19:48 | # | 引用
Lyk 说:
技术总在解放着什么,终有一天人类大脑也会被解放哈哈哈
2024年10月16日 11:38 | # | 引用
xu 说:
人还是要有思考的
2024年10月17日 10:43 | # | 引用
胡楚昊 说:
在学习代码的时候,AI确实可以给出一个问题的解答,大大节约时间。但是不知道ai以后会带来什么
2024年10月17日 18:06 | # | 引用
zhengyiming 说:
我认为AI辅助是必然,前提还是人的思考
2024年10月19日 08:06 | # | 引用
ptbsman 说:
赞同,至少要做到对自己写下的代码理解得七七八八才敢拿来用,每次选择和思考都是在权衡利弊
2024年10月21日 15:29 | # | 引用
刘祖宽 说:
刷题还是很重要的,因为很多人思维能力不强,会被过滤掉,很难理解中等难度的题
2024年10月23日 21:17 | # | 引用
space 说:
前期用ai练感觉,后面就自己想吧
2024年10月28日 17:52 | # | 引用
weijiegao 说:
AI是军师,主帅是我
2024年11月 1日 10:41 | # | 引用