一分鐘,讓你了解成為Java架構師的必要條件,分享架構師學習資料

2019-07-20     程式設計師小姐

話不多說,直接開始正文!

必要條件具體分為以下幾點:

一、Java基礎

1.Core Java,就是Java基礎、JDK的類庫,很多童鞋都會說,JDK我懂,但是懂還不足夠,知其然還要知其所以然,JDK的原始碼寫的非常好,要經常查看,對使用頻繁的類,比如String,集合類(List,Map,Set)等數據結構要知道它們的實現,不同的集合類有什麼區別,然後才能知道在一個具體的場合下使用哪個集合類更適合、更高效,這些內容直接看原始碼就OK了

2.多線程並發編程,現在並發幾乎是寫服務端程序必須的技術,那對Java中的多線程就要有足夠的熟悉,包括對象鎖機制、synchronized關鍵字,concurrent包都要非常熟悉,這部分推薦你看看《Java並發編程實踐》這本書,講解的很詳細

3.I/O,Socket編程,首先要熟悉Java中Socket編程,以及I/O包,再深入下去就是Java NIO,再深入下去是作業系統底層的Socket實現,了解Windows和Linux中是怎麼實現socket的

4.JVM的一些知識,不需要熟悉,但是需要了解,這是Java的本質,可以說是Java的母體, 了解之後眼界會更寬闊,比如Java內存模型(會對理解Java鎖、多線程有幫助)、位元組碼、JVM的模型、各種垃圾收集器以及選擇、JVM的執行參數(優化JVM)等等,這些知識在《深入Java虛擬機》這本書中都有詳盡的解釋,或者去oracle網站上查看具體版本的JVM規範.

5.一些常用的設計模式,比如單例、模板方法、代理、適配器等等,以及在Core Java和一些Java框架里的具體場景的實現,這個可能需要慢慢積累,先了解有哪些使用場景,見得多了,自己就自然而然會去用。

6.常用資料庫(Oracle、MySQL等)、SQL語句以及一般的優化

7.JavaWeb開發的框架,比如Spring、iBatis等框架,同樣他們的原理才是最重要的,至少要知道他們的大致原理。

8.其他一些有名的用的比較多的開源框架和包,Netty網絡框架,Apache common的N多包,Google的Guava等等,也可以經常去Github上找一些代碼看看。

二、Java面試知識點

每逢長假都會有很多程式設計師跳槽,十一、過年是跳槽黃金時刻,尤其是過年。過年的時候年終獎到手,沒有了多少牽掛,年終同學同事聚會比較多,溝通的就多,各種工作機會的消息也相應會多,所以跳槽的機會也就會多。跳槽就必不可少的要經過面試,那麼作為一個Java程式設計師需要準備哪些面試知識呢?下面就給大家說說。

1、集合框架:

從上圖可以看到主要是Collection和Map的繼承類和Iterator的實現類,重點掌握ArrayList、LinkedList、Vector、Stack、PriorityQueue、HashSet、LinkedHashSet、TreeSet、HashMap、LinkedHashMap、TreeMap、WeakHashMap、EnumMap、TreeMap、HashTable的特點和實現原理,還有多線程使用場景和插入多還是刪除多的時候使用什麼樣的集合類效率會更高。

2、IO框架:

主要掌握Reader、Writer、InputStream、OutputStream的繼承類,重點掌握位元組流(FileInputStream、FileOutputSteam、BufferedInputStream、BufferedOutputStream、DataInputStream、DataOutputStream)和字符流(FileReader、FileWriter、BufferedReader、BufferedWriter、InputStreamReader、OutputStreamWriter),並熟練運用。還有就是NIO的工作原理要知道。

3、String先關:

主要考察對String的處理,順帶考察多線程和算法,大公司就是喜歡考察字符串的算法,主要是字符串查找或者剔除,多線程列印字符串,超大字符串處理。

4、異常處理:

掌握Throwable繼承類,理解Error和Exception的區別,理解運行時異常和編譯異常的區別,掌握異常的處理方法,掌握try、catch、finally、throw、throws關鍵字的意義,掌握try-catch-finally語句的執行順序,掌握異常的工作原理,知道常見的異常有哪些。

5、多線程:

如何創建和啟動一個線程,有哪些方法?多線程如何交互,線程之間的調度、讓步、合併,如何同步?生產和消費者模型。還有就是掌握線程安全、線程池,死鎖。

6、JVM知識:

掌握常見的垃圾回收機制,掌握程序計數器、堆、棧、方法區的作用,掌握類的加載機制。掌握內存分代模型和工作原理。掌握JVM啟動參數常見配置,了解JVM調優。

7、數據結構與算法:

掌握常見查找和排序算法實現及其時間、空間複雜度。掌握常見數據結構如鍊表、隊列、棧的基本原理和實現。

三、Java考核綱要

如果要應聘高級開發工程師職務,僅僅懂得Java的基礎知識是遠遠不夠的,還必須懂得常用數據結構、算法、網 絡、作業系統等知識。因此本文不會講解具體的技術,筆者綜合自己應聘各大公司的經歷,整理了一份大公司對Java高級開發工程師職位的考核綱要,希望可以幫助到需要的人。

1 Java基礎

1.1 Collection和Map

(1)掌握Collection和Map的繼承體系。

(2)掌握ArrayList、LinkedList、Vector、Stack、PriorityQueue、HashSet、 LinkedHashSet、TreeSet、HashMap、LinkedHashMap、TreeMap、WeakHashMap、EnumMap、 TreeMap、HashTable的特點和實現原理。

(3)掌握CopyOnWriteArrayList、CopyOnWriteArraySet、ConcurrentHashMap的實現原理和適用場景。

1.2 IO

(1)掌握InputStream、OutputStream、Reader、Writer的繼承體系。

(2)掌握位元組流(FileInputStream、DataInputStream、BufferedInputStream、 FileOutputSteam、DataOutputStream、BufferedOutputStream)和字符流 (BufferedReader、InputStreamReader、FileReader、BufferedWriter、 OutputStreamWriter、PrintWriter、FileWriter),並熟練運用。

(3)掌握NIO實現原理及使用方法。

1.3 異常

(1)掌握Throwable繼承體系。

(2)掌握異常工作原理。

(3)了解常見受檢異常(比如FileNotFoundException)、非受檢異常(比如NullPointerException)和錯誤(比如IOError)。

1.4 多線程

(1)掌握Executors可以創建的三種(JAVA8增加了一種,共四種)線程池的特點及適用範圍。

(2)掌握多線程同步機制,並熟練運用。

1.5 Socket

(1)掌握Socket通信原理。

(2)熟練使用多線程結合Socket進行編程。

2 Java虛擬機

2.1 JVM內存區域劃分

(1)掌握程序計數器、堆、虛擬機棧、本地方法棧、方法區(JAVA8已移除)、元空間(JAVA8新增)的作用及基本原理。

(2)掌握堆的劃分:新生代(Eden、Survivor1、Survivor2)和老年代的作用及工作原理。

(3)掌握JVM內存參數設置及調優。

2.2 類加載

(1)掌握類的加載階段:加載、連結(驗證、準備、解析)、初始化、使用、卸載。

(2)掌握類加載器分類及其應用:啟動類加載器、擴展類加載器、應用程式類加載器、自定義加載器。

3 J2EE

(1) 掌握JSP內置對象、動作及相關特點和工作原理。

(2) 掌握Servlet的特點和工作原理。

(3) 掌握Spring框架的IOC和AOP實現原理(反射和動態代理)。

(4) 至少掌握一個MVC框架(Spring MVC,Struts等)的工作原理,並熟練運用。

(5) 至少掌握一個ORM框架(Hibernate,MyBatis等)的工作原理,並熟練運用。

4 數據結構與算法

(1)掌握線性表和樹的特點並熟練運用。

(2)掌握常用排序和查找算法:插入排序(直接插入排序、希爾排序)、選擇排序(直接選擇排序、堆排序)、交換排序(冒泡排序、快速排序)、歸併排序,順序查找、二分查找、哈希查找。

(3) 熟練運用常見排序和查找算法思想解決編程問題。

(4)了解幾大基本算法:貪心算法、分治策略、動態規劃。

5 計算機網絡

(1)掌握網絡的分層結構,及每層的功能特點。

(2)掌握TCP/IP的通信原理(三次握手、四次揮手)

6 資料庫

(1)掌握複雜的SQL語句編寫。

(2)掌握資料庫的優化(SQL層面和表設計層面)。

(3)至少掌握一款資料庫產品。

(4)熟悉高並發、大數據情況下的資料庫開發。

7 Web技術

(1)掌握AJAX的工作原理。

(2)至少熟悉一款JS框架(比如JQuery)。

8 設計模式

(1)熟悉常見的設計模式。

(2)會將設計模式理論應用到實際開發中。

9 Linux

(1)熟練運用Linux常見命令。

(2)熟悉Linux作業系統基本概念及特點。

(3)熟悉Shell腳本。

10 作業系統

(1)掌握作業系統的進程管理。

(2)了解作業系統的I/O。

11 正則表達式

(1)掌握常見正則表達式符號。

(2)熟練運用正則表達式解決實際問題(比如匹配電話號碼、郵箱、域名等)。

就問你6不6,是不是給你全面分析了成為Java架構師必備條件,缺一不可

寫在最後:小編為大家準備了一些java學習教程。適合於1-5年開發經驗的java程式設計師面試涉及到的絕大部分面試題及答案做成了文檔和學習筆記文件以及架構視頻資料免費分享給大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高並發等架構技術資料),希望可以幫助到大家。

獲取方式:請大家關注並私信小編關鍵詞:「資料」即可獲取你需要的各類資料。

文章來源: https://twgreatdaily.com/zh-tw/ZueqDmwBmyVoG_1ZvQCP.html