一、引言
七月的時候,我寫了一篇文章《AI 編程助手測評:GitHub Copilot vs 豆包 MarsCode》,推薦了後者。
豆包 MarsCode 團隊最近就邀請我,試用他們的新功能"代碼練習",它專門用來準備面試和刷題。


試用以後,我有很多想法。
我覺得,AI 會改變程序員的面試,以後是 AI 刷題的後面試時代。
二、面試的 LeetCode 刷題
現在的程序員面試,一般都有算法解題。
為了準備面試,大家都會去刷算法題,最常見的就是使用 LeetCode 題庫。
LeetCode 是世界最流行的算法題庫。它源自美國,專門收集各種面試算法題,目前已經超過了3000道,不少是互聯網大廠的真題。
很多同學堅持不懈,每天投入幾個小時,做裡面的題目,訓練自己的算法能力。一般來說,至少要刷200題,面試才較有把握。

(圖片說明:上圖是某個老外的刷題統計面板,他一年365天,每天都在刷題,一共刷了1500題。)
三、AI 顛覆 LeetCode
生成式 AI 出現後,越來越多的人發現,有了 AI,人肉刷題似乎不那麼必要了。
今年(2024)8月份,一位美國網友在 Reddit 論壇發了這樣一個帖子。

他說,自己寫了一個腳本,讓 AI 自動求解 LeetCode 算法題,一天之內做了633道題目,正確率達到了86%,成本只要9美元。
這個帖子引起了巨大反響。
既然 AI 可以提示正確答案,為什麼不參考 AI 來準備面試呢? 何必堅持苦思冥想、徒手 LeetCode 刷題。
四、AI 助手的解題能力
我們完全可以跟著 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 陪練功能
現在已經有很多工具,為面試提供 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,而是你。
(完)












