1. Java中的異常處理機制的簡單和應用。
當Java程式違反了Java的語義規則時,Java虛擬機器就會將發生的錯誤表示為一個異常。違反語義規則包括2種情況。一種是Java類庫內建的語義。例如數組下標越界,會引發IndexOutOfBoundsException;訪問null的對象時會引發NullPointerException。另一種情況就是Java允許程式員擴充這種語義檢查,程式員可以建立自己的異常,並自由選擇在何時用throw關鍵字引發異常。所有的異常都是java.lang.Thowable的子類。
2. Java的介面和C++的虛類的相同和不同處。
由於Java不支援多繼承,而有可能某個類或對象要使用分別在幾個類或對象裡面的方法或屬性,現有的單繼承機制就不能滿足要求。與繼承相比,介面有更高的靈活性,因為介面中沒有任何實現代碼。當一個類實現了介面以後,該類要實現介面裡面所有的方法和屬性,介面裡面的屬性在預設狀態下面都是public static,所有方法預設情況下是public.一個類可以實現多個介面。
3. 記憶體回收的優點和原理。並考慮2種回收機制。
Java語言中一個顯著的特點就是引入了記憶體回收機制,使c++程式員最頭疼的記憶體的問題迎刃而解,它使得Java程式員在編寫程式的時候不再需要考慮記憶體管理。由於有個記憶體回收機制,Java中的對象不再有“範圍”的概念,只有對象的引用才有“範圍”。記憶體回收可以有效防止記憶體泄露,有效使用可以使用的記憶體。記憶體回收行程通常是作為一個單獨的低層級的線程運行,不可預知的情況下對記憶體堆中已經死亡的或者長時間沒有使用的對象進行清除和回收,程式員不能即時的調用記憶體回收行程對某個對象或所有對象進行記憶體回收。回收機制有分代複製記憶體回收和標記記憶體回收,增量記憶體回收。
4.線程同步的方法。
wait():使一個線程處於等待狀態,並且釋放所持有的對象的lock。
sleep():使一個正在啟動並執行線程處於睡眠狀態,是一個靜態方法,調用此方法要捕捉InterruptedException異常。
notify():喚醒一個處於等待狀態的線程,注意的是在調用此方法的時候,並不能確切地喚醒某一個等待狀態的線程,而是由JVM確定喚醒哪個線程,而且不是按優先順序。
Allnotity():喚醒所有處入等待狀態的線程,注意並不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。
5. Error與Exception有什麼區別?
Error表示系統級的錯誤和程式不必處理的異常,
Exception表示需要捕捉或者需要程式進行處理的異常。
6. 在java中一個類被聲明為final類型,表示了什麼意思?
表示該類不能被繼承,是頂級類。
7. heap和stack有什麼區別。
棧是一種線形集合,其添加和刪除元素的操作應在同一段完成。棧按照後進先出的方式進行處理。堆是棧的一個組成元素。