时下 ChatGPT 已成为不少人编码、写作、搜索的辅助工具。然而,不久之前技术招聘平台 CoderPad 发布了一份《2024 年技术招聘现状》报告显示,23% 的招聘人员和招聘经理认为候选人在技术测试或者编码面试中使用 AI 是作弊行为,这也让不少程序员在使用 AI 时有所顾虑。
不过现实来看,有多少人会在编码面试中使用 ChatGPT?以及 ChatGPT 来协助“作弊”难易度如何?ChatGPT 是否扼杀了软件工程基本的编码能力?这可以让更多的程序员拿到门槛较高的大厂 offer 吗?提出 LeetCode 问题的公司是否需要对面试流程进行重大改变?
对此,一位前 Google 工程师 Michael Mroczka 在 Interviewing.io 平台上进行了一项实验,招募了一些专业的采访者和用户进行了作弊实验,揭晓在技术面试中用 ChatGPT 作弊究竟有多难。
结论抢先看:
借助 ChatGPT 工具,候选者在解决三种不同类型的面试问题时,通过率分别为:73%(LeetCode 原版问题)、67%(修改后的 LeetCode 问题)、25%(面试官自定义的面试问题)
没有一位面试官发现有候选人用 ChatGPT 作弊
实验对象
Interviewing.io 是一个练习面试和工程师招聘的平台。工程师们可以通过该平台进行模拟面试,而公司则可以通过此平台招聘表现优异的候选人。
面试官
参与本次实验的面试官们来自 Interviewing.io 专业的面试官库。为了不干扰面试官的判断,实验中并没有告知他们这是一个有关借助 ChatGPT 作弊的测试,而只是说这个研究旨在了解「随着时间的推移,面试官决策的可预测性趋势——尤其是在提出标准或者非标准问题时的区别」。
面试官被分成三组,每组提问不同类型的问题:
LeetCode 上原版问题:直接从 LeetCode 上提取原版问题,不做任何修改,面试官可以自行决定要问哪些。例如:Sort Colors LeetCode 问题,按照原版方式提问。
修改后的 LeetCode 问题:从 LeetCode 中提取问题,然后把提问的方式稍作修改。例如:上面的 Sort Colors 问题,可以修改为输入中有四个整数 (0,1,2,3),而不是只有三个整数 (0,1,2)。
自定义面试问题:面试官设计一个与 LeetCode 平台上任何面试题都不直接相关的问题。例如:你会得到一个格式如下的日志文件:<username>: <text> - <contribution score>,你的任务是找出对话参与度中位数的用户。只考虑贡献分大于 50% 的用户。假设这样的用户数量是奇数,你需要找到按贡献分排序后处于中间位置的用户。根据下面的文件,正确答案是 SyntaxSorcerer。
LOG FILE START
PointerNinja: "who's going to the event tomorrow night?" - 100%
LambdaLancer: "wat?" - 5%
PointerNinja: "the event which is on 123 avenue!" - 100%
SyntaxSorcerer: "I'm coming! I'll bring chips!" - 80%
SyntaxSorcerer: "and something to drink!" - 80%
LambdaLancer: "I can't make it" - 25%
LambdaLancer: "?" - 25%
LambdaLancer: "I really wanted to come too!" - 25%
BitwiseBard: "I'll be there!" - 25%
CodeMystic: "me too and I'll brink some dip" - 75%
LOG FILE END
候选人
参与本次实验的应聘者主要是:
在市场上积极寻找工作
拥有 4 年以上经验,正在申请高级职位
将自己的“对 ChatGPT 编码”熟悉度评为中等到高
自称可以在面试中用 ChatGPT 作弊而不被抓到
这一标准可以筛选出那些在面试中挑战作弊、有动机这样做并且已经相当熟悉 ChatGPT 和编码面试的人。
作为这次实验的发起者,Michael Mroczka 告诉候选人必须在面试中使用 ChatGPT,目的是测试他们使用 ChatGPT 作弊的能力。他们还被告知不要试图凭借自己的技能通过面试——重点是依靠 ChatGPT。
最终,总共进行了 37 轮面试,其中 32 次可以作为有效的实验结果(删除的 5 次是因为参与者没有遵循指示):
用 LeetCode 上原版问题面试:11 轮
用修改后的 LeetCode 问题面试:9 轮
自策面试题面试:12 轮
注:本次实验是采用匿名参与的方式,所以面试环节只有音频但没有视频。在真正的面试中,你可能会出现在镜头前,这会让作弊变得更加困难,但并不能消除作弊行为。
面试结束后,面试官和候选人都需要填写一份调查问卷。候选人的调查问卷问题包括面试过程中使用 ChatGPT 的困难度,面试官的调研问题则包含了是否怀疑候选人作弊了。
起初,大家都不知道这个实验结果会是什么样子的,但假设,如果有一半作弊的候选人侥幸逃脱并通过了面试,这对我们的行业来说将是一个打击,或许很多人会觉得面试已经没有“公平”可言。
实验结果
在实验中,Michael Mroczka 还设置了一个参照值,即引用候选人在这次实验之外的 interviewing.io 模拟面试中的表现,参照值为 53% 成功率。
请注意,interviewing.io 平台上的大多数模拟面试都是 LeetCode 风格的问题,这很符合现实,因为这主要是 FAANG 公司常常提出的问题类型。
与 interviewing.io 平台上日常水平 57% 成功率相比,候选人使用 ChatGPT 通过面试问题的成功率分别为:LeetCode 原版问题组为 73%,修改 LeetCode 问题组为 67%,自定义面试问题组为 25%。
LeetCode 原版问题组
不出所料,借助 ChatGPT 解答 LeetCode 原版面试问题,有 73% 的候选人通过看面试。候选人表示,他们从 ChatGPT 中得到了完美的解决方案。
针对该群体面试后调查中,有一条评论吸引了众人的注意:
“很难确定候选人是否轻松回答了这个问题,因为他们实际上很优秀,或者他们以前是否听说过这个问题。通常,我会在面试问题上添加 1-2 个独特的变化来确定差异。”
通常情况下,面试官会提出一个修改过的问题来获得更多的趋势,所以接下来再让我们看看对“修改 LeetCode 问题组”的调研结果。
修改 LeetCode 问题组
请记住,这个小组可能得到了一个 LeetCode 问题,该问题是标准的,但经过修改,无法在网上直接获得答案。这意味着 ChatGPT 不可能直接回答这个问题。因此,候选人更依赖于 ChatGPT 实际解决问题的能力,而不是让它重复 LeetCode 教程的能力。
正如预测的那样,这一组的结果与“LeetCode 原版问题”组没有太大差别,67% 的候选人通过了面试。
事实证明,这一差异在统计上与“LeetCode 原版问题”组并无明显不同,也就是说,让 ChatGPT 协助回答“修改后”和“原版”的 LeetCode 面试问题在本质上是相同的。这一结果表明,ChatGPT 可以不费吹灰之力地处理对问题的细微修改。不过,候选人也注意到,要让 ChatGPT 解决修改过的问题,需要更多的提示。
正如一位候选人所述:
“直接从 LeetCode 中提取的问题让 ChatGPT 没有挑战性,但是对问题适当优化之后,让问题看起来不太像 LeetCode 风格,则让 ChatGPT 更难回答”。
自定义面试问题
根据调研结果显示,候选人解答出自定义面试问题的通过率最低,只有 25%。它不仅低于其他两组数据,还显著低于对照组数值。当你问候选人完全自定义的面试问题时,他们的表现比没有作弊(并且被问到 LeetCode 风格的问题)时更差!
没有任何一位面试官怀疑候选人在用 ChatGPT 作弊!
在实验中,面试官并不知道候选人被要求用 ChatGPT 作弊。所以在面试环节结束后,当让面试官填写调查问卷,要求他们分享对自己的评估结果有多自信。
其中 72% 的面试官表示对自己的录用决定充满信心。一位面试官表示:
这位应聘者表现非常出色,达到了 Amazon L6(谷歌 L5)软件开发工程师的知识水平......也可以考虑将其培养为 interviewing.io 平台上的面试官/导师。
只面试了一次就有这么大的信心,可能是太自信了!
进而,当 Michael Mroczka 问剩下 28% 的面试官为什么对自己的招聘没有信心时,他们回答道候选人提供了次优解、遗漏特殊情况、代码混乱、表达不清等等。
在这场测试过程中,当有候选人因为不理解 ChatGPT 的回应而大发雷霆时,面试官会将候选人奇怪的行为和生硬的反应归咎于缺乏练习,而不是作弊。一位面试官认为候选人解决问题的能力很好,但评论说他们的速度很慢,可能是在更仔细地考虑一些细节。
“候选人似乎没准备好回答任何 LeetCode 题目。”
“候选人的解题方法不够清晰,他们过早进入编码阶段。”
“候选人连最基础的 LeetCode 编程题都没准备好应对。”
“总的来说,候选人表现不错,但在编程速度和识别关键特殊情况方面还需提速。”
那么,是谁报告了对作弊的担忧?又是谁真的被发现了?
事实证明,没有一个面试官提到对任何候选人作弊的担忧!
Michael Mroczka 表示,“我们惊奇地发现,面试官没有报告任何人有作弊嫌疑,有趣的是,候选人也大多自信满满,认为自己没有作弊。81% 的候选人表示不担心会被发现,13% 的受访者认为他们可能会向面试官通风报信,而令人吃惊的是,只有 6% 的受访者认为面试官怀疑他们作弊。”
在调查后的分析中,那些担心自己被抓的考生确实受到了面试官的异常评价,但他们仍然没有作弊嫌疑。总之,大多数考生都认为自己的作弊行为是可以逃脱的,结果证明,他们是对的!
对企业的建议:不要像候选人一样,死记硬背很多固有的面试题
从这些结果中得出的明显结论是,许多科技公司需要立即开始提出自定义面试问题而不是直接使用 LeetCode 上的面试题来考核候选人 ,否则就会面临应聘者在面试中作弊的严重风险(最终无法从面试中获得有用的信号)!
同时,ChatGPT 的到来已经让 LeetCode 上很多问题变得过时:任何依赖这些问题的人都会天真地让招聘过程听天由命。不用担心作弊,招聘已经够棘手了。如果你所在的公司还在使用 LeetCode 的原版问题,不妨再仔细看一下这次的实验结果。
其实,使用自定义面试问题不仅仅是防止作弊的好方法,它还可以过滤掉那些死记硬背一大堆 LeetCode 答案的应聘者。
除此之外,它还能有效改善应聘者的体验,让他们更愿意为企业工作。就在不久前,interviewing.io 也对优秀面试官的素质进行了分析,发现一个通性问题:评价最高的面试官往往就是那些倾向于提出个性化问题的人!有一位优秀的面试官也可以筛选出更优秀的人才进入公司。
正如一些候选人所说:
“总是很高兴收到不仅仅是简单算法的问题。”
“这是我在这个网站上遇到的最喜欢的问题。它是唯一一个似乎具有现实适用性,并且取材于真实(或可能真实)的业务挑战。它还很好地将复杂性、效率和阻塞等挑战融入其中。”
“它是唯一似乎具有现实生活适用性的模型之一,并且来自真实(或可能真实)的业务挑战。它还很好地解决了复杂性、效率和阻塞等挑战。”
那么究竟该如何创建自定义的面试题呢?
Michael Mroczka 在实验中也给出了一些建议:那就是与你的团队建立一个共享文档,每当有人解决了一个他们认为有趣的问题,无论问题有多小,都可以快速记下。这些笔记不一定要写得很详细,但可以成为独特面试问题的原型,让应聘者深入了解公司的日常工作。将这些杂乱无章的原型转化为面试问题需要花费心思和精力--你必须删减大量细节,将问题的本质提炼出来,让应聘者不费吹灰之力就能理解。此外,你可能还需要反复斟酌这些自创的问题,才能将它们做对,但这样做的回报可能是巨大的。
求职者的真实想法
对于正在找工作的求职者,其中不可避免地会有人在技术面试中借助 ChatGPT 来提升信心,倘若他们遇到了那些会直接在面试中问 LeetCode 问题的公司(很遗憾,其中有很多公司),必然会在短期内获得优势......
面向全行业,现在其实处于一种“公司的流程还未跟上现实步伐”的阶段。不久之后,预估会有越来越多的公司放弃直接使用 LeetCode 原版问题。
在本已困难重重的大环境下,有候选人借用 ChatGPT 来作弊让越来越多的人感到担忧。虽然这一次实验过程中没有人被抓到,但前提是面试环节没有要求他们打开摄像头。
撇开道德不谈,在技术面试环节,用 ChatGPT 作弊既困难又有压力,而且并非完全可以直接实施。对此,Michael Mroczka 也建议道,与其担惊受怕,还不如将精力投入到实践中去,一旦招聘公司改变了流程,这也将对你大有裨益。
「最终,我们希望 ChatGPT 的出现将成为催化剂,最终使我们行业的面试标准从磨练和死记硬背转变为真正的工程能力测试」,Michael Mroczka 说道。
当 ChatGPT 侵入面试圈
对于这一实验结果,众人看法不一。也有不少技术面试官觉得,使用 ChatGPT 并不是什么违法的行为,只是需要明确说明,而不是敷衍、欺骗式地参与到面试中:
我面试过几个职位的候选人,但我从来没有告诉他们我发现他们使用了 ChatGPT。我们的面试分为两部分。第一部分是寻找 bug。如果他们使用了 AI,第一条线索就是他们能立即解决这个问题。第二部分是写一些与我们工作相关的内容,这些内容有明确的开始/结束。如果他们使用的是 AI,他们往往能写出一些东西,但却没有对其进行推理和修改,导致他们很快就会迷失方向。我们总是说,他们可以使用任何“帮助”,只要能在屏幕上显示他们在做什么。出于某种原因,只有一个人公开表示他在使用 AI 工具,但那只是因为他们不知道如何在用户界面中关闭 AI。我们并没有因为任何人使用了 AI 而取消他们的资格,而是因为他们的不诚实而取消了他们的资格。如果你在面试中都不能相信一个人,你怎么能在远程环境中相信他呢?
不过,也有开发者认为:
要求面试者在面试中不使用可用工具是个坏主意,除非你是想做一个非常基本的检查,看看某人是否了解基本知识。
允许他们使用工具,并进行屏幕共享,同时调整给他们的任务类型,这样他们就不会把问题直接反馈给 LLM, 从而获得完整的答案。
面试应该与日常工作的实际情况保持一致,这意味着今天要不断以某种形式使用 LLM。
最后,你是否支持在面试环节中使用到 ChatGPT 等编码辅助工具?如何看待这种方式?欢迎留言分享。
来源:
https://interviewing.io/blog/how-hard-is-it-to-cheat-with-chatgpt-in-technical-interviews
https://news.ycombinator.com/item?id=39206731