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

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

精選Java面試題目及最佳答案

更新時(shí)間:2020-02-20 12:39:36 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2357次


精選Java面試題目及最佳答案


  JVM的類加載機(jī)制是什么?有哪些實(shí)現(xiàn)方式?


  類加載機(jī)制:


  類的加載指的是將類的.class文件中的二進(jìn)制數(shù)據(jù)讀入到內(nèi)存中,將其放在運(yùn)行時(shí)數(shù)據(jù)區(qū)的方法去內(nèi),然后在堆區(qū)創(chuàng)建一個(gè)java.lang.Class對(duì)象,用來封裝在方法區(qū)內(nèi)的數(shù)據(jù)結(jié)構(gòu)。類的加載最終是在堆區(qū)內(nèi)的Class對(duì)象,Class對(duì)象封裝了類在方法區(qū)內(nèi)的數(shù)據(jù)結(jié)構(gòu),并且向Java程序員提供了訪問方法區(qū)內(nèi)的數(shù)據(jù)結(jié)構(gòu)的接口。


  類加載有三種方式:


  命令行啟動(dòng)應(yīng)用時(shí)候由JVM初始化加載


  通過Class.forName()方法動(dòng)態(tài)加載


  通過ClassLoader.loadClass()方法動(dòng)態(tài)加載


  JVM的常見垃圾回收算法?


  標(biāo)記-清楚算法:前后線標(biāo)記處所有需要回收的對(duì)象,在標(biāo)記完成后統(tǒng)一回收有被標(biāo)記的對(duì)象。


  復(fù)制算法:將可用內(nèi)存按容量劃分為大小相等的兩塊,每次只使用其中的一塊。當(dāng)一塊內(nèi)存用完了,將其存在另外一塊上面,然后再把已使用過的內(nèi)存空間一次清理掉。


  標(biāo)記-整理算法:標(biāo)記過程與“標(biāo)記-清除”算法一樣,但后續(xù)步驟不是直接對(duì)可回收對(duì)象進(jìn)行清理,而是讓所一端移動(dòng),然后直接清理掉端邊界以外的內(nèi)存。


  分代收集算法:一般是把Java堆分為新生代和老年代,根據(jù)各個(gè)年代的特點(diǎn)采用最適當(dāng)?shù)氖占惴āP律及l(fā)現(xiàn)有大批對(duì)象死去,選用復(fù)制算法。老年代中因?yàn)閷?duì)象存活率高,必須使用“標(biāo)記-清理”或“標(biāo)記-整理”算法來進(jìn)行回收。


  JVM調(diào)優(yōu)的常見命令行工具有哪些?JVM常見的調(diào)優(yōu)參數(shù)有哪些?


  (1)JVM調(diào)優(yōu)的常見命令工具包括:


  jps命令用于查詢正在運(yùn)行的JVM進(jìn)程,


  jstat可以實(shí)時(shí)顯示本地或遠(yuǎn)程JVM進(jìn)程中類裝載、內(nèi)存、垃圾收集、JIT編譯等數(shù)據(jù)


  jinfo用于查詢當(dāng)前運(yùn)行這的JVM屬性和參數(shù)的值。


  jmap用于顯示當(dāng)前Java堆和永久代的詳細(xì)信息


  jhat用于分析使用jmap生成的dump文件,是JDK自帶的工具


  jstack用于生成當(dāng)前JVM的所有線程快照,線程快照是虛擬機(jī)每一條線程正在執(zhí)行的方法,目的是定位線程出現(xiàn)長時(shí)間停頓的原因。


  (2)JVM常見的調(diào)優(yōu)參數(shù)包括:


  -Xmx


  指定java程序的最大堆內(nèi)存,使用java-Xmx5000M-version判斷當(dāng)前系統(tǒng)能分配的最大堆內(nèi)存


  -Xms


  指定最小堆內(nèi)存,通常設(shè)置成跟最大堆內(nèi)存一樣,減少GC


  -Xmn


  設(shè)置年輕代大小。整個(gè)堆大小=年輕代大小+年老代大小。所以增大年輕代后,將會(huì)減小年老代大小。此值對(duì)系統(tǒng)性能影響較大,Sun官方推薦配置為整個(gè)堆的3/8。


  -Xss


  指定線程的最大棧空間,此參數(shù)決定了java函數(shù)調(diào)用的深度,值越大調(diào)用深度越深,若值太小則容易出棧溢出錯(cuò)誤(StackOverflowError)


  -XX:PermSize


  指定方法區(qū)(永久區(qū))的初始值,默認(rèn)是物理內(nèi)存的1/64,在Java8永久區(qū)移除,代之的是元數(shù)據(jù)區(qū),由-XX:MetaspaceSize指定


  -XX:MaxPermSize


  指定方法區(qū)的最大值,默認(rèn)是物理內(nèi)存的1/4,在java8中由-XX:MaxMetaspaceSize指定元數(shù)據(jù)區(qū)的大小


  -XX:NewRatio=n


  年老代與年輕代的比值,-XX:NewRatio=2,表示年老代與年輕代的比值為2:1


  -XX:SurvivorRatio=n


  Eden區(qū)與Survivor區(qū)的大小比值,-XX:SurvivorRatio=8表示Eden區(qū)與Survivor區(qū)的大小比值是8:1:1,因?yàn)镾urvivor區(qū)有兩個(gè)(from,to)


  ConcurrentHashMap加鎖機(jī)制是什么,詳細(xì)說一下?


  HashTable容器在競(jìng)爭激烈的并發(fā)環(huán)境下表現(xiàn)出效率低下的原因,是因?yàn)樗性L問HashTable的線程都必須競(jìng)爭同一把鎖,那假如容器里有多把鎖,每一把鎖用于鎖容器其中一部分?jǐn)?shù)據(jù),那么當(dāng)多線程訪問容器里不同數(shù)據(jù)段的數(shù)據(jù)時(shí),線程間就不會(huì)存在鎖競(jìng)爭,從而可以有效的提高并發(fā)訪問效率,這就是ConcurrentHashMap所使用的鎖分段技術(shù),首先將數(shù)據(jù)分成一段一段的存儲(chǔ),然后給每一段數(shù)據(jù)配一把鎖,當(dāng)一個(gè)線程占用鎖訪問其中一個(gè)段數(shù)據(jù)的時(shí)候,其他段的數(shù)據(jù)也能被其他線程訪問。


  G1收集器簡介?以及它的內(nèi)存劃分怎么樣的?


  (1)簡介:


  Garbage-First(G1,垃圾優(yōu)先)收集器是服務(wù)類型的收集器,目標(biāo)是多處理器機(jī)器、大內(nèi)存機(jī)器。它高度符合垃圾收集暫停時(shí)間的目標(biāo),同時(shí)實(shí)現(xiàn)高吞吐量。OracleJDK7update4以及更新發(fā)布版完全支持G1垃圾收集器


  (2)G1的內(nèi)存劃分方式:


  它是將堆內(nèi)存被劃分為多個(gè)大小相等的heap區(qū),每個(gè)heap區(qū)都是邏輯上連續(xù)的一段內(nèi)存(virtualmemory).其中一部分區(qū)域被當(dāng)成老一代收集器相同的角色(eden,survivor,old),但每個(gè)角色的區(qū)域個(gè)數(shù)都不是固定的。這在內(nèi)存使用上提供了更多的靈活性


  在重寫equals方法時(shí),需要遵循哪些約定,具體介紹一下?


  重寫equals方法時(shí)需要遵循通用約定:自反性、對(duì)稱性、傳遞性、一致性.、非空性


  1)自反性


  對(duì)于任何非null的引用值x,x.equals(x)必須返回true。---這一點(diǎn)基本上不會(huì)有啥問題


  2)對(duì)稱性


  對(duì)于任何非null的引用值x和y,當(dāng)且僅當(dāng)x.equals(y)為true時(shí),y.equals(x)也為true。


  3)傳遞性


  對(duì)于任何非null的引用值x、y、z。如果x.equals(y)==true,y.equals(z)==true,那么x.equals(z)==true。


  4)一致性


  對(duì)于任何非null的引用值x和y,只要equals的比較操作在對(duì)象所用的信息沒有被修改,那么多次調(diào)用x.eqals(y)就會(huì)一致性地返回true,或者一致性的返回false。


  5)非空性


  所有比較的對(duì)象都不能為空。


  Synchronized優(yōu)化后的鎖機(jī)制簡單介紹一下,包括自旋鎖、偏向鎖、輕量級(jí)鎖、重量級(jí)鎖?


  自旋鎖:


  線程自旋說白了就是讓cup在做無用功,比如:可以執(zhí)行幾次for循環(huán),可以執(zhí)行幾條空的匯編指令,目的是占著CPU不放,等待獲取鎖的機(jī)會(huì)。如果旋的時(shí)間過長會(huì)影響整體性能,時(shí)間過短又達(dá)不到延遲阻塞的目的。


  偏向鎖:


  偏向鎖就是一旦線程第一次獲得了監(jiān)視對(duì)象,之后讓監(jiān)視對(duì)象“偏向”這個(gè)線程,之后的多次調(diào)用則可以避免CAS操作,


  說白了就是置個(gè)變量,如果發(fā)現(xiàn)為true則無需再走各種加鎖/解鎖流程。


  輕量級(jí)鎖:


  輕量級(jí)鎖是由偏向所升級(jí)來的,偏向鎖運(yùn)行在一個(gè)線程進(jìn)入同步塊的情況下,當(dāng)?shù)诙€(gè)線程加入鎖爭用的時(shí)候,偏向鎖就會(huì)升級(jí)為輕量級(jí)鎖;


  重量級(jí)鎖:


  重量鎖在JVM中又叫對(duì)象監(jiān)視器(Monitor),它很像C中的Mutex,除了具備Mutex(0|1)互斥的功能,它還負(fù)責(zé)實(shí)現(xiàn)了Semaphore(信號(hào)量)的功能,也就是說它至少包含一個(gè)競(jìng)爭鎖的隊(duì)列,和一個(gè)信號(hào)阻塞隊(duì)列(wait隊(duì)列),前者負(fù)責(zé)做互斥,后一個(gè)用于做線程同步。


  偏向鎖、輕量級(jí)鎖、重量級(jí)鎖的對(duì)比:


精選Java面試題目及最佳答案


  以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“精選Java面試題目及最佳答案!”的內(nèi)容,希望對(duì)大家有幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。


相關(guān)推薦


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


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


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


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


哪有資深java工程師面試題


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

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 久久免费观看视频 | 色香蕉视频 | 一级特黄录像播放 | 一卡二卡在线 | 欧美一级高清片 | 性欧洲精品videos' | 成人免费毛片观看 | 欧美顶级黄色大片免费 | 色中色在线视频 | 香蕉视频免费在线观看 | 毛片在线视频观看 | 免费大黄网站 | 国产免费一级高清淫日本片 | 欧美亚洲风情 | 国产麻豆精品在线观看 | 免费看羞羞视频网站 | 涩涩成人免费视频 | 久久精品麻豆日日躁夜夜躁 | 莉莉私人免费影院观看网站 | 成人黄色三级视频 | 欧美日韩中文字幕在线 | 中文字幕免费在线播放 | 成人影视网站 | 成人午夜久久精品 | 欧美午夜艳片欧美精品 | www国产永久免费视频看看 | 在线国产视频 | 欧美一区二区三区在线观看 | 边做边叫床的大尺度床戏欧美 | 欧美一级高清免费播放 | 中文字幕影院 | 色戒吃奶动态图 | 亚洲成人免费看 | 国产成人啪精品视频免费软件 | 国产在线观看免费视频软件 | www.一级片.com | 一边脱一边摸一边揉免费 | 精品欧美一区视频在线观看 | 91久久澡人人爽人人添 | 欧美一级高清视频在线播放 | 国产一区二区三区日韩 |