學(xué)習(xí)Java,不管是零基礎(chǔ)還是有基礎(chǔ)的朋友,如果你沒(méi)有一個(gè)合理關(guān)于Java的學(xué)習(xí)路線,那么你的Java學(xué)習(xí)之路很可能就會(huì)比較艱辛,到后你可能因?yàn)閷W(xué)的太過(guò)吃力而放棄Java開(kāi)發(fā)的學(xué)習(xí)。
你是否思考過(guò)什么樣的Java學(xué)習(xí)路線棒呢?你當(dāng)下學(xué)Java有沒(méi)有制定相應(yīng)的學(xué)習(xí)路線?你覺(jué)得你自己制定的Java學(xué)習(xí)路線學(xué)起來(lái)效果怎么樣呢??有沒(méi)有想要重新規(guī)劃的想法?
Java 方向的思考
目前常見(jiàn)的三大后臺(tái)開(kāi)發(fā)語(yǔ)言,分別是 C++、Java、Go,C++ 現(xiàn)在學(xué)習(xí)的人比較少,偏底層而且入門(mén)較難;Go 才興起,百度、滴滴、頭條有部分架構(gòu)轉(zhuǎn)型 Go;而其中 Java 方向,是現(xiàn)階段招聘需求多,學(xué)的人也特別多,其應(yīng)用場(chǎng)景特別的廣,如果作為后臺(tái)的學(xué)習(xí)方向,是沒(méi)有問(wèn)題的。
對(duì)于 Java 系的公司,阿里、京東、美團(tuán)都是純 Java 技術(shù)棧,百度、滴滴、頭條、網(wǎng)易也有 Java 崗;我認(rèn)識(shí)的很多同學(xué),本科、研究生都有,其中選擇走 Java 后臺(tái)方向的,很多都去了大廠,從普遍情況看:只能說(shuō)在這個(gè)方向上,概率還是大一點(diǎn);對(duì)于其他方向,前端、測(cè)試、運(yùn)維、安卓等,有興趣也可以走。
1、Java 基礎(chǔ):基本的數(shù)據(jù)類(lèi)型、流程控制語(yǔ)句(if、for、while 等)、面向?qū)ο蟮睦斫?對(duì)象、封裝、繼承、多態(tài))、一些關(guān)鍵字的理解(super、this 等)、接口、抽象類(lèi)、ArrayList、String、Random、Math 等等;先把 Java 語(yǔ)言入門(mén),Java 相關(guān)的基礎(chǔ)打牢,熟練使用 Java,可以先完成一些小的 demo 作為實(shí)戰(zhàn)。
對(duì)于初學(xué) Java 的讀者,可以先配置 java、javac 環(huán)境(熟悉熟悉 cmd 命令),建議先拿 .txt 文件寫(xiě)代碼,一個(gè)一個(gè)字母敲,培養(yǎng)一下編程的感覺(jué);剛開(kāi)始接觸編程,關(guān)鍵是找到一定的感覺(jué)和興趣,在 Java 基礎(chǔ)階段,把每一個(gè)細(xì)節(jié)都要弄明白,對(duì)于 .txt 敲 Java 代碼,可以保持三個(gè)月左右的時(shí)間,充分的讓自己熟悉起來(lái)。
2、Java 進(jìn)階:Date、StringBuilder、List、Set、Map、HashMap、異常、自定義異常、泛型、線程、線程同步、線程池、函數(shù)式思想、文件、字節(jié)流、網(wǎng)絡(luò)編程相關(guān)等等;在這個(gè)階段,不僅僅是會(huì)調(diào)用 Java 的一些 API,還需要把 List、Set、Map、HashMap 等底層源碼看看,自己能掌握理解,核心代碼能手寫(xiě)。
對(duì)于學(xué)習(xí) Java,在校期間大部分都是用:eclipse 或 myeclipse,我當(dāng)時(shí)初學(xué) Java 用的就是 eclipse 寫(xiě)的代碼,工欲善其事必先利其器,先把 eclipse 或 myeclipse 的使用技巧好好學(xué)學(xué);對(duì)于工作了的,基本上都用 IntelliJ IDEA 寫(xiě)的 Java 項(xiàng)目,IDEA 是 Java 編程語(yǔ)言開(kāi)發(fā)的集成環(huán)境,被公認(rèn)是好的 Java 開(kāi)發(fā)工具之一,我也裝的這個(gè)軟件。
3、JavaWeb:mysql、tomcat、nginx 的安裝、配置、部署、jsoup 使用、xml 基礎(chǔ)、html + css + js(前端基礎(chǔ)、前端框架 jQuery 有時(shí)間可以學(xué)學(xué))、maven 的常用命令,依賴(lài)管理等等;在這個(gè)階段,就需要做一些簡(jiǎn)單的項(xiàng)目,項(xiàng)目中需要的技術(shù)點(diǎn)就是上面列出來(lái)的;前 3 個(gè)階段,一步一步走,基本上走到這里,就可以做一些有意思的項(xiàng)目了,比如:掃雷、坦克大戰(zhàn)、各種管理系統(tǒng)都是可以一個(gè)人完成的。
其實(shí),對(duì)于學(xué)習(xí) Java 后臺(tái)開(kāi)發(fā)的,多少的懂點(diǎn)前端知識(shí),畢竟的做前后端的交互、接口協(xié)議的制定,會(huì)前端的,整個(gè)項(xiàng)目可以自己獨(dú)立完成,對(duì)項(xiàng)目的認(rèn)知會(huì)非常的深;學(xué)前端的,現(xiàn)在多少的懂點(diǎn)后臺(tái)知識(shí),才有更大的機(jī)會(huì)進(jìn)入大廠,現(xiàn)在都是在往全棧方向發(fā)展。
4、Java 后臺(tái)三大框架:struts2,快速掌握之后,可以搭建出一個(gè) MVC 模型出來(lái),hibernate,開(kāi)發(fā)大型應(yīng)用可以節(jié)省時(shí)間,spring,這個(gè)框架我是覺(jué)得重要的,工作工程中使用較多(springmvc、spring-boot 這些)。
對(duì)于后臺(tái)三大框架,不能只停留在調(diào)用 API 的階段,對(duì)于底層源碼的實(shí)現(xiàn)機(jī)制、系統(tǒng)調(diào)用模塊之間的關(guān)系得梳理清楚(看時(shí)間安排,至少的熟悉一個(gè)框架的源碼)。
5、Java 中一些核心技術(shù)點(diǎn)(GC、JVM、redis 等):GC(垃圾收集器),對(duì)于執(zhí)行機(jī)制、內(nèi)存泄漏問(wèn)題、回收原理等掌握;JVM 是虛擬機(jī),實(shí)現(xiàn)了跨平臺(tái)運(yùn)行,是 Java 的核心,是 Java 一次編譯到處運(yùn)行的本質(zhì)所在,對(duì)其組成、運(yùn)行原理、內(nèi)存管理、垃圾回收等各種算法都得掌握。
redis 是開(kāi)源,使用 C 語(yǔ)言編寫(xiě)的 k-v 數(shù)據(jù)庫(kù)。
(1)、對(duì) redis 的持久化怎么理解?為什么讀寫(xiě)速率快、性能好?
(2)、什么場(chǎng)景下使用 redis?以及 redis 的優(yōu)點(diǎn)有哪些?
(3)、redis 單線程、多線程相關(guān)
(4)、redis 集群
6、大數(shù)據(jù):Java 后臺(tái)開(kāi)發(fā)的能力具有了,大數(shù)據(jù)基礎(chǔ)的掌握是亮點(diǎn)、是加分項(xiàng)。
畢竟我不是學(xué) Java 出身的,對(duì)于 Java 的理解如上,大致的學(xué)習(xí)路線梳理,核心知識(shí)點(diǎn)都有寫(xiě)到,當(dāng)然了,肯定缺失很多,需要你自己在學(xué)習(xí)的時(shí)候,查漏補(bǔ)缺,把相關(guān)的知識(shí)點(diǎn)都學(xué)到位。
Java 相關(guān)的技術(shù)書(shū)籍。我看的很少,所以就不推薦書(shū)籍了,我有一個(gè)原則:我推薦的前提是,自己真的看過(guò)、對(duì)我很有幫助,就推薦給大家,自己沒(méi)有看過(guò)的,只是聽(tīng)別人說(shuō)的,就不推薦了。
對(duì)于 Java 經(jīng)典的書(shū)籍,太多太多了,去 Google、牛客網(wǎng)、知乎上面搜一下,一大堆推薦的書(shū)籍;對(duì)于 Java 相關(guān) API 的官方文檔是個(gè)好東西,還有阿里巴巴 Java 的開(kāi)發(fā)準(zhǔn)則,對(duì)于變量的命名、開(kāi)發(fā)的規(guī)范都有限制,這些好都看看。
??途W(wǎng)搜 “java面經(jīng)” 學(xué)習(xí)路線都有的,包括 Java 面經(jīng)、書(shū)籍推薦、學(xué)習(xí)路線這些,要啥有啥,要學(xué)會(huì)自己搜索(主要是很多人不會(huì)用??途W(wǎng),這次教一下大家,需要什么搜什么,拿 java 面經(jīng)舉個(gè)例子)。
不管你是選擇什么方向,Linux C/C++、Java、Python、Go、算法、前端、測(cè)試、運(yùn)維等,基礎(chǔ)都是核心,沒(méi)有哪個(gè)方向絕對(duì)工資高、沒(méi)有哪個(gè)方向絕對(duì)好,關(guān)鍵不在于方向,在于你自己的技術(shù)能力。
說(shuō)到底,不管走啥方向,都按照三步走戰(zhàn)略、五大能力的提升走,這是我在大學(xué)時(shí)代實(shí)踐過(guò)的,幫助很大,是正確的打法(尤其對(duì)于學(xué)校不好的、非科班的學(xué)生),一定要有自己的打法。
學(xué)習(xí)編程,一開(kāi)始在于多接觸不同的方向、領(lǐng)域,多去嘗試;當(dāng)你找準(zhǔn)方向之后,再?lài)@一個(gè)點(diǎn),先深扎下去,在某個(gè)技術(shù)點(diǎn)上,形成自己的技術(shù)優(yōu)勢(shì),這就是大的亮點(diǎn),舉個(gè)例子:我面試就敢說(shuō)自己熟練掌握 C 語(yǔ)言中指針的方方面面,熟練掌握各種數(shù)據(jù)結(jié)構(gòu)、常用算法等,這些其實(shí)就是我的技術(shù)優(yōu)勢(shì)。(相關(guān)推薦:如何從零開(kāi)始學(xué)java,有沒(méi)有快速的)
優(yōu)勢(shì)是什么,就是你跟別人大不同的地方,就是為啥這么多面試者,要給你發(fā) offer 的原因;數(shù)據(jù)結(jié)構(gòu)很多人學(xué)的都是一知半解,C 語(yǔ)言中的指針都是不清不楚,而我真正的掌握了,我就敢說(shuō)出來(lái),一定是十分有把握的優(yōu)勢(shì)在說(shuō)出來(lái),不然問(wèn)住了很尷尬,有時(shí)候得具有一點(diǎn)冒險(xiǎn)精神,這些都是看情況而定的。