用 ChatGPT 在技术面试中作弊容易被发现吗?前谷歌软件工程师做了一项实验
米乐体育直播

  时下 ChatGPT 已成为不少人编码、写作、搜索的辅助工具。然而,不久之前技术招聘平台 CoderPad 发布了一份《》报告数据显示,23% 的招聘人员和招聘经理认为候选人在技术测试或者编码面试中使用 AI 是作弊行为,这也让不少程序员在使用 AI 时有所顾虑。

  不过现实来看,有多少人会在编码面试中使用 ChatGPT?以及 ChatGPT 来协助“作弊”难易度如何?ChatGPT 是否扼杀了软件工程基本的编码能力?这可以让更多的程序员拿到门槛较高的大厂 offer 吗?提出 LeetCode 问题的公司是不是需要对面试流程进行重大改变?

  对此,一位前 Google 工程师 Michael Mroczka 在 Interviewing.io 平台上进行了一项实验,招募了一些专业的采访者和用户进行了作弊实验,揭晓在技术面试中用 ChatGPT 作弊究竟有多难。

  借助 ChatGPT 工具,候选者在解决三种不一样的面试问题时,通过率分别为:73%(LeetCode 原版问题)、67%(修改后的 LeetCode 问题)、25%(面试官自定义的面试问题)

  Interviewing.io 是一个练习面试和工程师招聘的平台。工程师们能够最终靠该平台做模拟面试,而公司则能够最终靠此平台招聘表现优异的候选人。

  参与本次实验的面试官们来自 Interviewing.io 专业的面试官库。为了不干扰面试官的判断,实验中并没有告知他们这是一个有关借助 ChatGPT 作弊的测试,而只是说这个研究旨在了解「跟着时间的推移,面试官决策的可预测性趋势——尤其是在提出标准或者非标准问题时的区别」。

  LeetCode 上原版问题:直接从 LeetCode 上提取原版问题,不做任何修改,面试官能自行决定要问哪些。例如:Sort Colors LeetCode 问题,按照原版方式提问。

  修改后的 LeetCode 问题:从 LeetCode 中提取问题,然后把提问的方式稍作修改。例如:上面的 Sort Colors 问题,可以修改为输入中有四个整数 (0,1,2,3),而不是只有三个整数 (0,1,2)。

  自定义面试问题:面试官设计一个与 LeetCode 平台上任何面试题都不直接相关的问题。例如:你会得到一个格式如下的日志文件:: - ,你的任务是找出对话参与度中位数的用户。只考虑贡献分大于 50% 的用户。假设这样的用户数量是奇数,你需要找到按贡献分排序后处于中间位置的用户。根据下面的文件,正确答案是 SyntaxSorcerer。

  这一标准可以筛选出那些在面试中挑战作弊、有动机这样做并且已经相当熟悉 ChatGPT 和编码面试的人。

  作为这次实验的发起者,Michael Mroczka 告诉候选人必须在面试中使用 ChatGPT,目的是测试他们使用 ChatGPT 作弊的能力。他们还被告知别妄图凭借自己的技能通过面试——重点是依靠 ChatGPT。

  最终,总共进行了 37 轮面试,其中 32 次可当作有效的实验结果(删除的 5 次是因为参与者没有遵循指示):

  注:本次实验是采用匿名参与的方式,所以面试环节只有音频但没有视频。在真正的面试中,你很有可能会出现在镜头前,这会让作弊变得更困难,但并不能消除作弊行为。

  面试结束后,面试官和候选人都需要填写一份调查问卷。候选人的调查问卷问题包括面试过程中使用 ChatGPT 的困难度,面试官的调研问题则包含了是否怀疑候选人作弊了。

  起初,大家都不了解这一个实验结果会是啥样子的,但假设,如果有一半作弊的候选人侥幸逃脱并通过了面试,这对我们的行业来说将是一个打击,或许很多人会觉得面试已无“公平”可言。

  在实验中,Michael Mroczka 还设置了一个参照值,即引用候选人在这次实验之外的 interviewing.io 模拟面试中的表现,参照值为53% 成功率。

  请注意,interviewing.io 平台上的大多数模拟面试都是 LeetCode 风格的问题,这很符合现实,因为这主要是 FAANG 公司常常提出的问题类型。

  不出所料,借助 ChatGPT 解答 LeetCode 原版面试问题,有 73% 的候选人通过看面试。候选人表示,他们从 ChatGPT 中得到了完美的解决方案。

  “很难确定候选人是否轻松回答了这样的一个问题,因为他们实际上很优秀,或者他们以前是否听说过这样的一个问题。通常,我会在面试问题上添加 1-2 个独特的变化来确定差异。”

  通常情况下,面试官会提出一个修改过的问题来获得更多的趋势,所以接下来再让我们一起看看对“修改 LeetCode 问题组”的调研结果。

  请记住,这个小组可能得到了一个 LeetCode 问题,该问题是标准的,但经过修改,无法在网上直接获得答案。这在某种程度上预示着 ChatGPT 不可能直接回答这样的一个问题。因此,候选人更依赖于 ChatGPT 实际解决实际问题的能力,而不是让它重复 LeetCode 教程的能力。

  正如预测的那样,这一组的结果与“LeetCode 原版问题”组没有过大差别,67% 的候选人通过了面试。

  事实证明,这一差异在统计上与“LeetCode 原版问题”组并无明显不同,也就是说,让 ChatGPT 协助回答“修改后”和“原版”的 LeetCode 面试问题在本质上是相同的。这一根据结果得出,ChatGPT 可以不费吹灰之力地处理对问题的细微修改。不过,候选人也注意到,要让 ChatGPT 解决修改过的问题,需要更加多的提示。

  “直接从 LeetCode 中提取的问题让 ChatGPT 没有挑战性,但是对问题适当优化之后,让问题看起来不太像 LeetCode 风格,则让 ChatGPT 更难回答”。

  根据调研结果为,候选人解答出自定义面试问题的通过率最低,只有 25%。它不仅低于其他两组数据,还明显低于对照组数值。当你问候选人完全自定义的面试问题时,他们的表现比没有作弊(并且被问到 LeetCode 风格的问题)时更差!

  在实验中,面试官并不知道候选人被要求用 ChatGPT 作弊。所以在面试环节结束后,当让面试官填写调查问卷,要求他们分享对自己的评估结果有多自信。

  这位应聘者表现很出色,达到了 Amazon L6(谷歌 L5)软件开发工程师的知识水平......也可优先考虑将其培养为 interviewing.io 平台上的面试官/导师。

  进而,当 Michael Mroczka 问剩下 28% 的面试官为什么对自己的招聘没有信心时,他们回答道候选人提供了次优解、遗漏特殊情况、代码混乱、表达不清等等。

  在这场测试过程中,当有候选人因为不理解 ChatGPT 的回应而大发雷霆时,面试官会将候选人奇怪的行为和生硬的反应归咎于缺乏练习,而不是作弊。一位面试官认为候选人解决实际问题的能力很好,但评论说他们的速度很慢,可能是在更仔细地考虑一些细节。

  “总的来说,候选人表现不错,但在编程速度和识别关键特殊情况方面还需提速。”

  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。我们的面试分为两部分。第一部分是寻找 bug。如果他们使用了 AI,第一条线索就是他们能立即解决这一个问题。第二部分是写一些与我们工作相关的内容,这一些内容有明确的开始/结束。如果他们使用的是 AI,他们往往能写出一些东西,但却没有对其进行推理和修改,导致他们很快就会迷失方向。我们总是说,他们能够使用任何“帮助”,只要能在屏幕上显示他们在做什么。出于某一些原因,只有一个人公开表示他在使用 AI 工具,但那只是因为他们不知道怎么在用户界面中关闭 AI。我们并没有因任何人使用了 AI 而取消他们的资格,而是因为他们的不诚实而取消了他们的资格。如果你在面试中都不能相信一个人,你怎么能在远程环境中相信他呢?

  要求面试者在面试中不使用可用工具是个坏主意,除非你是想做一个非常基本的检查,看看某人是否了解基本知识。

  允许他们使用工具,并进行屏幕共享,同时调整给他们的任务类型,这样他们就不会把问题直接反馈给 LLM, 从而获得完整的答案。

  面试应该与日常工作的真实的情况保持一致,这在某种程度上预示着今天要不断以某种形式使用 LLM。

  最后,你是否支持在面试环节中使用到 ChatGPT 等编码辅助工具?怎么样看待这种方式?欢迎大家留言分享。