《AI時代:碼農的涅盤重生》第13章 一面:技術經理(1)

作者:Flint8·1天前

下午三點,鵬城科技園一棟寫字樓的十七層,“迅付通”公司的小會議室裡,技術經理王磊剛結束一場內部評審會。他揉了揉眉心,點開HR系統裡標記為“待一面”的候選人列表,排在第一個的名字是:林晨。 王磊三十七八歲,戴著黑框眼鏡,頭髮有些稀疏,是典型的十年以上技術管理者模樣。他快速瀏覽了林晨的簡歷和線上測評報告。簡歷很紮實,十年跨境電商後端經驗,主導過幾個核心繫統。測評報告則呈現出有趣的“分裂”:演算法部分耗時偏長,正確率尚可;系統設計部分評價很高,評語寫著“方案完整,考慮周全,有實戰經驗”。 “有點意思”。王磊低聲自語,點下了“發起影片面試”的按鈕。他需要親眼看看,這個測評表現矛盾的候選人,到底是個紙上談兵的“架構師”,還是真有解決複雜問題的能力。

與此同時,林晨正對著筆記型電腦螢幕,反覆檢查攝像頭角度和背景。他把書架上一堆技術書籍稍微整理了一下,讓《高效能SQL》、《Redis設計與實現》這幾本大部頭更顯眼一些。手機震動,釘釘提示音響起——“迅付通王磊邀請您加入視訊會議”。 林晨深吸一口氣,點選加入。螢幕一分為二,左邊是自己略顯嚴肅的臉,右邊出現了一位戴著眼鏡、面色平靜的中年男性。

“林晨你好,我是‘迅付通’支付中臺的技術經理,王磊”。

對方聲音平穩,沒什麼寒暄,

“我們直接開始。首先,請你用三到五分鐘,介紹一下你簡歷裡提到的‘跨境電商訂單與履約系統’,重點講講你作為核心開發,處理過的最複雜的業務場景和技術挑戰”。

來了。林晨精神一振,這個問題他早有準備。他略微組織語言,開始講述:“這個系統支撐公司日峰值百萬級的訂單處理。我負責的核心模組是庫存中心與訂單路由……” 他語速平穩,從業務背景講到技術架構,重點描述了“秒殺場景下的庫存精準扣減”和“多倉庫智慧路由最佳化”兩個難點。講到庫存扣減時,他特意提到了最初使用資料庫行鎖導致效能瓶頸,後來引入Redis+Lua指令碼實現分散式鎖和預扣庫存的方案。 王磊一直安靜聽著,偶爾在面前的筆記本上記錄幾筆。

等林晨說完,他推了推眼鏡:“你提到用Redis做庫存預扣。如果Redis叢集出現網路分割槽(腦裂),導致部分節點資料不一致,怎麼保證最終扣減的準確性?你們有做補償或對賬機制嗎”?

這個問題有點深。林晨略一思索,答道:“有的。我們當時設計了兩層保障。第一層,所有扣減操作除了寫Redis,還會非同步發訊息到,由另一個服務落庫作為‘操作日誌’。第二層,有定時任務,在每天業務低峰期,跑批將Redis裡的庫存快照與資料庫裡的‘操作日誌’進行核對,如果發現不一致,以資料庫日誌為準進行修正,並報警。雖然不能做到強一致,但保證了最終一致和業務可追溯”。

“代價是延遲修正和資料短暫不一致的可能”。王磊指出。 “是的”,林晨點頭,“這是權衡的結果。秒殺場景下,效能和高可用優先順序高於強一致。我們透過設定合理的庫存安全閾值和監控,將風險控制在可接受範圍。實際執行兩年,未因此產生過重大資損”。

王磊不置可否,接著問:“好。下一個問題,還是這個系統,你提到訂單查詢慢,最佳化後QPS提升五倍。具體最佳化手段”?

“主要是資料庫層面”。林晨進入更熟悉的領域,“當時訂單表資料量過億,查詢使用者歷史訂單的介面響應很慢。我們分析了慢查詢日誌和SQL執行計劃,發現幾個問題:一是查詢條件經常組合變化,索引命中率低;二是存在大量回表查詢;三是有些關聯查詢寫法不優”。“怎麼解決的”?“第一,針對核心查詢路徑,我們重新設計了聯合索引,考慮查詢頻率和區分度,比如把‘使用者ID+下單時間’作為最左字首。第二,對一些高頻且欄位固定的查詢,比如只查訂單號、狀態、金額,我們做了覆蓋索引,避免回表。第三,優化了部分JOIN,能拆成多次查詢用程式合併的,就拆開,減少資料庫單次壓力。第四,對非即時要求的查詢,引入了Elasticsearch做二級索引”。林晨頓了頓,補充道,“當然,前提是業務方同意接受部分查詢的輕微延遲”。 “Elasticsearch和SQL的資料同步怎麼做的”? “基於binlog,用Canal監聽變化,推送到訊息佇列,再由消費者同步到ES”。林晨回答得很流利,這是他們當時實際採用的方案。

王磊的問題開始變得更開放:“如果現在讓你重新設計這個庫存中心,考慮到如今的技術選型更多樣,你會有什麼不同的思路?或者覺得當初的設計,在現在看有什麼明顯的不足”?林晨沉默了幾秒。這個問題考察的是技術演進思考和覆盤能力。“如果現在設計”,他緩緩開口,“我可能會更傾向於考慮使用分散式事務框架,比如Seata的AT模式,來嘗試簡化‘預扣’和‘最終扣減’之間的狀態管理,雖然會引入一定的複雜度,但可能讓流程更清晰。另外,當時我們對Redis的使用比較基礎,現在可能會更深入地利用Redis的資料結構,比如用Sorted Set來管理不同優先順序倉庫的庫存水位,實現更動態的路由。不足……當初對監控和可觀測性投入不夠,很多問題靠報警和人工查日誌,現在肯定會把鏈路追蹤、指標埋點做得更完善”。

王磊的臉上似乎掠過一絲極淡的認可,但很快又恢復了平靜。“好。技術問題先到這裡。聊聊你個人。看你簡歷,十年都在同一家公司,做跨境電商。為什麼現在想換到金融支付領域?你覺得這兩個領域的後端技術,核心差異在哪裡”? 林晨知道這是考察動機和行業理解。“想換領域,一是個人職業發展的尋求,想接觸更復雜、對穩定性和資料一致性要求更高的系統;二是對支付技術本身有興趣”。他斟酌著用詞,“核心差異,我個人理解,電商後端更側重於處理高併發、大流量下的業務正確性和使用者體驗,容忍一定程度的最終一致。而金融支付,尤其是資金處理核心,對強一致性、事務性、安全和審計追溯的要求是極高的,可以說‘穩定壓倒一切’,任何資金差錯都是不可接受的。技術挑戰的側重點不同”。 “你對Web3、區塊鏈有了解嗎?我們公司也有一些相關方向的探索”。王磊突然丟擲一個問題。 林晨心裡咯噔一下。這正是他的知識盲區之一。他如實回答:“瞭解一些基本概念,比如去中心化、智慧合約,但缺乏深入的實踐。我過去的技術棧和業務主要集中在傳統的網際網路後端領域”。王磊點了點頭,沒有深究,似乎只是隨口一問。“我這邊問題差不多了。你有什麼想問我的”?林晨想了想,問了兩個問題:一是這個技術經理崗位主要負責的具體業務線和技術團隊規模;二是團隊目前面臨的主要技術挑戰或正在推進的重點專案方向。 王磊的回答簡潔務實:負責支付核心鏈路中的一箇中臺團隊,約十人;當前挑戰主要是系統老舊模組的重構和向雲原生架構遷移的平穩過渡。 “今天的面試就到這裡。後續如果有進一步安排,HR會聯絡你”。王磊說完,點了點頭,便結束了視訊通話。 螢幕暗下,林晨靠在椅背上,長長吐了一口氣。整整四十五分鐘,問題一個接一個,幾乎沒有停頓。他感覺像跑了一場技術馬拉松。 覆盤剛才的表現:專案細節講得應該還算清楚,效能最佳化的問題答得比較紮實,都是實際幹過的活兒。最後那個“重新設計”和“差異分析”的問題,自己發揮得也算中規中矩。Web3那個問題露怯了,但好在對方沒追問。 “感覺……還行”?林晨自言自語,心裡卻沒什麼底。王經理全程表情變化很少,很難看出他的傾向。這種技術經理的面試,往往更看重解決實際問題的思路和深度,而不是單純的知識點背誦。 他起身倒了杯水,看著窗外漸漸暗下來的天色。房貸提醒簡訊靜靜地躺在手機裡,這個月的還款日又近了。大哥林楓雖然說了可以幫忙墊,但那終究不是長久之計。這次面試,成了他失業後第一個真正觸及到技術核心層面的機會。 等待,又是焦灼的等待。他不知道自己這份“感覺還行”,在對方那裡能打多少分,能否換來下一輪面試的入場券。

鵬城的夜幕降臨,無數寫字樓依然燈火通明,那裡有無數個像王磊一樣的面試官,決定著無數個像林晨一樣的求職者的下一步方向。 他只能等,並在等待中,繼續投出下一份簡歷。

猜你喜歡

同題材或同分類的其他作品。