大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) java中高級(jí)面試題部分答案解析

java中高級(jí)面試題部分答案解析

更新時(shí)間:2020-06-11 11:58:17 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2499次

大家在參加java培訓(xùn)以后都是要面臨就業(yè)問題的,就業(yè)的時(shí)候就會(huì)遇到java面試題,動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編為大家提供java中高級(jí)面試題部分答案解析作為參考,希望對(duì)大家能夠有所幫助。

java中高級(jí)面試題

1、List和Set比較,各自的子類比較

對(duì)比一:Arraylist與LinkedList的比較

(1)ArrayList是實(shí)現(xiàn)了基于動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),因?yàn)榈刂愤B續(xù),一旦數(shù)據(jù)存儲(chǔ)好了,查詢操作效率會(huì)比較高(在內(nèi)存里是連著放的)。

(2)因?yàn)榈刂愤B續(xù), ArrayList要移動(dòng)數(shù)據(jù),所以插入和刪除操作效率比較低。

(3)LinkedList基于鏈表的數(shù)據(jù)結(jié)構(gòu),地址是任意的,所以在開辟內(nèi)存空間的時(shí)候不需要等一個(gè)連續(xù)的地址,對(duì)于新增和刪除操作add和remove,LinedList比較占優(yōu)勢(shì)。

(4)因?yàn)長inkedList要移動(dòng)指針,所以查詢操作性能比較低。

適用場景分析:

當(dāng)需要對(duì)數(shù)據(jù)進(jìn)行對(duì)此訪問的情況下選用ArrayList,當(dāng)需要對(duì)數(shù)據(jù)進(jìn)行多次增加刪除修改時(shí)采用LinkedList。

對(duì)比二:ArrayList與Vector的比較

(1)Vector的方法都是同步的,是線程安全的,而ArrayList的方法不是,由于線程的同步必然要影響性能。因此,ArrayList的性能比Vector好。

(2)當(dāng)Vector或ArrayList中的元素超過它的初始大小時(shí),Vector會(huì)將它的容量翻倍,而ArrayList只增加50%的大小,這樣。ArrayList就有利于節(jié)約內(nèi)存空間。

(3)大多數(shù)情況不使用Vector,因?yàn)樾阅懿缓茫撬С志€程的同步,即某一時(shí)刻只有一個(gè)線程能夠?qū)慥ector,避免多線程同時(shí)寫而引起的不一致性。

(4)Vector可以設(shè)置增長因子,而ArrayList不可以。

適用場景分析:

(1)Vector是線程同步的,所以它也是線程安全的,而ArrayList是線程異步的,是不安全的。如果不考慮到線程的安全因素,一般用ArrayList效率比較高。

(2)如果集合中的元素的數(shù)目大于目前集合數(shù)組的長度時(shí),在集合中使用數(shù)據(jù)量比較大的數(shù)據(jù),用Vector有一定的優(yōu)勢(shì)。

對(duì)比三:HashSet與TreeSet的比較

(1)TreeSet 是二叉樹實(shí)現(xiàn)的,Treeset中的數(shù)據(jù)是自動(dòng)排好序的,不允許放入null值 。

(2)HashSet 是哈希表實(shí)現(xiàn)的,HashSet中的數(shù)據(jù)是無序的,可以放入null,但只能放入一個(gè)null,兩者中的值都不能重復(fù),就如數(shù)據(jù)庫中唯一約束 。

(3)HashSet要求放入的對(duì)象必須實(shí)現(xiàn)HashCode()方法,放入的對(duì)象,是以hashcode碼作為標(biāo)識(shí)的,而具有相同內(nèi)容的String對(duì)象,hashcode是一樣,所以放入的內(nèi)容不能重復(fù)。但是同一個(gè)類的對(duì)象可以放入不同的實(shí)例。

適用場景分析:

HashSet是基于Hash算法實(shí)現(xiàn)的,其性能通常都優(yōu)于TreeSet。我們通常都應(yīng)該使用HashSet,在我們需要排序的功能時(shí),我們才使用TreeSet。

2、HashMap和ConcurrentHashMap的區(qū)別

(1)HashMap 不是線程安全的,而 ConcurrentHashMap 是線程安全的。

(2)ConcurrentHashMap 采用鎖分段技術(shù),將整個(gè) Hash 桶進(jìn)行了分段 segment,也就是將這個(gè)大的數(shù)組分成了幾個(gè)小的片段 segment,而且每個(gè)小的片段 segment 上面都有鎖存在,那么在插入元素的時(shí)候就需要先找到應(yīng)該插入到哪一個(gè)片段 segment,然后再在這個(gè)片段上面進(jìn)行插入,而且這里還需要獲取 segment 鎖。

(3)ConcurrentHashMap 讓鎖的粒度更精細(xì)一些,并發(fā)性能更好。

3、HashTable 和 ConcurrentHashMap 的區(qū)別

它們都可以用于多線程的環(huán)境,但是當(dāng) Hashtable 的大小增加到一定的時(shí)候,性能會(huì)急劇下降,因?yàn)榈鷷r(shí)需要被鎖定很長的時(shí)間。因?yàn)?ConcurrentHashMap 引入了分割(segmentation),不論它變得多么大,僅僅需要鎖定 map 的某個(gè)部分,而其它的線程不需要等到迭代完成才能訪問map。簡而言之,在迭代的過程中,ConcurrentHashMap僅僅鎖定map的某個(gè)部分,而Hashtable則會(huì)鎖定整個(gè)map。

4、String,StringBuffer和StringBuilder的區(qū)別

(1)運(yùn)行速度,或者說是執(zhí)行速度,在這方面運(yùn)行速度快慢為:StringBuilder > StringBuffer > String。

(2)線程安全上,StringBuilder是線程不安全的,而StringBuffer是線程安全的。

適用場景分析:

String:適用于少量的字符串操作的情況

StringBuilder:適用于單線程下在字符緩沖區(qū)進(jìn)行大量操作的情況

StringBuffer:適用多線程下在字符緩沖區(qū)進(jìn)行大量操作的情況

5、wait和sleep的區(qū)別

(1)sleep()方法是屬于Thread類中的,而wait()方法,則是屬于Object類中的。

(2)sleep()方法導(dǎo)致了程序暫停執(zhí)行指定的時(shí)間,讓出cpu給其他線程,但是他的監(jiān)控狀態(tài)依然保持著,當(dāng)指定的時(shí)間到了又會(huì)自動(dòng)恢復(fù)運(yùn)行狀態(tài)。所以在調(diào)用sleep()方法的過程中,線程不會(huì)釋放對(duì)象鎖。

(3調(diào)用wait()方法的時(shí)候,線程會(huì)放棄對(duì)象鎖,進(jìn)入等待此對(duì)象的等待鎖定池,只有針對(duì)此對(duì)象調(diào)用notify()方法后本線程才進(jìn)入對(duì)象鎖定池準(zhǔn)備獲取對(duì)象鎖進(jìn)入運(yùn)行狀態(tài)。

6、GIT和SVN的區(qū)別

(1)GIT是分布式的,SVN不是。

(2)GIT把內(nèi)容按元數(shù)據(jù)方式存儲(chǔ),而SVN是按文件。

(3)GIT分支和SVN的分支不同。

(4)GIT沒有一個(gè)全局的版本號(hào),而SVN有。

(5)GIT的內(nèi)容完整性要優(yōu)于SVN。

7、BIO、NIO和AIO的區(qū)別

Java BIO : 同步并阻塞,服務(wù)器實(shí)現(xiàn)模式為一個(gè)連接一個(gè)線程,即客戶端有連接請(qǐng)求時(shí)服務(wù)器端就需要啟動(dòng)一個(gè)線程進(jìn)行處理,如果這個(gè)連接不做任何事情會(huì)造成不必要的線程開銷,當(dāng)然可以通過線程池機(jī)制改善。

Java NIO : 同步非阻塞,服務(wù)器實(shí)現(xiàn)模式為一個(gè)請(qǐng)求一個(gè)線程,即客戶端發(fā)送的連接請(qǐng)求都會(huì)注冊(cè)到多路復(fù)用器上,多路復(fù)用器輪詢到連接有I/O請(qǐng)求時(shí)才啟動(dòng)一個(gè)線程進(jìn)行處理。

Java AIO: 異步非阻塞,服務(wù)器實(shí)現(xiàn)模式為一個(gè)有效請(qǐng)求一個(gè)線程,客戶端的I/O請(qǐng)求都是由OS先完成了再通知服務(wù)器應(yīng)用去啟動(dòng)線程進(jìn)行處理。

NIO比BIO的改善之處是把一些無效的連接擋在了啟動(dòng)線程之前,減少了這部分資源的浪費(fèi)(因?yàn)槲覀兌贾烂縿?chuàng)建一個(gè)線程,就要為這個(gè)線程分配一定的內(nèi)存空間)。

AIO比NIO的進(jìn)一步改善之處是將一些暫時(shí)可能無效的請(qǐng)求擋在了啟動(dòng)線程之前,比如在NIO的處理方式中,當(dāng)一個(gè)請(qǐng)求來的話,開啟線程進(jìn)行處理,但這個(gè)請(qǐng)求所需要的資源還沒有就緒,此時(shí)必須等待后端的應(yīng)用資源,這時(shí)線程就被阻塞了。

適用場景分析:

BIO方式適用于連接數(shù)目比較小且固定的架構(gòu),這種方式對(duì)服務(wù)器資源要求比較高,并發(fā)局限于應(yīng)用中,JDK1.4以前的唯一選擇,但程序直觀簡單易理解,如之前在Apache中使用。

NIO方式適用于連接數(shù)目多且連接比較短(輕操作)的架構(gòu),比如聊天服務(wù)器,并發(fā)局限于應(yīng)用中,編程比較復(fù)雜,JDK1.4開始支持,如在 Nginx,Netty中使用。

AIO方式使用于連接數(shù)目多且連接比較長(重操作)的架構(gòu),比如相冊(cè)服務(wù)器,充分調(diào)用OS參與并發(fā)操作,編程比較復(fù)雜,JDK7開始支持,在成長中,Netty曾經(jīng)使用過,后來放棄。

java中高級(jí)面試題部分答案解析

以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“java中高級(jí)面試題部分答案解析”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 欧美大色网 | 99在线免费| 久久艹免费视频 | 99久久99这里只有免费的精品 | 亚洲一区二区三区网站 | 麻豆精品永久免费视频 | 久视频免费精品6 | 久久久久久久久久福利 | 国产一区二区精品久 | 欧美不卡在线观看 | 青草免费免费观看视频在线 | 一级毛片人与动免费观看 | 一本伊大人香蕉久久网手机 | 天天透天天干 | 一级一级一级毛片 | 五月婷婷网站 | 黄色片在线观看网站 | 欧美国产中文 | 一道本不卡免费视频 | 日本一片免费观看高清完整 | 久久久久久国产精品免费 | 毛片精品 | 天天做人人爱夜夜爽2020毛片 | 国产精品福利视频主播真会玩 | 在线观看免费黄色小视频 | 天天色狠狠干 | 欧美午夜在线 | 深夜在线免费视频 | 爱爱视频天天看 | 久久国产精品免费一区二区三区 | 精产国品一二二区视 | 久久99国产精品久久99小说 | www四虎| 国产在线播放91 | 午夜精品久久久久久久久 | 国产一级视频久久 | 不卡中文字幕 | 久久精品这里精品 | 日本高清中文字幕在线观穿线视频 | 狠狠操天天操夜夜操 | 一级毛片无毒不卡直接观看 |