更新時(shí)間:2019-08-17 09:00:00 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽3456次
很多人在學(xué)完Java基礎(chǔ)之后,不知道后面該如何進(jìn)行下一步地進(jìn)行學(xué)習(xí),或者不知道如何去學(xué)習(xí)。如何系統(tǒng)地學(xué)習(xí)Java一直是困擾著很多新手或者期待在Java方向進(jìn)階的小伙伴的一個(gè)問(wèn)題。我也在知乎上回答了好幾個(gè)類(lèi)似的問(wèn)題,我覺(jué)得既然很多人都需要這方面的指導(dǎo),那我就寫(xiě)一篇自己對(duì)于如何系統(tǒng)學(xué)習(xí)Java后端的看法。
由于個(gè)人能力有限,下面的學(xué)習(xí)路線(xiàn)以及方法推薦一定還有很多欠缺的地方。本文適合剛?cè)腴T(mén)或者剛?cè)腴T(mén)不久的朋友,比較基礎(chǔ)。

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



相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)