作為一名程序員,需要精通高深的算法嗎?為什麼?

連戰101150241


大家好,我從事嵌入式軟件開發十多年,歡迎關注和交流。



對於程序員來講,未必需要精通算法。

程序員又分為前端程序員,後端程序員。也分為應用程序員,底層程序員,系統程序員。從專業職能上又分為算法程序員,非算法程序員。從職級上又分程序員,高級程序員,專家程序員。除了算法程序員之外,其他的一般都是瞭解,會用算法即可。



算法程序員又分為三個層次:會用,會改,會寫。從瞭解,熟悉,到精通,是一個金字塔式的階梯成長。不是所有崗位都要求精通,畢竟行業環境就是應用為主,以產品為最終目標,功能實現和用戶體驗

才是最重要的。如果你的產品就是算法,也就是賣算法的,那麼平臺化,移植化,接口化才是最重要的,一堆理論和偽代碼,是無法落地實施的。

算法是軟件的核心之一,但不是全部。就像一棟大樓,有基礎,框架,砌磚,裝修等等工種,都很重要,缺一不可。算法,聽起來比較高深,實際上技術含量也很高,理論能力要求高,所以比較受人羨慕和追求。



產品要上線或量產,除了算法之外,每個工種與職位都很重要。謝謝大家。


宏思微想


首先,程序員需要有紮實的數學基礎,這一點是毋庸置疑的,因為程序設計說到底就是數學問題。數學基礎的作用體現在算法設計上,而算法設計則是程序設計的“核心”。

算法的應用最重要的因素是場景,最常見的算法是應用最廣泛的算法。對於程序員來說,如何把算法與實際問題相結合是重點內容,所謂的高深算法往往應用場景十分有限,效果也未必會比常見算法好。

比如在機器學習領域,K近鄰、決策樹、樸素貝葉斯、支持向量機等算法被廣泛使用,也被業界所廣泛認可,是公認的重要算法。在特定的場景下,把這些算法與實際問題相結合並形成高效的解決方案,這是研發人員的重要任務。另外,基於常見算法的改進是一個被廣泛採用的方案,這樣的方案往往具有更高的穩定性。

算法的設計需要一個系統的過程,需要大量的數據驗證才能形成最終的解決方案,所以雖然算法的研究經過了這麼多年,但是被廣泛採用的算法卻並不多。在解決問題的實際方案中,往往經典的算法有更好的效果。所以,在程序員解決問題的過程中,並不會去追求算法的複雜性,而是追求解決問題的時效性。

作為一名研發級程序員,首先要做的是系統掌握經典算法的設計與實現,然後在實際解決問題的過程中再針對特定的使用場景進行算法的改進,這往往是一個系統的過程,也往往需要經過大量的實驗。

我做機器學習的時間比較久,幾乎每天都要跟各種算法打交道,我會陸續在頭條上寫一些算法方面的文章,感興趣的朋友可以關注我的頭條號,相信一定會有所收穫。

如果有算法方面的問題,也可以諮詢我,謝謝!


IT人劉俊明


作為一個做了十幾年程序的老司機,現在做的時間越長越是對於精通兩個字避之不及了,無論是精通編程語言還是精通算法之類的話,輕易都不會說出口,學的越多越覺得自己知識面的狹窄,算法決定程序員的上限,有很多程序員對於算法的意識比較淡薄,覺得沒有特別厲害的算法也能把程序做的很不錯,這個涉及到一個問題,不是所有的程序員崗位都是必須把算法搞得特別好,才能做程序員。其實很多程序員的崗位對於算法的要求不是那麼強烈,算法主要在遊戲或者大型數據計算上用的比較多。

現在多了很多專業的算法工程師職位,這種屬於專業的算法,比如現在的人工智能崗位更加現實點的例子今日頭條的推薦機制基本上沿用算法的方式,當然在平時的開發過程中涉及到性能方面的問題會有算法相關的操作,筆者曾經做過一個廣告過濾功能,策略就是列舉一堆不能訪問的廣告網址,然後採用一定的查找算法,畢竟在列表中的數據很少的情況下效率基本不用考慮,但在成百上千規則的時候,算法就顯得特別重要了,算法在編碼的過程中相對來講用的不是很多,但在一些影響性能的地方沒有算法,就會顯得特別笨重。

說到算法在人工智能上用的最廣泛,而且屬於比較深層次的算法,數學基礎不過關,基本上玩不轉,很多公司招收人工智能的程序員,誇張一點算法的要求大於對編碼的要求,編碼能力時間長了可以彌補回來,但算法不是一時半會就能學會的,對於數學的線性代數,微積分基礎知識用的特別頻繁,很多人覺得人工智能就是簡單學個python就可以玩了,只是入口函數的調用而已,真正涉及到性能的算法,大部分還是C/C++完成。

術業有專攻,不是每個程序員都對算法都會很熟悉,算法和程序設計邏輯有一定的相通之處,很多人所說的編程需要一定的數學基礎就是指的算法相關的東西。

現在很多大公司在招聘程序員這關還會專門設計一些算法的考驗,算法也是程序員基本功的一種了,不是所有的程序員算法能力都很強,但算法強的程序員能力一般不弱。目前國內市場算法工程師的待遇還是高於一般的技術工種,算法是特殊的技術工種,初學者入門寫程序的過程中不要忽略其中算法的作用。

希望能夠幫到。


大學生編程指南


作為一名程序員,我來回答你。

首先回答你,如果是一般崗位其實不用;如果是進BAT這種大公司,是需要會但是不用特別精通,如果是去國外加入Google、Facebook這種公司或者想拿高薪作為一名算法工程師拿就必須精通。下面我對這三種說法結合自身來分別說下。


一般崗位

對於小公司或者一般的公司來說,其實按照我的說法是不僅不需要精通,甚至可以說你完全無知也沒關係。因為小公司或者一般的公司入門門檻低,不要說算法了,就算是面試官可能都不太懂技術,他主要面試的是人,也就是看人,覺得你合適就來,而且真正牛逼的人根本就不是靠小公司走招聘市場招來的,大牛一般都是靠挖來的。而且在一般的小公司都是專注去寫業務邏輯代碼,很多公司只需要你實現了這個功能就OK,對於代碼編寫規範或者時間空間複雜度等最優實現根本就不會去管你。所以你在這裡面其實會不會算法都沒有任何必要,會算法不會為你加分,不會算法也不會為你減分。


BAT大型公司

如果你是一個有追求的程序員,不甘心滿足天天在小公司待著,而是想去BAT或者TMD這種大型公司或者超級獨角獸公司的話,那算法是絕對繞不開的一個話題。就拿本人還有周圍去面試過大公司的朋友來舉例子。BAT面試全都要涉及到算法。騰訊我去面試過,在二面掛了,一面和二面其實都有算法題目,一面相對而言簡單,二面的算法就有難度了。而我又一個朋友,拿到了騰訊和阿里的offer,他說騰訊五輪面試中有一輪面試時專門考察算法的,總共六道算法題目給了你兩個小時時間作答。阿里的電話面試裡面也有一輪視頻面試專門考察算法,也是當著他們的面手寫算法。光講思路在騰訊行不通,本人曾面對騰訊的題目我跟面試官說我談談思路吧,面試官直接說不要談什麼思路,直接寫出來給我看,對待算法完全沒有任何商量的餘地。至於頭條公司那就更是如此了,因為頭條就是一家以算法驅動的公司,對算法要求也比較高。但是即便如此,BAT對待算法還遠達不到稱之為精通的地步。

Google、Facebook,算法工程師

其實最兇殘的公司是硅谷這些公司,例如Google和Facebook這類的公司。他們面試你問的全是算法,從來不會去問你專業知識,而且他們的算法問的超級難得地步。只要你通過了Google、Facebook公司的算法面試,那麼你進入公司想做什麼技術崗位都可以。比如,你一個從來沒學過Android的人,只要通過了他們面試,進去做Android也完全沒問題。因為在老外眼裡,算法是非常難得東西,你連這麼難的東西還能通過他們的面試,那麼其他的編程知識進去給你時間學也能夠馬上學會。所以你想通過他們Google和Facebook的面試,那麼算法確實要達到精通的地步,如果知識初級水平可能只有進去參觀的份了。而不管時代如何變,算法工程師永遠是市面上的稀缺物種,稀缺就代表值錢,所以學好編程不如學好算法,語言只是編程工具,算法才是編程之魂!


如果我的回答能工幫助到你,請隨手點贊,謝謝!


晨雨細曲


先說答案:不是必須精通算法!!!!


不是所有的程序員都需要精通算法,比如前端開發的程序員對於算法來說就沒有多大要求,但是一個程序員能走多遠,最大的決定因素就是---算法!!!

特別是最近比較火熱的 人工智能 區塊鏈 大數據等對算法要求還是蠻高的。

因為人工智能 區塊鏈 大數據等需要大量的算法計算。


所以從事這類工作的程序員基本都要求很高的學歷就是因為需要很高數學功底。


分享到:


相關文章: