先說清楚時間:這篇的源頭,是一位求職者十月中旬前後在牛客網分享的小紅書中間件研發一面面經。據他的描述,面試是前天晚上臨時約的,四十分鐘飛速結束。沒有冗長的寒暄,問題一個接一個落下來,像爐火被突然轉到最大。
你大概也遇過這種爐子。湯才剛放下料,客人已經坐定位了。
整場問答的順序,其實很像一頓被壓縮的家常菜。開場是自我介紹,幾句話就行,那是一碟小菜,涼拌的,快。接著面試官問他的電商優惠券平臺是不是自己做的,問實習是不是做中臺支持服務,這是在看備料:你手邊的食材,到底是你自己切的,還是超市切好現成的。
然後火候來了。Full GC 怎麼定位,CSV reader 的雙重載入是什麼意思,實例記憶體是不是一G多,加點記憶體是不是就好了。你看,這就是廚房裡最現實的對話:鍋燒溢了,你是先關火、撈沫、找原因,還是直接換一口更大的鍋?面試官追的那句「如果服務本來就需要很多記憶體,是不是就沒什麼優化空間了」,翻成廚房的話是:如果這鍋湯本來就得燉這麼久,你還能做什麼?這題不好答,但它考的從來是理解,是手上功夫。
中段的主菜是 RocketMQ。問他對訊息佇列的理解,問延時消息的功能與實作,一路追到底層資料結構,是不是時間輪。留言區裡有人說「延時消息都追到時間輪,這面問得挺深」,那口氣,像老饕發現這家店連高湯都是自己吊的。時間輪這種東西,本質上就是廚房牆上那張燉煮時刻表:幾點下料、幾點翻面、幾點起鍋,轉一圈,該響的鈴就響。延時消息也一樣,先放進格子裡等,時間到了才端出去。
還有分片鍵與數據傾斜,怎麼發現、怎麼解決。這是辦桌師傅最懂的煩惱:十桌客人,菜全堆在其中兩桌,另外八桌乾等。好的分片,是把料均勻分到每口鍋裡,讓爐火都燒得有意義。
最後是手撕題,滑動視窗最大值。留言區有人問「滑動視窗咋寫」,那語氣很像問「糖醋排骨的糖怎麼炒才不苦」。演算法這種東西和勾芡一樣,原理講起來三句話,手上不出錯要練很多次。
四十分鐘結束,快得像一頓工作日的晚餐。這樣的節奏我們其實寫過幾次了,像那篇秋招的第一面,是從那天的早餐開始的裡的早晨,面試還沒開始,胃先醒。也有人分享,同樣是小紅書的後端二面,二十多分鐘結束,以為涼了,三四個小時後 HR 就聯繫了。你看,鍋蓋揭開時的樣子,常常判斷不了湯的味道。燉得久的未必好,快火收汁的也未必差。
如果你最近也在等一場這樣的面試,或者剛從那四十分鐘裡走出來,廚房裡有個老道理可以借你:湯好不好,看你對自己那鍋料的理解,夠不夠深。追到時間輪的人,和知道高湯為什麼要吊第二次的人,是同一種人。
洗洗手,開火吧。