面試官問的那些問題,其實廚房裡都有答案
一場後臺開發的面試面經在網上流傳,我們把面試廳裡的問答翻譯成廚房裡的火候考試,聊壓力鍋、備料與上菜時間的滋味故事。
最近在牛客網上,有人貼出了 BIGO 後臺開發一面的面經。一連串的技術問題,從程式語言的底層細節問到資料庫、網路、系統設計,條列得清清楚楚,像一份考前筆記。看著那份清單,我腦中浮現的卻是另一個畫面:一個年輕人站在陌生的廚房裡,爐火已經點了,考官坐在餐桌另一頭,等著菜上桌。
面試和做菜,骨子裡是同一件事。都是在一個不熟悉的環境裡,用有限的時間,證明你平時累積的手藝。
先聞到味道的,永遠是基礎題
面經裡最前面的那些問題,多半是最基礎的。執行緒和行程的差別、某種資料結構的特性、一條查詢語句為什麼慢。這些題目就像廚師被問:鹽和糖的差別是什麼,油溫幾分熱才下薑片,高湯為什麼要先焯水。
基礎題最藏不住人。你可以在簡報裡把專案講得天花亂墜,但一問到基礎,聲音就露餡了。就像一盤炒得油亮的菜,一入口,有經驗的舌頭馬上知道火候對不對、調味下得準不準。麵衣炸得金黃酥脆,咬下去裡面卻是涼的,那層金黃就只是表演。
備料這件事沒有捷徑。老廚師切了二十年的蔥絲,才能切得細如髮而不斷。後臺工程師刷了幾年的題、讀了幾遍的原始碼,答題時那種不假思索的流暢,也是同一種手感。味道騙不了人,火候也騙不了人。
這讓我想起先前寫過的那鍋慢火燉了兩百年的湯,好手藝從來都是時間燒出來的,急不得,也假不得。
壓力鍋響起來的時候,你還記得步驟嗎
面試真正難的部分,往往在追問。你給了一個答案,面試官接著問:為什麼?如果流量大十倍呢?如果這裡掛了呢?
這就是壓力鍋的模式。平常小火慢燉,湯是好湯;可是當壓力上來、汽閥開始嘶嘶作響的時候,你腦中還記不記得整個流程?先放氣還是先關火?這一步錯了,前面所有的燉煮都可能翻掉。
好的應試者和好的廚師一樣,在壓力下靠的是肌肉記憶,靠的是把步驟內化到不必想。手忙腳亂的人會開始亂加料,一會兒補鹽一會兒添醋,最後端出來的東西連自己都不敢嚐。沉得住氣的人,反而會慢下來,把問題拆開:這道題問的其實是容量,那我就從單機講到分散式,一層一層來,像削一顆洋蔥。
有個小祕訣是,真的不會的時候,就老實說不會,然後講你會怎麼想。這跟廚房裡承認「這味我今天調砸了」一樣,誠實反而保住了信任。硬撐著端出一盤味道不對的菜,考官一筷子就喫出來了。
系統設計題,是一整桌菜的排程
面經裡若有系統設計題,那便是從一道菜升級到一桌菜。客人八點到,前菜要涼的可以先備,熱炒得掐著時間下鍋,湯要最早吊上,甜點最後收尾。每一道菜有自己的時間軸,而你的爐臺只有那幾個。
後臺系統也一樣。哪些請求可以非同步慢慢做,哪些必須同步立刻回;哪裡可以加快取,就像把常用的醬料先裝進小碟放在爐邊,不必每次都跑回儲藏室。流量高峯就是那個突然來了三桌客人的晚上,你的排程夠不夠穩,那晚見真章。
面試結束之後,鍋還是你的
面經的最後,發文的人通常會補一句:等結果,或者已經掛了,或者進了下一輪。那種等通知的心情,家裡燉過湯的人都懂。你已經把該做的都做了,火關了,蓋子蓋著,剩下的交給時間。
但有一件事是確定的:無論這次上不上,你手上那雙手還在。這次切蔥切歪了,回去再切一百根;這道題答卡了,回去把那本書翻爛。廚藝是跟著人走的,面試的成敗只是一頓飯,手藝才是你自己的鍋。
那晚不管結果如何,先給自己煮碗麵
如果是你,或你身邊有人剛考完一場硬仗,我唯一的建議是:那晚別點外賣,自己開火。燒一鍋水,下一把麵,燙兩把青江菜,煎一顆蛋,邊緣煎到微脆、蛋黃還軟的那種。淋一匙醬油,撒一點蔥花。
熱氣上來的時候,你會想起來,自己會的東西其實很多。能在壓力下把麵煮好的人,也能在壓力下把題答好,只是需要一次一次地站回爐臺前。
市場傍晚收攤前,攤販把沒賣完的菜便宜出清,一家人拎著塑膠袋回家,這個城市裡每天有無數場面試結束,也有無數個爐子點火。考官的問題會忘記,但那碗自己煮的麵的味道,會留下來。
祝每一個剛考完的人,今晚都喫得上熱的。