JAVA面试常考系列五
轉載自?JAVA面試常考系列五
題目一
串行(serial)收集器和吞吐量(throughput)收集器的區別是什么?
????吞吐量收集器使用并行版本的新生代垃圾收集器,它用于中等規模和大規模數據的應用程序。
????串行收集器對大多數的小應用(在現代處理器上需要大概100M左右的內存)就足夠了。
?
題目二在Java中,對象什么時候可以被垃圾回收?
????當對象對當前使用這個對象的應用程序變得不可觸及的時候,這個對象就可以被回收了。java垃圾回收是有jvm自動執行的,不是人為操作的,所以當不存在對某對象的任何引用時,該對象就處于被jvm回收的狀態,并不是馬上予以銷毀。
題目三
JVM的永久代中會發生垃圾回收么?
????垃圾回收不會發生在永久代。如果永久代滿了或者是超過了臨界值,會觸發完全垃圾回收(Full GC)。永久代也是被回收的,所以,正確的永久代大小對避免Full GC是非常重要的因素。
題目四
Java中的兩種異常類型是什么?他們有什么區別?
Java中有兩種異常:受檢查的(checked)異常和不受檢查的(unchecked)異常。
不受檢查的異常不需要在方法或者是構造函數上聲明,就算方法或者是構造函數的執行可能會拋出這樣的異常,并且不受檢查的異常可以傳播到方法或者是構造函數的外面。相反,受檢查的異常必須要用throws語句在方法或者是構造函數上聲明。?
題目五
Java中Exception和Error有什么區別?
Error類定義了不期望被用戶程序捕獲的異常,表示僅靠程序本身無法恢復的嚴重錯誤,比如說內存溢出、動態鏈接異常、虛擬機錯誤。應用程序不應該拋出這種類型的對象。假如出現這種錯誤,除了盡力使程序安全退出外,在其他方面是無能為力的。所以在進行程序設計時,應該更關注Exception類。
Exception類用于用戶程序可以捕獲的異常情況,是由Java應用程序拋出和處理的非嚴重錯誤,比如所需文件沒有找到、零作除數,數組下標越界等。它的各種不同子類分別對應不同類型異常。可分為兩類:Checked異常和Runtime異常
題目六
throw和throws有什么區別?
????1.throw是在代碼塊內針對對象的,即在捕獲方法內的異常并拋出時使用。throws是針對方法的,即將方法的異常信息拋出去。
????2.throw是主動(在方法內容里我們是主動捕獲并throw的),而throws是被動(在方法上是沒有捕獲異常進行處理,直接throws的)。
題目七
異常處理的時候,finally代碼塊的重要性是什么?
????無論是否拋出異常,finally代碼塊總是會被執行。就算是沒有catch語句同時又拋出異常的情況下,finally代碼塊仍然會被執行。最后要說的是,finally代碼塊主要用來釋放資源,比如:I/O緩沖區,數據庫連接。
題目八
異常處理完成以后,Exception對象何時回收?
Exception對象會在下一個垃圾回收過程中被回收掉。
?
題目九finally代碼塊和finalize()方法各有什么作用,區別是什么?
finally:在異常處理時提供?finally 塊來執行任何清除操作。如果拋出一個異常,那么相匹配的 catch 子句就會執行,然后控制就會進入 finally 塊(如果有的話)。
finalize:方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。注意:finalize不一定被jvm調用,只有當垃圾回收器要清除垃圾時才被調用。
區別:
無論是否拋出異常,finally代碼塊都會執行,它主要是用來釋放應用占用的資源。finalize()方法是Object類的一個protected方法,它是在對象被垃圾回收之前由Java虛擬機來調用的。
?
題目十什么是Applet?
Applet是一種特殊的Java程序,它本身不能單獨運行,需要嵌入在一個HTML文件中,借助瀏覽器或Appletviewer來解釋執行.Applet可能通過網絡傳輸,由瀏覽器自動裝載并執行。
總結
以上是生活随笔為你收集整理的JAVA面试常考系列五的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018imac笔记本电脑配置详解?
- 下一篇: JAVA面试常考系列六