歡迎光臨
每天分享高質量文章

Java這樣學,Offer隨便拿,學習方法和麵試經驗分享

來自:佔小狼的部落格(微訊號:whywhy_zj)

現在各大網際網路公司,對Java類的校招要求越來越高,導致很多小夥伴都很迷茫,今天分享一篇謝照東關於Java學習進階之路,希望能幫助到一些人

佛說五蘊六毒是妄,將因果都念作業障,知乎搜尋“謝照東”

書籍

把看過的書羅列一下

《java核心技術:捲一》,這個是我入門java的時候看的,非常適合新手!

《java設計樣式》這本書雖然是個外國人寫的,但是感覺不是很好。評價一般。學習設計樣式的時候我一般都看大牛的部落格。

《深入理解jvm虛擬機器》 這本書不用多說,業界非常非常好的一本書!多看幾遍,每一遍都有很多收穫 

《深入分析java web 技術內幕》不得不說,這本說在各個方面都非常優秀,不愧是偶像寫的書!還求山哥多多照顧。
嘿嘿《Spring技術內幕》在spring原始碼講解方面,個人感覺非常不錯。
能夠深入理解內部機制,但是需要多看幾遍《程式設計之美》業界翹楚,在演演算法方面終結的非常好,題目也非常有代表性《劍指offer》不用多說,和上面一樣,可以鍛煉一些演演算法能力《java程式設計思想》傳說是java行業內的神書,但是目前表示還處於一知半解狀態《Hadoop技術內幕》這個可以pass掉,學習hadoop的時候看的《TCP/IP詳解,捲一:協議》可以對tcp有更加深刻的認識《java網路程式設計》,不是很好,將就可以。

學學api還是可以的《分散式java應用:基礎與實踐》這個是畢玄大大寫的書,非常不錯哦
《how tomcat works》在講解tomcat內部原理方面,個人覺得是非常不錯的書!等級又要上升一個檔次《java併發程式設計實戰》對java併發方面,講得還算不錯的書籍

當然還有一些雜七雜八的書(走了不少彎路,你懂的!),我就不列出來了,上訴都是筆者認為非常不錯的書籍。

最近正在看《演演算法導論》,和《演演算法》,md,其實我也想成為演演算法狗

當然,上面這些書我表示只懂50%,慚愧。不能完全吸收大牛的精髓啊!

知識點

資料結構不用多說,什麼B樹啊、紅黑樹啊、棧、佇列等等,至少保證能夠清楚的說出來,說出他們的原理!具體的應用場景是什麼啊!,當然能寫出來更好(手寫btree會死人,其實還有一個資料結構叫skiplist,逃

演演算法的話,建議題目多看看演演算法題目,或者把leetcode上的演演算法題目刷一遍(目前本人只AC的幾道題,慚愧。知道該資源的時候已經晚了,現在在努力刷刷刷)。另外可以看看july的部落格,

資料庫就更多了,索引(結合B+tree,兩個引擎的不同之處)、儲存過程、引擎、觸發器, SQL必須是要熟練的,寫SQL的時候多考慮考慮效率,想想還有沒有其他的陳述句能完成這個任務,在哪方面提高了,為何呢?資料庫引擎要瞭解一下,分散式資料庫也是,什麼主從分離啊,分庫、分表、分割槽啊,這些常見的解決方案

作業系統我屬於渣渣,個人就知道一些行程、執行緒、一些排程演演算法之類的~~~~(逃

計算機網路如果是研發崗位得話,TCP/IP這一張需要好好看看,HTTP協議不用多說,常見的狀態碼等等,一次http請求有哪些過程,這個要理解透徹

java:基礎非常重要,當然也要深入理解原理,什麼JVM,JMM,Classloader,還有一些常見類的原始碼,自己可以試著分析一遍,現在讓你說出LinkedList的內部實現你能不能說出來,HashMap不用多說了,80%的面試都會問到。還有重要的,多執行緒,併發,網路,IO。這些都是要看看看看的!自己多思考!還有樓主說的那些框架,說實話,你要是基礎好了,這些都是能夠學得很快的,很多問題,看一下原始碼什麼都就懂了!特別是spring的原始碼要好好看看,裡面的架構設計得非常好!各種設計樣式滿天飛!

另外,linux要瞭解一下,至少要回基本命令吧,指令碼語言可以學習一個。比如py!前端要瞭解一下.

關於如何看書:兩個字,思考!三個字,不要臉的思考!…………,書不在多,在於精,選書要慎重!反正題主一本叫做“王者歸來”的書,我看見名字我就不想看!

除了這些然後呢:每天刷幾遍CSDN,平常可以上上oj刷刷題目,國內的牛客網(牛客網-專業IT筆試面試備考平臺,最全求職題庫,全面提升IT程式設計能力)非常不錯,也可以去leetcode上面把題目刷一遍哦。關註一些好的社群(我一般混跡在CSDN高效能javaweb板塊),睡覺之前看微信公眾號,當然是技術方面的!推送的文章都挺不錯的!

做程式員個人覺得眼界很重要,就算這不是你的領域,但是你也要知道一點,所以經常關註其他的新技術是非常重要的!平常多接觸一點開源技術,多上上github,爭取能在github上面貢獻一點自己的東西!

然後,多看看別人的技術部落格。思考自己!

關於我的學習方法和麵試經驗的分享

1、基礎

主要看《java核心技術:捲一》的重點章節掌握java常用技術,io、多執行緒、反射、常用集合框架資料結構看一遍,作用至少要清楚。如hash衝突解決辦法,常用排序演演算法的應用場景和空間/時間複雜度等資料庫,能看懂ER關係,熟悉資料庫三大正規化,熟練常用SQL陳述句可以掌握一點java網路程式設計方面的知識,對tcp/ip有初步的認識課程不能落下,專業課程(計算機網路,作業系統,資料結構,資料庫,計算機組成原理)要好好學。不要掛科學習servlet/jsp,至少能寫簡單的圖書管理系統,熟悉核心api瞭解前後端互動方式,ajax、json/xml至少知道,會使用jquery,html,css,js最好

2、提高

學習後端框架,SpringMVC/Struts2、Mybatis、Spring,熟悉MVC樣式,知道三層架構及每一層之間的關係會用chrome/firefox瀏覽器分析http請求,解決、定位問題。知道常用http狀態碼,瞭解TCP/IP,知道一次http請求發生了哪些事情學習設計樣式,23種設計樣式都需要瞭解一點,熟悉常用的如:單例,工廠,模板,配接器,代理,責任鏈,建構式,裝飾器,迭代器,策略,命令,觀察者,外觀,享元。理解他們的好處,可以找找在其他框架哪些用了這些設計樣式。可以適當的看一些原始碼,Spring的原始碼可以著重的看一下。tomcat可以從原始碼的角度看看tomcat的整體設計方案,一次請求tomcat如何處理,servlet在tomcat中的載入,編譯過程。tomcat自定義的ClassLoader有什麼作用。會設計資料庫,多對多,一對多,迭代,會寫複雜的SQL,瞭解SQL調優,會寫儲存過程,觸發器。熟悉索引的使用,瞭解檢視。去瞭解一些常用NOSQL,比如Redis/mongodb學習Linux,熟悉基本命令,學習一種指令碼語言(shell/python)。會在linux下寫指令碼開發

3、深入

演演算法,可以看看程式設計之美,演演算法導論。學習一些演演算法相關的知識深入java:理解JVM,JMM,Classloader,GC演演算法,GC收集器。學會定位OOM問題所在。原始碼分析,常用集合類如:Hashmap,Arraylist,linkedList,HashSet,ConcurrentHashmap等的原始碼分析,要非常熟悉java集合框架設計。最好能夠分析一種框架原始碼,比如Spring深入資料庫,理解至少兩種資料庫引擎(Inndb/Mysiam)的差異性,熟悉索引的內部資料結構,熟悉常見的索引方式(Btree,hash),和索引型別(unique,full text,normal),會使用explain分析SQL陳述句,會最佳化SQL陳述句,熟悉一種NOSQL,知道內部實現原理(內部資料結構,在演演算法最佳化,內部機制),掌握分散式資料庫的知識,分表,分庫,分割槽,分散式事務等,可以學習一個資料庫中介軟體(TDDL/COBAR)架構設計,看看大型高流量/高併發的網站設計(CDN,非同步,前端最佳化),瞭解快取(分散式memcached/常用本地快取),搜尋引擎(lucene/solr/elasticSearch),分散式(負載均衡/分散式資料庫/分散式應用叢集),訊息佇列(ActiveMQ/Rabbitmq)在大型網站中的作用

還有一些其他的知識,如RPC框架,分散式服務架構,SOA,REST架構等等

可以接觸一些雲端計算方面的知識,如Hadoop/Storm/Spark等,要是再能接觸一點機器學習就更棒啦(反正我是沒有,聽著就嚇人,跑個kmeans演演算法都要弄死人。


●本文編號635,以後想閱讀這篇文章直接輸入635即可

●輸入m獲取文章目錄

推薦↓↓↓

 

演演算法與資料結構

更多推薦18個技術類微信公眾號

涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

贊(0)

分享創造快樂