七月的时候,我写了一篇文章《AI 编程助手测评:GitHub Copilot vs 豆包 MarsCode》,推荐了后者。
豆包 MarsCode 团队最近就邀请我,试用他们的新功能"代码练习",它专门用来准备面试和刷题。
试用以后,我有很多想法。
我觉得,AI 会改变程序员的面试,以后是 AI 刷题的后面试时代。
现在的程序员面试,一般都有算法解题。
为了准备面试,大家都会去刷算法题,最常见的就是使用 LeetCode 题库。
LeetCode 是世界最流行的算法题库。它源自美国,专门收集各种面试算法题,目前已经超过了3000道,不少是互联网大厂的真题。
很多同学坚持不懈,每天投入几个小时,做里面的题目,训练自己的算法能力。一般来说,至少要刷200题,面试才较有把握。
(图片说明:上图是某个老外的刷题统计面板,他一年365天,每天都在刷题,一共刷了1500题。)
生成式 AI 出现后,越来越多的人发现,有了 AI,人肉刷题似乎不那么必要了。
今年(2024)8月份,一位美国网友在 Reddit 论坛发了这样一个帖子。
他说,自己写了一个脚本,让 AI 自动求解 LeetCode 算法题,一天之内做了633道题目,正确率达到了86%,成本只要9美元。
这个帖子引起了巨大反响。
既然 AI 可以提示正确答案,为什么不参考 AI 来准备面试呢? 何必坚持苦思冥想、徒手 LeetCode 刷题。
我们完全可以跟着 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 辅助训练。
豆包 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,而是你。
(完)