大家好,我是梁唐。 前兩天有同學私信我,讓老梁推薦一下算法工程師入門書單。今天就和大家拋磚引玉聊聊這個話題。 對于一個算法工程師來說,能力一般可以拆解成幾個部分:
我們就從這幾個角度逐一來說。 語言基礎推薦配置:Python、C++、Java(或Go),重要性依次遞減。 PythonPython毫無疑問是必須的,畢竟現在絕大多數的算法模型都是用Python搭建的。那么基本的Python編程能力肯定是要有的,但一般也不會涉及過多的Python技能。像是什么裝飾器、元類這些都很少用到,主要還是停留在對于Python的基礎語法以及常用工具的應用層面,并且面試過程當中一般也不會進行Python相關的考察。 推薦書籍: Python cookbookfluent Python(流暢的Python)C++C++主要用在面試時的算法題和白板編程,目前來說,在刷題領域C++還是主流的刷題語言。個人感覺要比Java和Python更加適合一些。 除此之外,在搜索算法等一些領域也會使用到C++,因此基本的C++開發能力還是必須的。 既然要使用C++進行刷題,除了C++基本語法之外,同樣還需要學會使用STL的基本用法,可以大大簡化刷題時的編碼。 推薦書籍: C++ Primereffective STL算法數據結構這幾年各大公司的面試風格越來越向外企靠攏,更加看重算法和數據結構??淇淦湔務f得天花亂墜,題沒寫出來也只能涼涼。 但是說到算法和數據結構,很多人第一想到的就是《算法導論》和《算法》這種經典的大部頭書。老實講這些書并不是質量不好,而是太過偏理論,實際看完可能理論學了一大堆,但是具體算法應該怎么用,代碼應該怎么寫可能還是懵的。而且太過理論的書老實講讀起來也挺費勁。 所以這方面還是更推薦一些偏實際應用和實戰的書,主要也是一些競賽的入門書籍。 推薦書籍: 編程之美劍指offer挑戰程序設計競賽算法競賽入門經典基本開發技能開發技能和書籍其實關系不大,主要在于一些實戰訓練。 可以適當做一些小項目鍛煉一下工程能力,比如開發一個網站,做一個小app等等。 機器學習與深度學習機器學習與深度學習是算法工程師的立身之本,也是面試里的大頭。 這里面的東西很多,既有理論也有實戰,因此想要全部吃透是一個大工程,絕不是隨隨便便看兩本書就可以搞定的。書籍只能作為入門學習的資料,除了讀書之外一些實戰也必不可少。 推薦書籍: 統計學習方法機器學習(周志華)機器學習實戰(基于sklearn,keras和TensorFlow)![]() 機器學習實戰![]() 動手學深度學習(pytorch版)![]() TensorFlow 官方文檔![]() 大數據基礎知識算法工程師要做算法模型,離不開海量數據,自然也就離不開大數據相關的基礎知識。 由于只是使用方,而不是開發和維護方,所以也并不需要太過深入的知識儲備。只需要對于大數據的各個系統有一定的認知,知道原理,能夠使用就可以了。 這里推薦買的也是一些入門讀物。 推薦書籍: hadoop權威指南系列![]() 精通spark數據科學![]() 利用Python進行數據分析![]() 專業知識這部分主要基于想要從事的算法方向來決定。 比如說目前算法常規可以分成:搜廣推(搜索、廣告、推薦)、CV(計算機視覺)、NLP(自然語言處理)、知識圖譜等幾個領域。 這些領域相對來說都比較前沿,文獻較多,但成體系的書籍很少。老梁沒有接觸過CV和知識圖譜等領域,只能推薦幾本我相對比較熟悉的書。 推薦書籍: 深度學習推薦系統![]() 自然語言處理入門![]() 李飛飛 CS231(斯坦福公開課,大佬推薦)![]() 不知道大家看到這么多書有什么感覺,估計看著就覺得頭大,怎么這么多內容。 我在整理的時候看著也有點恐怖,但回顧一下當初學習的過程,其實倒也還好,沒有這么痛苦。很多事情只是開頭艱難,入門了之后會越來越快。比如機器學習的基礎打扎實了再學深度模型,不說輕輕松松,但用到的思路和方法論都是完全相通的。 中間可能也會遇到許多困難,但整體上來說理解起來要容易很多。再比如有了一些開發經驗之后再去研究大數據相關的知識,尤其是再結合一些分布式系統的原理和理論的話,你會發現大數據、分布式、后端、 算法,這一套閉環當中很多內容是相通的。 另外,這當中的內容老梁基本上都是自學的,其實也不只是我,據我所知大部分業內人士也一樣是自學的。畢竟算法領域日新月異,每年都有新技術、新方法、新思路提出,整個產業都在飛速的迭代升級。想要跟上時代,跟上技術潮流就是要不斷學習的,這是大勢所趨。 所以不要畏懼,也不要心虛,只有自己最了解自己,也只有自己是自己最好的老師,勇敢地去自學吧。 加油! |
|
來自: AnonymousV臉 > 《手機電腦類知識的文章》