非科班出身,想轉行大數據開發,最詳細的學習路線是怎麼樣的?

第一階段:Java部分Java基礎、JVM、併發、數據庫、緩存、設計模式、計算機網絡、操作系統、Linux

第二階段:大數據框架MapReduce、YARN、HDFS、HBase、Hive、Zookeeper、Spark、Storm、Flink、Kafka第三階段:面試就業封裝項目、面經、簡歷、面試流程、軟素質、實習、offer選擇

非科班出身,想轉行大數據開發,最詳細的學習路線是怎麼樣的?

第一階段:Java部分

因為我是非科班,沒有任何Java基礎,所以是從Java語法學起。

1、Java基礎 看視頻+看書是比較好的入門方式。視頻可以幫助理解、看書可以系統掌握知識點。現在網上視頻有很多,我當初看的是畢向東Java入門視頻,可能比較老,但是還是比較經典,他不僅講了語法,有些點還會繼續深入到Java編程思想這本書的深度。學習Java視頻時一定要邊看邊敲邊運行,根據視頻講的重點再對應看書,書有兩本,一本基礎《Java核心技術卷I》、一本提高《Java編程思想》。建議先根據視頻學習《Java核心技術卷I》,學習結束後,再系統學習《Java編程思想》,因為編程思想這本書有點難度。(推薦編程工具使用IDEA,不需要學習命令行運行Java) 這一部分學習,可以做到掌握語法、關鍵字、多態、內部類、集合等特性。但是,其中集合部分是非常重點,建議深入源碼學習,特別是hashmap、concurrenthashmap等。

2、Java虛擬機《深入理解java虛擬機》這本就夠了,但是可能在剛學完Java基礎後有點看不懂,我建議是可以先看一遍這本書,後面學習一段時候後,比如做完一個項目後,再去深入理解這本書,這樣就能將這本書做到理解記憶。對於虛擬機的調優,可以去看視頻或者博客講解,掌握常用的虛擬機指令和調優手段即可。如果項目中能夠用到虛擬機調優,將是非常亮點。

3、Java併發 併發入門難度在於它有很多的抽象名詞,所以第一步先學習併發的一些概念和重點知識,推薦學習《Java高併發程序設計》,這本對於沒有併發基礎的同學可以很好的理解,雖然配圖比較粗糙,但是不影響學習。有時間可以敲一下“多生產者多消費者”的多線程的例子,深入理解下多線程。光學這本書針對面試是不夠的,需要繼續學習併發包中重點源碼,這一點可以放在準備面試階段學習,可以結合源碼和博客對照學習,主要掌握AQS、鎖底層。、鎖優化、線程池等重點部分。

4、數據庫

學習路線是先會寫SQL然後深入數據庫原理,最後學習優化。《MySQL必知必會》看完之後,去牛客上刷下SQL題目,大多數題目都會寫了,核心還是聚集函數、判斷、連接、嵌套查詢等;另外,可以找個視頻學習下安裝數據庫,在自己安裝的數據庫上學習建表、插入數據等操作(之前在學習Java視頻可能也會學到);然後,開始學習原理知識,一方面學習基礎ACID、隔離等知識,另一方面學習索引結構,推薦看《MySQL技術內幕:InnoDB存儲引擎》幫助明白索引原理,面試一般問索引數據結構B+樹、索引優化等;最後學習性能優化,推薦《高性能MySQL》,核心是數據庫優化,從應用層、數據結構層、索引層、硬件網絡層等方面學習優化。

5、Redis緩存 建議直接把《Redis設計與實現》這本書吃透就可以了,作者是Redis源碼界大佬,雖然是C語言寫的,但是我們主要學習其中的數據結構、算法優化、性能優化的思想,面試如果能說到對Redis源碼的理解,那是最好的。

6、設計模式 推薦《大話設計模式》,然後結合一些代碼案例去理解,比如單例(要求手寫)、模板、適配器、裝飾、代理等設計模式,能說出原理和使用場景,如果能在自己項目中使用過或者看過的源碼中學習過設計模式,這樣更能體現出你對設計模式的理解。

7、計算機網絡 這一部分書籍也很多,入門可以看《圖解HTTP》、《圖解TCP/IP》,提高的話就看《計算機網絡:自頂向下》,重點把HTTP、TCP、UDP、IP這幾個部分搞明白,重中之重是TCP。

8、操作系統 對於學習Java的同學,這個可以不用深入,學c++的同學建議深入。這一點我只看了《現代操作系統》中內存、IO、進程這幾部分,如果想要詳細學,可以在B站上搜清華大學向勇的視頻,然後再系統看書。

9、Linux 在電腦上安裝了虛擬機,然後安裝一個Linux系統(centos或者ubuntu),然後根據

《鳥哥linux私房菜》的學習視頻或者直接看那本書進行學習並敲一遍指令,主要是熟悉linux系統和常見指令。如果科班的同學想要深入學習的話,推薦看《Linux內核設計與實現》,在源碼層面去學習Linux進程、IO、內存等知識點。

10、數據結構與算法 這一部分應該是貫穿整個學習過程,在每個階段都要一直進行的。先學習數據結構,推薦《大話數據結構》入門,掌握基本結構後,開始刷《劍指offer》,推薦去牛客平臺刷(注意:千萬不要等全部數據結構學完再刷,知道數組、鏈表、字符串、二叉樹等基本結構後就可以刷題了);然後,開始刷leetcode,基本是掌握Top100左右,時間充足建議刷到200道+。剛開始不要根據Tag刷,會形成思維定式,後面刷過多數題目後,可以針對Tag進行詳細擊破。(每個人刷題的習慣不一樣,只要有思路會做題就好)

以上學完,基本熟悉了Java基礎部分,下面開始學習框架:Java後端同學開始學習SSM、spring boot、spring cloud;對於大數據開發的同學,開始學習Hadoop全家桶、spark、storm、flink等流計算。


非科班出身,想轉行大數據開發,最詳細的學習路線是怎麼樣的?

第二階段:大數據框架部分

大數據開發的同學,可以先不用深入掌握SSM,但最好根據視頻學習下如何使用這些框架,因為到具體工作中可能會用到。

1、大數據入門 個人建議視頻入門最快,我看了一個關於大數據各類組件的介紹、安裝和使用的視頻課程,瞭解了大數據中各個組件的作用,這樣,在後面學習組件原理的使用,可以理解記憶。

2、Hadoop權威指南 這本書單獨作為一個標題,因為這本書比較全面地講解了Hadoop全家桶,我們主要學習MapReduce、HDFS、YARN、HBase、Hive等,通過這本書,可以學到這些組件的基本原理,但是需要其他書籍補充學習,繼續深入各個組件。

3、MapReduce 雖然現在很少用著MR來處理,但是其思想是非常經典的。主要學習其處理流程思想以及與spark的比較,然後自己寫一下用MR來實現TopK、全排序的例子。

4、YARN 這一點推薦直接看董西成老師的博客(直接搜即可),總結的很好,主要學習資源調度過程、調度器原理等。

5、HDFS 這一部分,我是深入源碼學習的。如果想要深入源碼的同學,建議看《Hadoop 2.X HDFS源碼剖析》這本書並結合源碼學習,核心是從源碼角度去回答讀寫文件過程。

6、HBase HBase創建表、插入、刪除等操作要掌握,然後深入原理,可以看《HBase企業應用開發實戰》或者2019年新出的《HBase原理與實踐》,重點掌握建表、讀寫流程、HBase調優等。

7、Hive 這一點,我沒有過多深入,只是寫了一些HSQL,學到這裡,可以順便學習下數倉的知識,因為有時候面試會問一些,但是瞭解即可,不必過於深入。

8、Spark 先學習下scala語言,看視頻或者看《快學scala》都可以,會使用即可,主要是為了學習Spark打基礎,然後推薦看《Spark大數據處理技術》

,雖然版本有點老,但是核心思想是沒有變的

9、流計算 Spark streaming、Storm、Flink比較三者的特點,Storm漸漸用的少了,可以簡單瞭解,目前看,Flink會用的越來越多,建議可以重點深入Flink,我之前只重點學了Spark streaming,有其他同學學了Flink,反饋說面試官對Flink還是比較感興趣的,推薦一本講原理的新書《Flink原理、實戰與性能優化》,我看了目錄還是非常不錯的,重點清晰,後續我也會繼續學習。

10、zookeeper 一本《從paxos到zookeeper分佈式一致性協議》即可,另外要結合HDFS、HBase等組件的高可用設計原理,掌握zookeeper常見應用場景、分佈式協議、選舉原理等。

11、消息隊列 消息隊列有很多種,RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq等,可以只學習其中一種即可,根據你項目中用到的哪種進行選擇,當時我項目中用到了Kafka,所以主要深入學習了Kafka的一些機制,Kafka書籍大都來自於官網,建議看官網掌握架構和原理,看博客掌握常見面試題。

非科班出身,想轉行大數據開發,最詳細的學習路線是怎麼樣的?

第三階段:面試就業

1、封裝項目無論何種項目,突出能力為主,儘可能表現你的知識深度,適當突出廣度。項目一般分為四類:(1)看網上視頻做的偽實戰項目:比如秒殺系統、訂單系統、大數據分析項目等等,說白了,只是在功能上進行復現,距離真正的企業實戰還有一定差距。但是,可以體現自己的學習內容,對於框架或組件的深入理解,比如你用到了dubbo,那麼你知道了dubbo底層原理或源碼,也是非常突出的,項目就得到了昇華,建議是少談業務,多聊底層技術,這樣顯示你的深度。(2)實習項目:有些同學在實習期間做的項目,這是真正的實戰項目,但是人在少數能夠有這個經歷。如果你有的話,建議朝實戰方面封裝,比如JVM調優、GC調優、併發量或者實際遇到的併發問題,併發鎖的使用等等。(3)比賽項目:做了一些天池中間件比賽,也是非常好的。突出比賽難度和你自己的貢獻,用比賽數據說話、描述清楚比賽流程,如何攻克其中的難點,提高了成績等等。(4)實驗室弱相關的項目:實驗室做的項目可能和你的職位不太相關,但是也可以體現能力,比如:我之前實驗室用linux做了一個項目,但是和大數據關係不是那麼大,但是能夠突出linux一些技能和計算機消息隊列等方面,我就封裝了下,面試下來發現效果還不錯,因為這個項目是真實運行的項目,講述時比較有自信。

2、準備簡歷簡歷中的重點是技能描述、項目經歷,有實習經歷的話,也是一個重點。(1)技能描述:多寫熟悉技能,儘量具體、具有針對性,比如:熟悉Java虛擬機可以寫成熟悉JVM內存管理和垃圾回收;熟悉計算機網絡寫成熟悉HTTP、TCP等,注意:不太懂的技能不要寫,寫了就是給自己挖坑。(2)項目經歷:一般分為項目描述、項目職責。項目描述是對整個項目流程的描述,使用了什麼技能完成了什麼功能,可以按照數據輸入到數據輸出到數據展示的過程。項目職責是本項目中你完成的亮點和優化,比如解決了HBase寫熱點問題、實現HBase高可用等(3)實習經歷:有的話可以重點寫。實習參與的項目,主要突出你在其中完成了工作(這裡有個小Bug,也許你實際沒完成,但是你熟悉整個開發過程以及原理,那麼也可以詳細寫),原則就是你懂的點就可以展開寫。另外,突出這個項目的實戰性,解決了哪些開發過程中的實際問題,突出自己的能力。

3、多刷面經 面經就是考試題

,所以就像考試之前刷題一樣去刷面經貼。通過刷完許多面經後,基本就可以總結出大多數的面試點,也知道這些面試點是出自於書籍中的哪部分,然後對應總結下。另外,如果之前看書的時候就已經做好相關總結,那麼只需要刷一些面經貼作為補充,然後將自己的總結多多複習幾遍即可。

4、面試流程(1)招聘信息一般公佈於各大官網、牛客網和其他招聘網站等,招聘分為公司統招和部門直招,二者最大的區別是部門直招一般是該部門比較缺人、面試流程會快,你對這個部門也會有更多的瞭解,另外,最好走內推,防止簡歷石沉大海,牛客上有大量內推貼基本滿足我們的求職要求,投簡歷時可以和內推人交流。(2)面試一般2面以上,第一面一般是簡歷面,根據你的簡歷從頭至尾提問;後面幾面也會提到簡歷,但是更多會是項目和項目中技術的擴展,另外現在越來越多的公司要求手撕代碼,所以代碼能力是必須的。(3)面試通過後一般是HR先給口頭offer,最終還是要以郵件為準

5、軟素質 一般指在面試過程中的語言表達和臨時應變能力。語言表達不宜過快、但是一定要條理清晰,自己說的清晰,面試官才聽的舒服;臨時應變能力,這個只有在平時面試中不斷積累總結,面試結束後要自我覆盤,對回答不好的部分重新思考,是否可以轉變問題,引導面試官向自己擅長的領域提問。

6、實習經歷 如果有時間,建議還是要參與實習。一般暑期實習可以直接轉正,相當於可以提前鎖定offer,然後再參加秋招,心情會更加放鬆。如果無法實習,那就利用別人實習的時間,好好深入基礎、算法和項目,等待秋招(有些公司也有秋招提前批)。

7、offer選擇 決定因素一般是薪資、技術成長和地點,所以,根據這三個因素對不同offer進行打分,自然可以得到比較滿意的結果。(說起來容易,選起來還是比較糾結的,不過多數人都會面向薪資編程吧)

8、正式就業 這是在獲得offer後的最後一步,首先是籤三方協議,一般分為紙質籤或著網籤,根據學校簽約指導就好,其中最重要的是確定好公司後再寄三方,以免帶來不必要的麻煩;然後是戶口問題,是否在就業地方落戶,落戶的話,要關注當地一些政策,有些地方會有較大的人才引進福利,記得提前準備材料。

祝願大家收穫理想的offer!

碼字不易,如果您覺得文章寫得不錯:

請您 1.關注作者~ 您的關注是我寫作的最大動力

2.私信我“大數據”

我將與您分享一套最新的大數據學習教程和全套開發工具


分享到:


相關文章: