java學習路徑1--轉自byr

以過來人的身份談談個人感覺。
    首先若是隻是ssh框架的話,是沒有理由能拿到bat及這層次之上的offer的。由於這樣的人太多了,並且框架的使用也比較簡單,除非:對該框架很是瞭解,具有根據公司狀況開發適用於公司框架的能力,即要求你對java反射機制、設計模式、多線程要有較深理解,最好熟悉jvm相關機制。(其實對着有較深理解的狀況下也不會對「ssh」這個關鍵字這麼在乎了)
    其次,我以爲java體系能夠分紅四個部分,從高到低: 框架開發,網絡協議,java語言,jvm。深度倒是遞增的。
    從我我的的角度看(我對框架開發不是很瞭解,只是實習的時候由於公司的要求試用了spring,因此框架就不談了),對網絡協議是須要比較瞭解就好了,好比分層,每層傳輸的數據結構,每層的對等關係(port to port,  host to host),而後tcp的三次握手、四次揮手,擁塞控制(快啓動、慢恢復等),若是還對http瞭解的話就更好了,由於大部分的應用開發須要應用到,websocket等也瞭解下。
    而後是java語言,其中collection接口、map接口是最經常使用也最常問到的,好比hashmap(呵呵),好比implementes queue的類有哪些(應該說出雙端隊列和阻塞隊列的多種實現);而後是重點和難點,也是面試官區別你和通常面試者的地方:JUC包與NIO的理解。這個就比較多了,重點是線程池的理解和異步併發的理解(這裏最好着重理解epoll函數與select/poll的區別)。固然,前面說過了,設計模式和java反射也是一般會被問到的,尤爲是單例模式,你最好能默寫出雙重校驗鎖、enum、內部類三種實現方式。
    最後是JVM的理解,推薦你買本《深刻理解JVM》認真閱讀一下吧,好像是一箇中國人寫的,仍是很不錯的,基本都講到了,主要理解jvm分代回收、java類加載機制,jmm內存模型,最後能扯點併發優化固然更好了。這本書裏中間好多降到了java字節碼的部分,你能夠不用記住,可是看一遍有個映像是最好的。面試的時候通常你能很是清楚的描述分代回收機制的話就能夠默認你對jvm很熟悉了,若是還了解jmm,可以描述的話應該就徹底達到了阿里終面的水平了。。。
    最後,就是除開語言能力以外的能力了,着重體如今 算法、新興技術。     算法各自看各自造化了,我只看了《編程之美》中間數字和字符串的兩章,感受受益不淺,若是能再看看《劍指offer》(不喜歡這本書,感受太功利了,根本就是歷年筆試題集合嘛,哈哈)就更好了,而後就在leetcode上刷刷題吧。     至於新興技術,最好是跟你項目相關的技術,結合我本身的狀況,主要是把nosql瞭解了一下,redis, cassandra, mangodb, neo4j,以及一致哈希、類聚、mapreduce等,必定要有集羣部署實驗,推薦根據《nosql精粹》認真學習一下。而後我在vmware實習了,對vmware的vchs產品的架構瞭解了一下,對本身之後再服務器開發有很是大的幫助(其實就是在吹本身項目的時候先「升級」一下)。     其實,語言都是通用的,感受java對比c++主要是在編譯層面多了不少安全的check,在oo設計上有些不一樣,主要是由於jit。     最最後,若是選擇java,通常作高性能中間件,後臺開發之類的,若是選擇c++,呵呵,都能作!並且還有遊戲開發等是專門針對c++招生的。。。     好了,本身作選擇吧。 【 在 tyr1235831 的大做中提到: 】 : Lz研二狗,明年找工做,看到師兄師姐找工做找的如此痛苦,我也開始審視本身,要早作準備。 :   奈何lz技術渣,在實驗室一年只作過一個web的項目,並且感受有些拿不出手的那種。其實Lz實驗室的項目跟web徹底不相關,可是恰好就被分配到了這個任務,就作下來了,並且基本都是拿之前的東西改的。 :   因此下定決心好好學Java。其實之前就學過,只是學的不認真,不少都是徒有其表,再學一遍發現本身真的啥都不會!如今打算把Servlet、JSP學一學,再學主流的框架,主要是ssh吧,把本身以前的項目用這些高大上的框架包裝一下(ps:看以前師兄的簡歷他貌似就是這麼作的!) : ...................
相關文章
相關標籤/搜索