現(xiàn)在各大互聯(lián)網(wǎng)公司,對Java類的校招要求越來越高,導(dǎo)致很多小伙伴都很迷茫,今天分享一篇謝照東關(guān)于Java學(xué)習(xí)進階之路,希望能幫助到一些人
佛說五蘊六毒是妄,將因果都念作業(yè)障
把看過的書羅列一下
《java核心技術(shù):卷一》,這個是我入門java的時候看的,非常適合新手!
《java設(shè)計模式》這本書雖然是個外國人寫的,但是感覺不是很好。評價一般。學(xué)習(xí)設(shè)計模式的時候我一般都看大牛的博客。
《深入理解jvm虛擬機》 這本書不用多說,業(yè)界非常非常好的一本書!多看幾遍,每一遍都有很多收獲
《深入分析java web 技術(shù)內(nèi)幕》不得不說,這本說在各個方面都非常優(yōu)秀,不愧是偶像寫的書!還求山哥多多照顧。嘿嘿
《Spring技術(shù)內(nèi)幕》在spring源碼講解方面,個人感覺非常不錯。能夠深入理解內(nèi)部機制,但是需要多看幾遍
《編程之美》業(yè)界翹楚,在算法方面終結(jié)的非常好,題目也非常有代表性
《劍指offer》不用多說,和上面一樣,可以鍛煉一些算法能力
《java編程思想》傳說是java行業(yè)內(nèi)的神書,但是目前表示還處于一知半解狀態(tài)
《Hadoop技術(shù)內(nèi)幕》這個可以pass掉,學(xué)習(xí)hadoop的時候看的
《TCP/IP詳解,卷一:協(xié)議》可以對tcp有更加深刻的認識
《java網(wǎng)絡(luò)編程》,不是很好,將就可以。學(xué)學(xué)api還是可以的
《分布式j(luò)ava應(yīng)用:基礎(chǔ)與實踐》這個是畢玄大大寫的書,非常不錯哦
《how tomcat works》在講解tomcat內(nèi)部原理方面,個人覺得是非常不錯的書!等級又要上升一個檔次
《java并發(fā)編程實戰(zhàn)》對java并發(fā)方面,講得還算不錯的書籍
當(dāng)然還有一些雜七雜八的書(走了不少彎路,你懂的?。?,我就不列出來了,上訴都是筆者認為非常不錯的書籍。
最近正在看《算法導(dǎo)論》,和《算法》,md,其實我也想成為算法狗

當(dāng)然,上面這些書我表示只懂50%,慚愧。不能完全吸收大牛的精髓??!
數(shù)據(jù)結(jié)構(gòu)不用多說,什么B樹啊、紅黑樹啊、棧、隊列等等,至少保證能夠清楚的說出來,說出他們的原理!具體的應(yīng)用場景是什么??!,當(dāng)然能寫出來更好(手寫btree會死人,其實還有一個數(shù)據(jù)結(jié)構(gòu)叫skiplist,逃
算法的話,建議題目多看看算法題目,或者把leetcode上的算法題目刷一遍(目前本人只AC的幾道題,慚愧。知道該資源的時候已經(jīng)晚了,現(xiàn)在在努力刷刷刷)。另外可以看看july的博客,
數(shù)據(jù)庫就更多了,索引(結(jié)合B+tree,兩個引擎的不同之處)、存儲過程、引擎、觸發(fā)器, SQL必須是要熟練的,寫SQL的時候多考慮考慮效率,想想還有沒有其他的語句能完成這個任務(wù),在哪方面提高了,為何呢?數(shù)據(jù)庫引擎要了解一下,分布式數(shù)據(jù)庫也是,什么主從分離啊,分庫、分表、分區(qū)啊,這些常見的解決方案
操作系統(tǒng)我屬于渣渣,個人就知道一些進程、線程、一些調(diào)度算法之類的~~~~(逃
計算機網(wǎng)絡(luò)如果是研發(fā)崗位得話,TCP/IP這一張需要好好看看,HTTP協(xié)議不用多說,常見的狀態(tài)碼等等,一次http請求有哪些過程,這個要理解透徹
java:基礎(chǔ)非常重要,當(dāng)然也要深入理解原理,什么JVM,JMM,Classloader,還有一些常見類的源碼,自己可以試著分析一遍,現(xiàn)在讓你說出LinkedList的內(nèi)部實現(xiàn)你能不能說出來,HashMap不用多說了,80%的面試都會問到。還有重要的,多線程,并發(fā),網(wǎng)絡(luò),IO。這些都是要看看看看的!自己多思考!還有樓主說的那些框架,說實話,你要是基礎(chǔ)好了,這些都是能夠?qū)W得很快的,很多問題,看一下源碼什么都就懂了!特別是spring的源碼要好好看看,里面的架構(gòu)設(shè)計得非常好!各種設(shè)計模式滿天飛!
另外,linux要了解一下,至少要回基本命令吧,腳本語言可以學(xué)習(xí)一個。比如py!前端要了解一下.
關(guān)于如何看書:兩個字,思考!三個字,不要臉的思考!…………,書不在多,在于精,選書要慎重!反正題主一本叫做“王者歸來”的書,我看見名字我就不想看!
除了這些然后呢:每天刷幾遍CSDN,平??梢陨仙蟧j刷刷題目,國內(nèi)的??途W(wǎng)(??途W(wǎng)-專業(yè)IT筆試面試備考平臺,最全求職題庫,全面提升IT編程能力)非常不錯,也可以去leetcode上面把題目刷一遍哦。關(guān)注一些好的社區(qū)(我一般混跡在CSDN高性能javaweb板塊),睡覺之前看微信公眾號,當(dāng)然是技術(shù)方面的!推送的文章都挺不錯的!
做程序員個人覺得眼界很重要,就算這不是你的領(lǐng)域,但是你也要知道一點,所以經(jīng)常關(guān)注其他的新技術(shù)是非常重要的!平常多接觸一點開源技術(shù),多上上github,爭取能在github上面貢獻一點自己的東西!
然后,多看看別人的技術(shù)博客。思考自己!
關(guān)于我的學(xué)習(xí)方法和面試經(jīng)驗的分享
1、基礎(chǔ)
主要看《java核心技術(shù):卷一》的重點章節(jié)
掌握java常用技術(shù),io、多線程、反射、常用集合框架
數(shù)據(jù)結(jié)構(gòu)看一遍,作用至少要清楚。如hash沖突解決辦法,常用排序算法的應(yīng)用場景和空間/時間復(fù)雜度等
數(shù)據(jù)庫,能看懂ER關(guān)系,熟悉數(shù)據(jù)庫三大范式,熟練常用SQL語句
可以掌握一點java網(wǎng)絡(luò)編程方面的知識,對tcp/ip有初步的認識
課程不能落下,專業(yè)課程(計算機網(wǎng)絡(luò),操作系統(tǒng),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)庫,計算機組成原理)要好好學(xué)。不要掛科
學(xué)習(xí)servlet/jsp,至少能寫簡單的圖書管理系統(tǒng),熟悉核心api
了解前后端交互方式,ajax、json/xml至少知道,會使用jquery,html,css,js最好
2、提高
學(xué)習(xí)后端框架,SpringMVC/Struts2、Mybatis、Spring,熟悉MVC模式,知道三層架構(gòu)及每一層之間的關(guān)系
會用chrome/firefox瀏覽器分析http請求,解決、定位問題。知道常用http狀態(tài)碼,了解TCP/IP,知道一次http請求發(fā)生了哪些事情
學(xué)習(xí)設(shè)計模式,23種設(shè)計模式都需要了解一點,熟悉常用的如:單例,工廠,模板,適配器,代理,責(zé)任鏈,構(gòu)造器,裝飾器,迭代器,策略,命令,觀察者,外觀,享元。理解他們的好處,可以找找在其他框架哪些用了這些設(shè)計模式。
可以適當(dāng)?shù)目匆恍┰创a,Spring的源碼可以著重的看一下。tomcat可以從源碼的角度看看tomcat的整體設(shè)計方案,一次請求tomcat如何處理,servlet在tomcat中的加載,編譯過程。tomcat自定義的ClassLoader有什么作用。
會設(shè)計數(shù)據(jù)庫,多對多,一對多,迭代,會寫復(fù)雜的SQL,了解SQL調(diào)優(yōu),會寫存儲過程,觸發(fā)器。熟悉索引的使用,了解視圖。去了解一些常用NOSQL,比如Redis/mongodb
學(xué)習(xí)Linux,熟悉基本命令,學(xué)習(xí)一種腳本語言(shell/python)。會在linux下寫腳本開發(fā)
3、深入
算法,可以看看編程之美,算法導(dǎo)論。學(xué)習(xí)一些算法相關(guān)的知識
深入java:理解JVM,JMM,Classloader,GC算法,GC收集器。學(xué)會定位OOM問題所在。
源碼分析,常用集合類如:Hashmap,Arraylist,linkedList,HashSet,ConcurrentHashmap等的源碼分析,要非常熟悉java集合框架設(shè)計。最好能夠分析一種框架源碼,比如Spring
深入數(shù)據(jù)庫,理解至少兩種數(shù)據(jù)庫引擎(Inndb/Mysiam)的差異性,熟悉索引的內(nèi)部數(shù)據(jù)結(jié)構(gòu),熟悉常見的索引方式(Btree,hash),和索引類型(unique,full text,normal),會使用explain分析SQL語句,會優(yōu)化SQL語句,熟悉一種NOSQL,知道內(nèi)部實現(xiàn)原理(內(nèi)部數(shù)據(jù)結(jié)構(gòu),在算法優(yōu)化,內(nèi)部機制),掌握分布式數(shù)據(jù)庫的知識,分表,分庫,分區(qū),分布式事務(wù)等,可以學(xué)習(xí)一個數(shù)據(jù)庫中間件(TDDL/COBAR)
架構(gòu)設(shè)計,看看大型高流量/高并發(fā)的網(wǎng)站設(shè)計(CDN,異步,前端優(yōu)化),了解緩存(分布式memcached/常用本地緩存),搜索引擎(lucene/solr/elasticSearch),分布式(負載均衡/分布式數(shù)據(jù)庫/分布式應(yīng)用集群),消息隊列(ActiveMQ/Rabbitmq)在大型網(wǎng)站中的作用
還有一些其他的知識,如RPC框架,分布式服務(wù)架構(gòu),SOA,REST架構(gòu)等等
可以接觸一些云計算方面的知識,如Hadoop/Storm/Spark等,要是再能接觸一點機器學(xué)習(xí)就更棒啦(反正我是沒有,聽著就嚇人,跑個kmeans算法都要弄死人,(
PS:本人的知識星球已經(jīng)正式上線,3天加入人數(shù)已經(jīng)140+,希望更過的小伙伴能加入到這個小圈子。

1、我會分享自己的一些學(xué)習(xí)心得,以及一些思考,包括技術(shù)路線的指導(dǎo)等。
2、可以針對你們自己的一些特別的問題專門進行解答,做到因人而異。
3、為大家營造構(gòu)建一個和諧的環(huán)境,方便大家深入學(xué)習(xí)交流,可以讓大家認識更多的技術(shù)牛人等。
希望加入到這個星球的小伙伴,都能提前找到自己的方向,站在前輩的肩膀上,看的更遠,爬的更高。