不懂算法的工程師,晉升天花板在哪裡?

2021-12-30 廖雪峰

「除了大廠面試,工作中幾乎用不到算法,還有必要學嗎?」

這個靈魂拷問,估計每個程式設計師或多或少都懷疑過。畢竟工作中寫業務代碼,用著別人封裝實現好的函數、類、庫、中間件,程序只是搭積木而已,「日常增刪改查、API BOY」的形容,是不好聽,但卻是很多程式設計師的真實寫照,寫代碼更像是體力活。

還有人戲稱「面試造火箭、入職螺絲刀」,但實際上,大廠面試卡算法,高薪資的背後,是通過算法,來篩選有思考能力、解決問題能力的人才。算法的價值,不僅止於面試,更在於入職後,真正解決工程實戰中存在的問題。

畢竟算法在工作中無處不在,你可能經常會碰到:


要根據你的業務排序需求來選擇是用穩定排序還是非穩定排序;

要根據插入和刪除數據的頻率來選擇使用 array 還是 linked list;

對上億數據排序除了外排序是不是也能用 bitmap;

在不同的 workload 下應該選擇行存還是列存的資料庫,選擇基於 lsm-tree 的索引還是b+ tree 的索引;

.

還有每天都在使用的 JDK、STL 等基礎庫中的算法等等。只有搞懂什麼場景下、該選用什麼算法和數據結構,並且深入了解程序在物理機上到底是如何運行的,面對特定問題,才能用較優的時空複雜度求解,儘可能避免性能瓶頸,真正寫出高效運行的程序。

所以那些背了很多「八股文」、學了很多概念的人,在真正臨上陣時卻不會用。比如都知道 Redis 實現有序集合底層採用的是跳表,但跳表的實現細節、跳表和紅黑樹相比有什麼優勢,就很少有人真正理解了。

算法,不僅僅是應對技術面試的工具,還是編程的靈魂。如果你想吃 IT 技術這碗飯,算法會制約一個人的上限,等到技術更高深,經驗越豐富,算法的重要性就越來越明顯。

如何在實際工作中用好算法?

武功套路容易學,扎馬步基本功難練,學算法也是一樣。你沒辦法討巧,你要像郭靖學習降龍十八掌那樣,一掌一掌劈下去才行。

網上資料不少,大多講的理論,不結合實際問題,不考慮工作場景,還是學不會。最近看到極客時間上了個《算法實戰高手課》專欄,還是讓我眼前一亮的,點題就是「實戰」,我第一時間就訂閱了,看了更新的幾篇,可以說是從實際工程問題的視角,真真切切的為大家呈現了一堂實用的算法課,分享一張專欄中「核心算法應用圖」

這個專欄是從算法的工程實踐開始,著重講算法是如何運行在真實的物理機器上的,如何解決實際業務系統中的問題的,如何在各個穩定運行的中間件、分布式系統、基礎庫中實現的。再加上源碼剖析,手寫實現,深入細節,帶你掌握 35 類算法實戰應用場景、6 大領域常用算法知識體系,真正提升你解決問題的能力。

剛上線,最是優惠,還有隱藏口令,到手 ¥89。 

原價 ¥129,早鳥 + 口令「suanfa456」

再說說作者「黃清昊」

黃清昊(網名微擾理論),前阿里雲、字節跳動、騰訊工程師,畢業於上海交通大學。本身經歷也非同一般,非科班畢業,但因為對算法的興趣,在 LeetCode 上刷了 800 多道題目(800多道,什麼概念!),貢獻了200 餘篇優秀題解,對算法理解頗深,也成功從前端轉型成基礎軟體研發,現任 EMQ X 存儲工程師,對函數式編程和分布式系統有豐富的實戰經驗。

正因如此,專欄不是枯燥的理論,而是基於實踐、結合作者自己很有故事性的經歷,真正講透那些被忽略的有趣算法們,杜絕紙上談兵的理論知識,可讀性很強,很難不追更。

市面上算法教程很多,我為什麼要推薦這個專欄:

相對於市面上從基礎開始講的算法教程,內容更進階。如果說小爭哥的《數據結構與算法之美》是從基礎到思維帶你攻破算法學習、算法刷題、算法面試三大難關,那麼黃清昊的《算法實戰高手課》就是從算法實踐開始,真正提升你的問題解決能力。

專欄主題是真實世界的算法、工程中的算法。主要分為基礎和實戰兩部分,共 6 個篇章:

學習工程中常用的基礎數據結構和算法思想,比如雙向鍊表、動態數組、哈希表、紅黑樹、二分搜索、深度優先搜索等,由淺入深,推演算法的來歷和特點,分析源碼實現思路,不止是了解算法知識,更要理解工業級的算法實現是如何運行在真實的物理機上的。

學習兩門非常重要的計算機基礎課——作業系統和計算機網絡中會用到的基礎算法,比如 LRU 內存置換算法、最短路算法,同樣會結合真實的網絡庫、作業系統的源碼進行講解,互相串聯,融會貫通,才能真正深入理解。

學習高流量、高並發、高可用的現代網際網路應用中各種算法的應用,解析 Redis、MySQL 或者MapReduce 等系統或者論文的經典源碼。深入理解各場景如何拆解問題、應用算法,升級編程思維,幫助你排查真實業務開發中的各種問題,做出良好的架構設計。

最後想跟大家說,其實糾結面試的算法值不值得學,是本末倒置了。 

有句話說得好「程式設計師兩條腿,一條是算法,一條是英文,想跑的更遠,這兩條腿都不能弱」。英文,暫且不談,算法搞懂、學會、用得上,你才能走得遠。 

就像左耳朵耗子說的「你得知道,技術不是用來寫 CRUD」的。 

相關焦點

  • PLC工程師收入的天花板在哪裡?
    事實上,有著同樣問題和迷茫的不只是他,他僅代表著很大一部分收入看似增加,實則達到了「收入天花板」的自動化領域工程師們的縮影。長期來看,如果在職業生涯中一直日復一日執行同樣的工作,技術不突出,是很容易被淘汰的。更難受的是——當你為工作奉獻了無數的青春和時間,又獲得不了很強的成就感,漸漸成為企業的雞肋,這一點相信每一個工程師,都深有體會。
  • 對於算法工程師職業生涯規劃的思考
    本文閱讀時間約7min,共分為兩個部分:什麼叫做優秀的算法工程師?在面臨換工作/就業的時候,自己應該依據什麼做選擇?什麼叫做優秀的算法工程師先扔一個觀點。優秀的算法工程師是解決問題的人。一定的工程能力我在第一份正式工作的時候,領導和我們強調了,你首先是一個工程師,然後才是算法工程師。你每天在那裡加個特徵,調個參數,臨了連個服務也上不去,有了bug也不知道怎麼改,一個小型工程都做不出來,怎麼能叫自己是算法工程師呢?
  • 算法與算法工程師,技術與技術人員
    (註:標題裡的算法,指機器學習算法,或者說「算法工程師」這個職位名稱裡的「算法」,不是「算法與數據結構」裡的那個算法。誰能告訴我有沒有什麼更好的名字來區別這它們,或許是「機器學習算法」與「傳統算法」?)算法與算法工程師先來一段我在知乎裡回答「做算法工程師是一種怎樣的體驗?」
  • 電子工程師的出路在哪裡?
    中國有多少工作很多年的電子工程師;中國每年有多少電子新手需要開始全新的技術生涯;他們有什麼困惑需要去解開;他們最關心的問題是什麼?他們對未來的期待是什麼?電子工程師的出路在哪裡?中國缺少什麼樣的電子工程師?
  • 推薦算法工程師的成長之道
    所以本文除了講解推薦算法工程師的成長路徑之外,還會詳細闡述推薦算法工程師需要了解的方法論和智慧。相信讀者讀完本文會更加堅信推薦算法工程師是一個好的職業選擇, 並且結合自己的興趣和特長也知道未來該怎樣去規劃、發展和成長。
  • 算法工程師研發技能表
    Learning Lab    由於算法工程師這個崗位根據不同的業務場景和應用方向,各自的工作差異相對較大。所以很難有一個一概而論的算法工程師技術棧。比如說做圖像方向的有機器視覺算法崗、做文本方向的有自然語言處理算法崗、做語音的又有語音識別算法崗。本文僅對算法工程師常用的、基礎的、必備的研發技能進行梳理。也就是說,不論你是做哪個業務場景下的算法工作,這些基礎研發技能都是必知必會的。這組技能清單主要包括兩大類型,一類是理論技術,另一類是程式語言和工具類。
  • 細數工程師10年「雙循環」晉升之路
    下面,帛鐸君為大家細數一下,工程人十年內可以選擇考哪些證書,實現職稱和收入的「雙循環」晉升,讓您的考證日程,安排得明明白白!三年晉升:二級建築師、安全工程師二級建築師報考有專業及年限要求,需要滿足建築專業畢業兩年或相近專業本科畢業三年。其考試難度大於一級建造師,普遍認為性價比相對較低,但在職場上能增加一份底氣,也給未來一注考試做好準備。
  • 一個算法工程師的日常
    本文整理自知乎同名討論帖:《一個算法工程師的日常是怎樣的?》,版權歸原作者所有。原討論地址 zhihu.com/question/29692814很多人,也包括我,會好奇:一個算法工程師的日常是怎樣的?
  • 高級工程師兩大晉升錦囊:助你30歲成為高級工程師!
    今天衛老師與大家講一講:如何實現快速晉升高級工程師,過上「樸實無華且枯燥的有錢人的生活」,想想還有點小激動,嘿嘿~廢話不多說,下面讓我們進入正題吧~高級工程師年輕化最近找衛老師申報的高級工程師,與過去五年有明顯的不同,就是現今普遍年輕化
  • 算法工程師的落地能力具體指的是什麼?
    根據我的經歷以及對身邊同事的觀察,我個人會把落地工程師的「落地能力」分為三個維度:很多人以為算法工程師日常工作就是調下參,改個算法再跑跑,直到神經網絡輸出符合預期。在入行前,他們以為算法工程師的日常是這樣的:圖源《如何創造可信的AI》事實上,算法工程師可能涉及的技術範圍是很廣的。
  • 算法工程師必須要知道的面試技能雷達圖
    今年是我作為算法工程師工作的第七個年頭,期間拿到過hulu,阿里巴巴,騰訊,美團以及一些startup的算法工程師offer,也作為面試官面試過清北、海外、北郵以及一些二本學校等不同背景的百餘位candidates,作為面試者和面試官的經驗還比較豐富。所以希望自己的經驗能對你有所幫助,也非常歡迎其他面試官能夠多留言探討自己的面試經驗。
  • 你知道算法工程師的分類嗎?
    ,獵聘網上看看)算法工程師是一個非常高端也是相對緊缺的職位。/R加分項:具有較為豐富的項目實踐經驗(不是水論文的哪種)二、算法工程師大致分類與技術要求(一)圖像算法/計算機視覺工程師類包括圖像算法工程師,圖像處理工程師,音/視頻處理算法工程師,計算機視覺工程師。
  • 算法工程師平均年薪50.21萬,這些專業畢業後可成為算法工程師!
    今天我們就要分享一個絕對的高薪職業:算法工程師。1.專業背景可能很多家長對算法工程師並不熟悉。首先就先介紹一下這個專業出現的背景。作為迅猛發展的科技大國,我國對人工智慧高度重視。提到人工智慧,就不得不提人工智慧領域最炙手可熱的算法工程師。算法即一系列解決問題的清晰指令,算法工程師就是利用算法處理事物的人。算法工程師主要根據業務進行細分,常見的有廣告算法工程師、推薦算法工程師、圖像算法工程師等等。這是算法工程師的基本情況。
  • 算法工程師和程式設計師有什麼不同?
    特別是大數據與AI的興起,對算法要求和數學能力要求比較高,非一般軟體人員可以完成,所以細分出來的,算法工程師主要在邏輯模型,而程式設計師主要在實現,但二者不可完全分開。程式設計師是從事IT行業人員的統稱,寫程序的都可以叫程式設計師,沒有非常嚴格的類別界限,是一個群體稱呼。而算法工程師,就是主要設計算法的工程師,屬於程式設計師的一眾。
  • 工作一年的CV算法工程師感想——技術篇
    算法工程師必備的技能我的具體研究方向是計算機視覺算法工程師,眾所周知,當我們在說起算法工程師的時候,大家一般都會把工程師說成調參俠,而那種天天看論文發論文的又被捧上天。其實不然,我想以我從業一年的角度來說,一個計算機視覺算法工程師需要具備的技能。
  • 關於AI算法工程師的自我修養?
    這個問題我覺得可以從三個層面上來說:一位合格的AI算法工程師,首先要是一位合格的職場人,其次要是一位合格的工程師,最後才到AI算法工程師。很多新邁入職場的同學問題並不出在最後一環,而是在於前兩部分。所以下面從這個三個方面展開聊聊。
  • 算法工程師都有哪些分類?
    圖像算法工程師,圖像處理工程師,音/視頻處理算法工程師,計算機視覺工程師(1) 精通DirectX HLSL和OpenGL GLSL等shader語言,熟悉常見圖像處理算法GPU實現及優化;(2) 語言:精通C/C++;(3) 工具:Matlab數學軟體,CUDA運算平臺,VTK圖像圖形開源軟體【醫學領域:ITK,醫學圖像處理軟體包】(4)
  • 長文分享:AI算法工程師煉成之路
    作者回顧了自己成長為一名算法工程師,並分享了入門機器學習的經驗,以及學習資源。這是一篇關於如何成為一名AI算法工程師的長文。作者回顧了自己成長為一名算法工程師,進行了經驗總結。計算機的「算法」 與 數學的「算法」 的區別理論知識對於AI算法工程師極其重要。敲代碼只是思路的一個實現過程。這裡的「算法」和計算機CS的「算法」還不太一樣,AI算法是偏數學推導的,所以數學底子還是需要點的,學的越深,要求越高。
  • 工程師職稱評審,沒有中級職稱也能直接晉升高級職稱?
    職稱晉升最常見的方式就是一級一級滿足年限晉升,從初級職稱晉升到高級職稱最普遍的晉升方式。但隨著官方政策不斷的調整,晉升方式也變得「多元化」。職稱晉升一共有三種途徑,豆腐網王老師今天主要帶工程師們了解二種不太常見的職稱晉升方式,分別是高學歷的「跳級」晉升和如何用職業資格證書對應職稱直接晉升高一級別職稱。
  • 一份過冬存糧:算法工程師必備的面試技能雷達圖
    【新智元導讀】合格的算法工程師真正應該具備什麼技能?今年是我作為算法工程師工作的第七個年頭,期間拿到過hulu,阿里巴巴,騰訊,美團以及一些startup的算法工程師offer,也作為面試官面試過清北,海外,北郵,以及一些二本學校等不同背景的百餘位candidates,作為面試者和面試官的經驗還比較豐富。