一道 LRU 先被寫到了一半:字節 TikTok 後端二面,是一份被時鐘排好的題單
從牛客網一篇字節跳動 TikTok 後端實習二面涼經的二十一題題單看起,觀察一場五十五分鐘的面試如何在鏈路追問、時間超支與一句反問之間被排成一份可閱讀的介面。
科技 設計評論 約 3 分鐘閱讀
先從一個數字看起:五十五分鐘。牛客網上這篇字節跳動 TikTok 後端開發實習生的二面涼經,發文者把時長寫進了標題,像給一份文件標上版面尺寸。十月二十日深夜發布的這篇面經,正文照例是一份編號題單,二十一個問題,從「最複雜的後端項目」一路排到「你最大的技術短板是什麼」,最後留一格反問環節。
這份題單值得看的地方,在於它的排序幾乎是一條被畫出來的架構圖。第三題把 Nginx、Gateway、服務、Redis、MySQL 一口氣串成一句話,第四題立刻接上 QPS 從一萬漲到十萬的限流情境,第十題進 Redis 分佈式鎖,第十一題追問鎖的 TTL 被超過怎麼辦。每一題都是前一題答案裡挖出來的下一層。與其說是二十一個問題,不如說是一條被逐節點打開的鏈路圖,面試官沿著受試者自己說出的名詞往下鑽。
這種「你剛才說了 X,那如果 Y」的追問結構,我們在帆軟二面那個被追問五次的參數裡也讀過一次。差別在於節奏:帆軟那份題單的密度壓在同一個點上,這份字節題單則是把密度攤開在整條系統鏈路上,每個環節各敲一下。五十五分鐘要裝下二十一題加一道手寫演算法,平均每題的時間預算本身就說明了這場面試的介面性質:它要的是掃讀,不是精讀。
真正讓這篇涼經有畫面的,是那道手撕 LRU。發文者說這題「前段時間特殊看了一下,有點印象」,但沒能在時間內完整寫出來,面試官讓他改口說思路,答案是哈希表加雙向鏈表。留言區有一句「LRU 沒手撕出來血虧」,把整場面試的結算壓縮成一行。這裡的設計觀察是:一份二十一題的題單,最終的評分權重可能落在最後那格沒寫完的程式碼上。題單排版得很平均,計分卻不平均,這是這類面試介面裡最容易被誤讀的地方。
發文者自己的結算也值得讀。他判斷「該回答的都回答出來了」、面試官反饋「挺不錯」,晚上直接收到未通過的結果,於是他補了一個橫向比較的解釋:也許是橫向被比下去,也許對方有更好的人選。這段自述沒有數據可查證,但它示範了求職者在資訊不對稱下的標準動作:拿一個可接受的敘事,把一頁沒有解釋的結果介面填滿。這與我們先前讀過的得物那場十七分鐘、零反饋的 KPI 二面是同一種介面的兩種呈現:得物那份連偽裝的回饋都沒有,字節這份則給了足夠友善的表面反饋,讓未通過的訊息顯得更難解讀。
題單的最後一格是反問環節,第二十題則是「加入 TikTok 國際直播基礎業務團隊後,你最大的技術短板是什麼」。把自評弱點放進倒數第二題,是這類題單裡相當固定的收尾設計:在評估結束前,讓受試者自己交出一份風險清單。對照發文者結尾那段「畢業能找個薪資差不多的行業,每天也能活得很開心」的自我安放,整篇涼經其實是兩份文件疊在一起:上半部是一條被逐層打穿的技術鏈路,下半部是一頁被認真排過的情緒結算。
我的觀點很簡單:這份題單的價值不在於洩題,而在於它把一場五十五分鐘的面試變成了一張可檢視的圖。讀的人能看見追問的走向、時間的分配、以及一道沒寫完的 LRU 如何吞掉其餘二十題的表現。題單排得越工整,那格空白就顯得越大。