:從筆試到面試的完整復盤)
浩鯨科技2020屆算法C類。這幾個詞組合在一起對當年跑秋招的人來說既是一個具體的招聘崗位也是一段挺特殊的備戰(zhàn)經歷。浩鯨科技在業(yè)內大多知道是搞電信軟件、運營商支撐系統(tǒng)的前身和“中興軟創(chuàng)”有淵源后來被阿里方面投資后品牌升級整體風格帶著通信行業(yè)的扎實底子又混進了互聯(lián)網的節(jié)奏感。算法C類這個標簽不算大廠那種“算法工程師”人人擠破頭的架勢但要求一點都不虛筆試面試覆蓋的東西很雜從經典數據結構到機器學習基礎再到工程落地思維都會碰到。這篇文章不是簡單把招聘信息抄一遍而是把這些年很多求職者包括我身邊朋友的經歷在浩鯨算法崗備戰(zhàn)過程中的核心內容做個系統(tǒng)復盤這是個什么定位的崗位、筆試面試考什么、該怎么準備、有哪些坑是只有真正跑過流程的人才總結得出來的。不管你是準備投遞通信行業(yè)、數字化服務企業(yè)還是想找一個業(yè)務穩(wěn)、技術面廣的算法方向這份內容都應該能給你省不少力氣。1. 浩鯨科技2020屆算法C類先把這個崗位想清楚1.1 企業(yè)底色與崗位定位要備戰(zhàn)一個崗位第一件事不是刷題而是弄明白這家公司、這個崗位在實際業(yè)務里到底做什么。浩鯨科技長期深耕電信運營商的信息化系統(tǒng)比如BSS/OSS這類計費、客戶關系管理、經營分析系統(tǒng)近些年也在政企數字化、智慧城市、產業(yè)互聯(lián)網方向上鋪了很多業(yè)務。這種公司的算法崗和互聯(lián)網大廠做推薦、做搜索的算法崗有本質區(qū)別它不追求“全球首創(chuàng)的模型結構”更看重“在復雜業(yè)務場景里把算法穩(wěn)定用起來”。為什么叫“算法C類”不同公司對算法序列的劃分方式不一樣常見的是按方向分A/B/C類比如A類偏AI研究、B類偏數據挖掘或機器學習平臺、C類可能偏業(yè)務算法或工程類算法。結合2020屆校招的公開信息和崗位描述來看算法C類大概率更偏向“業(yè)務算法工程師”而非純研究崗做的事情會涵蓋數據處理、特征工程、模型的選型與調優(yōu)、線上效果評估甚至要自己寫數據管道。這類崗位的一個特點是“廣而不深卻不等于淺”。它要求你既懂機器學習、深度學習的基礎理論又得具備扎實的編程和數據結構功底還要能理解業(yè)務指標知道模型結果怎么落到生產環(huán)境里。很多同學栽就栽在只準備了一條腿——要么一味刷題不去看業(yè)務場景要么死磕論文卻連歸并排序都寫不順。1.2 這類崗位適合誰投如果你符合下面任意一條浩鯨這種“業(yè)務算法”方向是很值得認真考慮的對電信、政企數字化行業(yè)感興趣希望算法能力落地到真實業(yè)務而不是一直停留在Kaggle比賽和開源數據集上技術棧比較均衡數理基礎不差編程能力中等偏上不想在大廠推薦算法賽道里擠破頭看重職業(yè)穩(wěn)定性希望進一個業(yè)務盤子大、項目周期長的企業(yè)或者你只是想用一份扎實的offer作為秋招保底那這個崗位的性價比也非常高。我在準備時最大的體會是投這類崗位心態(tài)上一定要從“我要證明自己算法很牛”切換到“我要證明自己能用算法解決實際問題”。這個認知轉換直接影響你后續(xù)的簡歷怎么寫、面試怎么答甚至筆試時的策略選擇。2. 算法筆試準備把高頻考點拆成可執(zhí)行的清單2.1 數據結構與基礎算法不是光刷題而是按“題型家族”來準備浩鯨算法崗的筆試常用的在線評測系統(tǒng)和企業(yè)自研平臺都遇到過。題量不算大一般2到4道編程題外加一部分選擇題或簡答題。選擇題覆蓋范圍很雜數據結構、排序、圖論、概率統(tǒng)計、機器學習概念都可能出現所以準備時不能只看編程題。先把基礎算法這部分說透。針對這類崗位最??嫉膸最愇艺砹艘粋€“題型家族”清單題型家族代表算法備考重點字符串處理KMP算法、next數組構造、字符串哈希理解next數組的含義和構造過程不要只會背模板排序與查找快速排序、堆排序、歸并排序、冒泡排序變種能分析時間復雜度和穩(wěn)定性能手寫快排和堆排圖論基礎Dijkstra、二分圖、Kahn拓撲排序、并查集掌握鄰接表和鄰接矩陣的適用場景會手寫優(yōu)先隊列優(yōu)化版Dijkstra動態(tài)規(guī)劃與貪心背包問題、最長上升子序列、區(qū)間DP能識別狀態(tài)轉移別把貪心當萬能鑰匙經典工程算法快速冪、二分答案、前綴和差分這些看似簡單但筆試題里很愛包裝場景來考這里特別說一下KMP和快速冪這兩個考點它們在熱搜詞里出現頻率很高也是筆試題里的常客。KMP的難點不在“理解匹配邏輯”而在next數組的推導。我建議準備時不要背代碼而是自己手工推一遍“abacaba”的next數組過程搞清楚“最長相等前后綴”這個定義在代碼里怎么一步步體現。面試官如果看到你回答KMP時能拿筆現場畫狀態(tài)轉移基本這一項就過了??焖賰鐒t是典型的“看起來簡單、實際暗藏優(yōu)化思維”的題。它的核心思路是把指數拆成二進制通過不斷平方來減少乘法次數。你不僅要寫得出遞歸和迭代兩種版本還要能說明為什么時間復雜度能從O(b)降到O(log b)以及取模運算在中間過程里怎么處理。這類經典算法沒有太高門檻但很能區(qū)分“背過答案”和“真懂原理”。2.2 機器學習與深度學習不考論文細節(jié)但概念必須能講透2020屆的算法崗筆試機器學習概念題幾乎是標配。根據當時多個渠道的反饋浩鯨筆試涉及到的知識點包括KNN的原理和k值選擇、聚類算法K-Means的優(yōu)缺點和初始化方式、樸素貝葉斯假設、決策樹分裂準則、SVM的核函數思想、過擬合與正則化、交叉驗證、評估指標精確率/召回率/F1/AUC等。這些都是教科書級別的概念但很多人復習時容易踩一個坑只記住名詞解釋卻沒準備“怎么給一個不懂算法的人講明白”。筆試選擇題還能蒙但到了面試環(huán)節(jié)面試官追問“K-Means的k怎么選”“AUC和準確率的區(qū)別到底是什么”時光說“K-Means要指定k”這種一句話答案就太單薄了。深度學習方向重點應該放在CNN的基本結構卷積、池化、全連接、激活函數對比ReLU為什么比sigmoid好、損失函數交叉熵和均方誤差的適用場景、過擬合的常見手段dropout、BN、數據增強、RNN/LSTM的直觀理解。據我了解這一部分在筆試里多以概念選擇題出現不會要求推導復雜的反向傳播公式但如果你能在面試里主動講清楚“為什么序列模型用LSTM能緩解梯度消失”會是很大的加分項。這里我要特別強調一個容易被忽略的點經典算法和優(yōu)化方法的邊界擴展。翻熱搜詞里那些“粒子群算法原理”“模擬退火算法”“卡爾曼濾波算法”“PID算法”“BM25算法”它們?yōu)槭裁磿鸵粓鏊惴◢徝嬖嚠a生關聯(lián)因為浩鯨這類公司面對的業(yè)務場景太雜了——智能調度、故障預測、參數優(yōu)化、文本檢索不一定都用深度學習解決很多場景下經典算法更可靠、更容易解釋。面試官很可能拿這些來考察你的知識廣度就算筆試不考面試也有很大概率被問到。2.3 突擊策略用“三遍法”把知識點過成體系第一遍快速拉網。把上面提到的數據結構、機器學習、深度學習知識點全部過一遍不用深究只求知道“這個東西是干什么的”。這一步的目標是建立地圖避免面試時出現“這個名詞我完全沒聽過”的尷尬。第二遍逐點擊穿。每個知識點問自己三個問題它解決什么問題它的核心步驟或原理是什么它有什么局限性或使用注意點如果你能對80%的知識點給出兩三句話的完整回答筆試選擇題基本沒問題了。第三遍手寫鞏固。所有經典算法都要能手寫出來不是只在編輯器里跑通而是拿一張白紙直接寫。面試手撕代碼和筆試環(huán)境是不一樣的沒有自動補全、沒有編譯提示白紙寫代碼才是真實力。3. 面試環(huán)節(jié)從簡歷篩選到業(yè)務場景深挖3.1 簡歷上要突出什么浩鯨算法崗的簡歷篩選我體感更看重“項目經歷”和“技術匹配度”而不是單純看學校出身。寫項目經歷的時候有幾點建議可以直接抄不要只寫“使用了XGBoost/神經網絡”要把問題背景寫出來讓面試官知道你在什么條件下選擇了什么方案一定要有量化結果。比如“通過特征篩選和參數調優(yōu)將預測準確率從87%提升到91%”比“效果提升明顯”有用得多數據量級和業(yè)務場景要寫清楚。比如“處理了1000萬條用戶行為日志”“針對運營商投訴工單做文本分類”。這類描述能讓面試官快速想象你的工作場景如果你有工程化經歷比如自己寫過數據爬蟲、搭建過模型服務接口、用過Docker部署務必寫出來。算法C類非??粗亍澳P湍懿荒苡闷饋怼庇泄こ谈惺秋@著加分項。3.2 面試官愛問的深挖點業(yè)務理解是隱藏主線浩鯨算法崗的面試通常兩到三輪技術面加一輪HR面。技術面的問題可以分成三大類基礎算法與數據結構、機器學習理論、業(yè)務場景題?;A算法和機器學習理論的部分筆試怎么準備面試就怎么準備但要注意“表述方式”。筆試題是寫代碼面試題是講思路。比如讓你講堆排序你不能只背“建堆、調整、排序”三個詞而是要說清楚堆是什么結構、建堆的時間復雜度為什么是O(n)、調整過程是怎么保證父節(jié)點大于子節(jié)點的、堆排序為什么不穩(wěn)定。一個知識點能連續(xù)講三分鐘才算真正準備到位。業(yè)務場景題是這個崗位最需要重視的部分。面試官很可能會拋出一個類似這樣的問題假設我們有運營商的投訴工單數據需要做一個自動分類系統(tǒng)把工單分到不同的責任部門你會怎么設計這類題沒有標準答案但考察的是完整的算法思維鏈路。一個比較穩(wěn)妥的回答結構是先問清楚業(yè)務目標分幾類錯誤容忍度如何實時性要求然后說數據來源和預處理文本清洗、分詞、標注數據量再選模型傳統(tǒng)機器學習還是深度學習為什么最后聊評估方式準確率還是F1要考慮類別不平衡和上線方案離線訓練還是在線學習。這個回答鏈條走下來面試官基本能判斷你是有實戰(zhàn)思維的人而不是只會調包。3.3 手撕代碼的典型場景與溝通技巧手撕代碼環(huán)節(jié)題目難度一般在中檔偏下很少出現壓軸題級別的算法競賽題。常見的是反轉鏈表、二叉樹遍歷、判斷回文串、最長公共子序列、二分查找變種、單例模式手寫這類。但有一個很多人忽略的點手撕代碼不只是考察對錯還考察你的溝通和調試習慣。我的建議是拿到題目先別急著寫開口說思路。比如“這道題我打算先用哈希表記錄出現次數再遍歷一遍找第一個不重復的字符時間復雜度O(n)空間復雜度O(n)面試官您看這個方向可以嗎”這就比悶頭寫代碼顯得專業(yè)得多。寫完之后如果時間允許用一兩個簡單例子手動走一遍順便檢查邊界情況空數組、只有一個元素、全是重復元素等。即使最后有小bug這種嚴謹習慣也能給面試官留下好印象。還有個小技巧如果面試官給了提示不要只悶頭改先在口頭上重復一遍“您的意思是這樣優(yōu)化對不對”。這既確認了理解也展示了溝通能力——在實際工作中這種能力往往比代碼本身還重要。4. 我在實際備戰(zhàn)中踩過的坑與排查技巧4.1 筆試環(huán)節(jié)環(huán)境差異和題目理解先說筆試環(huán)境?,F在很多企業(yè)用的是第三方在線評測平臺有些平臺支持本地IDE調試有些不支持有些平臺對Python版本、可導入庫有限制有些則完全開放。我建議在正式筆試前一定要提前半小時進入系統(tǒng)先做一道示例題測試環(huán)境。遇到過最坑的情況是本機Python 3.8跑得好好的代碼平臺用的是3.6f-string倒是支持但dataclass這種庫就沒法用了。提前測試能避免這類無謂的失誤。題目理解是個更大的坑。算法筆試題的文字描述通常不長但有時會包含一些隱含條件比如“數據量不超過10^5”意味著你可能需要用O(n log n)的解法“數組元素范圍是1到100”可能暗示可以用計數排序。第一遍讀題不要急著動手花30秒劃出關鍵條件確認輸入輸出的格式再設計算法。如果題目有示例一定手算一遍確保理解無誤。另外時間分配上我的策略是先做有把握的題再做看起來有思路的題最后啃難題。如果一道題卡了20分鐘還沒頭緒果斷標記跳過。很多在線評測平臺會按通過的測試用例比例給分所以即使只是暴力解法也值得寫上——哪怕只能過30%的用例也比交白卷強很多。4.2 面試表達空有名詞沒有邏輯這是我最想展開說的一條。很多同學基礎不差項目也實打實做了但面試的時候習慣“蹦名詞”。比如面試官問“講講你的項目”回答是“我用了隨機森林和XGBoost做了特征重要性排序然后調參優(yōu)化了結果”。這個回答最大的問題是全是結論沒有過程。更好的講法是“這個項目的目標是預測用戶流失概率。我們最初用邏輯回歸作為基線準確率大概82%。然后我發(fā)現很多特征是高度相關的所以先用隨機森林做了特征重要性篩選把特征從40維降到15維。接著在XGBoost上做交叉驗證調參同時用SMOTE處理了正負樣本不平衡的問題最終在測試集上AUC達到0.89相比基線提升了5個百分點。”這種表達有起點、有過程、有對比、有結果面試官才能據此追問和評價。我還發(fā)現一個高頻問題被問到“為什么選這個模型”時很多人只會說“因為它效果好”。這不夠。哪怕你只是“因為這模型在類似比賽里常用”也要補一句“它處理非線性關系能力強而且對缺失值比較魯棒適合我們這個數據質量一般的場景”。理由不一定要有多么高深但一定要體現出你做過選擇而不是隨機拍腦袋。4.3 崗位認知誤解以為是純算法研究其實是業(yè)務工程這個坑我見到的概率非常高。很多同學把“算法崗”等同于“Google DeepMind的研究員”準備了一堆最新論文結果面試被問“你會用SQL嗎”“對Linux熟悉嗎”“有沒有用過調度平臺”時直接懵了。浩鯨算法C類這樣的崗位在實際工作中更多是“算法工程師數據工程師業(yè)務分析師的復合角色”。你需要自己拉數、自己清洗、自己建模、自己評估甚至要自己寫接口把模型部署出去。如果你在準備過程中發(fā)現自己的SQL和Linux基礎薄弱一定要花時間補上。這不只是在面試中能加分更是入職后能不能快速上手的關鍵。另外對“C類”這個標簽不必恐慌也不必輕視。它不是鄙視鏈底端更不是“隨便就能進”。它意味著公司對這個崗位的期望是“能干活、能落地、能閉環(huán)”。如果你能在面試中展示出這種閉環(huán)思維大概率會比那些背景更強但只會念論文的競爭者更受青睞。5. 一些掏心窩的體會準備過程比offer本身更值錢回頭看我整個備戰(zhàn)浩鯨算法C類的過程最值得的不是最后拿到offer的那個瞬間而是為了應付那些“天知道會不會考”的經典算法和業(yè)務場景題我把過去三年學的東西真正串了起來。以前學機器學習是學一個忘一個為了準備面試我把K-Means的EM推導、決策樹的剪枝策略、SVM的核函數映射關系全部重新過了一遍這才發(fā)現這些模型之間其實是連貫的。有一件事想特別提醒后來者不要迷信面經里的“題庫”也不要只刷那些互聯(lián)網大廠的真題。像浩鯨這類企業(yè)的算法崗筆試題目可能中規(guī)中矩但面試問題的發(fā)散性很強會結合你簡歷上的項目不斷追問“如果數據不均衡怎么辦”“如果特征有缺失怎么辦”“如果線上效果不如離線怎么辦”。這些問題的答案不是靠背出來的而是靠你真的做過、想過、踩過坑才能答得自然。最后分享一個我在實際面試中用得很順的小技巧在反問環(huán)節(jié)不要只問“薪資多少”“加班多不多”可以試著問“這個崗位目前在做的項目主要解決什么業(yè)務問題”“團隊的技術棧偏向傳統(tǒng)機器學習還是深度學習”。這既能幫你判斷崗位是否適合自己也能讓面試官感受到你對這份工作有真正的興趣和研究。一次好的面試本來就是雙向選擇。