去年硅谷某大廠放出一個(gè)高級(jí)數(shù)據(jù)工程師崗位,兩周內(nèi)收到847份簡(jiǎn)歷。HR篩選后剩下127份,技術(shù)終面只過(guò)了4人。
招聘經(jīng)理后來(lái)復(fù)盤(pán):90%的簡(jiǎn)歷在60秒內(nèi)就被判了死刑。不是學(xué)歷不夠,不是工具不會(huì),而是信號(hào)密度太低。
「我做了10個(gè)項(xiàng)目」為什么沒(méi)人信
打開(kāi)GitHub,滿屏的Kafka、Spark、Airflow項(xiàng)目。點(diǎn)進(jìn)去一看,全是教程改個(gè)名字——數(shù)據(jù)是公開(kāi)的Kaggle數(shù)據(jù)集,架構(gòu)是官方文檔的Hello World,部署步驟寫(xiě)在README里,從沒(méi)真正跑過(guò)。
招聘經(jīng)理的篩選邏輯很殘酷:10-20秒掃GitHub主頁(yè),30-60秒讀一個(gè)項(xiàng)目。他們不會(huì)數(shù)你做了幾個(gè),而是在找一句話——這人處理過(guò)真實(shí)世界的混亂嗎?
「我搭了一個(gè)實(shí)時(shí)流處理管道」和「我設(shè)計(jì)了帶冪等消費(fèi)者的Kafka攝入層,在重試場(chǎng)景下處理重復(fù)事件」,這是兩個(gè)完全不同的信號(hào)。前者是工具清單,后者是工程決策。
高級(jí)工程師的3個(gè)必做項(xiàng)目
資深工程師的Portfolio不需要多,但需要證明三件事:批量處理能力、實(shí)時(shí)流處理能力、數(shù)據(jù)服務(wù)能力。對(duì)應(yīng)三個(gè)項(xiàng)目骨架:
項(xiàng)目一:批量數(shù)據(jù)平臺(tái)
從攝入到轉(zhuǎn)換到存儲(chǔ)的完整鏈路。關(guān)鍵不是用了Spark,而是證明你處理過(guò)數(shù)據(jù)傾斜、分區(qū)策略優(yōu)化、失敗重跑機(jī)制。招聘經(jīng)理想看到的是:當(dāng)凌晨3點(diǎn)作業(yè)掛了,你怎么設(shè)計(jì)讓下游不受影響?
項(xiàng)目二:實(shí)時(shí)管道
Kafka到流處理到輸出的閉環(huán)。重點(diǎn)在背壓處理、延遲與成本的權(quán)衡、故障恢復(fù)策略。一個(gè)高級(jí)信號(hào)是:你做過(guò)微批處理(micro-batching)和純流處理的對(duì)比選型,能用數(shù)字解釋為什么選了前者。
項(xiàng)目三:數(shù)據(jù)API層
用FastAPI或類似框架封裝數(shù)據(jù)服務(wù)。這里要展示的是:你怎么平衡查詢性能和資源成本?有沒(méi)有做過(guò)緩存失效策略、限流設(shè)計(jì)、版本兼容?
三個(gè)項(xiàng)目,每個(gè)都要有一張架構(gòu)圖。沒(méi)圖等于沒(méi)做——這是招聘經(jīng)理的原話。圖的作用不是好看,是強(qiáng)迫你把系統(tǒng)邊界、數(shù)據(jù)流向、故障點(diǎn)暴露出來(lái)。
弱項(xiàng)目vs強(qiáng)項(xiàng)目的真實(shí)對(duì)比
同一套技術(shù)棧,寫(xiě)法不同,信號(hào)強(qiáng)度天差地別。
弱版本:「用Kafka+Spark搭建實(shí)時(shí)流處理管道,將事件存入數(shù)據(jù)倉(cāng)庫(kù)。」
招聘經(jīng)理看到這句話的反應(yīng):教程復(fù)制粘貼。下一個(gè)。
強(qiáng)版本:
「設(shè)計(jì)事件驅(qū)動(dòng)攝入管道,Kafka消費(fèi)者實(shí)現(xiàn)冪等性處理重試場(chǎng)景下的重復(fù)事件;實(shí)現(xiàn)有界重試+死信隊(duì)列,防止流量峰值時(shí)的背壓崩潰;微批處理替代純流處理,基礎(chǔ)設(shè)施成本下降約40%,延遲仍在業(yè)務(wù)可接受范圍;基于分區(qū)偏移量定義重放策略,下游故障時(shí)無(wú)損恢復(fù)。」
區(qū)別在哪?弱版本講工具,強(qiáng)版本講約束條件下的決策。每一個(gè)技術(shù)選擇后面都跟著一個(gè)「因?yàn)椤埂驗(yàn)橹卦嚂?huì)重復(fù),所以要做冪等;因?yàn)榧兞魈F,所以接受一點(diǎn)延遲;因?yàn)橄掠慰赡軖欤砸苤胤拧?/p>
這才是高級(jí)工程師的思維方式:解釋為什么存在,而非僅僅解釋怎么工作。
每個(gè)項(xiàng)目必須展示的5個(gè)信號(hào)
招聘經(jīng)理不會(huì)逐行讀你的代碼,他們?cè)趻呙枳C據(jù)。以下5點(diǎn),每個(gè)項(xiàng)目至少覆蓋3個(gè):
1. 系統(tǒng)邊界清晰
你的組件和外部系統(tǒng)怎么交互?輸入輸出契約是什么?失敗時(shí)誰(shuí)負(fù)責(zé)?
2. 權(quán)衡有據(jù)
為什么選A而不是B?成本、延遲、一致性、可維護(hù)性,你犧牲了哪個(gè),為什么能接受?
3. 故障處理設(shè)計(jì)
不是「我加了日志」,而是「當(dāng)X失敗時(shí),Y機(jī)制保證Z結(jié)果」。具體到分鐘級(jí)的恢復(fù)時(shí)間,具體到數(shù)據(jù)丟失量的上限。
4. 可觀測(cè)性
你怎么知道系統(tǒng)健康?監(jiān)控指標(biāo)是什么?告警閾值怎么定的?有沒(méi)有運(yùn)行時(shí)的儀表盤(pán)截圖?
5. 真實(shí)約束
數(shù)據(jù)量多大?QPS多少?成本上限多少?這些數(shù)字不能編,但可以用公開(kāi)數(shù)據(jù)集模擬——比如用Wikipedia的點(diǎn)擊流數(shù)據(jù)替代內(nèi)部業(yè)務(wù)數(shù)據(jù),但要誠(chéng)實(shí)標(biāo)注。
Portfolio不是項(xiàng)目列表,是證據(jù)鏈
很多候選人的誤區(qū)是把Portfolio當(dāng)成「我學(xué)過(guò)什么」的展示柜。正確的理解是:這是你在模擬一個(gè)高級(jí)工程師的日常決策場(chǎng)景。
招聘經(jīng)理真正想問(wèn)的是:如果我把生產(chǎn)環(huán)境的一個(gè)模塊交給你,你會(huì)怎么拆解問(wèn)題?怎么在信息不完整時(shí)做判斷?怎么為你的選擇辯護(hù)?
你的項(xiàng)目描述就是在預(yù)演這些對(duì)話。每一個(gè)「我選擇了X」后面,都要準(zhǔn)備好回答「如果Y發(fā)生了怎么辦?」
一個(gè)實(shí)用的自檢方法:把你的項(xiàng)目描述發(fā)給5個(gè)資深工程師朋友,看他們60秒內(nèi)能否得出相似的結(jié)論。如果有人說(shuō)「這像是教程改的」,有人猜「可能在創(chuàng)業(yè)公司做過(guò)」,信號(hào)就亂了。理想狀態(tài)是:5個(gè)人都點(diǎn)頭,「這人處理過(guò)真實(shí)系統(tǒng)的臟活。」
最后一點(diǎn):不要寫(xiě)「我花了200小時(shí)」。招聘經(jīng)理不獎(jiǎng)勵(lì)努力,獎(jiǎng)勵(lì)信號(hào)密度。200小時(shí)的教程復(fù)刻,不如20小時(shí)的痛點(diǎn)深挖。
你的Portfolio里,有哪個(gè)項(xiàng)目經(jīng)得起「如果當(dāng)時(shí)流量翻10倍你會(huì)怎么改」的追問(wèn)?
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.