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

專(zhuān)注Java教育14年 全國(guó)咨詢(xún)/投訴熱線(xiàn):400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) 2020年常見(jiàn)Java框架面試題

2020年常見(jiàn)Java框架面試題

更新時(shí)間:2020-04-07 13:46:04 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2462次


    1.Collections.sort排序內(nèi)部原理


    在Java6中Arrays.sort()和Collections.sort()使用的是MergeSort,而在Java7中,內(nèi)部實(shí)現(xiàn)換成了TimSort,其對(duì)對(duì)象間比較的實(shí)現(xiàn)要求更加嚴(yán)格


    2.hashMap原理,Java8做的改變


    從結(jié)構(gòu)實(shí)現(xiàn)來(lái)講,HashMap是數(shù)組+鏈表+紅黑樹(shù)(JDK1.8增加了紅黑樹(shù)部分)實(shí)現(xiàn)的。HashMap最多只允許一條記錄的鍵為null,允許多條記錄的值為null。HashMap非線(xiàn)程安全。ConcurrentHashMap線(xiàn)程安全。解決碰撞:當(dāng)出現(xiàn)沖突時(shí),運(yùn)用拉鏈法,將關(guān)鍵詞為同義詞的結(jié)點(diǎn)鏈接在一個(gè)單鏈表中,散列表長(zhǎng)m,則定義一個(gè)由m個(gè)頭指針組成的指針數(shù)組T,地址為i的結(jié)點(diǎn)插入以T(i)為頭指針的單鏈表中。Java8中,沖突的元素超過(guò)限制(8),用紅黑樹(shù)替換鏈表。


    3.String和StringBuilder的區(qū)別


    1)可變與不可變:String不可變,每一次執(zhí)行“+”都會(huì)新生成一個(gè)新對(duì)象,所以頻繁改變字符串的情況中不用String,以節(jié)省內(nèi)存。


    2)是否多線(xiàn)程安全:StringBuilder并沒(méi)有對(duì)方法進(jìn)行加同步鎖,所以是非線(xiàn)程安全的。StringBuffer和String均線(xiàn)程安全。


    4.Vector與Array的區(qū)別


    1)ArrayList在內(nèi)存不夠時(shí)默認(rèn)是擴(kuò)展50%+1個(gè),Vector是默認(rèn)擴(kuò)展1倍。


    2)Vector屬于線(xiàn)程安全級(jí)別的,但是大多數(shù)情況下不使用Vector,因?yàn)榫€(xiàn)程安全需要更大的系統(tǒng)開(kāi)銷(xiāo)。


    5.HashMap與Hashtable的區(qū)別


    1)歷史原因:Hashtable繼承Dictonary類(lèi),HashMap繼承自abstractMap


    2)HashMap允許空的鍵值對(duì),但最多只有一個(gè)空對(duì)象,而HashTable不允許。


    3)HashTable同步,而HashMap非同步,效率上比HashTable要高


    6.ConncurrentHashMap和hashtable比較(兩個(gè)線(xiàn)程并發(fā)訪(fǎng)問(wèn)map中同一條鏈,一個(gè)線(xiàn)程在尾部刪除,一個(gè)線(xiàn)程在前面遍歷查找,問(wèn)為什么前面的線(xiàn)程還能正確的查找到后面被另一個(gè)線(xiàn)程刪除的節(jié)點(diǎn))


    ConcurrentHashMap融合了hashtable和hashmap二者的優(yōu)勢(shì)。hashtable是做了同步的,即線(xiàn)程安全,hashmap未考慮同步。所以hashmap在單線(xiàn)程情況下效率較高。hashtable在的多線(xiàn)程情況下,同步操作能保證程序執(zhí)行的正確性。但是hashtable是阻塞的,每次同步執(zhí)行的時(shí)候都要鎖住整個(gè)結(jié)構(gòu),ConcurrentHashMap正是為了解決這個(gè)問(wèn)題而誕生的,


    ConcurrentHashMap允許多個(gè)修改操作并發(fā)進(jìn)行,其關(guān)鍵在于使用了鎖分離技術(shù)(一個(gè)Array保存多個(gè)Object,使用這些對(duì)象的鎖作為分離鎖,get/put時(shí)隨機(jī)使用任意一個(gè))。它使用了多個(gè)鎖來(lái)控制對(duì)hash表的不同部分進(jìn)行的修改。在JDK1.6中,有HashEntry結(jié)構(gòu)存在,每次插入將新添加節(jié)點(diǎn)作為鏈的頭節(jié)點(diǎn)(同HashMap實(shí)現(xiàn)),而且每次刪除一個(gè)節(jié)點(diǎn)時(shí),會(huì)將刪除節(jié)點(diǎn)之前的所有節(jié)點(diǎn)拷貝一份組成一個(gè)新的鏈,而將當(dāng)前節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)的next指向當(dāng)前節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn),從而在刪除以后有兩條鏈存在,因而可以保證即使在同一條鏈中,有一個(gè)線(xiàn)程在刪除,而另一個(gè)線(xiàn)程在遍歷,它們都能工作良好,因?yàn)楸闅v的線(xiàn)程能繼續(xù)使用原有的鏈。


    Java8中,采用volatileHashEntry保存數(shù)據(jù),table元素作為鎖;從table數(shù)組+單向鏈表加上了紅黑樹(shù)。紅黑樹(shù)是一種特別的二叉查找樹(shù),特性為:1.節(jié)點(diǎn)為紅或者黑2.根節(jié)點(diǎn)為黑3.葉節(jié)點(diǎn)為黑4.一節(jié)點(diǎn)為紅,則葉節(jié)點(diǎn)為黑5.一節(jié)點(diǎn)到其子孫節(jié)點(diǎn)所有路徑上的黑節(jié)點(diǎn)數(shù)目相同。


    7.ArrayList與LinkedList的區(qū)別?


    最明顯的區(qū)別是


    ArrrayList底層的數(shù)據(jù)結(jié)構(gòu)是數(shù)組,支持隨機(jī)訪(fǎng)問(wèn),而LinkedList的底層數(shù)據(jù)結(jié)構(gòu)書(shū)鏈表,不支持隨機(jī)訪(fǎng)問(wèn)。使用下標(biāo)訪(fǎng)問(wèn)一個(gè)元素,ArrayList的時(shí)間復(fù)雜度是O(1),而LinkedList是O(n)。LinkedList是雙向鏈表


    8.Java中,Comparator與Comparable有什么不同?


    Comparable接口用于定義對(duì)象的自然順序,是排序接口,而comparator通常用于定義用戶(hù)定制的順序,是比較接口。我們?nèi)绻枰刂颇硞€(gè)類(lèi)的次序,而該類(lèi)本身不支持排序(即沒(méi)有實(shí)現(xiàn)Comparable接口),那么我們就可以建立一個(gè)“該類(lèi)的比較器”來(lái)進(jìn)行排序。Comparable總是只有一個(gè),但是可以有多個(gè)comparator來(lái)定義對(duì)象的順序。


    9.抽象類(lèi)是什么?它與接口有什么區(qū)別?你為什么要使用過(guò)抽象類(lèi)


    抽象類(lèi)是指不允許被實(shí)例化的類(lèi);一個(gè)類(lèi)只能使用一次繼承關(guān)系。但是,一個(gè)類(lèi)卻可以實(shí)現(xiàn)多個(gè)interface。


    abstractclass和interface所反映出的設(shè)計(jì)理念不同。其實(shí)abstractclass表示的是"is-a"關(guān)系,interface表示的是"like-a"關(guān)系


    實(shí)現(xiàn)抽象類(lèi)和接口的類(lèi)必須實(shí)現(xiàn)其中的所有方法。抽象類(lèi)中可以有非抽象方法。接口中則不能有實(shí)現(xiàn)方法。但在Java8中允許接口中有靜態(tài)默認(rèn)的方法。


    接口中定義的變量默認(rèn)是publicstaticfinal型,且必須給其初值,所以實(shí)現(xiàn)類(lèi)中不能重新定義,也不能改變其值。抽象類(lèi)中的變量默認(rèn)是friendly型,其值可以在子類(lèi)中重新定義,也可以重新賦值。


    子類(lèi)中實(shí)現(xiàn)父類(lèi)中的抽象方法時(shí),可見(jiàn)性可以大于等于父類(lèi)中的;而接口實(shí)現(xiàn)類(lèi)中的接口方法的可見(jiàn)性只能與接口中相同(public)。


    用抽象類(lèi)是為了重用。減少編碼量,降低耦合性。


    10.描述Java中的重載和重寫(xiě)?


    重載和重寫(xiě)都允許你用相同的名稱(chēng)來(lái)實(shí)現(xiàn)不同的功能,但是重載是編譯時(shí)活動(dòng),而重寫(xiě)是運(yùn)行時(shí)活動(dòng)。你可以在同一個(gè)類(lèi)中重載方法,但是只能在子類(lèi)中重寫(xiě)方法。重寫(xiě)必須要有繼承


    重寫(xiě):1、在子類(lèi)中可以根據(jù)需要對(duì)從基類(lèi)中繼承來(lái)的方法進(jìn)行重寫(xiě)。2、重寫(xiě)的方法和被重寫(xiě)的方法必須具有相同方法名稱(chēng)、參數(shù)列表和返回類(lèi)型。3、重寫(xiě)方法不能使用比被重寫(xiě)的方法更嚴(yán)格的訪(fǎng)問(wèn)權(quán)限。


    重載的時(shí)候,方法名要一樣,但是參數(shù)類(lèi)型和個(gè)數(shù)不一樣,返回值類(lèi)型可以相同也可以不相同。無(wú)法以返回型別作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)。


2020年常見(jiàn)Java框架面試題


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


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

  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日本四虎影院 | 国产美女在线观看 | 在线观看成人小视频 | 欧美精品成人一区二区在线观看 | 成年女人视频播放免费观看 | 一级毛片一级毛片一级毛片 | 天天操人人 | 久久99国产亚洲精品 | 国产精品九九九久久九九 | 成人毛片免费网站 | 国产精品久久天天影视 | 夜夜躁日日躁狠狠 | 久久一级视频 | 免费观看国产精品 | 人人爱天天做夜夜爽88 | 久草在线看片 | 五月婷婷在线观看视频 | 四虎永久免费影院 | 奇米四色视频 | 奇米影视一区二区三区 | 中文字幕精品在线视频 | 久久天天躁夜夜躁狠狠85麻豆 | a级毛片视频 | 欧美爱爱视频网站 | 国产系列在线观看 | 久久爆操 | 久夜tv | 狠狠色丁香婷婷综合精品视频 | 国语偷拍视频在线观看 | 久99久精品免费视频热77 | 五月天国产 | 色激情综合 | 成人看片黄a免费 | 色人阁综合| 国产高清国内精品福利色噜噜 | 日韩精品福利 | 青青久在线精品视频 | 日日舔夜夜操 | 日韩欧美小视频 | 伊人久久国产精品 | 国产精品福利久久香蕉中文 |