如何成為一名大資料開發工程師
1.關於我
本人現在北京某大型網際網路公司高階資料開發工程師一枚,三年工作經驗,一年多面試官經驗。
2.為啥要寫這篇文章?
面試中經常會遇到這種情況:之前專心寫web的Java碼農突然轉型想做大資料了,然後寫幾個大資料的專案經驗跑來面試,結果就是一問三不知,還有好多人只是搭了個Hadoop環境就說自己是搞大資料的,然後來面數據開發,結果肯定悲劇。一般情況下,面試失敗的我都會送走,然後針對不同的人給點建議。面試候選人一激動就要加微信,最後的結果就是人沒招來幾個,微信好友加了不少。這篇文章基本上就是一些經驗的彙總。
3.正題
首先,我個人進入大資料行業也純屬偶然,當年實習的時候做的是純純的Java開發,後來正式畢業了以後找了份Java開發的工作,本以為和大多數Java猿一樣天天搞增刪改查了,但是巧的是搞好部門有個做大資料開發的離職了,資料開發缺人手,然後領導就讓我頂上了。剛開始什麼Hadoop,HDFS也是各種不懂,只會寫hive,因為畢竟有SQL基礎嘛。再後來發現hive實現一些東西很麻煩,就開始學習spark。網上找的例子,從Wordcount入手,邊寫簡單的例子邊看《Hadoop權威指南這本書》,不到一週時間就上手寫了一個計算報表資料的作業。後來就不斷深入,過程之中覺得《Hadoop權威指南》這本書每一次讀都有不同的體會,前前後後應該讀了有三四遍吧。
總體感受就是理解了分散式計算的模型,就知道如何寫mapreduce了。但是如何進行作業優化以及資料處理過程中遇到的問題如何解決就需要更深入的研究。
前面提到來面試的有應屆生也有工作幾年的,針對不同的人給一些不同的建議。
3.1 對應屆生
個人覺得應屆生應該打好基礎,大學本科一般都會開設資料結構,演算法基礎,作業系統,編譯原理,計算機網路等課程。這些課程一定要好好學,基礎紮實了學其他東西問題都不大,而且好多大公司面試都會問這些東西。如果你準備從事IT行業,這些東西對你會很有幫助。
至於學什麼語言,我覺得對大資料行業來說,Java還是比較多。有時間有興趣的話可以學學scala,這個語言寫spark比較棒。
叢集環境一定要搭起來。有條件的話可以搭一個小的分散式叢集,沒條件的可以在自己電腦上裝個虛擬機器然後搭一個偽分散式的叢集。一來能幫助你充分認識Hadoop,而來可以在上面做點實際的東西。你所有踩得坑都是你寶貴的財富。
然後就可以試著寫一些資料計算中常見的去重,排序,表關聯等操作。
對於我來說,面試應屆生就問你的基礎,筆試大多是資料結構和演算法方面的,如果你基礎不錯而且有一定的大資料方面的經驗,基本上都會過。
3.2 對有工作經驗想轉行的
主要考察三個方面,一是基礎,二是學習能力,三是解決問題的能力。
基礎很好考察,給幾道筆試題做完基本上就知道什麼水平了。
學習能力還是非常重要的,畢竟寫Javaweb和寫mapreduce還是不一樣的。大資料處理技術目前都有好多種,而且企業用的時候也不單單使用一種,再一個行業發展比較快,要時刻學習新的東西並用到實踐中。
解決問題的能力在什麼時候都比較重要,資料開發中尤為重要,我們同常會遇到很多資料問題,比如說最後產生的報表資料對不上,一般來說一份最終的資料往往來源於很多原始資料,中間又經過了n多處理。要求你對資料敏感,並能把握問題的本質,追根溯源,在儘可能短的時間裡解決問題。
基礎知識好加強,換工作前兩週複習一下就行。學習能力和解決問題的能力就要在平時的工作中多鍛鍊。
社招的最低要求就上面三點,如果你平日還自學了一些大資料方面的東西,都是很好的加分項。
以上是個人的一些經歷和見解,希望能幫到你。當然也不完全正確,如果你認為不妥可以評論開噴,哈哈。
最後祝各位看官都找到稱心如意的工作!
更多文章請關注微信1公眾號:bigdataer