那場筆試像一鍋湯,有人第一次就熬對了,有人到最後還在補鹽
京東算法筆試上熱議,我們把那三道題與反覆調分的過程,翻譯成廚房裡照著食譜做菜、試味道與最後一分鐘收汁的滋味故事。
九月中的求職季,牛客網上出現一篇標題很樸素的帖子:「京東算法筆試」。樓主寫得斷斷續續:編程題兩道,AICoding 一道,第二題卡住不會過,忍不住罵了一句好難。可同一篇帖子裡,他又說 AICoding 那題簡單了很多,第一次就跑出 8875 分,最後一路優化到 8877。
留言區也熱鬧。有人懊惱一開始方案就選錯,白白燒掉四十分鐘,改成一次性完成後拿了 8630,罵自己是「shit 中的 shit」。有人丟下一句「糖果那題試試最大堆加計數表」,有人補充第二題要用線段樹加離散化,還有人說後面 AI 生成得太慢,「一次蹦幾行」,時間到了只剩 8520,早知道該多讓 AI 改幾次。
一場考試,幾個分數,看起來離餐桌很遠。可是你如果在家裡認真做過一頓飯,就會覺得這些留言讀起來莫名眼熟。那簡直是一羣人圍著各自的爐子,同時開火,同一道題目,煮出味道差很多的幾鍋湯。
先看清楚食譜,再決定怎麼下鍋
做菜的人都知道,食譜的第一行最關鍵。是先煎再燉,還是直接下鍋煮?排骨要不要先焯水?這一步看錯了,後面每一個動作都在替錯誤還債。
那位懊惱的同學就是這樣。他在留言裡說,一開始方案錯了,四十分鐘過去才發現應該直接讓它一次性完成。這就像燉牛肉,你以為要小火慢燉兩小時,結果這道菜根本適合大火快收。等你搞明白,鍋裡的湯已經少了一半,時間也少了一半。最後端出來的 8630 分,不是手藝差,是起手式耽誤了。
而另一位網友的做法就很像那種會做菜的人:先打開題目的 readme,看清楚要求,然後逐步執行、完善、送測、再改。他寫得雲淡風輕,最後分數是 8887。底下有人回他「逆天了,真不知道這種題在考什麼,純抽獎」。
抽獎嗎?或許有一點運氣。但你也知道,廚房裡的運氣,多半是給看過食譜的人準備的。同樣一鍋滷肉,有人憑記憶亂放醬油,有人先嚐一口高湯再決定加多少鹽,成績單端上桌的時候,差距就出來了。這種看火候、分階段的直覺,我們之前在面試官問火候的時候,你家的湯早就燉對了也聊過:技術問答和燉湯,骨子裡是同一種分寸感。
8875 到 8877,差的是那最後一小撮鹽
最有味道的細節,是樓主那句「第一次就過了 8875,最後優化到了 8877」。
兩分。在滿分體系裡幾乎看不見的兩分,他還是回頭去磨了。這件事廚房裡天天發生。湯煮好了,起鍋前再試一口,嗯,好像還能再補一小撮鹽。就是那一小撮,味道從「可以喝」變成「想再盛一碗」。
留言區有人專門發問「蹲蹲 aicoding8877 經驗」,像極了有人在家族羣組裡追問阿嬤:「你那個滷汁到底最後加了什麼?」而阿嬤總是說沒什麼啊就隨手加一點。經驗這種東西,自己摸出來的時候覺得沒什麼,沒摸到的人看著就是玄學。
其實那兩分多半來自反覆的微調。讓 AI 再改一輪,看看生成結果,刪掉多餘的步驟,換一種寫法再送測一次。跟調一碗涼麵的醬汁一模一樣:芝麻醬多了就加點醋,醋嗆了就補半糖,一次動一樣,試一口,再動下一樣。同時動三樣的人,永遠不知道是哪一手救了這碗麵。
慢的那幾行,就像最後收汁的火
還有一則留言讓人印象很深。那位同學拿了 8520,原因不是不會,是「沒時間了」。他說後面 AI 生成得太慢,「一次蹦幾行」,早知道應該多讓 AI 改幾次。
這是廚房裡最折磨人的階段:收汁。湯已經對了,料已經熟了,就差最後那十分鐘,讓湯汁變濃、讓味道收在一起。偏偏這時候火不能急,急了就焦。你就只能站在爐邊看著它咕嘟咕嘟,一點一點冒泡,一點一點變稠。
考試時間到,等於有人伸手把你的火關了。湯還稀著,但你得端上桌。這種不甘心,做過飯的人都懂。所以那位同學的感嘆才會那麼具體:不是「我好弱」,是「早知道應該多讓 AI 改幾次」。就像每一個燉湯的人事後都會說,早知道十分鐘前就該轉小火。
一場筆試,一整排爐子
把這些留言排在一起看,畫面就出來了:一整排臨時爐位,數十個年輕人同時開火。有人第一道題像切小黃瓜一樣利落,有人第二題卡住,鍋鏟停在半空。有人靠最大堆加計數表解了糖果那題,像摸到了祖傳配方;有人用線段樹加離散化,走的是另一條路,同樣把菜端出來了。
這正是做菜有趣的地方。同一顆高麗菜,一戶人家快炒,一戶人家包水餃,一戶人家醃成泡菜,誰也不能說誰錯。演算法題也一樣,留言區裡不同解法並排躺著,各自帶著各自的分數,各自帶著各自的遺憾。
至於有人說「純抽獎」,你可以理解他的情緒,但廚房不會站在他那邊。抽獎是不用站在爐邊的,而這些人站了整整一場考試的時間。方案選錯的那位燒掉四十分鐘,生成太慢的那位盯著螢幕等程式一行一行蹦出來,這些都不是抽獎,這是備料、下鍋、看火、收汁的完整流程,只是成品的評分方式殘忍了一點。
那麼,今晚你家廚房可以帶走什麼
如果你想從這場筆試裡偷一點東西回自己的廚房,我想是這幾件小事。
第一,動鍋之前把食譜讀完。那位 8887 的網友沒有什麼祕訣,他只是先看 readme。做菜前把整份食譜從頭到尾讀一遍,你會少走很多回頭路。
第二,允許自己補那一小撮鹽。8875 已經很好了,但再試一口、再改一輪,有時候就值得那兩分。前提是時間還站在你這邊。
第三,收汁要留時間。無論是一鍋湯、一份報告還是一場考試,最後那段慢慢變濃的階段,往往比開頭更決定成品。別把行程排到一分鐘都不剩,爐邊的從容是真的會喫進味道裡的。
說到底,做菜和答題都是同一件事:在一個有限的時間裡,對著一鍋還不確定的東西,不斷做小決定,然後為每個決定負責。分數會過去,秋招會過去,但你養成的那個習慣會留下來,每次起鍋前,先試一口再端上桌。
而說到機器比你更早知道該煮什麼這件事,其實也不只發生在考場。我們先前寫過演算法比你更早知道,你家今晚要煮什麼,那臺購物車和這場 AICoding 筆試算是遠房親戚:一個猜你的胃,一個幫你的手。剩下的,還是得你自己站在爐邊,聞著味道,決定什麼時候起鍋。