2020Java后端開發(fā)面試題總結(jié)(春招+秋招+社招)
Java基礎(chǔ)—基礎(chǔ)知識
一、八種基本數(shù)據(jù)類型的大小,以及他們的封裝類。
byte(Byte) 1 ,short(Short) 2 ,int(Integer) 4 ,long(Long) 8 ,float(Float) 4 ,double(Double)8,boolean(Boolean),char(Character)2
二、Switch能否用string做參數(shù)?
switch語句中的變量類型可以使byte,short,int,char。從jdk1.7后可以使用String類型,是通過switch中的String.hashcode將String轉(zhuǎn)換成int進(jìn)行判斷的。
三、equals與==的區(qū)別。
==操作符是用來比較兩個變量的值是否相等,即就是比較變量在內(nèi)存中的存儲地址是否相同,equals()方法時String類從Object類中繼承的,被用來檢測兩個對象的內(nèi)容是否相同。
四、String s=new String(‘xyz’);創(chuàng)建了幾個object對象?
會創(chuàng)建一個String類型的變量s。在類加載到此處之前沒有出現(xiàn)“xyz”字面量的話,加載此處會創(chuàng)建一個對應(yīng)“xyz”的String常量對象。在符合規(guī)范的JVM上,執(zhí)行到此處new關(guān)鍵字會創(chuàng)建一個String對象。
五、 Object有哪些公用方法?
1、clone()創(chuàng)建斌返回此對象的副本
2、equals()判斷
3、getclass()返回object的運(yùn)行類
4、hashcode()返回對象的哈希碼值
5、notify()喚醒正在等待對象監(jiān)聽器的單個進(jìn)程
6、notifyAll()喚醒正在等待對象監(jiān)聽器的所有進(jìn)程
7、wait()導(dǎo)致當(dāng)前線程等待,直到另一個線程調(diào)用該對象的 notify()方法或 notifyAll()方法。
8、toString()返回此對象的字符串表示形式
9、finalize()當(dāng)垃圾收集確定不需要該對象時,垃圾回收器調(diào)用該方法
六、Java的四種引用,強(qiáng)弱軟虛,用到的場景。
強(qiáng)引用:垃圾回收器不會回收
軟引用:如果內(nèi)存空間足夠,垃圾回收器就不會進(jìn)行回收,如果內(nèi)存空間不足,垃圾回收器就會進(jìn)行回收
弱引用:一旦發(fā)現(xiàn)了只有弱引用的對象,垃圾回收器就會進(jìn)行回收。
虛引用:如果發(fā)現(xiàn)該對象還具有虛引用,就會在回收該對象之前,吧這個虛引用加入到與之關(guān)聯(lián)的引用隊(duì)列中。
七、靜態(tài)變量和實(shí)例變量的區(qū)別。
靜態(tài)變量前要加上關(guān)鍵字static,實(shí)例變量則不會。
實(shí)例變量是屬于某個對象的屬性,必須創(chuàng)建了實(shí)例對象,其中的實(shí)例變量才會分配空間,才能使用這個實(shí)例變量。靜態(tài)變量不屬于任何的實(shí)例對象,而是屬于類,也稱為類變量,只要程序加載了類的字節(jié)碼,不用創(chuàng)建任何實(shí)例對象,就會被分配空間??傊褪牵o態(tài)變量不需要創(chuàng)建任何的對象就可以直接使用,而實(shí)例變量需要先創(chuàng)建實(shí)例對象才能被使用。
八、 Overload和Override的區(qū)別:
重載Overload表示的是同一個類中可以有多個相同名稱的方法,但這些方法的參數(shù)列表不同,即就是參數(shù)參數(shù)或參數(shù)類型不同。重載時返回值當(dāng)然可以不一樣,但是如果參數(shù)列表完全一致時,不能通過返回類型不一致而實(shí)現(xiàn)重載,這是不可以的。
重寫Override表示子類中的方法可以與父類中的方法名稱和參數(shù)完全相同,通過子類創(chuàng)建的對象來調(diào)用這個方法時,將調(diào)用子類中定義的方法,即就是子類中的該方法將父類的該方法覆蓋了。子類覆蓋父類方法時只能拋比父類更少或者更小的異常。重寫的方法其返回必須和被覆蓋的方法返回一致。
九、抽象類和接口的區(qū)別。
抽象類可以有默認(rèn)的方法進(jìn)行實(shí)現(xiàn),可以有構(gòu)造器,可以有main方法進(jìn)行運(yùn)行,可以直接在該類中添加實(shí)現(xiàn)的方法接口沒有默認(rèn)的方法進(jìn)行實(shí)現(xiàn),沒有構(gòu)造器,不可以使用main方法進(jìn)行運(yùn)行,在接口中添加方法時需要在具體實(shí)現(xiàn)的類中添加方法。
十、String、StringBuffer與StringBuilder的區(qū)別。
String表示內(nèi)容不可修改的字符串,StringBuffer表示內(nèi)容可以修改的字符串,String覆蓋了equals()方法和hashcode()方法,而StringBuffer沒有覆蓋兩個方法,,所以StringBuffer對象存儲到j(luò)ava集合類中時會出現(xiàn)問題。
StringBulider也表示內(nèi)容可以修改的字符串,但是其線程是不安全的,運(yùn)行效率高。
十一、 Java面向?qū)ο蟮奶卣髋c含義。
封裝、繼承、抽象、多態(tài)
1、封裝:封裝的目的在于實(shí)現(xiàn)程序的“高內(nèi)聚,低耦合”,防止程序相互依賴而帶來的變動影響。封裝是保證是把對同一事物進(jìn)行操作的方法和相關(guān)的方法放在同一個類中,把方法和他操作的數(shù)據(jù)放在同一個類中。
2、抽象:抽象就是找出事物的相似和共性,然后將這些事物歸為同一類,這個類只考慮這些事物的相似和共性,忽略和當(dāng)前主題不相關(guān)的因素。
3、繼承:子類繼承父類的內(nèi)容作為自己的內(nèi)容,可以加入新的內(nèi)容或者是修改父類的內(nèi)容而更加適合特殊的需要。提高了額程序的可重用性和可擴(kuò)張性。
4、多態(tài):多態(tài)是指程序中定義的引用變量所指向的具體類型和通過該引用變量發(fā)出的方法調(diào)用在編程時并不確定,而是在程序運(yùn)行期間才確定,即一個引用變量倒底會指向哪個類的實(shí)例對象,該引用變量發(fā)出的方法調(diào)用到底是哪個類中實(shí)現(xiàn)的方法,必須在由程序運(yùn)行期間才能決定。
十二、java多態(tài)的實(shí)現(xiàn)
接口實(shí)現(xiàn),繼承父類進(jìn)行方法重寫,
同一個類中進(jìn)行方法重載。
十三、error和exception區(qū)別
error表示有可能恢復(fù)但比較困難的的一種嚴(yán)重問題,程序是不能進(jìn)行處理的exception表示一種設(shè)計(jì)或者實(shí)現(xiàn)問題。
十四、運(yùn)行時異常和一般異常的區(qū)別
異常表示程序運(yùn)行過程中可能出現(xiàn)的非正常狀態(tài)。運(yùn)行時異常表示虛擬機(jī)的通常操作中可能遇到的異常,是一種常見的運(yùn)行錯誤。java編譯器要求方法必須聲明拋出可能出現(xiàn)的非運(yùn)行時異常,但是并不要求必須聲明拋出未被捕獲的異常
十五、Java中的異常處理機(jī)制和簡單原理和應(yīng)用
JAVA程序違反了JAVA的語義規(guī)則時,JAVA虛擬機(jī)就會將發(fā)生的錯誤表示為一個異常。違反語義規(guī)則包括2種情況。一種是JAVA類庫內(nèi)置的語義檢查。例如數(shù)組下標(biāo)越界,會引發(fā)IndexOutOfBoundsException;訪問null的對象時會引發(fā) NullPointerException。另一種情況就是JAVA允許程序員擴(kuò)展這種語義檢查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時用 throw關(guān)鍵字引發(fā)異常。所有的異常都是java.lang.Thowable的子類。
十六、Java語言如何進(jìn)行異常處理,throws,throw,try catch finally代表什么意義,try塊中可以拋出異常嗎?
Java通過面向?qū)ο蟮姆椒ㄟM(jìn)行異常處理,把各種不同的異常進(jìn)行分類,并提供了良好的接口。在Java中,每個異常都是一個對象,它是Throwable類或其它子類的實(shí)例。當(dāng)一個
方法出現(xiàn)異常后便拋出一個異常對象,該對象中包含有異常信息,調(diào)用這個對象的方法可以捕獲到這個異常并進(jìn)行處理。Java的異常處理是通過5個關(guān)鍵詞來實(shí)現(xiàn)的:try、catch、throw、throws和finally。一般情況下是用try來執(zhí)行一段程序,如果出現(xiàn)異常,系統(tǒng)會拋出(throws)一個異常,這時候你可以通過它的類型來捕捉(catch)它,或最后(finally)由缺省處理器來處理。
用try來指定一塊預(yù)防所有”異常”的程序。緊跟在try程序后面,應(yīng)包含一個catch子句來指定你想要捕捉的”異常”的類型。
throw語句用來明確地拋出一個”異常”。
throws用來標(biāo)明一個成員函數(shù)可能拋出的各種”異常”。
Finally為確保一段代碼不管發(fā)生什么”異常”都被執(zhí)行一段代碼。
可以在一個成員函數(shù)調(diào)用的外面寫一個try語句,在這個成員函數(shù)內(nèi)部寫另一個try語句保護(hù)其他代碼。每當(dāng)遇到一個try語句,”異常”的框架就放到堆棧上面,直到所有的try語句都完成。
如果下一級的try語句沒有對某種”異常”進(jìn)行處理,堆棧就會展開,直到遇到有處理這種”異常”的try語句。
十七、 try catch finally,try里有return,finally還執(zhí)行么?
1、finally語句總會執(zhí)行
2、如果try、catch中有return語句,finally中沒有return,那么在finally中修改除包裝類型和靜態(tài)變量、全局變量以外的數(shù)據(jù)都不會對try、catch中返回的變量有任何的影響(包裝類型、靜態(tài)變量會改變、全局變量)
3、盡量不要在finally中使用return語句,如果使用的話,會忽略try、catch中的返回語句,也會忽略try、catch中的異常,屏蔽了錯誤的發(fā)生。
4、finally中避免再次拋出異常,一旦finally中發(fā)生異常,代碼執(zhí)行將會拋出finally中的異常信息,try、catch中的異常將被忽略
十八、 Java中final、finally和finalize的區(qū)別
final 用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
內(nèi)部類要訪問局部變量,局部變量必須定義成final類型,例如,一段代碼……
finally是異常處理語句結(jié)構(gòu)的一部分,表示總是執(zhí)行。
finalize是Object類的一個方法,在垃圾收集器執(zhí)行的時候會調(diào)用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關(guān)閉文件等。JVM不保證此方法總被調(diào)用。
十九、 常見的運(yùn)行時異常
系統(tǒng)異常是RuntimeException的子類,常見的系統(tǒng)異常有:
ArrayIndexOutOfBoundsException - 數(shù)組越界訪問
ClassCastException - 類型轉(zhuǎn)換異常
NullPointerException - 試圖訪問一空對象的變量、方法或空數(shù)組的元素
IllegalArgumentException - 方法的參數(shù)無效
NoClassDefFoundException - JAVA運(yùn)行時系統(tǒng)找不到所引用的類
集合:
二十、Collection框架的結(jié)構(gòu)
集合框架(Collection Framework)泛指java.util包的若干個類和接口.如Collection,List,ArrayList,LinkedList,Vector(自動增長數(shù)組),HashSet,HashMap等。
集合框架中的類主要封裝的是典型的數(shù)據(jù)結(jié)構(gòu),如動態(tài)數(shù)組,鏈表,堆棧,集合,哈希表等.
集合框架類似編程中經(jīng)常用到的工具類,使得編碼這專注于業(yè)務(wù)層的實(shí)現(xiàn),不需要從底層實(shí)現(xiàn)相關(guān)細(xì)節(jié)—“數(shù)據(jù)結(jié)構(gòu)的封裝”和”典型算法的實(shí)現(xiàn)”。
二十一、Collection包結(jié)構(gòu)
Collection是集合類的上級接口,是單列集合。繼承他的接口主要有Set 和List.
Set接口的子接口有:HashSet,TreeSet
List接口的子接口有:Arraylist,LinkedList,Vector
二十二、Collection與Collections的區(qū)別。
Collection是集合類的上級接口,繼承他的接口有Set和List
Collections是針對集合類的一個幫助類,它提供一系列的靜態(tài)方法實(shí)現(xiàn)集合的搜索,排序,線程安全等操作。
二十三、 Colection框架中實(shí)現(xiàn)比較要實(shí)現(xiàn)什么接口?
comparable:只包含compareTo()方法
comparator:compare()和equals()
二十四、Map、Set、List、Queue、Stack的特點(diǎn)與用法。
1、Map是以鍵值對的形式進(jìn)行存儲的,其中key是唯一不可重復(fù)的,value的可以重復(fù),當(dāng)插入的值是key相同,后加入的會將已有的覆蓋。他有幾個具體的實(shí)現(xiàn)類,包括Treemap和HashMap,TreeMap是有序的,HashMap是無序的。
2、List 有序,可重復(fù)
|–ArrayList
底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢快,增刪慢,線程不安全,效率高
|–Vector
底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢快,增刪慢,線程不安全,效率高
|–LinkedList
底層數(shù)據(jù)結(jié)構(gòu)是鏈表,查詢慢,增刪塊,線程安全,效率低
3、Set 無序,唯一
|–HashSet
底層數(shù)據(jù)結(jié)構(gòu)是哈希表
如何保證元素的唯一性:
依賴兩個方法,hashCode()和equals()
|–LinkedHashSet
底層數(shù)據(jù)結(jié)構(gòu)是鏈表和哈希表,由鏈表保證元素有序,由哈希表保證元素唯一
|–TreeSet底層數(shù)據(jù)結(jié)構(gòu)是紅黑樹,
如何保證元素的排序:
自然排序:讓元素所屬的類實(shí)現(xiàn)Comparable接口
比較器排序:讓集合接收一個Comparator的實(shí)現(xiàn)類對象
如何保證元素的唯一性:
根據(jù)比較的返回值是否是0來決定的
4、Query隊(duì)列遵循先進(jìn)先出的原則,不允許插入null值,其中提供了相應(yīng)的進(jìn)隊(duì)和出隊(duì)的方法,建議使用offer()方法來添加元素,使用poll()方法刪除元素
5、Stack遵從后進(jìn)先出的原則,繼承自Vector。他通過5個操作對Vector類進(jìn)行擴(kuò)展,它提供了push和pop操作,以及去堆棧頂點(diǎn)的peek()方法,測試堆棧是否為空的empty方法
6、使用方法:
如果涉及到堆棧,隊(duì)列等操作,建議使用List
對于快速插入和刪除元素建議使用LinkedList
需要快速隨機(jī)訪問元素建議使用ArrayList
二十五、 Set里面的元素不能重復(fù),用什么方法區(qū)分重復(fù)與否?
Set里的元素是唯一不能重復(fù)的,元素是否重復(fù)使用equals()方法進(jìn)行判斷。
equals()方法和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是兩個分離的對象的內(nèi)容和類型相匹配的話,返回真值。
二十六、HashMap和Hashtable的區(qū)別。
1、Hashtable是基于Dictionary類的,HashMap是Map接口的一個實(shí)現(xiàn)類
2、Hashtable是線程安全的,即是同步的;HashMap線程不是安全的,不是同步的。
3、HashMap可以將空值作為key或value
二十七、 HashMap、LinkedHashMap、TreeMap的區(qū)別。
1、HashMap是根據(jù)鍵的hashcode值存儲數(shù)據(jù),根據(jù)鍵可以直接獲取它的值,具有很快的訪問速度,取得的數(shù)據(jù)完全是隨機(jī)的
2、LinkedHashMap保存了記錄的插入順序,在使用Iterator進(jìn)行遍歷的時候,先得到的肯定是先插入的數(shù)據(jù),可以在構(gòu)造時帶參數(shù),按照應(yīng)用次數(shù)來進(jìn)行排序
3、TreeMap實(shí)現(xiàn)SortMap接口,能夠把它保存的記錄根據(jù)鍵排序。默認(rèn)的是升序排序,也可以指定排序的比較器,進(jìn)行遍歷的時候得到的是排序過的記錄。
二十八、HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底層實(shí)現(xiàn)。
1、HashMap是java數(shù)據(jù)結(jié)構(gòu)中兩大結(jié)構(gòu)數(shù)組和鏈表的組合。HashMap底層數(shù)組,數(shù)組中的每一項(xiàng)又是一個鏈表。程序會先根據(jù)key的hashcode()方法返回值決定該Entry在數(shù)組中的
存儲位置,如果該位置上沒有元素,就會將元素放置在此位置上,如果兩個Entry的key相同,會調(diào)用equals,返回值是true則覆蓋原來的value值,返回false則會形成Entry鏈,位于頭部。
2、ArrrayList的底層實(shí)現(xiàn)是數(shù)組,在執(zhí)行add操作時,會先檢查數(shù)組 大小是否可以容納新的元素,如果不夠就會進(jìn)行擴(kuò)容。然后會將原來的數(shù)據(jù)拷貝到新的數(shù)組中。
3、LinkedList底層是一個鏈表,其實(shí)現(xiàn)增刪改查和數(shù)據(jù)結(jié)構(gòu)中的操作完全相同,而且插入是有序的。
4、LinkedHashMap的底層結(jié)構(gòu)式是雙鏈表,其他的邏輯處理與HashMap一致,同樣沒有鎖保護(hù),多線程使用時存在風(fēng)險。
5、ConcurrentHashMap是segment數(shù)組結(jié)構(gòu)和HashEntry數(shù)組結(jié)構(gòu)組成的,segment在ConcurrentHashMap中充當(dāng)鎖的角色,HashEntry用于存儲鍵值對數(shù)據(jù)。segment的結(jié)構(gòu)是數(shù)組和鏈表,一個segment中有一個HashEntry,每個HashEntry是一個鏈表結(jié)構(gòu)的元素。對HashEntry中的數(shù)據(jù)進(jìn)行修改時,需要先獲得它所對應(yīng)的segment鎖。每個ConcurrentHashMap默認(rèn)有16個segment。
二十九、迭代器Iterator
Iterator提供了統(tǒng)一遍歷操作集合元素的統(tǒng)一接口,Collection接口實(shí)現(xiàn)Iterator接口。每個集合都通過實(shí)現(xiàn)Iterator接口中的iterator()方法返回實(shí)例,然后對元素進(jìn)行迭代操作,但是在迭代元素的時候不能使用集合的方法刪除元素,否則會拋出異常,可以使用Iterator接口中的remove()方法進(jìn)行刪除。
三十、 快速失?。╢ail-fast)和安全失?。╢ail-safe)的區(qū)別。
Iterator的安全失敗是基于對底層集合做拷貝,因此它不受源集合修改的影響。util包下的所有集合類都是快速失敗的,util.concurren包下面的所有類都是安全失敗的。
Java基礎(chǔ)—集合框架/泛型/容器
概念
一、容器(Container)
Spring 提供容器功能,容器可以管理對象的生命周期、對象與對象之間的依賴關(guān)系,您可以使用一個配置文件(通常是 XML),在上面定義好對象的名稱、如何產(chǎn)生(Prototype 方式或 Singleton 方式)、哪個對象產(chǎn)生之后必須設(shè)定成為某個對象的屬性等,在啟動容器之后,所有的對象都可以直接取用,不用編寫任何一行程序代碼來產(chǎn)生對象,或是建立對象與對象之間的依賴關(guān)系。
換個更直白點(diǎn)的說明方式:容器是一個 Java 所編寫的程序,原先必須自行編寫程序以管理對象關(guān)系,現(xiàn)在容器都會自動幫您作好。
常用容器:WebSphere,WebLogic,Resin,Tomcat。
容器類
容器類 其實(shí)就是一種用來存儲數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),在 JAVA 中容器可分為即 “集合”(Set)、“列表”(List)、“映射”(Map)。至于,為什么需要容器,總的來說,主要是在以數(shù)組作為數(shù)據(jù)的存儲結(jié)構(gòu)中,其長度難以擴(kuò)充,同時數(shù)組中元素類型必須相同。而容器可以彌補(bǔ)數(shù)組的這兩個缺陷。
Java 容器類包含 List、ArrayList、Vector 及 map、HashTable、HashMap。
ArrayList 和 HashMap 是異步的,Vector 和 HashTable 是同步的,所以 Vector 和 HashTable 是線程安全的,而 ArrayList 和 HashMap 并不是線程安全的。因?yàn)橥叫枰ㄙM(fèi)機(jī)器時間,所以 Vector 和 HashTable 的執(zhí)行效率要低于 ArrayList 和 HashMap。
二、集合框架的說明
所有集合類都位于 java.util 包下。Java 的集合類主要由兩個接口派生而出:Collection 和 Map,Collection 和 Map 是 Java 集合框架的根接口,這兩個接口又包含了一些子接口或?qū)崿F(xiàn)類。
1.Set、List 和 Map 可以看做集合的三大類:
2.List 集合是有序集合,集合中的元素可以重復(fù),訪問集合中的元素可以根據(jù)元素的索引來訪問。
Set 集合是無序集合,集合中的元素不可以重復(fù),訪問集合中的元素只能根據(jù)元素本身來訪問(也是集合里元素不允許重復(fù)的原因)。
3.Map 集合中保存 Key-value 對形式的元素,訪問時只能根據(jù)每項(xiàng)元素的 key 來訪問其 value。
三、集合框架詳細(xì)說明
1、Collection 是一個接口,是高度抽象出來的集合,它包含了集合的基本操作和屬性。Collection 包含了 List 和 Set 兩大分支。
(1)List 是一個 有序的隊(duì)列,每一個元素都有它的索引。第一個元素的索引值是 0。List 的實(shí)現(xiàn)類有 LinkedList, ArrayList, Vector, Stack。
(2)Set 是一個不允許有重復(fù)元素的集合。Set 的實(shí)現(xiàn)類有 HastSet 和 TreeSet。 HashSet 依賴于 HashMap,它實(shí)際上是通過 HashMap 實(shí)現(xiàn)的;TreeSet 依賴于 TreeMap,它實(shí)際上是通過 TreeMap 實(shí)現(xiàn)的。
2、Map 是一個映射接口,即 key-value 鍵值對。Map 中的每一個元素包含 “一個 key” 和 “key 對應(yīng)的 value”。AbstractMap 是個抽象類,它實(shí)現(xiàn)了 Map 接口中的大部分 API。而 HashMap,TreeMap,WeakHashMap 都是繼承于 AbstractMap。Hashtable 雖然繼承于 Dictionary,但它實(shí)現(xiàn)了 Map 接口。
3、接下來,再看 Iterator。它是遍歷集合的工具,即我們通常通過 Iterator 迭代器來遍歷集合。我們說 Collection 依賴于Iterator,是因?yàn)?Collection 的實(shí)現(xiàn)類都要實(shí)現(xiàn) iterator () 函數(shù),返回一個 Iterator 對象。ListIterator 是專門為遍歷 List 而存在的。
4、再看 Enumeration,它是 JDK 1.0 引入的抽象類。作用和 Iterator 一樣,也是遍歷集合;但是 Enumeration 的功能要比 Iterator 少。在上面的框圖中, Enumeration 只能在 Hashtable, Vector, Stack 中使用。
5、最后,看 Arrays 和 Collections。它們是操作數(shù)組、集合的兩個工具類。
四、集合與數(shù)組
五、層次關(guān)系
六、幾種重要的接口和類簡介
七、遍歷
八、ArrayList 和 LinkedList
九、Map 集合
十、主要實(shí)現(xiàn)類區(qū)別小結(jié)
…
Java基礎(chǔ)—多線程
一、多線程基本概念
二、線程相關(guān)的常用方法
三、繼承Thread類
四、實(shí)現(xiàn)Runnable 接口
五、Java 分為兩種線程:用戶線程和守護(hù)線程
六、用戶線程就是前臺線程,守護(hù)線程就是后臺線程
七、什么是可重入鎖?
八、Lock 與 synchronized 的不同
九、synchronized的使用
十、atomic 包底層實(shí)現(xiàn)原理
十一、Lock底層原理
十二、多線程不安全的底層原因以及兩種加鎖方式的區(qū)別
十三、Java多線程中 的各種鎖
十四、Java多線程中 的各種鎖(補(bǔ)充)
十五、阻塞隊(duì)列BlockingQueue
十六、Java線程池、Java線程池進(jìn)階、Java中的ThreadLocal
Java基礎(chǔ)—框架基礎(chǔ):注解/反射/流行框架
一、優(yōu)化 Hibernate 所鼓勵的7大措施
二、序列化和反序列化
三、Java中池的概念
四、Java反射
五、Spring的IOC和AOP概念和實(shí)現(xiàn)原理
六、 仿照 Spring 實(shí)現(xiàn)簡單的 IOC
七、仿照 Spring 實(shí)現(xiàn)簡單的 AOP
八、Spring bean 的生命流程
九、仿寫Spring 進(jìn)階之 AOP和IOC協(xié)作
Java基礎(chǔ)—面向?qū)ο螅豪^承/多態(tài)/封裝
一、重寫與重載
二、單繼承和多繼承
三、多態(tài)
四、super和this關(guān)鍵字
Java基礎(chǔ)—設(shè)計(jì)模式
一、單例模式之懶漢式和餓漢式
二、設(shè)計(jì)模式之觀察者模式
三、設(shè)計(jì)模式之工廠模式
四、設(shè)計(jì)模式之代理模式
Java基礎(chǔ)—JVM/類加載
一、初始化執(zhí)行代碼順序(包含static塊和構(gòu)造塊)以及類方法和實(shí)例方法
二、JVM內(nèi)存結(jié)構(gòu)
三、JVM組成部分
四、類加載機(jī)制
五、類加載器
六、Java類加載器之間的關(guān)系
七、虛擬機(jī)中的對象
八、虛擬機(jī) 分配內(nèi)存
九、Java中的引用類型
十、JVM如何判斷是否回收對象
十一、垃圾回收算法
十二、JVM運(yùn)行時數(shù)據(jù)區(qū)域
十三、JVM垃圾收集器
十四、JVM垃圾回收
十五、Java中的內(nèi)存泄露和內(nèi)存溢出
Java基礎(chǔ)——I/O
一、I/O 基本概念
二、I/O 模型 ——阻塞、非阻塞、多路復(fù)用、異步
三、JAVA中 BIO 與 NIO、AIO
網(wǎng)絡(luò)編程和計(jì)網(wǎng)
一、Java中的原碼、反碼和補(bǔ)碼
二、forward 和 redirect
三、URL的組成
四、通信的基礎(chǔ)——IP、DNS、MAC地址
五、關(guān)于ip地址的理解
六、GFW(中國防火長城)工作原理
七、OSI七層模型和 五層體系結(jié)構(gòu)
八、TCP 三次握手和四次揮手協(xié)議
九、TCP協(xié)議 (可靠保證、TCP、UDP、擁塞、ARQ)
十、HTTP 和 HTTPS
十一、Http/1.0、Http/1.1、Http2
十二、Https 加密過程詳解
十三、HTTP協(xié)議的補(bǔ)充(POST、GET請求方法、冪等性)
十四、網(wǎng)絡(luò)攻擊(XSS、CSRF)詳解
十五、DDoS 攻擊詳解
十六、SQL注入攻擊詳解
數(shù)據(jù)庫
一、結(jié)果集 (ResultSet)全面解析
二、基本概念
三、索引
四、事務(wù)
五、存儲引擎
六、數(shù)據(jù)庫優(yōu)化
七、數(shù)據(jù)庫鎖
八、主從復(fù)制和讀寫分離
操作系統(tǒng)
一、線程進(jìn)程部分
二、內(nèi)存和中斷
三、互斥和同步
四、Linux相關(guān)命令
五、Linux IO 模式及 select、poll、epoll 詳解
數(shù)據(jù)結(jié)構(gòu)
一、鏈表、數(shù)組、字符、樹篇
二、堆、棧、隊(duì)列篇
三、B樹、B+樹、B*樹
四、Java實(shí)現(xiàn)排序算法,比較時間復(fù)雜度
五、紅黑樹
六、數(shù)據(jù)結(jié)構(gòu)之棧
七、搜索與回溯算法-Java實(shí)現(xiàn)
八、高效判斷一個數(shù),是不是素?cái)?shù)
到此這篇關(guān)于2020Java后端開發(fā)面試題總結(jié)(春招+秋招+社招)的文章就介紹到這了,更多相關(guān)Java面試題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
Java面試通關(guān)要點(diǎn)匯總(備戰(zhàn)秋招)
這篇文章主要介紹了Java面試通關(guān)要點(diǎn)匯總(備戰(zhàn)秋招),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2020-09-08- 這篇文章主要介紹了70個常見Spring面試題(Java必會),主要包括Spring、Spring boot、Spring Cloud、Spring MVC、MongoDB、MyBatis、微服務(wù)實(shí)戰(zhàn),Spring 全家桶,感興趣的可2020-08-05
- 這篇文章主要介紹了大廠Java高級工程師面試題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2020-07-27
三年經(jīng)驗(yàn)網(wǎng)易、滴滴、點(diǎn)我Java崗面試經(jīng)驗(yàn)匯總
這篇文章主要介紹了三年經(jīng)驗(yàn)網(wǎng)易、滴滴、點(diǎn)我Java崗面試經(jīng)驗(yàn)匯總,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2020-06-12- 這篇文章主要介紹了10個JavaScript筆試題解析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2020-06-02
- 本文是小編給大家收藏整理的關(guān)于java基礎(chǔ)面試題小結(jié),在面試中經(jīng)常會被問題,今天小編特此整理把內(nèi)容分享到腳本之家平臺,需要的朋友參考下吧2020-05-19
- 這篇文章主要介紹了最全Java面試208題,涵蓋大廠必考范圍,熟悉本文中列出的知識點(diǎn)會大大增加通過前兩輪技術(shù)面試的幾率,感興趣的可以了解一下2020-05-07
- 這篇文章主要介紹了2020年最新版Java面試題大全,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2020-04-16
- 這篇文章主要介紹了100+經(jīng)典Java面試題及答案解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)2020-04-09
- 這篇文章主要介紹了面試百度、阿里、騰訊,這134道Java面試題你會多少,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2020-03-26

