JAVA經典面試題目彙總
為了方便大家,下面小編準備了一些關於Java的面試的題目,提供給大家參考!
1. Java中的異常處理機制的簡單和應用。
當Java程序違反了Java的語義規則時,Java虛擬機就會將發生的錯誤表示為一個異常。違反語義規則包括2種情況。一種是Java類庫內置的語義。例如數組下標越界,會引發IndexOutOfBoundsException;訪問null的對象時會引發NullPointerException。另一種情況就是Java允許程序員擴展這種語義檢查,程序員可以創建自己的異常,並自由選擇在何時用throw關鍵字引發異常。所有的異常都是able的子類。
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有什麼區別。
棧是一種線形集合,其添加和刪除元素的操作應在同一段完成。棧按照後進先出的方式進行處理。堆是棧的一個組成元素。
8. 談談final, finally, finalize的區別。
final—修飾符(關鍵字)如果一個類被聲明為final,意味着它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時給定初值,而在以後的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。
finally—異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那麼相匹配的 catch 子句就會執行,然後控制就會進入 finally 塊(如果有的話)。
finalize—方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。
9. Anonymous Inner Class (匿名內部類)
是否可以extends(繼承)其它類,是否可以implements(實現)interface(接口)?
匿名的內部類是沒有名字的內部類。不能extends(繼承) 其它類,但一個內部類可以作為一個接口,由另一個內部類實現。
10. Static Nested Class 和 Inner Class的不同
Nested Class (一般是C++的説法),Inner Class (一般是JAVA的説法)。Java內部類與C++嵌套類最大的不同就在於是否有指向外部的引用上。
注: 靜態內部類(Inner Class)意味着1創建一個static內部類的對象,不需要一個外部類對象,2不能從一個static內部類的一個對象訪問一個外部類對象。
-
Sun認證之Java程序員(SCJP)技巧
通過SUN任何一門專業認證後,考生將收到SunMicrosystems總公司寄發的資格證書及徽章,並有權將通過Sun認證的標記印在個人名片上,作為個人技術能力的肯定。下面是小編整理的關於Sun認證之Java程序員(SCJP)指南,歡迎大家參考!考試心得1.參加培訓或自學Java經典課程。...
-
sun認證:java程序設計考試試題
一、選擇題(共50題,每題1.5分,共75分。多選題選不全或選錯都不得分。)1.以下屬於面向對象的特徵的是(C,D)。(兩項)A)重載B)重寫C)封裝D)繼承2.以下代碼運行輸出是(C)publicclassPerson{privateStringname=Person;intage=0;}publicclassChildextendsPerson{public...
-
sun認證報考指南
考試介紹在當今信息高速發展的社會中,人才決定了企業發展。因此,如何評估員工的價值,或是個人如何證明自己的專業能力,就成為關鍵。Sun公司為了為業界建立一套認證的標準,特別針對最先進的科技,推出Java及Solaris技術認證方案。根據這些認證,在企業方面可以藉此作為招...
-
關於Java中Queue和BlockingQueue的區別
隊列是一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列中沒有元素時,稱為空隊列。下面小編準備了關於Java中Queue和BlockingQueue的區別,提供給大家參考!kingQu...