更新時(shí)間:2019-08-01 09:22:00 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2526次
成為Java架構(gòu)師的必要條件,具體分為以下幾點(diǎn):
Java基礎(chǔ)
1.CoreJava,就是Java基礎(chǔ)、JDK的類庫,很多童鞋都會(huì)說,JDK我懂,但是懂還不足夠,知其然還要知其所以然,JDK的源代碼寫的非常好,要經(jīng)常查看,對使用頻繁的類,比如String,集合類(List,Map,Set)等數(shù)據(jù)結(jié)構(gòu)要知道它們的實(shí)現(xiàn),不同的集合類有什么區(qū)別,然后才能知道在一個(gè)具體的場合下使用哪個(gè)集合類更適合、更高效,這些內(nèi)容直接看源代碼就OK了
2.多線程并發(fā)編程,現(xiàn)在并發(fā)幾乎是寫服務(wù)端程序必須的技術(shù),那對Java中的多線程就要有足夠的熟悉,包括對象鎖機(jī)制、synchronized關(guān)鍵字,concurrent包都要非常熟悉,這部分推薦你看看《Java并發(fā)編程實(shí)踐》這本書,講解的很詳細(xì)
3.I/O,Socket編程,首先要熟悉Java中Socket編程,以及I/O包,再深入下去就是JavaNIO,再深入下去是操作系統(tǒng)底層的Socket實(shí)現(xiàn),了解Windows和Linux中是怎么實(shí)現(xiàn)socket的
4.JVM的一些知識(shí),不需要熟悉,但是需要了解,這是Java的本質(zhì),可以說是Java的母體,了解之后眼界會(huì)更寬闊,比如Java內(nèi)存模型(會(huì)對理解Java鎖、多線程有幫助)、字節(jié)碼、JVM的模型、各種垃圾收集器以及選擇、JVM的執(zhí)行參數(shù)(優(yōu)化JVM)等等,這些知識(shí)在《深入Java虛擬機(jī)》這本書中都有詳盡的解釋,或者去oracle網(wǎng)站上查看具體版本的JVM規(guī)范.
5.一些常用的設(shè)計(jì)模式,比如單例、模板方法、代理、適配器等等,以及在CoreJava和一些Java框架里的具體場景的實(shí)現(xiàn),這個(gè)可能需要慢慢積累,先了解有哪些使用場景,見得多了,自己就自然而然會(huì)去用。
6.常用數(shù)據(jù)庫(Oracle、MySQL等)、SQL語句以及一般的優(yōu)化
7.JavaWeb開發(fā)的框架,比如Spring、iBatis等框架,同樣他們的原理才是最重要的,至少要知道他們的大致原理。
8.其他一些有名的用的比較多的開源框架和包,Netty網(wǎng)絡(luò)框架,Apachecommon的N多包,Google的Guava等等,也可以經(jīng)常去Github上找一些代碼看看。
Java面試知識(shí)點(diǎn)
每逢長假都會(huì)有很多程序員跳槽,十一、過年是跳槽黃金時(shí)刻,尤其是過年。過年的時(shí)候年終獎(jiǎng)到手,沒有了多少牽掛,年終同學(xué)同事聚會(huì)比較多,溝通的就多,各種工作機(jī)會(huì)的消息也相應(yīng)會(huì)多,所以跳槽的機(jī)會(huì)也就會(huì)多。跳槽就必不可少的要經(jīng)過面試,那么作為一個(gè)Java程序員需要準(zhǔn)備哪些面試知識(shí)呢?下面就給大家說說。
1、集合框架:
從上圖可以看到主要是Collection和Map的繼承類和Iterator的實(shí)現(xiàn)類,重點(diǎn)掌握ArrayList、LinkedList、Vector、Stack、PriorityQueue、HashSet、LinkedHashSet、TreeSet、HashMap、LinkedHashMap、TreeMap、WeakHashMap、EnumMap、TreeMap、HashTable的特點(diǎn)和實(shí)現(xiàn)原理,還有多線程使用場景和插入多還是刪除多的時(shí)候使用什么樣的集合類效率會(huì)更高。
2、IO框架:
主要掌握Reader、Writer、InputStream、OutputStream的繼承類,重點(diǎn)掌握字節(jié)流(FileInputStream、FileOutputSteam、BufferedInputStream、BufferedOutputStream、DataInputStream、DataOutputStream)和字符流(FileReader、FileWriter、BufferedReader、BufferedWriter、InputStreamReader、OutputStreamWriter),并熟練運(yùn)用。還有就是NIO的工作原理要知道。
3、String先關(guān):
主要考察對String的處理,順帶考察多線程和算法,大公司就是喜歡考察字符串的算法,主要是字符串查找或者剔除,多線程打印字符串,超大字符串處理。
4、異常處理:
掌握Throwable繼承類,理解Error和Exception的區(qū)別,理解運(yùn)行時(shí)異常和編譯異常的區(qū)別,掌握異常的處理方法,掌握try、catch、finally、throw、throws關(guān)鍵字的意義,掌握try-catch-finally語句的執(zhí)行順序,掌握異常的工作原理,知道常見的異常有哪些。
5、多線程:
如何創(chuàng)建和啟動(dòng)一個(gè)線程,有哪些方法?多線程如何交互,線程之間的調(diào)度、讓步、合并,如何同步?生產(chǎn)和消費(fèi)者模型。還有就是掌握線程安全、線程池,死鎖。
6、JVM知識(shí):
掌握常見的垃圾回收機(jī)制,掌握程序計(jì)數(shù)器、堆、棧、方法區(qū)的作用,掌握類的加載機(jī)制。掌握內(nèi)存分代模型和工作原理。掌握J(rèn)VM啟動(dòng)參數(shù)常見配置,了解JVM調(diào)優(yōu)。
7、數(shù)據(jù)結(jié)構(gòu)與算法:
掌握常見查找和排序算法實(shí)現(xiàn)及其時(shí)間、空間復(fù)雜度。掌握常見數(shù)據(jù)結(jié)構(gòu)如鏈表、隊(duì)列、棧的基本原理和實(shí)現(xiàn)。
三、Java考核綱要
如果要應(yīng)聘高級開發(fā)工程師職務(wù),僅僅懂得Java的基礎(chǔ)知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,還必須懂得常用數(shù)據(jù)結(jié)構(gòu)、算法、網(wǎng)絡(luò)、操作系統(tǒng)等知識(shí)。因此本文不會(huì)講解具體的技術(shù),筆者綜合自己應(yīng)聘各大公司的經(jīng)歷,整理了一份大公司對Java高級開發(fā)工程師職位的考核綱要,希望可以幫助到需要的人。
1Java基礎(chǔ)
1.1Collection和Map
(1)掌握Collection和Map的繼承體系。
(2)掌握ArrayList、LinkedList、Vector、Stack、PriorityQueue、HashSet、LinkedHashSet、TreeSet、HashMap、LinkedHashMap、TreeMap、WeakHashMap、EnumMap、TreeMap、HashTable的特點(diǎn)和實(shí)現(xiàn)原理。
(3)掌握CopyOnWriteArrayList、CopyOnWriteArraySet、ConcurrentHashMap的實(shí)現(xiàn)原理和適用場景。
1.2IO
(1)掌握InputStream、OutputStream、Reader、Writer的繼承體系。
(2)掌握字節(jié)流(FileInputStream、DataInputStream、BufferedInputStream、FileOutputSteam、DataOutputStream、BufferedOutputStream)和字符流(BufferedReader、InputStreamReader、FileReader、BufferedWriter、OutputStreamWriter、PrintWriter、FileWriter),并熟練運(yùn)用。
(3)掌握NIO實(shí)現(xiàn)原理及使用方法。
1.3異常
(1)掌握Throwable繼承體系。
(2)掌握異常工作原理。
(3)了解常見受檢異常(比如FileNotFoundException)、非受檢異常(比如NullPointerException)和錯(cuò)誤(比如IOError)。
1.4多線程
(1)掌握Executors可以創(chuàng)建的三種(JAVA8增加了一種,共四種)線程池的特點(diǎn)及適用范圍。
(2)掌握多線程同步機(jī)制,并熟練運(yùn)用。
1.5Socket
(1)掌握Socket通信原理。
(2)熟練使用多線程結(jié)合Socket進(jìn)行編程。
2Java虛擬機(jī)
2.1JVM內(nèi)存區(qū)域劃分
(1)掌握程序計(jì)數(shù)器、堆、虛擬機(jī)棧、本地方法棧、方法區(qū)(JAVA8已移除)、元空間(JAVA8新增)的作用及基本原理。
(2)掌握堆的劃分:新生代(Eden、Survivor1、Survivor2)和老年代的作用及工作原理。
(3)掌握J(rèn)VM內(nèi)存參數(shù)設(shè)置及調(diào)優(yōu)。
2.2類加載
(1)掌握類的加載階段:加載、鏈接(驗(yàn)證、準(zhǔn)備、解析)、初始化、使用、卸載。
(2)掌握類加載器分類及其應(yīng)用:啟動(dòng)類加載器、擴(kuò)展類加載器、應(yīng)用程序類加載器、自定義加載器。
3J2EE
(1)掌握J(rèn)SP內(nèi)置對象、動(dòng)作及相關(guān)特點(diǎn)和工作原理。
(2)掌握Servlet的特點(diǎn)和工作原理。
(3)掌握Spring框架的IOC和AOP實(shí)現(xiàn)原理(反射和動(dòng)態(tài)代理)。
(4)至少掌握一個(gè)MVC框架(SpringMVC,Struts等)的工作原理,并熟練運(yùn)用。
(5)至少掌握一個(gè)ORM框架(Hibernate,MyBatis等)的工作原理,并熟練運(yùn)用。
4數(shù)據(jù)結(jié)構(gòu)與算法
(1)掌握線性表和樹的特點(diǎn)并熟練運(yùn)用。
(2)掌握常用排序和查找算法:插入排序(直接插入排序、希爾排序)、選擇排序(直接選擇排序、堆排序)、交換排序(冒泡排序、快速排序)、歸并排序,順序查找、二分查找、哈希查找。
(3)熟練運(yùn)用常見排序和查找算法思想解決編程問題。
(4)了解幾大基本算法:貪心算法、分治策略、動(dòng)態(tài)規(guī)劃。
5計(jì)算機(jī)網(wǎng)絡(luò)
(1)掌握網(wǎng)絡(luò)的分層結(jié)構(gòu),及每層的功能特點(diǎn)。
(2)掌握TCP/IP的通信原理(三次握手、四次揮手)
6數(shù)據(jù)庫
(1)掌握復(fù)雜的SQL語句編寫。
(2)掌握數(shù)據(jù)庫的優(yōu)化(SQL層面和表設(shè)計(jì)層面)。
(3)至少掌握一款數(shù)據(jù)庫產(chǎn)品。
(4)熟悉高并發(fā)、大數(shù)據(jù)情況下的數(shù)據(jù)庫開發(fā)。
7Web技術(shù)
(1)掌握AJAX的工作原理。
(2)至少熟悉一款JS框架(比如JQuery)。
8設(shè)計(jì)模式
(1)熟悉常見的設(shè)計(jì)模式。
(2)會(huì)將設(shè)計(jì)模式理論應(yīng)用到實(shí)際開發(fā)中。
9Linux
(1)熟練運(yùn)用Linux常見命令。
(2)熟悉Linux操作系統(tǒng)基本概念及特點(diǎn)。
(3)熟悉Shell腳本。
10操作系統(tǒng)
(1)掌握操作系統(tǒng)的進(jìn)程管理。
(2)了解操作系統(tǒng)的I/O。
11正則表達(dá)式
(1)掌握常見正則表達(dá)式符號。
(2)熟練運(yùn)用正則表達(dá)式解決實(shí)際問題(比如匹配電話號碼、郵箱、域名等)。
好了,就整理到這里,是不是給你全面分析了成為Java架構(gòu)師必備條件,缺一不可,最后,小編為大家準(zhǔn)備了一些Java學(xué)習(xí)教程,適合于1-5年開發(fā)經(jīng)驗(yàn)的Java程序員面試涉及到的絕大部分面試題及答案。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743