演算法工程師大致是做什麼的?

本人大二非科班,想自學編程,數學較好,有意往演算法工程師方向學習。但是一直找不到具體的關於這個職業的解釋,要麼就是很多專業術語看不懂。想問一下能不能用比較通俗的話解釋下這個職業,順便問下往這個方向學習的話有必要搞數模嗎?


第一,你才大二,現在有志成為演算法工程師是好的,但是,你才大二,一口吃不了胖子,演算法對數學要求特別高,你要做的就是學數學,高數,離散數學,概率論,統計學都要學;

第二,演算法工程師對學歷要求高,最低也要是碩士學歷,你才大二,不如好好準備考研去國內頂尖大學甚至國外學CS;

第三,想成為演算法工程師的想法是好的,但是你要掂量自己是不是合適干這麼工作,等你研究生畢業的時候你在說我想成為演算法工程師,那恭喜你!

第四,演算法對編程能力要求高,與其在知乎上看這些無聊的回答,倒不如去參加ACM大賽,參加數學建模競賽,鍛煉自己這方面的能力,說不如去做,行動和執行力才是決定你的未來的鑰匙;

第五,鍛煉自己的英語能力,國內不排除有好的演算法書,但是你愛吃人家咀嚼過的東西還是愛吃原生的?自己去消化去參悟演算法這一門博大精深的知識。

第六,演算法分好多方向,目前最熱門的是機器學習演算法工程師,本科所接觸的演算法都是很基礎的演算法,要想成為演算法工程師,一句話,學歷才是敲門磚!

ZX某5G技術准演算法工程師拙見!

敬請批評


真的不是我看不起你...非科班,就光這一條短時間內你成不了演算法工程師,最慘的甚至一輩子都不可能。為啥?

演算法工程師是計算機行業里有一定難度的一類分支,演算法工程師往往會根據產品的業務特點,提出一個或者一系列數學或者程序方案,以提升業務處理的速度和準確度。想入這個行業數學建模是最基礎的。

然後說回你的學歷...嗯

一套演算法往往是一個產品的靈魂和核心,重要性可想而知,一般小型的外包項目沒必要弄個演算法工程師,碼農們背過的基本演算法就夠了。

換個角度,如果你是一個大公司的把老闆,你會把公司產品的核心工作交給,一個你不熟悉的非科班的畢業生來做么?風險太大了,有可能他是個天才,一瞬間就把我的系統改的更牛逼了。但是世界上有幾個天才呢?去看看張雪峰老師的視頻受受刺激吧。

至於知否要入IT,推薦你看我這篇的回答:22歲,三本汽車專業畢業,想轉行學it?

如果真的很想做入這行,我建議從最基礎的碼農做起,演算法這個作為一個目標很好。

另外提到一點,程序員最忌諱的就是一不懂就伸手的習慣。如果有很多專業辭彙不懂,證明你離你的目標還欠缺這些辭彙相關東西,去百度去學,一點一點去查,最後你會發現,你已經離你的目標很近了。

最後送一句《火星救援》里的經典台詞

You solve one problem, and you solve the next one, and then the next. And If you solve enough problems, you get to come home.

當你解決完一個問題,再去解決下一個問題,以及下一個,當你解決足夠多的問題的時候,你就能回家了。

PS:@日耳曼少女 真巧每次類似的問題都能碰見你


1.

演算法也分很多種的,加密解密,壓縮,隨機數,路由,排序… 日常常見的演算法,比如系統根據喜好來推送一些東西,原理很簡單大致是獲取向量特徵值用向量的夾角餘弦公式來計算餘弦值,根據餘弦值來判定是否符合用戶的使用習慣。對數據進行處理,排序;有時候就必須要考慮數據量,據說騰訊的團隊做出了能在98秒內對100TB數據排序的演算法。高級一點的,就涉及到人工智慧、神經網路和機器學習了;這就涉及到我的姿勢盲區了。

2.

做演算法建議還是去讀研甚至讀博。競賽這種東西還是可以做的,儘力多得獎,跟導師多水水論文,好好學習,提高績點,爭取保研;走上人生巔峰!

(逃


我感覺挺有希望啊。現在國內公司對演算法工程師的要求並不是太高,像我這種末流985的渣碩都拿了幾個大公司的演算法工程師offer(螞蟻金服,網易,京東,58的sp)。不過,有個坑就是,有的互聯網公司(比如網易)要求演算法工程師至少是碩士,但也有的公司(比如阿里,美團)不要求。其實,校招的要求真心不高,你本科還有這麼長時間,數學基本功好還是有戲的。首先,你要選兩門編程語言,一門主語言(C++或者JAVA),一門輔語言(最好是python),主語言可以是JAVA,後期學hadoop,spark也比較容易,不過C語言還是要懂一些。不過,我的hadoop,spark也只是簡單的用,了解的不深。輔語言建議是python,現在做機器學習py還是很主流的,找本書好好啃,然後熟悉下numpy,sklearn,pandas,matplotlib常見庫,可以參加個大數據競賽熟悉下。然後是數據結構與演算法,建議刷刷題,比如leecode和lintcode。常見的數據結構要手寫過去,常見的演算法比如貪心,回溯,動態規劃等要刷題熟悉。其次是機器學習演算法,建議看看統計學習方法和西瓜書,要懂原理,面試可能推公式。然後再看看機器學習實戰,用python寫一遍,真的能加深理解的,做完這,也可以看一些sklearn源碼,xgboost源碼也可以試試。然後要挑一個具體的機器學習方向搞搞比(如推薦,搜索,nlp,廣告等),看一看相關的論文和經典方法。參加比賽,刷名次,刷到前面去對找工作幫助挺大的,在刷比賽過程中,會知道如何處理特徵,這也是很重要的。然後需要看看深度學習,玩玩tensorflow等,看看吳恩達的那個深度學習視頻。做完這些,在找工作之前找個實習應該不太難。。。之後找工作應該也是順理成章。。。


為啥搞演算法?聽上去高大上,絕大部門公司裡面賺的沒有搞產品和方案的工程師多。這個問題想清楚再往下走,不然兩頭都撈不著。

舉個例子,一般公司裁員如果按部門來的話,最先走研究部門,再走產品部門,最後再砍市場和銷售...


參加ACM打敗tourist


你在學校學到的演算法和公司理解的演算法不一樣,尤其是如果你不是科班計算機專業的。

一般互聯網公司所謂的要找演算法工程師,一般做這麼幾個領域

  1. 推薦演算法和協通濾波演算法,就是各種推送系統的設計機制,這個無他,純熟練工種
  2. 大數據分析,還是集中在推送系統裡面,另外做廣告競價這塊用的也比較多
  3. NLP,自然語言分析,還是在廣告,推送系統,搜索工具這些產品中應用,這個無他,純熟練工種,大部分公司調用調用SDK了不得了
  4. 語音信號處理,比如迴路雜訊抑制什麼的,一般用在語音聊天,語音識別的前端檢測,像現在做智能音箱的這些公司,多少都需要搞一些
  5. 圖像處理,尤其是基於OpenCV的圖像處理演算法,一般產品里有做美顏,濾鏡什麼的特別喜歡招這塊的小朋友,近一兩年有被做深度學習的取代的趨勢。
  6. 深度學習,當然,不要以為這個領域大部分公司能做到什麼程度,首先,國內的小公司和大公司,大部分集中在做人臉識別,這塊做的太成熟了,基本上現在上手也就是搭框架,什麼LeNet啊,RCNN啊,TensorFlow啊,說白了你會用工具,知道基本調參方法,就能去做了。其次,正兒八經用到DNN,RNN,CNN的地方,一般都沒什麼鳥數據可用,所以低端的崗位最後會變成收集數據和標記數據的馬仔
  7. SLAM,這個主要集中在機器人定位導航上,比如無人車,掃地機器人,這個方向已經很專了,和上面的那些大路貨不是一個層面的,要有好的團隊,好的導師才能帶你入門,國內這個方向的團隊實驗室來來回回就那麼幾個
  8. VR,AR領域,涉及到的包括視頻跟蹤,SLAM,raytracing,幾何投影等等,實際上是一個綜合的領域,目前都是一些做計算機視覺的人轉行做這塊
  9. 傳統的演算法範疇還包括:所有的業務邏輯流程設計,隨機數生成,校驗,加密解密,壓縮演算法,但是這種類型的演算法不需要專門一個演算法工程師來做,都是程序員搞定的。

接下來的,是非互聯網的演算法工程師做的工作,這些內容,不是學學計算機就搞得定了,一般都是特定領域

  1. 醫學影像處理,三維圖像重構,用在B超,CT成像上,這個是醫療方向的
  2. 通信基帶信號處理,網路優化演算法
  3. 音頻濾波,用在HiFi音響上面
  4. 控制演算法,自適應濾波演算法,用在機械領域上,比如機械臂行程控制,穩定性
  5. 有限元演算法,這塊從雷達,機械,電磁學,到服裝設計,統統都有很有價值的應用
  6. 統計建模,stochastic calculus,用於金融量化投資領域
  7. 小信號處理,用於感測器的數據檢測


如果要學演算法並且將來以此為職業,推薦先學c(將來想做這一行的話不推薦Python Java等),然後去蹭計院的演算法與數據結構課程,然後刷leetcode,然後刷國內的競賽用的oj。

不存在什麼看不懂,只是沒用心看。演算法其實和數學沒差的。


你說「有意往演算法工程師方向學習。但是一直找不到具體的關於這個職業的解釋「

也就是說你是在嚮往一個你自己都不知道要做什麼的崗位學習?

很多時候,方向比速度更重要。

Wiki上有對於演算法工程學的解釋,可以參考: Algorithm engineering

學習演算法的話,《演算法導論》是必學的,國內有翻譯好的。WIKI: Introduction to Algorithms

在《導論》的基礎上,你還要選擇你的研究方向。除非你做科研,那麼這個方向的把握更多取決於在實際引用的價值體現。比如說,針對數據存儲,新的/優化後的演算法可以節省時間/空間;針對數據安全反面,新的/優化後的演算法可以節約時間或者有更好的保密性。因為相對高的應用價值,這些研究方向都會得到大型IT企業的青睞。

你才大二,不懂的很多也不奇怪。努力吧。


非專業人士回答,我也有不少本科同學轉行做了演算法工程師,他們本來的方向有電子商務,也有控制工程。不過有個共同特點,數學功底深厚,這也是他們可以考上知名院校軟體工程碩士的原因。

演算法工程師太吃香了,我們和他們合作時都非常羨慕他們的待遇。不過我們的規劃設計跟他們比起來技術難度的確難以差強人意。

具體很多演算法我也沒有深究過,他們只給了我們一個介面,就可以套用。不過效率遠比自己寫的好得多,我們自己的需要把大數據在主機上跑一個星期,他們的可能就幾分鐘。大大提高伺服器利用率。


有必要學習數學建模。


cs本科畢業生來亂答一發,演算法用過一些,但是對演算法工程師也沒什麼理解,就說我懂的吧,現在的計算機行業對演算法工程師的要求非常高,學位基本都要求碩士,僅僅是門檻,很少有例外,其次是自身硬實力,演算法對數學、編程的要求都很高,數學建模是必須學滴。雖然你是非科班,但是我看來不是太大的問題,畢竟學位門檻擺在那,你還需要一個CS的碩士學位,本科期間打好數學底子,積极參加相關的各級比賽,大三開始籌備考研事宜,只要堅持得住,演算法工程師這不是很難,至於成就多高就看個人了,這種事還不是取決你決心多大嘛。。


演算法工程師 廣義上是指搞演算法的 除了機器學習之外 還包括控制演算法啊 圖形演算法啊 slam啊

狹義上 現在談演算法工程師一般指的是 搞學習和大數據的 俗稱調參俠。


我我我我是個文科會計女生,,,

實在不懂樓主的專業

抱歉啦


這個,你還是先讀個博吧,讀博覺得學有餘力再說吧。我有個師兄,數學賊牛逼,想望演算法工程師轉,但是仍然被那些數學虐的死去活來。


為什麼要邀請我,我連演算法工程師是幹啥的都不知道


先找個好導師,讀研吧


如果你是數學專業的,請繼續前行,如果不是,考慮清楚再走,這是一個沒有回頭路的選擇


謝邀。

演算法(Algorithm)是一系列解決問題的清晰指令,也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間複雜度與時間複雜度來衡量。演算法工程師就是利用演算法處理事物的人。


演算法簡單來說就是把現實生活中的問題用代碼解決,但是這是個極其複雜的過程。簡單的代碼一般程序員就能完成的,需要演算法分析師來乾的肯定不是簡單問題,主要的工作就是現在還沒有解決的現實問題,或對已解決的演算法優化,優化主要體現在運行時間和空間上。非常要求邏輯能力和分析能力。

大二的話先跨考個研究生吧,什麼基礎都沒有肯定是不行的。但你要自學還是有點難度的,計算機畢竟是個技術活,搞演算法更是技術中的技術。數學建模你要是可以搞個獎更好,對考研也有幫助,如果沒有得獎的信心就先別琢磨建模了,那也不是個簡單事。關鍵就是你先考上研究生,沒基礎就要有比別人花更多時間精力的覺悟。

當然跨考前希望你認真確認自己是真的喜歡計算機,我的很多同學還是計算機專業的,都感覺自己學起來很難受,計算機加數學的各種專業課學起來也累,最後自己也沒信心。如果是單純覺得想有前途而不真心喜歡我就覺得沒必要,或者選個不那麼難的方向。


推薦閱讀:

ACM/TOPCODER類程序設計能力對於想成為機器學習、數據挖掘類演算法工程師的學生來說的意義是什麼?
演算法工程師有哪些發展前景?
招行信用卡中心研發offer與大眾點評網研發工程師offer 怎麼選?

TAG:數學建模 | IT行業 | 自學編程 | 演算法工程師 |