面試官問了二十九題C加加,而你家爐上的湯,也已經燉到第二個小時
二十七屆遊戲客戶端秋招面經在牛客網被熱議,我們把那些sizeof與渲染管線的考題,翻譯成一個年輕人在爐火與鍋鏟之間準備人生下一餐的味道故事。
牛客網上最近有一篇被同行傳來傳去的貼文,標題很樸素,「27屆遊戲客戶端秋招面經」。發文的人自稱雙九背景,做過雷火的日常實習,也待過某家頭部大廠的暑期實習,研究方向是圖形學,找工作卻把目標放在客戶端。他列出的題目從sizeof和strlen的區別,一路問到虛函數表、Lua的垃圾回收、渲染管線裡的透視矯正插值。整串看下來,密密麻麻,像一張還沒開始炒就先寫好的食譜。
這篇面經會被討論,是因為它誠實。他說引擎崗太少,說圖程崗更少,說有些公司的TA被歸在美術線上、薪水矮一截。這些話不新鮮,但由一個正在水裡的人說出來,重量不一樣。就像凌晨一點的便利商店,買關東煮的人各有各的加班理由,你不必問,聞到那鍋蘿蔔燉到透的甜味就懂了。
會做菜的人,最懂「基礎功」三個字有多冷
那份C加加的題單,第一題是sizeof和strlen的差別,第二題是const指標的兩種寫法。這些題目像什麼?像廚師被問「鹽和糖都是白的,你什麼時候放哪一個」。
聽起來簡單到有點冒犯。但你真的站在爐前面對一鍋正在收汁的滷肉時,鹽下早了肉會柴,糖下晚了色會濁。指標的const修飾誰、誰不能動,廚房裡對應的是火候與下料順序,順序錯了,成品就是不一樣。面經裡那題「類成員的初始化順序和初始化列表順序有關係嗎」,翻譯成廚房語言就是:食材下鍋的先後,跟你擺在流理臺上的順序無關,只跟食譜的邏輯有關。這種冷冰冰的基礎功,學的時候最無聊,出事的時候最要命。
發文的人還提到一件事:秋招比起實習,直接背八股的變少了,面試官喜歡把知識點藏進場景題裡,跟你做過的專案攪在一起問,有些還挖得很深。這跟做菜一模一樣。食譜背得再熟,站在瓦斯爐前,火的大小、鍋的厚薄、當天食材的水分,全都在考你當場判斷。會背「水滾才下麵」的人很多,知道為什麼、並且能在水量不夠的鍋裡臨時調整的人,少。
一鍋好湯,從來不是一次燉成的
面經裡最動人的一段,其實是關於路線選擇的自白。他列出了自己不走引擎崗的理由:崗位少、多數時間在處理效能與崩潰而非渲染、純圖程的坑位稀少。這是一個年輕人對自己說實話的過程。
廚房裡也有這種時刻。你原本想把這鍋高湯做成清亮的雞高湯,燉到一半發現雞骨的膠質不夠,湯色始終薄。你站在爐前猶豫:硬撐下去,還是抓一把乾香菇丟進去,改走濃鬱的路線?改路線的人往往被說成不純粹,可是喝湯的人只問好不好喝,不問你當初想燉什麼。
他後來把目標放在客戶端,用C加加和Lua,只熟悉UE。這像一個會做川菜的人決定去開家常小館:不是技藝不夠,是看清了市場上哪種店活得下去。這與我們之前寫過的金九銀十的旺季,菜籃比財經新聞更早知道是同一個道理,季節一到,市場裡什麼貨多了、什麼攤位收了,走在裡面的人最先感覺到。求職季也是一種季節,冷暖自知。
Lua的熱更新,與那碗留到半夜的麵
面經裡有一題我看了很久:「Lua的熱更新流程」。做遊戲的人懂這題的分量。熱更新的意思是,遊戲不用關掉重開,程式在跑的狀態下把舊邏輯換成新的,玩家甚至察覺不到。
這簡直就是一碗留在鍋裡的麵。你晚上十點結束一場漫長的面試複習,餓了,不想大動幹戈,把白天剩的高湯重新燒滾,丟一把麵、兩株青江菜、切幾片冰箱裡的火鍋肉片。湯底是舊的,麵是新的,喫起來卻是一頓完整且熱的宵夜。熱更新的溫柔在於不打斷,宵夜的道理也是:不必重新開一桌正式的飯,但你的身體照樣被餵飽了。
那位發文者說,幾乎每個面試官都會問一些AI相關的問題。技術的湯底正在換,每個在爐前的人都聞到了。與其焦慮,不如把它當成新進廚房的那罐調味料,先聞,先小量用,用久了自然知道它配什麼菜。
考完的那天晚上,記得替自己開火
面經的最後沒有勵志結尾,只有一句「記錄一下面試中遇到的問題,實習和個人研究相關的就不記了」。這種克制我很喜歡。做完一頓飯的人不需要在餐桌旁發表感言,碗洗了,爐關了,味道留在喫的人身體裡就好。
但我想對每一個正在準備面試的人說一句廚房裡的話:考完的那天晚上,不管自認考得好不好,替自己開一次火。不必是大菜。一把蔥爆香,兩顆蛋打散,一碗蔥花蛋炒飯,鍋鏟刮過鍋底的聲音比任何檢討都療癒。米粒在鍋裡跳動的時候,你會想起來,會做飯這件事,從來不依附任何一家公司的offer而存在。
你複習的那些虛函數、那些渲染管線,最終會沉澱成你的手藝,像刀工,像對火候的直覺。而廚房教會我們最古老的一課是:湯要燉得久才深,人要走得穩才遠。二十九題C加加問不完一個人的價值,就像一張食譜寫不盡一頓飯的溫度。
爐火先顧好,其他的,慢慢來。