专栏名称: 阮一峰的网络日志
互联网开发,个人生活随感
目录
相关文章推荐
数智前线  ·  OB ... ·  3 天前  
数智前线  ·  OB ... ·  3 天前  
寻熵研究院  ·  9月16.4GWh储能招投标分析:大唐/蒙能 ... ·  3 天前  
51好读  ›  专栏  ›  阮一峰的网络日志

后面试时代与 AI 刷题

阮一峰的网络日志  · 公众号  · 互联网安全 科技自媒体  · 2024-10-10 08:29

正文

一、引言

七月的时候,我写了一篇文章《AI 编程助手测评:GitHub Copilot vs 豆包 MarsCode》,推荐了后者。

豆包 MarsCode 团队最近就邀请我,试用他们的新功能“代码练习[1]”,它专门用来准备面试和刷题。

试用以后,我有很多想法。

我觉得,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 的专门页面[2],内置了上百道字节跳动的面试真题

所有相关操作都集中在这个页面上,只要有浏览器就可以使用,刷题全过程不必切换页面,大大方便了使用:选题、解题、调试、AI 对话……

而且,它是免费的,大家现在就可以试试看:进入豆包 MarsCode 官网[3],点击顶部菜单的“代码练习[4]”,就可以进入。

这个页面是云 IDE,不需要任何安装,打开后直接在浏览器使用。

默认状态下,页面分成四栏。左侧是面试真题的目录,目前有100道,以后还会不断增加。选中一道题目,点击后可以看到具体内容。

页面右侧是代码框和 AI 框。

在代码框,需要首先选择你的编程语言,共有8种可选(Python、JavaScript、Go、C++、C、Rust、TypeScript),上图是 JavaScript。然后,输入解题代码,再点击顶部的运行按钮,就可以看到运行结果。

在 AI 框,则是三个预设选项,点击后就可以让 AI 提示思路、代码、检查代码。下方还有对话框,用来跟 AI 对话。

一般来说,拿到题目后,(1)先点击“需要一点思路提示”,让 AI 帮助你理解题目。(2)再点击“给我一些代码提示吧”,让 AI 给出初步代码。(3)你修改和完善代码,再点击“帮我检查一下代码”,看看会不会报错。

此外,这个页面还集成了 IDE 功能,比如语法检查和代码调试。随着代码键入,会自动给出用法提示(下图)。

这样的“代码练习[5]”,堪称面试刷题的利器,我觉得,面试指导书籍和辅导班可能都不需要了,以后都会被淘汰。

七、总结

AI 改变软件行业,也必然改变程序员的面试求职。

AI 刷题是未来的趋势,善用者将更容易通过面试,拿到心仪的 offer。

但是,需要提醒的是,AI 只是工具,生成的代码不一定正确和安全,而且项目之中也不应该有黑箱。

正确的做法是,使用 AI 但不依赖,思路比答案更重要,只有理解了每一行代码,才能接受它的结果。我们使用 AI 的首要目的,永远是提升自己的能力,而不是让 AI 替代我们,代码的最后责任人的不是 AI,而是你。

(完)

References

[1] 代码练习: https://sourl.cn/PzDdn2
[2] 专门页面: https://sourl.cn/mMbyYL
[3] 豆包 MarsCode 官网: https://sourl.cn/gfce3V
[4] 代码练习: https://sourl.cn/mMbyYL
[5] 代码练习: https://sourl.cn/mMbyYL