黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 高級Java工程師面試題

高級Java工程師面試題

更新時間:2020-01-10 15:59:43 來源:動力節(jié)點 瀏覽2741次


高級Java工程師面試題


  HashMap的get和put原理


  PUT原理:當調(diào)用HashMap的put方法傳遞key和value時,先調(diào)用key的hashcode方法。通過key的Hash值來找到Bucket----‘桶’的位置,然后迭代這個位置的Entry列表 判斷是否存在key的hashcode和equals完全相同的key,如果完全相同則覆蓋value, 否則插入到entry鏈的頭部。


  HashMap在put時的Entry鏈形成的場景?


  當程序試圖將一個key-value對放入HashMap中時,程序首先根據(jù)該 key 的 hashCode() 返回值決定該 Entry 的存儲位置:如果這兩個 Entry 的 key 的 hashCode() 返回值相同,那它們的存儲位置相同。如果這兩個 Entry 的 key 通過 equals 比較返回 true,新添加 Entry 的 value 將覆蓋集合中原有 Entry 的 value,但key不會覆蓋。


  如果這兩個 Entry 的 key 通過 equals 比較返回 false,新添加的 Entry 將與集合中原有 Entry 形成 Entry 鏈,而且新添加的 Entry 位于 Entry 鏈的頭部


  GET原理:根據(jù)該 key 的 hashCode 值計算它的 hash 碼,遍歷并循環(huán)取出 Entry 數(shù)組中指定索引處的Entry值,如果該 Entry 的 key 與被搜索 key 相同 ,且Enrty的hash值跟key的hash碼相同,然后看是否是Entry鏈,如果是則迭代這個位置的Entry列表,判斷是否存在key的hashcode和equals完全相同的key,如果完全相同則獲取value。


  HashMap的rehash


  HashMap初始容量大小為16,一般來說,當有數(shù)據(jù)要插入時,都會檢查容量有沒有超過設(shè)定的thredhold,如果超過,需要增大Hash表的尺寸,但是這樣一來,整個Hash表里的元素都需要被重算一遍。這叫rehash,這個成本相當?shù)拇?/p>


  HashMap的線程不安全問題


  比如put操作時,有兩個線程A和B,首先A希望插入一個key-value對到HashMap中,首先計算記錄所要落到的桶的索引BucketIndex坐標,然后獲取到該桶里面的Entry鏈表header頭結(jié)點,此時線程A的時間片用完了,而此時線程B被調(diào)度得以執(zhí)行,和線程A一樣執(zhí)行,只不過線程B成功將記錄插到了桶里面,假設(shè)線程A插入的記錄計算出來的桶索引和線程B要插入的記錄計算出來的桶索引是一樣的,那么當線程B成功插入之后,線程A再次被調(diào)度運行時,它依然持有過期的鏈表頭但是它對此一無所知,以至于它認為它應(yīng)該這樣做,如此一來就覆蓋了線程B插入的記錄,這樣線程B插入的記錄就憑空消失了,造成了數(shù)據(jù)不一致的行為。另一個不安全的體現(xiàn)是是get操作可能由于resize而死循環(huán)。


  HashMap和Hashtable的區(qū)別


  相同點:1 都實現(xiàn)了Map接口 2 Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會有很大的差異


  不同點:1 hashMap允許NULL作為key和value,而hashtable不允許 2 hashMap線程不安全,Hashtable線程安全 3 hashMap速度快于hashtable 4 HashMap 把 Hashtable的contains方法去掉了,改成containsvalue和containsKey,避免引起誤會 5 Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進的Map接口的一個實現(xiàn)


  為什么collection沒有實現(xiàn)clonable接口


  Collection接口有很多不同的集合實現(xiàn)形式,而clonable只對具體的對象有意義。


  為什map沒有實現(xiàn)collection接口


  Set 和List 都繼承了Conllection,Map沒有繼承于Collection接口,Map提供的是key-Value的映射,而Collection代表一組對象。


  Map接口的實現(xiàn)有哪些,區(qū)別是什么


  HashMap,LinkedHashMap,Hashtable,TreeMap。


  LinkedHashMap 是HashMap的一個子類,保存了記錄的插入順序 Hashtable和HashMap類似,它繼承自Dictionary類,不同的是它不允許鍵或值為空。TreeMap實現(xiàn)SortMap接口,能夠把它保存的記錄根據(jù)鍵排序,默認是按鍵值的升序排序,也可以指定排序的比較器


  方法區(qū)卸載Class的條件


  1 該類所有的實例已經(jīng)被回收 2 加載該類的ClassLoader已經(jīng)被回收 4該類對應(yīng)的java.lang.Class對象沒有任何地方被引用


  Ps:方法區(qū)除了回收無用class,也回收廢棄常量,即沒有被引用常量


  可以作為GC Roots的對象包括哪些


  虛擬機棧(棧幀中的局部變量表)中引用的變量 ?方法區(qū)中類靜態(tài)屬性引用的對象 ?方法區(qū)中常量引用的對象 ?本地方法棧中JNI引用的變量


  JVM運行時內(nèi)存模型


  方法區(qū)、堆、虛擬機棧、本地方法棧、程序計數(shù)器


  Netty的ByteBuffer的引用計數(shù)器機制


  從netty的4.x版本開始,netty使用引用計數(shù)機制進行部分對象的管理,通過該機制netty可以很好的實現(xiàn)自己的共享資源池。如果應(yīng)用需要一個資源,可以從netty自己的共享資源池中獲取,新獲取的資源對象的引用計數(shù)被初始化為1,可以通過資源對象的retain方法增加引用計數(shù),當引用計數(shù)為0的時候該資源對象擁有的資源將會被回收。


  判斷對象是否存活的兩種方法


  1 引用計數(shù)法:缺點是對循環(huán)引用的對象無法回收 2 可達性分析


高級Java工程師面試題


      以上就是動力節(jié)點Java培訓機構(gòu)小編介紹的“高級Java工程師面試題”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。


相關(guān)推薦


最新最全java面試題及答案(初級到高級)


史上最全的中高級JAVA工程師面試題及答案匯總


Java高級開發(fā)工程師面試題


2019史上最全java面試題題庫大全800題


哪有資深java工程師面試題


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲国产第一区二区香蕉日日 | 狠狠操视频网站 | 国产不卡a| 国产性xxx | 精品日韩二区三区精品视频 | 日韩久久精品 | 精品小视频在线观看 | 爱啪啪网站 | 天天躁日日躁狠狠躁黑人躁 | 最近最中文字幕视频 | 国产成年人视频 | 亚洲无线码一区二区三区在线观看 | 一个人看的www免费视频 | 欧美日韩在线网站 | 成人区精品一区二区不卡亚洲 | 久久综合五月开心婷婷深深爱 | 日韩免费大片 | 国产精品欧美激情第一页 | 免费一级α片在线观看 | 久久综合视频网 | 欧美日本一本线在线观看 | 黄 色 免 费 网站在线观看 | 狠狠色综合色综合网站嗯 | 黄色在线看网站 | 另类视频在线观看 | 天堂视频在线免费观看 | 无遮挡毛片 | 2021精品国内一区视频自线 | 久久国产精品偷 | 六月丁香激情综合成人 | 亚洲欧美激情综合首页 | 91丝袜足控免费网站xx | 久久久久成人精品免费播放动漫 | 一级视频免费观看 | 人人爱人人做 | 在线观看成年 | 国产精品毛片一区二区三区 | 国产亚洲精品线观看77 | 亚洲一区有码 | 成人免费观看高清在线毛片 | 99re视频在线观看 |