2020年精選Java面試題目

2020年精選Java面試題目

深圳達(dá)內(nèi)教育      2022-03-21 10:00:02     10

2020年精選Java面試題目,Java虛擬機(jī)是如何判定熱點(diǎn)代碼的?Java虛擬機(jī)判定熱點(diǎn)代碼的方式有兩種:基于采樣的熱點(diǎn)判定:主要是虛擬機(jī)會(huì)周期性的檢查各個(gè)線

課程價(jià)格 請(qǐng)咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹

    Java虛擬機(jī)是如何判定熱點(diǎn)代碼的?

    Java虛擬機(jī)判定熱點(diǎn)代碼的方式有兩種:

    基于采樣的熱點(diǎn)判定:主要是虛擬機(jī)會(huì)周期性的檢查各個(gè)線程的棧頂,若某個(gè)或某些方法經(jīng)常出現(xiàn)在棧頂,那這個(gè)方法就是“熱點(diǎn)方法”。這種判定方式的優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單;缺點(diǎn)是很難精確一個(gè)方法的熱度,容易受到線程阻塞或外界因素的影響。

    基于計(jì)數(shù)器的熱點(diǎn)判定:主要就是虛擬機(jī)給每一個(gè)方法甚至代碼塊建立了一個(gè)計(jì)數(shù)器,統(tǒng)計(jì)方法的執(zhí)行次數(shù),超過(guò)一定的閥值則標(biāo)記為此方法為熱點(diǎn)方法。

    Hotspot虛擬機(jī)使用的基于計(jì)數(shù)器的熱點(diǎn)探測(cè)方法。它使用了兩類計(jì)數(shù)器:方法調(diào)用計(jì)數(shù)器和回邊計(jì)數(shù)器,當(dāng)?shù)竭_(dá)一定的閥值是就會(huì)觸發(fā)JIT編譯。

    方法調(diào)用計(jì)數(shù)器:在client模式下的閥值是1500次,Server是10000次,可以通過(guò)虛擬機(jī)參數(shù):-XX:CompileThreshold=N對(duì)其進(jìn)行設(shè)置。但是JVM還存在熱度衰減,時(shí)間段內(nèi)調(diào)用方法的次數(shù)較少,計(jì)數(shù)器就減小?;剡呌?jì)數(shù)器:主要統(tǒng)計(jì)的是方法中循環(huán)體代碼執(zhí)行的次數(shù)。

    以下Integer代碼輸出的結(jié)果是?

    答:true,false題目解析:此道題目考察的是,面試者對(duì)于基礎(chǔ)類型高頻區(qū)緩存的掌握,因?yàn)镮nteger的高頻區(qū)的取值是-128-127,所以在這個(gè)區(qū)間的值會(huì)復(fù)用已有的緩存,對(duì)比的結(jié)果自然是true,false。

    有哪些方法可以解決哈希沖突?

    答:哈希沖突的常用解決方案有以下4種:

    開(kāi)放定址法:當(dāng)關(guān)鍵字的哈希地址p=H(key)出現(xiàn)沖突時(shí),以p為基礎(chǔ),產(chǎn)生另一個(gè)哈希地址p1,如果p1仍然沖突,再以p為基礎(chǔ),產(chǎn)生另一個(gè)哈希地址p2,循環(huán)此過(guò)程直到找出一個(gè)不沖突的哈希地址,將相應(yīng)元素存入其中;

    再哈希法:這種方法是同時(shí)構(gòu)造多個(gè)不同的哈希函數(shù),當(dāng)哈希地址Hi=RH1(key)發(fā)生沖突時(shí),再計(jì)算Hi=RH2(key),循環(huán)此過(guò)程直到找到一個(gè)不沖突的哈希地址,這種方法唯一的缺點(diǎn)就是增加了計(jì)算時(shí)間;

    鏈地址法:這種方法的基本思想是將所有哈希地址為i的元素構(gòu)成一個(gè)稱為同義詞鏈的單鏈表,并將單鏈表的頭指針存在哈希表的第i個(gè)單元中,因而查找、插入和刪除主要在同義詞鏈中進(jìn)行。鏈地址法適用于經(jīng)常進(jìn)行插入和刪除的情況;

    建立公共溢出區(qū):將哈希表分為基本表和溢出表兩部分,凡是和基本表發(fā)生沖突的元素,一律填入溢出表。

    JVM內(nèi)存布局是怎樣的?

    答:不同虛擬機(jī)實(shí)現(xiàn)可能略微有所不同,但都會(huì)遵從Java虛擬機(jī)規(guī)范,Java8虛擬機(jī)規(guī)范規(guī)定,Java虛擬機(jī)所管理的內(nèi)存將會(huì)包括以下幾個(gè)區(qū)域:

    程序計(jì)數(shù)器(ProgramCounterRegister)

    Java虛擬機(jī)棧(JavaVirtualMachineStacks)

    本地方法棧(NativeMethodStack)

    Java堆(JavaHeap)

    方法區(qū)(MethedArea)

    以下StringBuffer傳值修改后的執(zhí)行結(jié)果是什么?

    答:hilaowang題目解析:String為不可變類型,在方法內(nèi)對(duì)String修改的時(shí)候,相當(dāng)修改傳遞過(guò)來(lái)的是一個(gè)String副本,所以String本身的值是不會(huì)被修改的,而StringBuffer為可變類型,傳遞過(guò)來(lái)的參數(shù)相當(dāng)于對(duì)象本身,所以打印的結(jié)果就為hilaowang。

 以上就是深圳達(dá)內(nèi)教育java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“2020年精選Java面試題目”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

Java面試題

培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過(guò)大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。