第5章 第一次麵試------------------------------------------,林晨正在瀏覽一個Python機器學習入門教程的評論區。,而是來電鈴聲——他特意為求職相關電話設定的、一段略顯正式但不算刺耳的鋼琴曲。心臟猛地一跳,手指比大腦反應更快,已經劃開了接聽鍵。“喂,您好。”“請問是林晨先生嗎?我這裡是‘智趣互動科技’的HR,收到您投遞的後端技術負責人崗位簡曆。”電話那頭是個語速頗快的女聲,背景音有些嘈雜,“看了您的履曆,和我們崗位有一定匹配度。請問明天下午兩點,方便來公司麵試嗎?”“方便,方便的。”林晨立刻回答,聲音不自覺地提高了一些。他迅速抓過桌上的便簽紙和筆,“您說地址。”“南山區科技園南區,創智大廈B座7樓。到了前台報名字就行。”“好的,謝謝。請問麵試流程大概是?”“技術麵,直接和我們技術負責人聊。大概一到兩個小時。具體細節明天麵試官會和你溝通。”HR似乎很忙,語速依舊很快,“那就先這樣,明天見。”“明天見。”,聽筒裡傳來忙音。林晨握著手機,盯著便簽上潦草寫下的“創智大廈B座7樓,下午2點”,足足過了十幾秒,才長長地吐出一口氣。。失業後的第一個麵試機會。,就被更具體的焦慮取代。他立刻開啟瀏覽器,搜尋“智趣互動科技”。一家做移動端內容社羣和輕度遊戲的創業公司,成立大概三年,規模不大,幾十人團隊。融資資訊停留在A輪,金額冇披露。招聘網站上關於後端技術負責人的職位描述寫得比較籠統:負責整體後端架構,帶領小團隊,要求精通Java、Spring Cloud、MySQL,有高併發係統設計經驗,熟悉分散式快取和訊息佇列……,但看起來還在他傳統技術棧的覆蓋範圍內。林晨稍微定了定心,但隨即又皺眉:創業公司,技術負責人,壓力肯定不會小。薪資能給到多少?能接近他的預期嗎?,把關於薪資的雜念暫時壓下。當務之急是準備好明天的技術麵試。,林晨都泡在了書房裡。他把過去十年做過的幾個核心專案,從跨境電商平台的訂單係統,到海外倉的庫存排程中介軟體,再到促銷活動的結算模組,在腦子裡反覆梳理了一遍。技術難點、解決方案、遇到的坑、最後的優化效果……他試圖用清晰的結構把每個專案都表述出來。
他還特意去看了幾篇關於高併發係統設計的文章,複習了Redis集群、Kafka訊息佇列、分庫分表這些概念。雖然以前的專案實際達到的QPS(每秒查詢率)有限,但理論方案他必須能說得頭頭是道。
午飯簡單下了點麪條。吃完後,他換上那件熨燙過的淺藍色襯衫——去年蘇婉給他買的,說是麵試穿顯得精神又不死板——套上西褲,檢查了一下簡曆列印稿和筆,提前一個半小時出了門。
鵬城的五月午後,陽光已經有些灼人。地鐵五號線依舊擁擠,混雜著各種氣味。林晨抓著扶手,身體隨著車廂晃動,腦子裡還在默唸著可能被問到的技術問題。周圍是年輕的麵孔,穿著T恤衛衣,戴著耳機,聊著天,打著遊戲。他這身略顯正式的打扮,在人群中有些紮眼。
科技園南區,高樓林立,玻璃幕牆反射著刺眼的光。創智大廈不算最氣派的,但樓下咖啡店、便利店一應俱全,進出多是揹著雙肩包的年輕人,步履匆匆。林晨抬頭看了看大廈招牌,深吸一口氣,走了進去。
前台是個年輕的女孩,覈對了名字後,給了他一張臨時訪客卡,指了指裡麵:“直走,右邊第三個玻璃會議室,李工已經在裡麵了。”
玻璃會議室不大,一張小圓桌,幾把椅子。裡麵坐著一個看起來三十出頭的男人,穿著灰色Polo衫,頭髮有些淩亂,正低頭看著手機。聽到敲門聲,他抬起頭:“林晨?”
“是的,李工您好。”林晨走進去,微微欠身。
“坐。”李工——顯然就是技術負責人——指了指對麵的椅子,冇什麼寒暄,直接進入正題,“時間有限,我們直接開始吧。先簡單介紹一下你自己,重點說說最近幾年做的專案。”
林晨定了定神,按照準備好的思路開始講述。從上一家公司的工作職責,到負責的核心繫統,再到具體的技術挑戰和成果。他儘量用簡潔的語言,突出自己在係統設計、效能優化和團隊協作方麵的經驗。
李工聽得很認真,偶爾在麵前的筆記本上記錄幾筆。等林晨說完,他推了推眼鏡:“你剛纔提到那個促銷結算係統,峰值QPS大概多少?”
“具體監控資料,峰值大概在每秒8000次請求左右。”林晨回答。
“應對策略呢?”
“主要做了幾層快取。熱點商品資料提前載入到本地快取,使用者額度資訊用Redis集群,資料庫層麵做了讀寫分離和按使用者ID分表。”林晨流利地回答,“當時也考慮了用訊息佇列非同步處理結算流水,但業務要求實時反饋結果,所以最終是同步寫庫,但做了連線池優化和批量提交。”
“嗯。”李工不置可否,接著問,“如果現在這個係統,流量突然增長十倍,達到每秒八萬請求,你之前的架構還撐得住嗎?瓶頸可能會在哪裡?你會怎麼改造?”
林晨心裡一緊。這纔是真正的問題。他迅速思考:“十倍流量……之前的Redis集群規模可能不夠,需要擴容,並且要考慮跨機房同步的問題。資料庫分表策略可能需要調整,單表資料量增長會帶來查詢效率下降。另外,應用伺服器本身也可能成為瓶頸,需要水平擴充套件,並考慮負載均衡和會話保持的問題。改造的話,可能需要引入更細粒度的快取策略,比如本地快取結合分散式快取;資料庫層麵或許要考慮引入更強的OLAP分析能力,或者把一些實時性要求不高的統計任務剝離到大資料平台;服務端可以考慮部分介麵非同步化,用訊息佇列削峰……”
他儘可能把能想到的點都說了出來,有些地方他知道自己隻是泛泛而談,缺乏真正的實戰細節。李工一邊聽,一邊在紙上畫著什麼。
“分散式事務怎麼處理的?比如下單扣庫存和生成訂單,要保證一致性。”
“我們當時用的是最終一致性思路。先預扣庫存,建立訂單,如果訂單建立失敗,庫存再回補。通過日誌和定時任務覈對異常狀態。”林晨回答,這是他們實際采用的方案。
“TCC(Try-Confirm-Cancel)模式瞭解嗎?和Saga模式對比呢?”
林晨頓了一下:“瞭解概念。TCC需要業務方提供三個介麵,實現複雜度高,但一致性最強。Saga通過一係列本地事務和補償事件實現,更適合長流程業務。我們當時的業務場景相對簡單,所以冇采用這兩種。”
李工點了點頭,冇再深究。接下來的問題開始涉及更多具體技術細節:JVM調優引數,MySQL索引優化和死鎖排查,Spring Cloud各個元件的原理和坑,Docker和Kubernetes的使用經驗……
林晨大部分都能答上來,有些地方能講得很細,比如他曾經花了兩天時間排查的一個由不當索引導致的慢查詢問題。但涉及到容器化編排、服務網格(Service Mesh)這些更前沿或他們之前冇大規模使用的技術時,他的回答就偏向於理論瞭解,缺少實戰體會。
他能感覺到,李工對他的基礎和經驗是認可的,但眼神裡也偶爾會閃過一絲“技術棧偏傳統”的評估意味。
技術問題問了將近一個小時。李工終於合上了筆記本,看著林晨:“技術層麵聊得差不多了。你對我們公司有什麼想瞭解的?”
林晨知道,這是麵試的後半程,也是瞭解對方和表達自己訴求的機會。他問了幾個關於公司當前主要產品、技術團隊規模、未來半年技術規劃的問題。李工的回答比較務實:產品正在尋求突破,團隊目前後端加他隻有五個人,希望招個能扛事的一起搭建更穩定的架構。
“最後,聊聊你的期望薪資吧。”李工很直接。
林晨心提到了嗓子眼。他預設過很多次這個場景,但真到了這一刻,還是感到一陣緊張。他清楚自己的底線,也記得張偉的提醒。他穩住聲音,報出了那個數字:“我的期望年薪是120萬左右。根據公司具體的薪酬結構,可以談。”
李工臉上冇什麼表情,隻是眉毛幾不可察地動了一下。他沉默了幾秒鐘,然後說:“這個數字……和我們這個崗位的預算,差距比較大。我們是一家還在發展階段的創業公司,這個崗位的薪資範圍,大概在月薪35K到45K,14到16薪。即便按上限算,距離你的期望也有不小距離。”
雖然早有心理準備,但親耳聽到對方說出“差距比較大”這幾個字,林晨心裡還是沉了一下。他試圖爭取:“我理解創業公司的情況。但我有十年的完整經驗,帶過團隊,處理過複雜係統,也願意承擔壓力和責任。薪資方麵,是否還有一定的彈性空間?或者,在期權方麵……”
李工搖了搖頭,語氣平和但堅定:“薪資範圍是公司定的,我個人許可權有限。期權當然有,但那是長期且不確定的回報。坦率說,林先生,你的技術基礎很紮實,專案經驗也匹配。但你的期望薪資,可能更匹配那些業務穩定、現金流充足的中大型公司,或者風口上的熱門領域。我們目前給不了。”
話說得很直白,也很現實。林晨知道,再談下去意義不大了。他維持著基本的禮貌,又問了一兩個關於麵試流程後續的問題,李工表示會和HR溝通,有訊息會通知。
走出創智大廈時,下午的陽光斜照過來,拉長了身影。林晨站在路邊,看著車來車往,剛纔麵試時繃緊的神經慢慢鬆弛下來,隨之而來的是一種混合著疲憊、失落和迷茫的複雜情緒。
技術麵,他感覺聊得不算差,甚至有些地方還能展現出自己的經驗優勢。但最後卡在薪資上,而且卡得如此乾脆利落。對方那句“你的期望薪資可能更匹配……風口上的熱門領域”,像一根細刺,紮在他心裡。
他沿著街道慢慢走著,路過騰訊那座著名的濱海大廈,玻璃幕牆在夕陽下泛著冷冽的光。裡麵的人,那些在所謂“熱門領域”裡的人,他們值多少錢?自己這十年的經驗,積累的技術,在現在的市場上,到底標價多少?
第一次麵試,似乎就這樣結束了。冇有當場拒絕,但希望已經變得渺茫。他知道,這隻是開始。後麵還有更多簡曆要投,更多麵試要麵對。但這一次的碰壁,已經清晰地向他揭示了一個現實:僅僅依靠過去的經驗,在現有的技術軌道上,他可能很難抵達自己期望的那個位置了。
口袋裡手機又震動了一下,是房貸銀行的月度扣款提醒簡訊。林晨看了一眼,鎖上螢幕,抬頭望向遠處逐漸亮起的城市燈火。
路還長,而且比他預想的,可能要更崎嶇一些。