作者|Michael Mroczka
譯者|平川
策劃|褚杏娟
衆所周知,ChatGPT 已經徹底改變了人們的工作方式。它既能幫助小型企業自動化管理任務,又能爲 Web 開發人員編寫整個 React 組件,它的作用可以說怎麽誇都不過分。
在 interviewing.io,我們一直在思考 ChatGPT 将給技術面試帶來什麽變化。一個很大的問題是:ChatGPT 會讓面試作弊變得很簡單嗎?在 TikTok 上的一個視頻中,一名工程師讓 ChatGPT 準确地回答面試官的問題:
人們最初對這類作弊軟件的反應和預期完全一緻:
Redditor 說," 衆所周知,ChatGPT 是編碼的終結。"
YouTuber 說," 軟件工程已死,ChatGPT 殺死了它。"
X(之前的 Twitter)發出疑問,"ChatGPT 意味着編碼面試的終結嗎?"
ChatGPT 可以在面試過程中爲人提供幫助,這似乎很明顯,但我們想知道的是:
它能在多大程度上提供幫助?
作弊(并逃脫懲罰)有多容易?
使用 LeetCode 問題的公司需要對面試過程做出重大改變嗎?
爲了回答這些問題,我們招募了一些專業面試官和用戶來進行作弊實驗!下面,我們将分享我們發現的一切。稍微劇透一下,有一點你要知道:公司需要修改面試問題的類型,而且是馬上!
實驗準備
interviewing.io 是一個面向工程師的面試實踐平台和招聘市場。工程師借助我們的平台來模拟面試。企業利用我們的平台招聘優秀的員工。我們的生态系統中有成千上萬的專業面試官,也有成千上萬的工程師使用我們的平台準備面試。
面試官
面試官來自我們的專業面試官池。他們被分成三組,每組問不同類型的問題。面試官不知道這個實驗是關于 ChatGPT 或作弊的;我們告訴他們," 這項研究的目的是了解面試官的決策随時間變化的趨勢,尤其是在問标準和非标準面試題的時候。"
以下是 3 種問題類型:
LeetCode 原題:面試官根據自己的判斷直接從 LeetCode 中選取的題目,沒有做任何修改。
例如:一字不差地問 LeetCode 上的 Sort Colors 問題。
改良 LeetCode 問題:對從 LeetCode 上獲得的問題做一些修改,雖然與原題類似,但也有明顯的不同。
例如:對于上面的 Sort Colors 問題,将輸入從 3 個整數 ( 0,1,2 ) 改爲 4 個整數 ( 0,1,2,3 ) 。
自定義問題:所提的問題和網絡上已有的任何問題之間都不存在直接的聯系。
例如:給你一個日志文件,格式如下:
: -
你的任務是識别會話中代表參與度中值的用戶。隻考慮貢獻分數大于 50% 的用戶。假設這類用戶的數量是奇數,那麽你需要按貢獻分數排序後找到位于中間的那個用戶。對于下面的文件,正确的答案是 SyntaxSorcerer。
LOG FILE START
NullPointerNinja: "who's going to the event tomorrow night?" - 100%
LambdaLancer: "wat?" - 5%
NullPointerNinja: "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
更多關于問題類型和實驗設計的信息,可以閱讀面試官實驗指南文檔:
https://docs.google.com/document/u/0/d/1UdWZHUQfeLR8oUiNY4JfwgES42HTlAQL5z_VfQJPPKk/edit
面試者
面試者來自我們的活躍用戶池,我們邀請他們參加一個簡短的調查。我們的選擇标準如下:
在當下的市場上積極地找工作;
有 4 年以上的工作經驗,正在申請高級職位;
他們對 "ChatGPT 編碼 " 的熟悉程度爲中等或高等;
認爲自己可以在面試中作弊而不被發現。
這種選法可以幫助我們選出那些可能會在面試中作弊的求職者。他們有這樣做的動機,并且已經相當熟悉 ChatGPT 和編碼面試。
我們告訴面試者,他們在面試中必須使用 ChatGPT,目的是測試他們使用 ChatGPT 作弊的能力。他們還告訴他們,不要嘗試憑借自己的技能通過面試,主要要依靠 ChatGPT。
我們總共進行了 37 場面試,其中 32 場有效(我們不得不去掉了 5 場,因爲參與者沒有按要求進行):
11 場采用 "LeetCode 原題 "
9 場采用 " 改良 LeetCode 問題 "
12 場采用 " 自定義問題 "
說明:因爲我們平台允許匿名,所以我們的面試隻有音頻沒有視頻。匿名是爲了幫用戶創造一個安全空間,讓他們可以快速失敗并學習,而沒有人會對他們做評判。對用戶來說,這是件好事。但我們承認,沒有采訪視頻會讓我們的實驗變得不那麽真實。在真正的面試中,你會面對鏡頭,這讓作弊變得更加困難——但并不能消除作弊。
面試結束後,面試官和面試者都要完成一份退場調查。我們問面試者在面試中使用 ChatGPT 時遇到的困難,而對于面試官,我們問他們對面試的擔憂——我們想看看有多少面試官會将他們的面試标記爲有問題,并報告他們懷疑存在作弊行爲的面試。
後續調查:面試者問題
後續調查:面試官問題
我們不知道實驗中會發生什麽,但假如有一半作弊的求職者成功通過面試,那麽對于我們行業來說,那将是一個很能說明問題的結果。
實驗結果
在剔除了參與者沒有按要求進行的面試後,我們得到了以下結果。我們的對照組是求職者在 interviewing.io 模拟面試中的表現,來自本次實驗之外,通過人數占 53%。需要注意的是,我們平台上大多數的模拟面試采用的都是 LeetCode 風格的問題,這是有道理的,因爲 FAANG 公司主要問的就是這些問題。我們一會兒再回來讨論這個問題。
與平台平均值和 " 自定義 " 問題相比," 原題 " 的通過率要高得多。" 原題 " 和 " 改良 " 問題的差異無統計學意義。" 自定義 " 問題的通過率明顯低于其他任何一組。
回答原題,表現最好
不出所料,使用原題的那一組表現最好,73% 通過了面試。面試者反映,他們從 ChatGPT 得到了完美的解決方案。
以下是對這一組做面試後調查時得到的最值得注意的評論——我們認爲它特别能說明許多面試官的想法:
應聘者之所以能夠輕松回答這個問題,很難判斷是因爲他們真的很好,還是因爲他們以前聽說過這個問題。通常情況下,爲了區分這兩種情況,我會對問題做一兩處修改。
通常情況下,爲了獲得更多的信息,面試官會跟進問一個改良過的問題。所以讓我們看看采用 " 改良問題 " 的那一組,看看面試官是否真的通過對問題做一兩處修改獲得了更多的信息。
回答改良問題,要更多提示
請注意,這個組拿到的是一個标準的 LeetCode 問題,但他們用無法從網上直接找到的方式對其做了修改。也就是說,ChatGPT 不可能有這個問題的答案。因此,面試者更依賴于 ChatGPT 實際解決問題的能力,而不是它背誦 LeetCode 教程的能力。
不出所料,這一組的結果與 " 原題 " 組沒有太大區别,67% 的求職者通過了面試。
事實證明,這種差異與 " 原題 " 組沒有統計學上的顯著差異,即 " 改良問題 " 和 " 原題 " 本質上是相同的。這個結果說明,ChatGPT 可以處理面試官對問題的微調,這種微調并不會給它帶來多少麻煩。
然而,面試者确實也注意到,讓 ChatGPT 解決經過修改的問題需要提供更多的提示。有一位面試者是這樣說的:
回答直接來自 LeetCode 的問題完全沒有問題。讓 ChatGPT 回答一個不那麽直接的 LeetCode 風格的後續問題難度會增加很多。
自定義問題,通過率最低
不出所料," 自定義 " 問題組的通過率最低,隻有 25% 的面試者通過。它在統計上不僅明顯小于其他兩個實驗組,而且明顯低于對照組!當你問求職者完全自定義的問題時,他們的表現會比沒有作弊(或被問到 LeetCode 風格的問題)時差!
需要說明的是,這個數值在最初計算時略高,在詳細檢查了自定義問題之後,我們發現了一個意料之外的問題。" 企業應立即改變所提的問題!" 一節說明了問題所在。
沒有人被抓到作弊
在我們的實驗中,面試官沒有意識到面試者被要求作弊。上文說過,在每次面試後,我們會讓面試官完成一項調查,他們必須描述自己對求職者的評估有多自信。
面試官對自己所做評估的正确性很有信心,72% 的人說他們對自己的招聘決定有信心。一位面試官對面試者的表現非常之滿意,以至于得出結論,應該邀請這些人成爲平台的面試官!
求職者表現非常出色,并且非常了解功能強大的 Amazon L6 ( Google L5 ) SWE…… 應該考慮讓他們擔任 interviewing.io 的面試官 / 導師。
僅僅經過一次面試就做出這樣的判斷,這可能過于自信了!
我們早就知道,工程師不善于評估自己的表現,所以當我們發現面試官也高估了自己所提問題的有效性時,也許也不應該感到驚訝。
有部分面試官(28%)對自己的招聘選擇沒有信心,我們問了他們原因。下面是原因的頻次分布。
請注意:沒有哪裏提到作弊!
大多數面試官都具體說明了他們對招聘決定缺少信心的原因。問題通常包括解決方案次優、遺漏邊緣情況、代碼混亂或溝通糟糕。我們特意加入了一個 " 其他問題 " 類别,看看他們是否會表達對面試者作弊的擔憂,雖然我們深入挖掘,但隻發現了一些輕微的問題,比如 " 性格問題 " 和 " 他們需要加快編碼速度 "。
除了這個點出作弊的機會外,我們另外還有 3 次提示面試官指出其他他們擔憂的問題,包括自由格式的文本框和幾個選擇題,其中的選項可以解釋他們的擔憂。
當面試者因爲不理解 ChatGPT 提供的回答而面試失敗時,面試官會把面試者的奇怪行爲和生硬回答歸結爲缺乏練習——而不是作弊。有一位面試官認爲求職者解決問題的能力不錯,但又評論說他們速度很慢,需要更仔細地考慮邊緣情況。
" 求職者似乎沒有準備好回答任何 LeetCode 問題。"
" 求職者的方法不夠清晰,而且他們急于開始編碼。"
" 這位求職者甚至沒有準備好解決 LeetCode 上最基本的編程問題。"
" 總的來說,解決問題的能力不錯,但應聘者需要在編碼和識别關鍵邊緣情況方 面加快速度。"
那麽,誰記錄了對作弊的擔憂?又有誰作弊被抓了呢?
事實是,沒有一位面試官提到對求職者作弊的擔憂。
我們驚訝地發現,面試官并沒有懷疑他們作弊。有趣的是,面試者也很自信自己沒有作弊。81% 的人表示不擔心被發現,13% 的人認爲面試官可能已經發現他們作弊,而令人驚訝的是,僅有 6% 的參與者認爲面試官會懷疑他們作弊。
大部分面試者都确信他們作弊沒有被發現。
有面試者擔心被發現,面試官也确實在事後分析中給出了異常評價,但沒有懷疑他們作弊。總而言之,大多數面試者認爲他們作弊不會被發現——他們是對的!
企業應立即改變所提的問題
從這些結果中可以得出一個明顯的結論,公司需要立即開始問自定義問題,否則他們将面臨求職者在面試中作弊的嚴重風險(最終無法從面試中獲得有用的信号)!
ChatGPT 已經淘汰了原題;依賴這些問題的人,他們的招聘過程隻能聽天由命了。招聘已經夠棘手的了,哪有心思再擔心作弊。如果你所在的公司原封不動地使用 LeetCode 的問題,那麽請在内部分享下這篇文章!
使用自定義問題不僅是防止作弊的好方法,還可以過濾掉那些記住了一堆 LeetCode 解決方案的求職者(如你所見,自定義問題組的通過率明顯低于對照組)。它還能有效地改善求職者的體驗,讓人們更願意爲你工作。不久前,我們做了一個分析,是什麽造就了優秀的面試官。毫不奇怪,提出好問題是他們的一大特點,而我們評價最高的面試官往往是那些更樂于提出自定義問題的面試官!在我們的研究中,問題質量非常重要,它關系到求職者是否想在公司繼續發展。這比公司的品牌實力還要重要許多。品牌實力在吸引求職者進入公司時是一個很重要的因素,但在面試過程中,相對于問題的質量來說就不那麽重要了。
下面是來自求職者的一些說法:
" 要是不僅僅是簡單的算法問題會更好。"
" 我喜歡這個問題——它采用了一個相對簡單的算法問題(構建并遍曆樹),并增加了一些深度。我還喜歡面試官将問題與 [ Redacted ] 的實際産品聯系起來,這讓它看起來不像是一個玩具問題,而更像是一個實際問題的精簡版。"
" 這是我在這個網站上遇到的最喜歡的問題。這是僅有的幾個似乎适用于現實生活的方法之一,它來自于一個真實的(或潛在的)業務挑戰。它還很好地融合了複雜性、效率和阻塞等挑戰。"
對于那些決定采用更個性化問題的公司來說,還有一個略顯微妙的建議。你可能會把 LeetCode 的原題拿過來,然後做些修改。這很容易理解,因爲這比從頭開始提出問題要容易得多。遺憾的的是,這不起作用。
如前所述,我們在實驗中發現,一個問題看起來像一個自定義問題并不意味着它就是一個自定義問題。問題可以看上去是自定義的,但實際上仍然與已有的 LeetCode 問題相同。在向求職者提問時,僅僅模糊一個已經存在的問題是不夠的。你需要确保問題的輸入和輸出都是唯一的,這樣才能有效地防止 ChatGPT 識别它!
面試官問的問題是保密的,我們不能分享面試官在實驗中使用的具體問題。不過,我們可以給你舉個例子。下面是一個有這類嚴重缺陷的 " 自定義問題 ",ChatGPT 很容易就能解答:
For her birthday, Mia received a mysterious box containing numbered cards
and a note saying, "Combine two cards that add up to 18 to unlock your gift!"
Help Mia find the right pair of cards to reveal her surprise.
Input: An array of integers ( the numbers on the cards ) , and the target sum ( 18 ) .
arr = [ 1, 3, 5, 10, 8 ] , target = 18
Output: The indices of the two cards that add up to the target sum.
In this case, [ 3, 4 ] because index 3 and 4 add to 18 ( 10+8 ) .
你發現問題了嗎?雖然這個問題乍一看似乎是 " 自定義的 ",但它的目标與流行的 TwoSum 問題相同:找到兩個數字,它們的和等于給定的目标值。輸入和輸出都一樣;這個問題唯一的 " 自定義 " 之處就是給問題加上了故事。
既然與已知問題相同,那麽對于輸入和輸出都與現有已知問題相同的問題,ChatGPT 表現良好也就不足爲奇了——即使是爲它們添加了一個獨特的故事。
如何創建好的自定義問題
我們發現,對于提出好的原創問題,有一件事非常有用,就是在團隊中創建一個共享文檔,每當有人解決了他們認爲有趣的問題時,無論問題多小,都快速記下,後續也無需補充完善這些筆記,但它們可以成爲獨特面試問題的種子,讓求職者深入了解你公司的日常工作。把這些雜亂的種子變成面試問題需要思考和努力——你必須删去很多細節,提煉出問題的本質,使求職者不需要花很多時間去理解。你可能還得反複琢磨這些問題幾次,才能把它們弄好——但回報也可能是巨大的。
需要說明的是,我們并不提倡從技術面試中删除數據結構和算法。DS&A 問題之所以名聲不佳,是因爲那些糟糕的、不敬業的面試官,也因爲公司偷懶,重複使用 LeetCode 的問題,其中許多問題很糟糕,與他們的工作毫無關系。在好的面試官手中,這些問題會強而有力。如果你用上面的方法,就能夠提出新的數據結構和算法問題,一些有實踐基礎并能吸引求職者、讓他們對你所做的工作感到興奮的問題。
這樣,你也将推動我們的行業向前發展。背誦一堆 LeetCode 問題就能讓求職者獲得面試優勢,這不好,也不能讓作弊看起來像是面試的理性選擇。解決的辦法是雇主多做一些工作,提出更好的問題。讓我們一起行動起來吧。
給求職者的真心話
好了,現在,所有正在積極找工作的人,請聽好!是的,你的一部分同事現在會在面試中使用 ChatGPT 作弊,在那些使用 LeetCode 問題的公司(可悲的是,很多),這些同事會在短時間内取得優勢。
現在,我們正處于一個臨界狀态,公司的流程還沒有趕上現實的發展。他們很快就會完全放棄使用 LeetCode 原題(這對我們整個行業來說都是一個福音),或者回到現場(這将使作弊者在很大程度上不可能通過技術面試),或者兩者兼而有之。
在本已艱難的環境下,我們會擔心其他求職者作弊,這很糟糕,但憑良心,我們不能通過作弊來實現 " 公平競争 "。
此外,使用 ChatGPT 的面試者一緻表示,在面試過程中使用 AI 使得整個面試過程困難了許多。
從下面這段視頻中可以看到,一位面試者完美地回答了面試問題,但在分析時間複雜性時卻磕磕絆絆。當面試者着急着慌地解釋如何得出了錯誤的時間複雜度(ChatGPT 提供的答案)時,面試官都被整糊塗了。
在實驗過程中沒有人被抓到作弊,他們的攝像頭是關閉的。但正如我們在視頻中看到的那樣,即使是對于熟練的求職者來說,作弊也仍然很困難。
撇開道德不談,作弊很難,會造成壓力,而且實施起來并不簡單。相反,我們建議将這些努力投入到實踐中,一旦公司改變了他們的面試流程(希望這很快就會發生),你就可以因此獲益。最後,我們希望 ChatGPT 的出現将成爲催化劑,推動行業的面試标準從苦練和記憶轉變爲真正地考察工程能力。
https://interviewing.io/blog/how-hard-is-it-to-cheat-with-chatgpt-in-technical-interviews
聲明:本文爲 InfoQ 翻譯,未經許可禁止轉載。
今日薦文