亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

2020Java后端開發(fā)面試題總結(jié)(春招+秋招+社招)

  發(fā)布時(shí)間:2021-02-18 15:09:47   作者:Java小叮當(dāng)   我要評(píng)論
這篇文章主要介紹了2020Java后端開發(fā)面試題總結(jié)(春招+秋招+社招),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

Java基礎(chǔ)—基礎(chǔ)知識(shí)

一、八種基本數(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語(yǔ)句中的變量類型可以使byte,short,int,char。從jdk1.7后可以使用String類型,是通過(guò)switch中的String.hashcode將String轉(zhuǎn)換成int進(jìn)行判斷的。

三、equals與==的區(qū)別。

==操作符是用來(lái)比較兩個(gè)變量的值是否相等,即就是比較變量在內(nèi)存中的存儲(chǔ)地址是否相同,equals()方法時(shí)String類從Object類中繼承的,被用來(lái)檢測(cè)兩個(gè)對(duì)象的內(nèi)容是否相同。

四、String s=new String(‘xyz’);創(chuàng)建了幾個(gè)object對(duì)象?

會(huì)創(chuàng)建一個(gè)String類型的變量s。在類加載到此處之前沒(méi)有出現(xiàn)“xyz”字面量的話,加載此處會(huì)創(chuàng)建一個(gè)對(duì)應(yīng)“xyz”的String常量對(duì)象。在符合規(guī)范的JVM上,執(zhí)行到此處new關(guān)鍵字會(huì)創(chuàng)建一個(gè)String對(duì)象。

五、 Object有哪些公用方法?

1、clone()創(chuàng)建斌返回此對(duì)象的副本

2、equals()判斷

3、getclass()返回object的運(yùn)行類

4、hashcode()返回對(duì)象的哈希碼值

5、notify()喚醒正在等待對(duì)象監(jiān)聽器的單個(gè)進(jìn)程

6、notifyAll()喚醒正在等待對(duì)象監(jiān)聽器的所有進(jìn)程

7、wait()導(dǎo)致當(dāng)前線程等待,直到另一個(gè)線程調(diào)用該對(duì)象的 notify()方法或 notifyAll()方法。

8、toString()返回此對(duì)象的字符串表示形式

9、finalize()當(dāng)垃圾收集確定不需要該對(duì)象時(shí),垃圾回收器調(diào)用該方法

六、Java的四種引用,強(qiáng)弱軟虛,用到的場(chǎng)景。

強(qiáng)引用:垃圾回收器不會(huì)回收

軟引用:如果內(nèi)存空間足夠,垃圾回收器就不會(huì)進(jìn)行回收,如果內(nèi)存空間不足,垃圾回收器就會(huì)進(jìn)行回收

弱引用:一旦發(fā)現(xiàn)了只有弱引用的對(duì)象,垃圾回收器就會(huì)進(jìn)行回收。

虛引用:如果發(fā)現(xiàn)該對(duì)象還具有虛引用,就會(huì)在回收該對(duì)象之前,吧這個(gè)虛引用加入到與之關(guān)聯(lián)的引用隊(duì)列中。

七、靜態(tài)變量和實(shí)例變量的區(qū)別。

靜態(tài)變量前要加上關(guān)鍵字static,實(shí)例變量則不會(huì)。

實(shí)例變量是屬于某個(gè)對(duì)象的屬性,必須創(chuàng)建了實(shí)例對(duì)象,其中的實(shí)例變量才會(huì)分配空間,才能使用這個(gè)實(shí)例變量。靜態(tài)變量不屬于任何的實(shí)例對(duì)象,而是屬于類,也稱為類變量,只要程序加載了類的字節(jié)碼,不用創(chuàng)建任何實(shí)例對(duì)象,就會(huì)被分配空間??傊褪?,靜態(tài)變量不需要?jiǎng)?chuàng)建任何的對(duì)象就可以直接使用,而實(shí)例變量需要先創(chuàng)建實(shí)例對(duì)象才能被使用。

八、 Overload和Override的區(qū)別:

重載Overload表示的是同一個(gè)類中可以有多個(gè)相同名稱的方法,但這些方法的參數(shù)列表不同,即就是參數(shù)參數(shù)或參數(shù)類型不同。重載時(shí)返回值當(dāng)然可以不一樣,但是如果參數(shù)列表完全一致時(shí),不能通過(guò)返回類型不一致而實(shí)現(xiàn)重載,這是不可以的。

重寫Override表示子類中的方法可以與父類中的方法名稱和參數(shù)完全相同,通過(guò)子類創(chuàng)建的對(duì)象來(lái)調(diào)用這個(gè)方法時(shí),將調(diào)用子類中定義的方法,即就是子類中的該方法將父類的該方法覆蓋了。子類覆蓋父類方法時(shí)只能拋比父類更少或者更小的異常。重寫的方法其返回必須和被覆蓋的方法返回一致。

九、抽象類和接口的區(qū)別。

抽象類可以有默認(rèn)的方法進(jìn)行實(shí)現(xiàn),可以有構(gòu)造器,可以有main方法進(jìn)行運(yùn)行,可以直接在該類中添加實(shí)現(xiàn)的方法接口沒(méi)有默認(rèn)的方法進(jìn)行實(shí)現(xiàn),沒(méi)有構(gòu)造器,不可以使用main方法進(jìn)行運(yùn)行,在接口中添加方法時(shí)需要在具體實(shí)現(xiàn)的類中添加方法。

十、String、StringBuffer與StringBuilder的區(qū)別。

String表示內(nèi)容不可修改的字符串,StringBuffer表示內(nèi)容可以修改的字符串,String覆蓋了equals()方法和hashcode()方法,而StringBuffer沒(méi)有覆蓋兩個(gè)方法,,所以StringBuffer對(duì)象存儲(chǔ)到j(luò)ava集合類中時(shí)會(huì)出現(xiàn)問(wèn)題。

StringBulider也表示內(nèi)容可以修改的字符串,但是其線程是不安全的,運(yùn)行效率高。

十一、 Java面向?qū)ο蟮奶卣髋c含義。

封裝、繼承、抽象、多態(tài)

1、封裝:封裝的目的在于實(shí)現(xiàn)程序的“高內(nèi)聚,低耦合”,防止程序相互依賴而帶來(lái)的變動(dòng)影響。封裝是保證是把對(duì)同一事物進(jìn)行操作的方法和相關(guān)的方法放在同一個(gè)類中,把方法和他操作的數(shù)據(jù)放在同一個(gè)類中。

2、抽象:抽象就是找出事物的相似和共性,然后將這些事物歸為同一類,這個(gè)類只考慮這些事物的相似和共性,忽略和當(dāng)前主題不相關(guān)的因素。

3、繼承:子類繼承父類的內(nèi)容作為自己的內(nèi)容,可以加入新的內(nèi)容或者是修改父類的內(nèi)容而更加適合特殊的需要。提高了額程序的可重用性和可擴(kuò)張性。

4、多態(tài):多態(tài)是指程序中定義的引用變量所指向的具體類型和通過(guò)該引用變量發(fā)出的方法調(diào)用在編程時(shí)并不確定,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量倒底會(huì)指向哪個(gè)類的實(shí)例對(duì)象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類中實(shí)現(xiàn)的方法,必須在由程序運(yùn)行期間才能決定。

十二、java多態(tài)的實(shí)現(xiàn)

接口實(shí)現(xiàn),繼承父類進(jìn)行方法重寫,

同一個(gè)類中進(jìn)行方法重載。

十三、error和exception區(qū)別

error表示有可能恢復(fù)但比較困難的的一種嚴(yán)重問(wèn)題,程序是不能進(jìn)行處理的exception表示一種設(shè)計(jì)或者實(shí)現(xiàn)問(wèn)題。

十四、運(yùn)行時(shí)異常和一般異常的區(qū)別

異常表示程序運(yùn)行過(guò)程中可能出現(xiàn)的非正常狀態(tài)。運(yùn)行時(shí)異常表示虛擬機(jī)的通常操作中可能遇到的異常,是一種常見的運(yùn)行錯(cuò)誤。java編譯器要求方法必須聲明拋出可能出現(xiàn)的非運(yùn)行時(shí)異常,但是并不要求必須聲明拋出未被捕獲的異常

十五、Java中的異常處理機(jī)制和簡(jiǎn)單原理和應(yīng)用

JAVA程序違反了JAVA的語(yǔ)義規(guī)則時(shí),JAVA虛擬機(jī)就會(huì)將發(fā)生的錯(cuò)誤表示為一個(gè)異常。違反語(yǔ)義規(guī)則包括2種情況。一種是JAVA類庫(kù)內(nèi)置的語(yǔ)義檢查。例如數(shù)組下標(biāo)越界,會(huì)引發(fā)IndexOutOfBoundsException;訪問(wèn)null的對(duì)象時(shí)會(huì)引發(fā) NullPointerException。另一種情況就是JAVA允許程序員擴(kuò)展這種語(yǔ)義檢查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時(shí)用 throw關(guān)鍵字引發(fā)異常。所有的異常都是java.lang.Thowable的子類。

十六、Java語(yǔ)言如何進(jìn)行異常處理,throws,throw,try catch finally代表什么意義,try塊中可以拋出異常嗎?

Java通過(guò)面向?qū)ο蟮姆椒ㄟM(jìn)行異常處理,把各種不同的異常進(jìn)行分類,并提供了良好的接口。在Java中,每個(gè)異常都是一個(gè)對(duì)象,它是Throwable類或其它子類的實(shí)例。當(dāng)一個(gè)

方法出現(xiàn)異常后便拋出一個(gè)異常對(duì)象,該對(duì)象中包含有異常信息,調(diào)用這個(gè)對(duì)象的方法可以捕獲到這個(gè)異常并進(jìn)行處理。Java的異常處理是通過(guò)5個(gè)關(guān)鍵詞來(lái)實(shí)現(xiàn)的:try、catch、throw、throws和finally。一般情況下是用try來(lái)執(zhí)行一段程序,如果出現(xiàn)異常,系統(tǒng)會(huì)拋出(throws)一個(gè)異常,這時(shí)候你可以通過(guò)它的類型來(lái)捕捉(catch)它,或最后(finally)由缺省處理器來(lái)處理。

用try來(lái)指定一塊預(yù)防所有”異常”的程序。緊跟在try程序后面,應(yīng)包含一個(gè)catch子句來(lái)指定你想要捕捉的”異常”的類型。

throw語(yǔ)句用來(lái)明確地拋出一個(gè)”異常”。

throws用來(lái)標(biāo)明一個(gè)成員函數(shù)可能拋出的各種”異常”。

Finally為確保一段代碼不管發(fā)生什么”異常”都被執(zhí)行一段代碼。

可以在一個(gè)成員函數(shù)調(diào)用的外面寫一個(gè)try語(yǔ)句,在這個(gè)成員函數(shù)內(nèi)部寫另一個(gè)try語(yǔ)句保護(hù)其他代碼。每當(dāng)遇到一個(gè)try語(yǔ)句,”異常”的框架就放到堆棧上面,直到所有的try語(yǔ)句都完成。
如果下一級(jí)的try語(yǔ)句沒(méi)有對(duì)某種”異常”進(jìn)行處理,堆棧就會(huì)展開,直到遇到有處理這種”異常”的try語(yǔ)句。

十七、 try catch finally,try里有return,finally還執(zhí)行么?

1、finally語(yǔ)句總會(huì)執(zhí)行

2、如果try、catch中有return語(yǔ)句,finally中沒(méi)有return,那么在finally中修改除包裝類型和靜態(tài)變量、全局變量以外的數(shù)據(jù)都不會(huì)對(duì)try、catch中返回的變量有任何的影響(包裝類型、靜態(tài)變量會(huì)改變、全局變量)

3、盡量不要在finally中使用return語(yǔ)句,如果使用的話,會(huì)忽略try、catch中的返回語(yǔ)句,也會(huì)忽略try、catch中的異常,屏蔽了錯(cuò)誤的發(fā)生。

4、finally中避免再次拋出異常,一旦finally中發(fā)生異常,代碼執(zhí)行將會(huì)拋出finally中的異常信息,try、catch中的異常將被忽略

十八、 Java中final、finally和finalize的區(qū)別

final 用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。

內(nèi)部類要訪問(wèn)局部變量,局部變量必須定義成final類型,例如,一段代碼……

finally是異常處理語(yǔ)句結(jié)構(gòu)的一部分,表示總是執(zhí)行。

finalize是Object類的一個(gè)方法,在垃圾收集器執(zhí)行的時(shí)候會(huì)調(diào)用被回收對(duì)象的此方法,可以覆蓋此方法提供垃圾收集時(shí)的其他資源回收,例如關(guān)閉文件等。JVM不保證此方法總被調(diào)用。

十九、 常見的運(yùn)行時(shí)異常

系統(tǒng)異常是RuntimeException的子類,常見的系統(tǒng)異常有:

ArrayIndexOutOfBoundsException - 數(shù)組越界訪問(wèn)

ClassCastException - 類型轉(zhuǎn)換異常

NullPointerException - 試圖訪問(wèn)一空對(duì)象的變量、方法或空數(shù)組的元素

IllegalArgumentException - 方法的參數(shù)無(wú)效

NoClassDefFoundException - JAVA運(yùn)行時(shí)系統(tǒng)找不到所引用的類

集合:

二十、Collection框架的結(jié)構(gòu)

集合框架(Collection Framework)泛指java.util包的若干個(gè)類和接口.如Collection,List,ArrayList,LinkedList,Vector(自動(dòng)增長(zhǎng)數(shù)組),HashSet,HashMap等。

集合框架中的類主要封裝的是典型的數(shù)據(jù)結(jié)構(gòu),如動(dòng)態(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是集合類的上級(jí)接口,是單列集合。繼承他的接口主要有Set 和List.

Set接口的子接口有:HashSet,TreeSet

List接口的子接口有:Arraylist,LinkedList,Vector

二十二、Collection與Collections的區(qū)別。

Collection是集合類的上級(jí)接口,繼承他的接口有Set和List

Collections是針對(duì)集合類的一個(gè)幫助類,它提供一系列的靜態(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是以鍵值對(duì)的形式進(jìn)行存儲(chǔ)的,其中key是唯一不可重復(fù)的,value的可以重復(fù),當(dāng)插入的值是key相同,后加入的會(huì)將已有的覆蓋。他有幾個(gè)具體的實(shí)現(xiàn)類,包括Treemap和HashMap,TreeMap是有序的,HashMap是無(wú)序的。

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 無(wú)序,唯一

|–HashSet

底層數(shù)據(jù)結(jié)構(gòu)是哈希表

如何保證元素的唯一性:

依賴兩個(gè)方法,hashCode()和equals()

|–LinkedHashSet

底層數(shù)據(jù)結(jié)構(gòu)是鏈表和哈希表,由鏈表保證元素有序,由哈希表保證元素唯一

|–TreeSet底層數(shù)據(jù)結(jié)構(gòu)是紅黑樹,

如何保證元素的排序:

自然排序:讓元素所屬的類實(shí)現(xiàn)Comparable接口

比較器排序:讓集合接收一個(gè)Comparator的實(shí)現(xiàn)類對(duì)象

如何保證元素的唯一性:

根據(jù)比較的返回值是否是0來(lái)決定的

4、Query隊(duì)列遵循先進(jìn)先出的原則,不允許插入null值,其中提供了相應(yīng)的進(jìn)隊(duì)和出隊(duì)的方法,建議使用offer()方法來(lái)添加元素,使用poll()方法刪除元素

5、Stack遵從后進(jìn)先出的原則,繼承自Vector。他通過(guò)5個(gè)操作對(duì)Vector類進(jìn)行擴(kuò)展,它提供了push和pop操作,以及去堆棧頂點(diǎn)的peek()方法,測(cè)試堆棧是否為空的empty方法

6、使用方法:

如果涉及到堆棧,隊(duì)列等操作,建議使用List

對(duì)于快速插入和刪除元素建議使用LinkedList

需要快速隨機(jī)訪問(wèn)元素建議使用ArrayList

二十五、 Set里面的元素不能重復(fù),用什么方法區(qū)分重復(fù)與否?

Set里的元素是唯一不能重復(fù)的,元素是否重復(fù)使用equals()方法進(jìn)行判斷。

equals()方法和==方法決定引用值是否指向同一對(duì)象equals()在類中被覆蓋,為的是兩個(gè)分離的對(duì)象的內(nèi)容和類型相匹配的話,返回真值。

二十六、HashMap和Hashtable的區(qū)別。

1、Hashtable是基于Dictionary類的,HashMap是Map接口的一個(gè)實(shí)現(xiàn)類

2、Hashtable是線程安全的,即是同步的;HashMap線程不是安全的,不是同步的。

3、HashMap可以將空值作為key或value

二十七、 HashMap、LinkedHashMap、TreeMap的區(qū)別。

1、HashMap是根據(jù)鍵的hashcode值存儲(chǔ)數(shù)據(jù),根據(jù)鍵可以直接獲取它的值,具有很快的訪問(wèn)速度,取得的數(shù)據(jù)完全是隨機(jī)的

2、LinkedHashMap保存了記錄的插入順序,在使用Iterator進(jìn)行遍歷的時(shí)候,先得到的肯定是先插入的數(shù)據(jù),可以在構(gòu)造時(shí)帶參數(shù),按照應(yīng)用次數(shù)來(lái)進(jìn)行排序

3、TreeMap實(shí)現(xiàn)SortMap接口,能夠把它保存的記錄根據(jù)鍵排序。默認(rèn)的是升序排序,也可以指定排序的比較器,進(jìn)行遍歷的時(shí)候得到的是排序過(guò)的記錄。

二十八、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)又是一個(gè)鏈表。程序會(huì)先根據(jù)key的hashcode()方法返回值決定該Entry在數(shù)組中的

存儲(chǔ)位置,如果該位置上沒(méi)有元素,就會(huì)將元素放置在此位置上,如果兩個(gè)Entry的key相同,會(huì)調(diào)用equals,返回值是true則覆蓋原來(lái)的value值,返回false則會(huì)形成Entry鏈,位于頭部。

2、ArrrayList的底層實(shí)現(xiàn)是數(shù)組,在執(zhí)行add操作時(shí),會(huì)先檢查數(shù)組 大小是否可以容納新的元素,如果不夠就會(huì)進(jìn)行擴(kuò)容。然后會(huì)將原來(lái)的數(shù)據(jù)拷貝到新的數(shù)組中。

3、LinkedList底層是一個(gè)鏈表,其實(shí)現(xiàn)增刪改查和數(shù)據(jù)結(jié)構(gòu)中的操作完全相同,而且插入是有序的。

4、LinkedHashMap的底層結(jié)構(gòu)式是雙鏈表,其他的邏輯處理與HashMap一致,同樣沒(méi)有鎖保護(hù),多線程使用時(shí)存在風(fēng)險(xiǎn)。

5、ConcurrentHashMap是segment數(shù)組結(jié)構(gòu)和HashEntry數(shù)組結(jié)構(gòu)組成的,segment在ConcurrentHashMap中充當(dāng)鎖的角色,HashEntry用于存儲(chǔ)鍵值對(duì)數(shù)據(jù)。segment的結(jié)構(gòu)是數(shù)組和鏈表,一個(gè)segment中有一個(gè)HashEntry,每個(gè)HashEntry是一個(gè)鏈表結(jié)構(gòu)的元素。對(duì)HashEntry中的數(shù)據(jù)進(jìn)行修改時(shí),需要先獲得它所對(duì)應(yīng)的segment鎖。每個(gè)ConcurrentHashMap默認(rèn)有16個(gè)segment。

二十九、迭代器Iterator

Iterator提供了統(tǒng)一遍歷操作集合元素的統(tǒng)一接口,Collection接口實(shí)現(xiàn)Iterator接口。每個(gè)集合都通過(guò)實(shí)現(xiàn)Iterator接口中的iterator()方法返回實(shí)例,然后對(duì)元素進(jìn)行迭代操作,但是在迭代元素的時(shí)候不能使用集合的方法刪除元素,否則會(huì)拋出異常,可以使用Iterator接口中的remove()方法進(jìn)行刪除。

三十、 快速失?。╢ail-fast)和安全失敗(fail-safe)的區(qū)別。

Iterator的安全失敗是基于對(duì)底層集合做拷貝,因此它不受源集合修改的影響。util包下的所有集合類都是快速失敗的,util.concurren包下面的所有類都是安全失敗的。

Java基礎(chǔ)—集合框架/泛型/容器

概念

一、容器(Container)
Spring 提供容器功能,容器可以管理對(duì)象的生命周期、對(duì)象與對(duì)象之間的依賴關(guān)系,您可以使用一個(gè)配置文件(通常是 XML),在上面定義好對(duì)象的名稱、如何產(chǎn)生(Prototype 方式或 Singleton 方式)、哪個(gè)對(duì)象產(chǎn)生之后必須設(shè)定成為某個(gè)對(duì)象的屬性等,在啟動(dòng)容器之后,所有的對(duì)象都可以直接取用,不用編寫任何一行程序代碼來(lái)產(chǎn)生對(duì)象,或是建立對(duì)象與對(duì)象之間的依賴關(guān)系。
換個(gè)更直白點(diǎn)的說(shuō)明方式:容器是一個(gè) Java 所編寫的程序,原先必須自行編寫程序以管理對(duì)象關(guān)系,現(xiàn)在容器都會(huì)自動(dòng)幫您作好。
常用容器:WebSphere,WebLogic,Resin,Tomcat。

容器類

容器類 其實(shí)就是一種用來(lái)存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),在 JAVA 中容器可分為即 “集合”(Set)、“列表”(List)、“映射”(Map)。至于,為什么需要容器,總的來(lái)說(shuō),主要是在以數(shù)組作為數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)中,其長(zhǎng)度難以擴(kuò)充,同時(shí)數(shù)組中元素類型必須相同。而容器可以彌補(bǔ)數(shù)組的這兩個(gè)缺陷。

Java 容器類包含 List、ArrayList、Vector 及 map、HashTable、HashMap。

ArrayList 和 HashMap 是異步的,Vector 和 HashTable 是同步的,所以 Vector 和 HashTable 是線程安全的,而 ArrayList 和 HashMap 并不是線程安全的。因?yàn)橥叫枰ㄙM(fèi)機(jī)器時(shí)間,所以 Vector 和 HashTable 的執(zhí)行效率要低于 ArrayList 和 HashMap。

二、集合框架的說(shuō)明

所有集合類都位于 java.util 包下。Java 的集合類主要由兩個(gè)接口派生而出:Collection 和 Map,Collection 和 Map 是 Java 集合框架的根接口,這兩個(gè)接口又包含了一些子接口或?qū)崿F(xiàn)類。

1.Set、List 和 Map 可以看做集合的三大類:

2.List 集合是有序集合,集合中的元素可以重復(fù),訪問(wèn)集合中的元素可以根據(jù)元素的索引來(lái)訪問(wèn)。

Set 集合是無(wú)序集合,集合中的元素不可以重復(fù),訪問(wèn)集合中的元素只能根據(jù)元素本身來(lái)訪問(wèn)(也是集合里元素不允許重復(fù)的原因)。

3.Map 集合中保存 Key-value 對(duì)形式的元素,訪問(wèn)時(shí)只能根據(jù)每項(xiàng)元素的 key 來(lái)訪問(wèn)其 value。

三、集合框架詳細(xì)說(shuō)明

1、Collection 是一個(gè)接口,是高度抽象出來(lái)的集合,它包含了集合的基本操作和屬性。Collection 包含了 List 和 Set 兩大分支。
(1)List 是一個(gè) 有序的隊(duì)列,每一個(gè)元素都有它的索引。第一個(gè)元素的索引值是 0。List 的實(shí)現(xiàn)類有 LinkedList, ArrayList, Vector, Stack。

(2)Set 是一個(gè)不允許有重復(fù)元素的集合。Set 的實(shí)現(xiàn)類有 HastSet 和 TreeSet。 HashSet 依賴于 HashMap,它實(shí)際上是通過(guò) HashMap 實(shí)現(xiàn)的;TreeSet 依賴于 TreeMap,它實(shí)際上是通過(guò) TreeMap 實(shí)現(xiàn)的。

2、Map 是一個(gè)映射接口,即 key-value 鍵值對(duì)。Map 中的每一個(gè)元素包含 “一個(gè) key” 和 “key 對(duì)應(yīng)的 value”。AbstractMap 是個(gè)抽象類,它實(shí)現(xiàn)了 Map 接口中的大部分 API。而 HashMap,TreeMap,WeakHashMap 都是繼承于 AbstractMap。Hashtable 雖然繼承于 Dictionary,但它實(shí)現(xiàn)了 Map 接口。

3、接下來(lái),再看 Iterator。它是遍歷集合的工具,即我們通常通過(guò) Iterator 迭代器來(lái)遍歷集合。我們說(shuō) Collection 依賴于Iterator,是因?yàn)?Collection 的實(shí)現(xiàn)類都要實(shí)現(xiàn) iterator () 函數(shù),返回一個(gè) Iterator 對(duì)象。ListIterator 是專門為遍歷 List 而存在的。

4、再看 Enumeration,它是 JDK 1.0 引入的抽象類。作用和 Iterator 一樣,也是遍歷集合;但是 Enumeration 的功能要比 Iterator 少。在上面的框圖中, Enumeration 只能在 Hashtable, Vector, Stack 中使用。

5、最后,看 Arrays 和 Collections。它們是操作數(shù)組、集合的兩個(gè)工具類。

四、集合與數(shù)組

五、層次關(guān)系

六、幾種重要的接口和類簡(jiǎn)介

七、遍歷

八、ArrayList 和 LinkedList

九、Map 集合

十、主要實(shí)現(xiàn)類區(qū)別小結(jié)

Java基礎(chǔ)—多線程

一、多線程基本概念

二、線程相關(guān)的常用方法

三、繼承Thread類

四、實(shí)現(xiàn)Runnable 接口

五、Java 分為兩種線程:用戶線程和守護(hù)線程

六、用戶線程就是前臺(tái)線程,守護(hù)線程就是后臺(tái)線程

七、什么是可重入鎖?

八、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 所鼓勵(lì)的7大措施

二、序列化和反序列化

三、Java中池的概念

四、Java反射

五、Spring的IOC和AOP概念和實(shí)現(xiàn)原理

六、 仿照 Spring 實(shí)現(xiàn)簡(jiǎn)單的 IOC

七、仿照 Spring 實(shí)現(xiàn)簡(jiǎ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ī)中的對(duì)象

八、虛擬機(jī) 分配內(nèi)存

九、Java中的引用類型

十、JVM如何判斷是否回收對(duì)象

十一、垃圾回收算法

十二、JVM運(yùn)行時(shí)數(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(中國(guó)防火長(zhǎng)城)工作原理

七、OSI七層模型和 五層體系結(jié)構(gòu)

八、TCP 三次握手和四次揮手協(xié)議

九、TCP協(xié)議 (可靠保證、TCP、UDP、擁塞、ARQ)

十、HTTP 和 HTTPS

十一、Http/1.0、Http/1.1、Http2

十二、Https 加密過(guò)程詳解

十三、HTTP協(xié)議的補(bǔ)充(POST、GET請(qǐng)求方法、冪等性)

十四、網(wǎng)絡(luò)攻擊(XSS、CSRF)詳解

十五、DDoS 攻擊詳解

十六、SQL注入攻擊詳解

數(shù)據(jù)庫(kù)

一、結(jié)果集 (ResultSet)全面解析

二、基本概念

三、索引

四、事務(wù)

五、存儲(chǔ)引擎

六、數(shù)據(jù)庫(kù)優(yōu)化

七、數(shù)據(jù)庫(kù)鎖

八、主從復(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)排序算法,比較時(shí)間復(fù)雜度

五、紅黑樹

六、數(shù)據(jù)結(jié)構(gòu)之棧

七、搜索與回溯算法-Java實(shí)現(xiàn)

八、高效判斷一個(gè)數(shù),是不是素?cái)?shù)

到此這篇關(guān)于2020Java后端開發(fā)面試題總結(jié)(春招+秋招+社招)的文章就介紹到這了,更多相關(guān)Java面試題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java面試通關(guān)要點(diǎn)匯總(備戰(zhàn)秋招)

    這篇文章主要介紹了Java面試通關(guān)要點(diǎn)匯總(備戰(zhàn)秋招),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-08
  • 70個(gè)常見Spring面試題(Java必會(huì))

    這篇文章主要介紹了70個(gè)常見Spring面試題(Java必會(huì)),主要包括Spring、Spring boot、Spring Cloud、Spring MVC、MongoDB、MyBatis、微服務(wù)實(shí)戰(zhàn),Spring 全家桶,感興趣的可
    2020-08-05
  • 大廠Java高級(jí)工程師面試題

    這篇文章主要介紹了大廠Java高級(jí)工程師面試題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    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)匯總,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-12
  • 10個(gè)JavaScript筆試題解析

    這篇文章主要介紹了10個(gè)JavaScript筆試題解析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-02
  • java基礎(chǔ)面試題整理小結(jié)

    本文是小編給大家收藏整理的關(guān)于java基礎(chǔ)面試題小結(jié),在面試中經(jīng)常會(huì)被問(wèn)題,今天小編特此整理把內(nèi)容分享到腳本之家平臺(tái),需要的朋友參考下吧
    2020-05-19
  • 最全Java面試208題,涵蓋大廠必考范圍

    這篇文章主要介紹了最全Java面試208題,涵蓋大廠必考范圍,熟悉本文中列出的知識(shí)點(diǎn)會(huì)大大增加通過(guò)前兩輪技術(shù)面試的幾率,感興趣的可以了解一下
    2020-05-07
  • 2020年最新版Java面試題大全

    這篇文章主要介紹了2020年最新版Java面試題大全,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-16
  • 100+經(jīng)典Java面試題及答案解析

    這篇文章主要介紹了100+經(jīng)典Java面試題及答案解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)
    2020-04-09
  • 面試百度、阿里、騰訊,這134道Java面試題你會(huì)多少

    這篇文章主要介紹了面試百度、阿里、騰訊,這134道Java面試題你會(huì)多少,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-26

最新評(píng)論