經典Java面試100例,輕松搞定BAT——高頻面試題(中)
異常處理
43. Java 中的兩種異常類型是什么? 他們有什么區別?
Java 中有兩種異常:受檢查的(checked)異常和不受檢查的(unchecked)異常。不受檢查的異常不需要在方法或者是構造函數上聲明,就算方法或者是構造函數的執行可能會拋出這樣的異常,并且不受檢查的異??梢詡鞑サ椒椒ɑ蛘呤菢嬙旌瘮档耐饷妗O喾矗軝z查的異常必須 要用 throws語句在方法或者是構造函數上聲明。這里有 Java 異常處理的一些小建議。
44. Java 中 Exception 和 Error 有什么區別?
Exception 和 Error 都是 Throwable 的子類。 Exception 用于用戶程序可以捕獲的異常情況。
Error定義了不期望被用戶程序捕獲的異常。
45. throw 和 throws 有什么區別?
throw 關鍵字用來在程序中明確的拋出異常,相反,throws 語句用來表明方法不能處理的異 常。每一個方法都必須要指定哪些異常不能處理,所以方法的調用者才能夠確保處理可能發生的異常,多個異常是用逗號分隔的。
46. 異常處理的時候,finally 代碼塊的重要性是什么?
無論是否拋出異常,finally 代碼塊總是會被執行。就算是沒有 catch 語句同時又拋出異常的情況下,finally 代碼塊仍然會被執行。最后要說的是,finally 代碼塊主要用來釋放資源,比如:I/O 緩沖區,數據庫連接。
47. 異常處理完成以后,Exception 對象會發生什么變化?
Exception 對象會在下一個垃圾回收過程中被回收掉。
48. finally 代碼塊和 finalize()方法有什么區別?
無論是否拋出異常,finally 代碼塊都會執行,它主要是用來釋放應用占用的資源。 finalize()方法是 Object 類的一個 protected 方法,它是在對象被垃圾回收之前由 Java 虛擬機來調用的。
Java 小應用程序(Applet)
49. 什么是 Applet?
java applet 是能夠被包含在 HTML 頁面中并且能被啟用了 java 的客戶端瀏覽器執行的程序。Applet 主要用來創建動態交互的 web 應用程序。
50. 解釋一下 Applet 的生命周期
applet 可以經歷下面的狀態:
Init:每次被載入的時候都會被初始化。
Start:開始執行 applet。
Stop:結束執行 applet。
Destroy:卸載 applet 之前,做最后的清理工作。
51. 當 applet 被載入的時候會發生什么?
首先,創建 applet 控制類的實例,然后初始化 applet,最后開始運行。
52. Applet 和普通的 Java 應用程序有什么區別?
applet 是運行在啟用了 java 的瀏覽器中,Java 應用程序是可以在瀏覽器之外運行的獨立的Java 程序。但是,它們都需要有 Java 虛擬機。
進一步來說,Java 應用程序需要一個有特定方法簽名的 main 函數來開始執行。 Java applet 不需要這樣的函數來開始執行。
最后,Java applet 一般會使用很嚴格的安全策略,Java 應用一般使用比較寬松的安全策略。
53. Java applet 有哪些限制條件?
主要是由于安全的原因,給 applet 施加了以下的限制:
applet 不能夠載入類庫或者定義本地方法。 applet 不能在
宿主機上讀寫文件。applet 不能讀取特定的系統屬性。
applet 不能發起網絡連接,除非是跟宿主機。
applet 不能夠開啟宿主機上其他任何的程序。
54. 什么是不受信任的 applet?
不受信任的 applet 是不能訪問或是執行本地系統文件的 Java applet,默認情況下,所有下載的 applet 都是不受信任的。
55. 從網絡上加載的 applet 和從本地文件系統加載的 applet 有什么區別?
當 applet 是從網絡上加載的時候,applet 是由 applet 類加載器載入的,它受 applet 安全管 理器的限制。
當 applet 是從客戶端的本地磁盤載入的時候,applet 是由文件系統加載器載入的。
從文件系統載入的 applet 允許在客戶端讀文件,寫文件,加載類庫,并且也允許執行其他程序,但是,卻通不過字節碼校驗。
56. applet 類加載器是什么? 它會做哪些工作?
當 applet 是從網絡上加載的時候,它是由 applet 類加載器載入的。類加載器有自己的 java名稱空間等級結構。類加載器會保證來自文件系統的類有唯一的名稱空間,來自網絡資源的 類有唯一的名稱空間。
當瀏覽器通過網絡載入 applet 的時候, applet 的類被放置于和 applet 的源相關聯的私有的名 稱空間中。然后,那些被類加載器載入進來的類都是通過了驗證器驗證的。驗證器會檢查類 文件格式是否遵守
Java 語言規范,確保不會出現堆棧溢出(stack overflow) 或者下溢(underflow),傳遞給字節碼指令的參數是正確的。
57. applet 安全管理器是什么? 它會做哪些工作?
applet 安全管理器是給 applet 施加限制條件的一種機制。瀏覽器可以只有一個安全管理器。安全管理器在啟動的時候被創建,之后不能被替換覆蓋或者是擴展。
Swing
58. 彈出式選擇菜單(Choice)和列表(List)有什么區別
Choice 是以一種緊湊的形式展示的,需要下拉才能看到所有的選項。 Choice 中一次只能選中
一個選項。 List 同時可以有多個元素可見,支持選中一個或者多個元素。
59. 什么是布局管理器?
布局管理器用來在容器中組織組件。
60. 滾動條(Scrollbar)和滾動面板(JScrollPane)有什么區別?
Scrollbar 是一個組件,不是容器。而 ScrollPane 是容器。 ScrollPane 自己處理滾動事件。
61. 哪些 Swing 的方法是線程安全的?
只有 3 個線程安全的方法: repaint(), revalidate(), and invalidate()。
62. 說出三種支持重繪(painting)的組件。
Canvas, Frame, Panel,和 Applet 支持重繪。
63. 什么是裁剪(clipping)?
限制在一個給定的區域或者形狀的繪圖操作就做裁剪。
64. MenuItem 和 CheckboxMenuItem 的區別是什么?
CheckboxMenuItem 類繼承自 MenuItem 類,支持菜單選項可以選中或者不選中。
65. 邊緣布局(BorderLayout)里面的元素是如何布局的?
BorderLayout 里面的元素是按照容器的東西南北中進行布局的。
66. 網格包布局(GridBagLayout)里面的元素是如何布局的?
GridBagLayout 里面的元素是按照網格進行布局的。不同大小的元素可能會占據網格的多于 1 行或一列。因此,行數和列數可以有不同的大小。
67. Window 和 Frame 有什么區別?
Frame 類繼承了 Window 類,它定義了一個可以有菜單欄的主應用窗口。
68. 裁剪(clipping)和重繪(repainting)有什么聯系?
當窗口被 AWT 重繪線程進行重繪的時候,它會把裁剪區域設置成需要重繪的窗口的區域。
69. 事件-接口(event-listener interface)和事件適配器(event-adapter)有什么關系?
事件-接口定義了對特定的事件,事件處理器必須要實現的方法。事件適配器給事件-接口提供了默認的實現。
70. GUI 組件如何來處理它自己的事件?
GUI 組件可以處理它自己的事件,只要它實現相對應的事件-接口,并且把自己作為事件-。
71. Java 的布局管理器比傳統的窗口系統有哪些優勢?
Java 使用布局管理器以一種一致的方式在所有的窗口平臺上擺放組件。因為布局管理器不會
和組件的絕對大小和位置相綁定,所以他們能夠適應跨窗口系統的特定平臺的不同。
72. Java 的 Swing 組件使用了哪種設計模式?
Java 中的 Swing 組件使用了 MVC(視圖-模型-控制器)設計模式。
Java 網絡
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。