1. 程式人生 > >Java工程師學習路線

Java工程師學習路線

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等,要是再能接觸一點機器學習就更棒啦