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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) 精選的Java面試題,內(nèi)涵大型互聯(lián)網(wǎng)面試

精選的Java面試題,內(nèi)涵大型互聯(lián)網(wǎng)面試

更新時間:2019-11-23 11:47:01 來源:動力節(jié)點 瀏覽2385次



  1、JVM的類加載機制是什么?有哪些實現(xiàn)方式?


  類加載機制:


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


  類加載有三種方式:


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


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


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


  2、JVM的常見垃圾回收算法?


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


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


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


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


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


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


  jps命令用于查詢正在運行的JVM進程,


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


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


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


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


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


  (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è)置年輕代大小。整個堆大小=年輕代大小+年老代大小。所以增大年輕代后,將會減小年老代大小。此值對系統(tǒng)性能影響較大,Sun官方推薦配置為整個堆的3/8。


  -Xss


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


  -XX:PermSize


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


  -XX:MaxPermSize


  指定方法區(qū)的最大值,默認是物理內(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,因為Survivor區(qū)有兩個(from,to)


  4、ConcurrentHashMap加鎖機制是什么,詳細說一下?


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


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


  (1)簡介:


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


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


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


  6、在重寫equals方法時,需要遵循哪些約定,具體介紹一下?


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


  1)自反性


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


  2)對稱性


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


  3)傳遞性


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


  4)一致性


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


  5)非空性


  所有比較的對象都不能為空。


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


  自旋鎖:


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


  偏向鎖:


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


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


  輕量級鎖:


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


  重量級鎖:


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


  偏向鎖、輕量級鎖、重量級鎖的對比:


  8、Redis和Memcache區(qū)別對比?如何選擇這兩個技術(shù)?


  區(qū)別:


  1)Redis和Memcache都是將數(shù)據(jù)存放在內(nèi)存中,都是內(nèi)存數(shù)據(jù)庫。不過memcache還可用于緩存其他東西,例如圖片、視頻等等。


  2)Redis不僅僅支持簡單的k/v類型的數(shù)據(jù),同時還提供list,set,hash等數(shù)據(jù)結(jié)構(gòu)的存儲。


  3)虛擬內(nèi)存--Redis當(dāng)物理內(nèi)存用完時,可以將一些很久沒用到的value交換到磁盤


  4)過期策略--memcache在set時就指定,例如setkey1008,即永不過期。Redis可以通過例如expire設(shè)定,例如expirename10


  5)分布式--設(shè)定memcache集群,利用magent做一主多從;redis可以做一主多從。都可以一主一從


  6)存儲數(shù)據(jù)安全--memcache掛掉后,數(shù)據(jù)沒了;redis可以定期保存到磁盤(持久化)


  7)災(zāi)難恢復(fù)--memcache掛掉后,數(shù)據(jù)不可恢復(fù);redis數(shù)據(jù)丟失后可以通過aof恢復(fù)


  8)Redis支持數(shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份。


  選型:


  若是簡單的存取key-value這樣的數(shù)據(jù)用memcache好一些


  若是要支持數(shù)據(jù)持久化,多數(shù)據(jù)類型(如集合、散列之類的),用列表類型做隊列之類的高級應(yīng)用,就用redis


  9、Redis的持久化機制是什么?各自的優(yōu)缺點?


  redis提供兩種持久化機制RDB和AOF機制。


  1)RDB持久化方式:


  是指用數(shù)據(jù)集快照的方式記錄redis數(shù)據(jù)庫的所有鍵值對。


  優(yōu)點:


  1.只有一個文件dump.rdb,方便持久化。


  2.容災(zāi)性好,一個文件可以保存到安全的磁盤。


  3.性能最大化,fork子進程來完成寫操作,讓主進程繼續(xù)處理命令,所以是IO最大化。


  4.相對于數(shù)據(jù)集大時,比AOF的啟動效率更高。


  缺點:


  1.數(shù)據(jù)安全性低。


  2)AOF持久化方式:


  是指所有的命令行記錄以redis命令請求協(xié)議的格式保存為aof文件。


  優(yōu)點:


  1.數(shù)據(jù)安全,aof持久化可以配置appendfsync屬性,有always,每進行一次命令操作就記錄到aof文件中一次。


  2.通過append模式寫文件,即使中途服務(wù)器宕機,可以通過redis-check-aof工具解決數(shù)據(jù)一致性問題。


  3.AOF機制的rewrite模式。


  缺點:


  1.文件會比RDB形式的文件大。


  2.數(shù)據(jù)集大的時候,比rdb啟動效率低。


  10、Mysql的數(shù)據(jù)庫表鎖、行鎖、頁級鎖?


  表級,直接鎖定整張表,在你鎖定期間,其它進程無法對該表進行寫操作。如果你是寫鎖,則其它進程則讀也不允許


  行級,,僅對指定的記錄進行加鎖,這樣其它進程還是可以對同一個表中的其它記錄進行操作。


  頁級,表級鎖速度快,但沖突多,行級沖突少,但速度慢。所以取了折衷的頁級,一次鎖定相鄰的一組記錄。


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


相關(guān)推薦


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


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


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


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


哪有資深java工程師面試題


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

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 婷婷精品视频 | 日日噜噜夜夜狠狠tv视频免费 | 中文国产欧美在线观看 | 一区二区三区日韩精品 | 欧美亚洲国产精品 | 中文在线免费视频 | 日韩a无吗一区二区三区 | 久久精品国1国二国三在 | 日本不卡中文字幕一区二区 | 97理论三级九七午夜在线观看 | 毛片免费看看 | 亚洲国产精品自产在线播放 | 国产乱码精品一区二区三区卡 | 国产在线成人a | 成人精品视频在线观看播放 | 精品96在线观看影院 | 一区二区三区免费视频 www | 中国美女一级毛片 | 久久99精品久久久久久噜噜 | 亚洲精品国产福利 | 国产在线不卡一区 | 妖精视频免费在线观看 | 欧美一区二 | 伊人久久一本 | 朴妮唛禁福利视频在线 | 毛片网站免费 | 波多野结衣一区二区三区在线观看 | 久久久久伊人 | 亚洲青色在线 | 天天综合网久久 | 玖玖成人网 | 国产视频福利 | 就色干综合 | 日韩免费一级毛片欧美一级日韩片 | 成人在线视频免费 | 色婷婷久久久swag精品 | 四虎影视在线看免费 720p | 精品91自产拍在线观看一区 | 久久草草 | 青青在线精品视频 | 69视频在线观看福利视频 |