Java中常見面試題二(簡單)

Java中常見面試題二(簡單)

HashMap和Hashtable的區(qū)別筋蓖?

  • 線程是否安全: HashMap 是非線程安全的卸耘,Hashtable 是線程安全的,因為 Hashtable 內部的方法基本都經過synchronized 修飾。(如果你要保證線程安全的話就使用 ConcurrentHashMap 吧U晨А)
  • 效率:因為Hashtable加了synchronized鎖蚣抗。所以HashMap 要比 Hashtable 效率高一點。另外瓮下,Hashtable 基本被淘汰翰铡,不要在代碼中使用它
  • 對 Null key 和 Null value 的支持: HashMap 可以存儲 null 的 key 和 value,但 null 作為鍵只能有一個讽坏,null 作為值可以有多個锭魔;Hashtable 不允許有 null 鍵和 null 值,否則會拋出 NullPointerException路呜。
  • 初始容量大小和每次擴充容量大小的不同 :① 創(chuàng)建時如果不指定容量初始值迷捧,Hashtable 默認的初始大小為 11,之后每次擴充胀葱,容量變?yōu)樵瓉淼?2n+1党涕。HashMap 默認的初始化大小為 16。之后每次擴充巡社,容量變?yōu)樵瓉淼?2 倍膛堤。② 創(chuàng)建時如果給定了容量初始值,那么 Hashtable 會直接使用你給定的大小晌该,而 HashMap 會將其擴充為 2 的冪次方大小肥荔。也就是說 HashMap 總是使用 2 的冪作為哈希表的大小绿渣。
  • 底層數(shù)據(jù)結構: JDK1.8 以后的 HashMap 在解決哈希沖突時有了較大的變化,當鏈表長度大于閾值(默認為 8)(將鏈表轉換成紅黑樹前會判斷燕耿,如果當前數(shù)組的長度小于 64中符,那么會選擇先進行數(shù)組擴容,而不是轉換為紅黑樹)時誉帅,將鏈表轉化為紅黑樹淀散,以減少搜索時間。Hashtable 沒有這樣的機制蚜锨。

Spring事務的理解档插?

Spring支持編程式事務管理以及聲明式事務管理兩種方式

  • 編程式事務管理
    編程式事務管理是侵入性事務管理,使用TransactionTemplate或者直接使用PlatformTransactionManager亚再,對于編程式事務管理郭膛,Spring推薦使用TransactionTemplate。

  • 聲明式事務管理
    聲明式事務管理建立在AOP之上氛悬,其本質是對方法前后進行攔截则剃,然后在目標方法開始之前創(chuàng)建或者加入一個事務,執(zhí)行完目標方法之后根據(jù)執(zhí)行的情況提交或者回滾如捅。

Java中會存在內存泄漏嗎棍现,請簡單描述

  • 所謂內存泄露就是指一個不再被程序使用的對象或變量一直被占據(jù)在內存中。Java中有垃圾回收機制镜遣,它可以保證一對象不再被引用的時候轴咱,即對象變成了孤兒的時候,對象將自動被垃圾回收器從內存中清除掉烈涮。由于Java使用有向圖的方式進行垃圾回收管理,可 以消除引用循環(huán)的問題,

  • 例如有兩個對象窖剑,相互引用坚洽,只要它們和根進程不可達的,那么GC也是可以回收它們的西土,例如下面的代碼可以看到這種情況的內存回收讶舰。

  • Java中的內存泄露的情況:長生命周期的對象持有短生命周期對象的引用就很可能發(fā)生內存泄露,盡管短生命周期對象已經不再需要需了,但是因為長生命周期對象持有它的引用而導致不能被回收跳昼,這就是Java中內存泄露的發(fā)生場景,通俗地說肋乍,就是程序員可能創(chuàng)建了一個對象鹅颊,以后一直不再使用這個對象,這個對象卻一直被引用墓造,即這個對象無用但是卻無法被垃圾回收器回收的堪伍,這就是java中可能出現(xiàn)內存泄露的情況锚烦,例如,緩存系統(tǒng)帝雇,我們加載了一個對象放在緩存中(例如放在一個全局map對象中),然后一直不再使用它涮俄,這個對象一直被緩存引用,但卻不再被使用尸闸。

  • 檢查Java中的內存泄露彻亲,一定要讓程序將各種分支情況都完整執(zhí)行到程序結束,然后看某個對象是否被使用過吮廉,如果沒有苞尝,則才能判定這個對象屬于內存泄露。

  • 如果一個外部類的實例對象的方法返回了一個內部類的實例對象茧痕,這個內部類對象被長期引用了野来,即使那個外部類實例對象不再被使用,但由于內部類持久外部類的實例對象踪旷,這個外部類對象將不會被垃圾回收曼氛,這也會造成內存泄露。

GC是什么?為什么要有GC?

GC是垃圾收集的意思(GabageCollection)令野,內存處理是編程人員容易出現(xiàn)問題的地方舀患,忘記或者錯誤的內存回收會導致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,Java提供的GC功能可以自動監(jiān)測對象是否超過作用域從而達到自動回收內存的目的气破,Java 語言沒有提供釋放已分配內存的顯示操作方法聊浅。

簡述Java垃圾回收機制

在Java中,程序員是不需要顯示的去釋放一個對象的內存的现使,而是由虛擬機自行執(zhí)行低匙。在JVM中,有一個垃圾回收線程碳锈,它是低優(yōu)先級的顽冶,在正常情況下是不會執(zhí)行的,只有在虛擬機空閑或者當前堆內存不足時售碳,才會觸發(fā)執(zhí)行强重,掃面那些沒有被任何引用的對象,并將它們添加到要回收的集合中贸人,進行回收间景。

垃圾回收的優(yōu)點和原理。并考慮2種回收機制

  • Java語言中一個顯著的特點就是引入了垃圾回收機制艺智,使C++程序員最頭疼的內存管理的問題迎刃而解倘要,它使得Java程序員在編寫程序的時候不再需要考慮內存管理。

  • 由于有個垃圾回收機制十拣,Java 中的對象不再有“作用域”的概念碗誉,只有對象的引用才有"作用域"召嘶。垃圾回收可以有效的防止內存泄露,有效的使用可以使用的內存哮缺。

  • 垃圾回收器通常是作為一個單獨的低級別的線程運行弄跌,不可預知的情況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清楚和回收,程序員不能實時的調用垃圾回收器對某個對象或所有對象進行垃圾回收尝苇。

  • 回收機制有分代復制垃圾回收铛只、標記垃圾回收增量垃圾回收糠溜。

深拷貝和淺拷貝是什么淳玩?

  • 簡單來講就是復制、克隆非竿。

  • 淺拷貝就是對對象中的數(shù)據(jù)成員進行簡單賦值蜕着,如果存在動態(tài)成員或者指針就會報錯。而且红柱,如果有引用類型的變量承匣,新生成的對象和被拷貝的對象的這個屬性會指向同一個地方,沒有解耦锤悄,會影響對方韧骗,兩個對象會擁有一樣的值(穿一條褲子)。對基本數(shù)據(jù)類型來說零聚,兩邊是獨立的袍暴。

  • 深拷貝就是對對象中存在的動態(tài)成員或指針重新開辟內存空間。而且隶症,如果有引用類型的變量政模,新生成的對象和被拷貝的對象的這個屬性會指向兩個地方,解耦了蚂会,不會影響對方淋样,兩個對象分別做修改的話,不會影響到對方颂龙。

什么是分布式垃圾回收(DGC)?它是如何工作的?

  • DGC叫做分布式垃圾回收。

  • RMI使用DGC來做自動垃圾回收纽什。因為 RMI包含了跨虛擬機的遠程對象的引用措嵌,垃圾回收是很困難的。DGC使用引用計數(shù)算法來給遠程對象提供自動內存管理芦缰。

簡述Java內存分配與回收策率以及Minor GC和Major GC

  • 對象優(yōu)先在堆的Eden區(qū)分配
  • 大對象直接進入老年代
  • 長期存活的對象將直接進入老年代
  • 當Eden區(qū)沒有足夠的空間進行分配時企巢,虛擬機會執(zhí)行一次Minor GC。
  • Minor GC通常發(fā)生在新生代的Eden區(qū)让蕾,在這個區(qū)的對象生存期短浪规,往往發(fā)生Gc的頻率較高或听,回收速度比較快;
  • Full GC/Major GC發(fā)生在老年代,一般情況下笋婿,觸發(fā)老年代GC的時候不會觸發(fā)Minor GC,但是通過配置誉裆,可以在Full GC之前進行一次Minor GC這樣可以加快老年代的回收速度。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末缸濒,一起剝皮案震驚了整個濱河市足丢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌庇配,老刑警劉巖斩跌,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異捞慌,居然都是意外死亡耀鸦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門啸澡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來袖订,“玉大人,你說我怎么就攤上這事锻霎≈牵” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵旋恼,是天一觀的道長吏口。 經常有香客問我,道長冰更,這世上最難降的妖魔是什么产徊? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蜀细,結果婚禮上舟铜,老公的妹妹穿的比我還像新娘。我一直安慰自己奠衔,他們只是感情好谆刨,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著归斤,像睡著了一般痊夭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上脏里,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天她我,我揣著相機與錄音,去河邊找鬼。 笑死番舆,一個胖子當著我的面吹牛酝碳,可吹牛的內容都是我干的。 我是一名探鬼主播恨狈,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼疏哗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拴事?” 一聲冷哼從身側響起沃斤,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎刃宵,沒想到半個月后衡瓶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡牲证,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年哮针,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坦袍。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡十厢,死狀恐怖,靈堂內的尸體忽然破棺而出捂齐,到底是詐尸還是另有隱情蛮放,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布奠宜,位于F島的核電站包颁,受9級特大地震影響,放射性物質發(fā)生泄漏压真。R本人自食惡果不足惜娩嚼,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望滴肿。 院中可真熱鬧岳悟,春花似錦、人聲如沸泼差。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽堆缘。三九已至滔灶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間套啤,已是汗流浹背宽气。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留潜沦,地道東北人萄涯。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像唆鸡,于是被迫代替她去往敵國和親涝影。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內容