更新時間:2019-08-17 09:00:00 來源:動力節點 瀏覽3009次
很多人在學完Java基礎之后,不知道后面該如何進行下一步地進行學習,或者不知道如何去學習。如何系統地學習Java一直是困擾著很多新手或者期待在Java方向進階的小伙伴的一個問題。我也在知乎上回答了好幾個類似的問題,我覺得既然很多人都需要這方面的指導,那我就寫一篇自己對于如何系統學習Java后端的看法。
由于個人能力有限,下面的學習路線以及方法推薦一定還有很多欠缺的地方。本文適合剛入門或者剛入門不久的朋友,比較基礎。
學習路線以及方法推薦
下面的學習路線以及方法是筆主根據個人學習經歷總結改進后得出,我相信照著這條學習路線來你的學習效率會非常高。學習某個知識點的過程中如果不知道看什么書的話,可以看小編以前發的這篇文章:Java學習必備書籍!。建議使用IntellijIDEA進行編碼,可以單獨抽時間學習IntellijIDEA的使用。
step1:Java基礎
《Java核心技術卷1/2》和《HeadFirstJava》這兩本書在我看來都是入門Java的很不錯的書籍(《Java核心技術卷1/2》知識點更全,我更推薦這本書),我倒是覺得《Java編程思想》有點屬于新手勸退書的意思,慎看,建議有點基礎后再看。你也可以邊看視頻邊看書學習(黑馬、尚硅谷、慕課網的視頻都還行)。對于Java8新特性的東西,我建議你基礎學好之后可以看一下,暫時看不太明白也沒關系,后面抽時間再回過頭來看。
看完之后,你可以用自己學的東西實現一個簡單的Java程序,也可以嘗試用Java解決一些編程問題,以此來將自己學到的東西付諸于實踐。
記得多總結!打好基礎!把自己重要的東西都記錄下來。API文檔放在自己可以看到的地方,以備自己可以隨時查閱。為了能讓自己寫出更優秀的代碼,《EffectiveJava》、《重構》這兩本書沒事也可以看看。
學習完之后可以看一下關于Java基礎你不得不會的34個問題,檢測一下自己的掌握情況,這34個問題都時Java中比較重要的知識點,最重要的是在Java后端面試中的出場率非常高。
step2:多線程的簡單使用
多線程這部分內容可能會比較難以理解和上手,前期可以先簡單地了解一下基礎,到了后面有精力和能力后再回來仔細看。推薦《Java并發編程之美》或者《實戰Java高并發程序設計》這兩本書。
Java多線程知識基礎:
什么是線程和進程?
請簡要描述線程與進程的關系,區別及優缺點?
說說并發與并行的區別?
為什么要使用多線程呢?
使用多線程可能帶來什么問題?
說說線程的生命周期和狀態?
什么是上下文切換?
什么是線程死鎖?如何避免死鎖?
說說sleep()方法和wait()方法區別和共同點?
為什么我們調用start()方法時會執行run()方法,為什么我們不能直接調用run()方法?
Java多線程知識進階:
synchronized關鍵字:①說一說自己對于synchronized關鍵字的了解;②說說自己是怎么使用synchronized關鍵字,在項目中用到了嗎;③講一下synchronized關鍵字的底層原理;④說說JDK1.6之后的synchronized關鍵字底層做了哪些優化,可以詳細介紹一下這些優化嗎;⑤談談synchronized和ReentrantLock的區別。
volatile關鍵字:①講一下Java內存模型;②說說synchronized關鍵字和volatile關鍵字的區別。
ThreadLocal:①簡介;②原理;③內存泄露問題。
線程池:①為什么要用線程池?;②實現Runnable接口和Callable接口的區別;③執行execute()方法和submit()方法的區別是什么呢?;④如何創建線程池。
Atomic原子類:①介紹一下Atomic原子類;②JUC包中的原子類是哪4類?;③講講AtomicInteger的使用;④能不能給我簡單介紹一下AtomicInteger類的原理。
AQS:①簡介;②原理;③AQS常用組件。
step3(可選):操作系統與計算機網絡
操作系統這方面我覺得掌握操作系統的基礎知識和Linux的常用命令就行以及一些重要概念就行了。
對于Linux我們要掌握基本的使用就需要對一些常用命令非常熟悉比如:目錄切換命令、目錄操作命令、文件的操作命令、壓縮或者解壓文件的命令等等。
計算機網絡方面的學習,我覺得掌握基本的知識就行了,不需要太深究,一般面試對這方面要求也不高,畢竟不是專門做網絡的。推薦《網絡是怎樣連接的》、《圖解HTTP》這兩本書來看,這兩本書都屬于比較有趣易懂的類型,也適合沒有基礎的人來看。
step4(可選):數據結構與算法
如果你想進入大廠的話,我推薦你在學習完Java基礎或者多線程之后,就開始每天抽出一點時間來學習算法和數據結構。為了提高自己的編程能力,你也可以堅持刷Leetcode。就目前國內外的大廠面試來說,刷Leetcode可以說已經成了不得不走的一條路。
對于想要入門算法和數據結構的朋友,建議看這兩本書《算法圖解》和《大話數據結構》,這兩本書雖然算不上很經典的書籍,但是比較有趣,對于剛入門算法和數據結構的朋友非常友好。《算法導論》非常經典,但是對于剛入門的就不那么友好了。
另外,還有一本非常贊的算法書推薦給各位,這本書的名字就叫《算法》,書中的代碼都是用Java語言編寫。這本書的優點太多太多比如它的講解基礎而全面、對閱讀者比較友好等等。我覺得這本書唯一的缺點就是太厚了(小聲BB,可能和作者講解某些知識點的時候優點啰嗦有關)。除了這本書之外,《劍指offer》、《編程珠璣》、《編程之美》這三本書都被很多大佬推薦過了,對于算法面試非常有幫助。《算法之美》這本書也非常不錯,非常適合閑暇的時候看。其他算法資源,詳情見從入門到修仙的算法之路
《算法》
step5:前端知識
這一步主要是學習前端基礎(HTML、CSS、JavaScript),當然BootStrap、VUE等等前端框架你也可以了解一下。網上有很多這方面資源,我只推薦一個大部分初學這些知識都會看的網站:http://www.w3school.com.cn/,這個網站用來回顧知識也很不錯。推薦先把HTML、CSS、JS的基礎知識過一遍,然后通過一個實際的前端項目來鞏固。
step5:MySQL
學習MySQL的基本使用,基本的增刪改查,SQL命令,索引、存儲過程這些都學一下吧!推薦書籍《SQL基礎教程(第2版)》(入門級)、《高性能MySQL:第3版》(進階)、《MySQL必知必會》。
MySQL學習資源推薦以及重要知識點總結:(修訂)MySQL優化/面試,看這一篇就夠了
step6:Maven
建議學習常用框架之前可以提前花半天時間學習一下Maven的使用。(到處找Jar包,下載Jar包是真的麻煩費事,使用Maven可以為你省很多事情)
step7:常用框架
學習Struts2(可不用學)、Spring、SpringMVC、Hibernate、Mybatis、shiro等框架的使用,(可選)熟悉Spring原理(大廠面試必備),然后很有必要學習一下SpringBoot。我也遇到很多公司對于應屆生直接上手SpringBoot,不過我還是推薦你把Spring、SpringMVC好好學一下。
Spring真的很重要!一定要搞懂AOP和IOC這兩個概念。Spring中bean的作用域與生命周期、SpringMVC工作原理詳解等等知識點都是非常重要的,一定要搞懂。
推薦看文檔+視頻結合的方式,中途配合實戰來學習。
step8:高性能網站架構
學習Dubbo、Zookeeper、常見的消息隊列(比如ActiveMq、RabbitMQ)、Redis、Elasticsearch的使用(這些東西可以通過黑馬視頻最后一個分布式項目來學,邊看視頻,邊自己做,查閱網上博客,效果更好)。
一定要學會拓展知識,養成自主學習的意識。黑馬項目對這些知識點的介紹都比較蜻蜓點水。
step9:其他
可以再回來看一下多線程方面的知識,還可以利用業余時間學習一下NIO和Netty,這樣簡歷上也可以多點東西。如果想去大廠,JVM的一些知識也是必學的(Java內存區域、虛擬機垃圾算法、虛擬垃圾收集器、JVM內存管理)推薦《深入理解Java虛擬機:JVM高級特性與最佳實踐(最新第二版》和《實戰Java虛擬機》,如果嫌看書麻煩的話,你也可以看我整理的文檔:。
另外,現在微服務特別火,很多公司在面試也明確要求需要微服務方面的知識。如果有精力的話可以去學一下SpringCloud生態系統以及其他微服務常用框架。
下載這些學習資源,可以登錄動力節點IT培訓官網咨詢在線客服老師。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習