時下 ChatGPT 已成為不少人編碼、寫作、搜索的輔助工具。然而,不久之前技術(shù)招聘平臺 CoderPad 發(fā)布了一份《2024 年技術(shù)招聘現(xiàn)狀》報告顯示,23% 的招聘人員和招聘經(jīng)理認為候選人在技術(shù)測試或者編碼面試中使用 AI 是作弊行為,這也讓不少程序員在使用 AI 時有所顧慮。
不過現(xiàn)實來看,有多少人會在編碼面試中使用 ChatGPT?以及 ChatGPT 來協(xié)助“作弊”難易度如何?ChatGPT 是否扼殺了軟件工程基本的編碼能力?這可以讓更多的程序員拿到門檻較高的大廠 offer 嗎?提出 LeetCode 問題的公司是否需要對面試流程進行重大改變?
對此,一位前 Google 工程師 Michael Mroczka 在 Interviewing.io 平臺上進行了一項實驗,招募了一些專業(yè)的采訪者和用戶進行了作弊實驗,揭曉在技術(shù)面試中用 ChatGPT 作弊究竟有多難。
結(jié)論搶先看:
借助 ChatGPT 工具,候選者在解決三種不同類型的面試問題時,通過率分別為:73%(LeetCode 原版問題)、67%(修改后的 LeetCode 問題)、25%(面試官自定義的面試問題)
沒有一位面試官發(fā)現(xiàn)有候選人用 ChatGPT 作弊
實驗對象
Interviewing.io 是一個練習(xí)面試和工程師招聘的平臺。工程師們可以通過該平臺進行模擬面試,而公司則可以通過此平臺招聘表現(xiàn)優(yōu)異的候選人。
面試官
參與本次實驗的面試官們來自 Interviewing.io 專業(yè)的面試官庫。為了不干擾面試官的判斷,實驗中并沒有告知他們這是一個有關(guān)借助 ChatGPT 作弊的測試,而只是說這個研究旨在了解「隨著時間的推移,面試官決策的可預(yù)測性趨勢——尤其是在提出標準或者非標準問題時的區(qū)別」。
面試官被分成三組,每組提問不同類型的問題:
LeetCode 上原版問題:直接從 LeetCode 上提取原版問題,不做任何修改,面試官可以自行決定要問哪些。例如:Sort Colors LeetCode 問題,按照原版方式提問。修改后的 LeetCode 問題:從 LeetCode 中提取問題,然后把提問的方式稍作修改。例如:上面的 Sort Colors 問題,可以修改為輸入中有四個整數(shù)(0,1,2,3),而不是只有三個整數(shù) (0,1,2)。自定義面試問題:面試官設(shè)計一個與 LeetCode 平臺上任何面試題都不直接相關(guān)的問題。例如:你會得到一個格式如下的日志文件:<username>: <text> - <contribution score>,你的任務(wù)是找出對話參與度中位數(shù)的用戶。只考慮貢獻分大于 50% 的用戶。假設(shè)這樣的用戶數(shù)量是奇數(shù),你需要找到按貢獻分排序后處于中間位置的用戶。根據(jù)下面的文件,正確答案是 SyntaxSorcerer。

候選人
參與本次實驗的應(yīng)聘者主要是:在市場上積極尋找工作擁有 4 年以上經(jīng)驗,正在申請高級職位將自己的“對 ChatGPT 編碼”熟悉度評為中等到高自稱可以在面試中用 ChatGPT 作弊而不被抓到
這一標準可以篩選出那些在面試中挑戰(zhàn)作弊、有動機這樣做并且已經(jīng)相當熟悉 ChatGPT 和編碼面試的人。
作為這次實驗的發(fā)起者,Michael Mroczka 告訴候選人必須在面試中使用 ChatGPT,目的是測試他們使用 ChatGPT 作弊的能力。他們還被告知不要試圖憑借自己的技能通過面試——重點是依靠 ChatGPT。
最終,總共進行了 37 輪面試,其中 32 次可以作為有效的實驗結(jié)果(刪除的 5 次是因為參與者沒有遵循指示):
用 LeetCode 上原版問題面試:11 輪用修改后的LeetCode 問題面試:9 輪自策面試題面試:12 輪
注:本次實驗是采用匿名參與的方式,所以面試環(huán)節(jié)只有音頻但沒有視頻。在真正的面試中,你可能會出現(xiàn)在鏡頭前,這會讓作弊變得更加困難,但并不能消除作弊行為。
面試結(jié)束后,面試官和候選人都需要填寫一份調(diào)查問卷。候選人的調(diào)查問卷問題包括面試過程中使用 ChatGPT 的困難度,面試官的調(diào)研問題則包含了是否懷疑候選人作弊了。

面試結(jié)束后,候選人參與的調(diào)研問題

面試結(jié)束后,面試官參與的調(diào)研問題
起初,大家都不知道這個實驗結(jié)果會是什么樣子的,但假設(shè),如果有一半作弊的候選人僥幸逃脫并通過了面試,這對我們的行業(yè)來說將是一個打擊,或許很多人會覺得面試已經(jīng)沒有“公平”可言。
實驗結(jié)果
在實驗中,Michael Mroczka 還設(shè)置了一個參照值,即引用候選人在這次實驗之外的 interviewing.io 模擬面試中的表現(xiàn),參照值為53% 成功率。
請注意,interviewing.io 平臺上的大多數(shù)模擬面試都是 LeetCode 風格的問題,這很符合現(xiàn)實,因為這主要是 FAANG 公司常常提出的問題類型。
與 interviewing.io 平臺上日常水平 57% 成功率相比,候選人使用 ChatGPT 通過面試問題的成功率分別為:LeetCode 原版問題組為 73%,修改 LeetCode 問題組為 67%,自定義面試問題組為 25%。

LeetCode 原版問題組
不出所料,借助 ChatGPT 解答 LeetCode 原版面試問題,有 73% 的候選人通過看面試。候選人表示,他們從 ChatGPT 中得到了完美的解決方案。
針對該群體面試后調(diào)查中,有一條評論吸引了眾人的注意:
“很難確定候選人是否輕松回答了這個問題,因為他們實際上很優(yōu)秀,或者他們以前是否聽說過這個問題。通常,我會在面試問題上添加 1-2 個獨特的變化來確定差異。”
通常情況下,面試官會提出一個修改過的問題來獲得更多的趨勢,所以接下來再讓我們看看對“修改LeetCode 問題組”的調(diào)研結(jié)果。
修改LeetCode 問題組
請記住,這個小組可能得到了一個 LeetCode 問題,該問題是標準的,但經(jīng)過修改,無法在網(wǎng)上直接獲得答案。這意味著 ChatGPT 不可能直接回答這個問題。因此,候選人更依賴于 ChatGPT 實際解決問題的能力,而不是讓它重復(fù) LeetCode 教程的能力。
正如預(yù)測的那樣,這一組的結(jié)果與“LeetCode 原版問題”組沒有太大差別,67% 的候選人通過了面試。
事實證明,這一差異在統(tǒng)計上與“LeetCode原版問題”組并無明顯不同,也就是說,讓 ChatGPT 協(xié)助回答“修改后”和“原版”的LeetCode 面試問題在本質(zhì)上是相同的。這一結(jié)果表明,ChatGPT 可以不費吹灰之力地處理對問題的細微修改。不過,候選人也注意到,要讓 ChatGPT 解決修改過的問題,需要更多的提示。
正如一位候選人所述:
“直接從 LeetCode 中提取的問題讓 ChatGPT 沒有挑戰(zhàn)性,但是對問題適當優(yōu)化之后,讓問題看起來不太像 LeetCode 風格,則讓 ChatGPT 更難回答”。
自定義面試問題
根據(jù)調(diào)研結(jié)果顯示,候選人解答出自定義面試問題的通過率最低,只有 25%。它不僅低于其他兩組數(shù)據(jù),還顯著低于對照組數(shù)值。當你問候選人完全自定義的面試問題時,他們的表現(xiàn)比沒有作弊(并且被問到 LeetCode 風格的問題)時更差!
沒有任何一位面試官懷疑候選人在用 ChatGPT 作弊!
在實驗中,面試官并不知道候選人被要求用 ChatGPT 作弊。所以在面試環(huán)節(jié)結(jié)束后,當讓面試官填寫調(diào)查問卷,要求他們分享對自己的評估結(jié)果有多自信。
其中 72% 的面試官表示對自己的錄用決定充滿信心。一位面試官表示:
這位應(yīng)聘者表現(xiàn)非常出色,達到了 Amazon L6(谷歌 L5)軟件開發(fā)工程師的知識水平......也可以考慮將其培養(yǎng)為 interviewing.io 平臺上的面試官/導(dǎo)師。
只面試了一次就有這么大的信心,可能是太自信了!
進而,當 Michael Mroczka 問剩下 28% 的面試官為什么對自己的招聘沒有信心時,他們回答道候選人提供了次優(yōu)解、遺漏特殊情況、代碼混亂、表達不清等等。

在這場測試過程中,當有候選人因為不理解 ChatGPT 的回應(yīng)而大發(fā)雷霆時,面試官會將候選人奇怪的行為和生硬的反應(yīng)歸咎于缺乏練習(xí),而不是作弊。一位面試官認為候選人解決問題的能力很好,但評論說他們的速度很慢,可能是在更仔細地考慮一些細節(jié)。
“候選人似乎沒準備好回答任何 LeetCode 題目。”
“候選人的解題方法不夠清晰,他們過早進入編碼階段。”
“候選人連最基礎(chǔ)的 LeetCode 編程題都沒準備好應(yīng)對。”
“總的來說,候選人表現(xiàn)不錯,但在編程速度和識別關(guān)鍵特殊情況方面還需提速。”
那么,是誰報告了對作弊的擔憂?又是誰真的被發(fā)現(xiàn)了?
事實證明,沒有一個面試官提到對任何候選人作弊的擔憂!
Michael Mroczka 表示,“我們驚奇地發(fā)現(xiàn),面試官沒有報告任何人有作弊嫌疑,有趣的是,候選人也大多自信滿滿,認為自己沒有作弊。81% 的候選人表示不擔心會被發(fā)現(xiàn),13% 的受訪者認為他們可能會向面試官通風報信,而令人吃驚的是,只有 6% 的受訪者認為面試官懷疑他們作弊。”

在調(diào)查后的分析中,那些擔心自己被抓的考生確實受到了面試官的異常評價,但他們?nèi)匀粵]有作弊嫌疑。總之,大多數(shù)考生都認為自己的作弊行為是可以逃脫的,結(jié)果證明,他們是對的!
對企業(yè)的建議:不要像候選人一樣,死記硬背很多固有的面試題
從這些結(jié)果中得出的明顯結(jié)論是,許多科技公司需要立即開始提出自定義面試問題而不是直接使用 LeetCode 上的面試題來考核候選人,否則就會面臨應(yīng)聘者在面試中作弊的嚴重風險(最終無法從面試中獲得有用的信號)!
同時,ChatGPT 的到來已經(jīng)讓 LeetCode 上很多問題變得過時:任何依賴這些問題的人都會天真地讓招聘過程聽天由命。不用擔心作弊,招聘已經(jīng)夠棘手了。如果你所在的公司還在使用 LeetCode 的原版問題,不妨再仔細看一下這次的實驗結(jié)果。
其實,使用自定義面試問題不僅僅是防止作弊的好方法,它還可以過濾掉那些死記硬背一大堆 LeetCode 答案的應(yīng)聘者。
除此之外,它還能有效改善應(yīng)聘者的體驗,讓他們更愿意為企業(yè)工作。就在不久前,interviewing.io 也對優(yōu)秀面試官的素質(zhì)進行了分析,發(fā)現(xiàn)一個通性問題:評價最高的面試官往往就是那些傾向于提出個性化問題的人!有一位優(yōu)秀的面試官也可以篩選出更優(yōu)秀的人才進入公司。
正如一些候選人所說:
“總是很高興收到不僅僅是簡單算法的問題。”
“這是我在這個網(wǎng)站上遇到的最喜歡的問題。它是唯一一個似乎具有現(xiàn)實適用性,并且取材于真實(或可能真實)的業(yè)務(wù)挑戰(zhàn)。它還很好地將復(fù)雜性、效率和阻塞等挑戰(zhàn)融入其中。”
“它是唯一似乎具有現(xiàn)實生活適用性的模型之一,并且來自真實(或可能真實)的業(yè)務(wù)挑戰(zhàn)。它還很好地解決了復(fù)雜性、效率和阻塞等挑戰(zhàn)。”
那么究竟該如何創(chuàng)建自定義的面試題呢?
Michael Mroczka 在實驗中也給出了一些建議:那就是與你的團隊建立一個共享文檔,每當有人解決了一個他們認為有趣的問題,無論問題有多小,都可以快速記下。這些筆記不一定要寫得很詳細,但可以成為獨特面試問題的原型,讓應(yīng)聘者深入了解公司的日常工作。將這些雜亂無章的原型轉(zhuǎn)化為面試問題需要花費心思和精力--你必須刪減大量細節(jié),將問題的本質(zhì)提煉出來,讓應(yīng)聘者不費吹灰之力就能理解。此外,你可能還需要反復(fù)斟酌這些自創(chuàng)的問題,才能將它們做對,但這樣做的回報可能是巨大的。
求職者的真實想法
對于正在找工作的求職者,其中不可避免地會有人在技術(shù)面試中借助 ChatGPT 來提升信心,倘若他們遇到了那些會直接在面試中問 LeetCode 問題的公司(很遺憾,其中有很多公司),必然會在短期內(nèi)獲得優(yōu)勢......
面向全行業(yè),現(xiàn)在其實處于一種“公司的流程還未跟上現(xiàn)實步伐”的階段。不久之后,預(yù)估會有越來越多的公司放棄直接使用 LeetCode 原版問題。
在本已困難重重的大環(huán)境下,有候選人借用 ChatGPT 來作弊讓越來越多的人感到擔憂。雖然這一次實驗過程中沒有人被抓到,但前提是面試環(huán)節(jié)沒有要求他們打開攝像頭。
撇開道德不談,在技術(shù)面試環(huán)節(jié),用 ChatGPT 作弊既困難又有壓力,而且并非完全可以直接實施。對此,Michael Mroczka 也建議道,與其擔驚受怕,還不如將精力投入到實踐中去,一旦招聘公司改變了流程,這也將對你大有裨益。
「最終,我們希望 ChatGPT 的出現(xiàn)將成為催化劑,最終使我們行業(yè)的面試標準從磨練和死記硬背轉(zhuǎn)變?yōu)檎嬲墓こ棠芰y試」,Michael Mroczka 說道。
當 ChatGPT 侵入面試圈
對于這一實驗結(jié)果,眾人看法不一。也有不少技術(shù)面試官覺得,使用 ChatGPT 并不是什么違法的行為,只是需要明確說明,而不是敷衍、欺騙式地參與到面試中:
我面試過幾個職位的候選人,但我從來沒有告訴他們我發(fā)現(xiàn)他們使用了 ChatGPT。我們的面試分為兩部分。第一部分是尋找 bug。如果他們使用了 AI,第一條線索就是他們能立即解決這個問題。第二部分是寫一些與我們工作相關(guān)的內(nèi)容,這些內(nèi)容有明確的開始/結(jié)束。如果他們使用的是 AI,他們往往能寫出一些東西,但卻沒有對其進行推理和修改,導(dǎo)致他們很快就會迷失方向。我們總是說,他們可以使用任何“幫助”,只要能在屏幕上顯示他們在做什么。出于某種原因,只有一個人公開表示他在使用 AI 工具,但那只是因為他們不知道如何在用戶界面中關(guān)閉 AI。我們并沒有因為任何人使用了 AI 而取消他們的資格,而是因為他們的不誠實而取消了他們的資格。如果你在面試中都不能相信一個人,你怎么能在遠程環(huán)境中相信他呢?
不過,也有開發(fā)者認為:
要求面試者在面試中不使用可用工具是個壞主意,除非你是想做一個非常基本的檢查,看看某人是否了解基本知識。
允許他們使用工具,并進行屏幕共享,同時調(diào)整給他們的任務(wù)類型,這樣他們就不會把問題直接反饋給 LLM, 從而獲得完整的答案。
面試應(yīng)該與日常工作的實際情況保持一致,這意味著今天要不斷以某種形式使用 LLM。