經常出現卻又容易被忽略的Java SE面試題(必看)

在面試的過程中往往會遇到javase的題目,這個又是容易被忽略,來看一下是哪些呢?1)運行時異常,非運行時異常。運行時異??蛇M行處理,也可不進行處理。非運行時異常必須進行處理(可以通過try-catch語句處理,也可通過關鍵字throws拋出異常)。非運行時異常繼承自Exception但不繼承自RuntimeException。 2)equals方法與“==”的區(qū)別

(1)對于字符串變量以及基本數據類型的包裝類型來說:“==”比較兩變量的引用是否相等,即變量在內存的首地址是否相等。“equals”比較實體(內存空間)的內容是否相等,因為String類中重新定義了equals方法,并且是用來比較其值得而不是內存地址。注意:如果StringBuffers1=newStringBuffer(“a”); StringBuffer s2=new StringBuffer(“a”); s1.equals(s2);為false,因為StringBuffer類中沒有重新定義的equals方法,因此equals方法來自于Object類,而Object類的equals方法是用來比較地址的,所以為false。

(2)對于非字符串變量來說:“==”和“equals”的作用是相同的,都是用來比較對象在堆內存中的首地址,即用來比較兩個引用變量是否指向同一個實體(內存空間)。注意:(

1)如果是基本數據類型比較只能用“==”不能用“equals”。

(2)對于基本數據類型的包裝類型“==”比較的是實體的引用,“equals”比較的是實體的內容。

3)是否可以繼承String類? String類是final類故不可以繼承。

4)構造器Constructor是否可被override?構造器Constructor不能被繼承,因此不能被override(重寫),但可以被overload(重載)。

5)HashMapHashtable的區(qū)別。

1.HashMap是Hashtable的輕量級實現,效率更高。

2.Hashtable是線程安全的,HashMap是非線程安全的,即前者中的方法有用synchronized修飾,后者沒有。

3.HashMap允許空(null)鍵值(key),而Hashtable不允許。

4.Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現。

5.HashMapHashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。

6)GC是什么?為什么要有GC? GC是垃圾收集的意思(Garbage Collection),(內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會導致程序或系統的不穩(wěn)定甚至崩潰)Java提供的GC功能可以自動監(jiān)測對象是否超過作用域從而達到自動回收內存的目的,避免內存溢出造成的一系列問題。Java語言沒有提供釋放已分配內存的顯示操作方法。

7)同步和異步有何異同,在什么情況下分別使用他們?舉例說明。

(1)同步(synchronized)和異步(asynchronized)是對于多線程(multi-threading)而言的同步可防止并發(fā)主要出于數據安全的考慮。對于線程中的共享數據,必須進行同步存取。

(2)異步允許并發(fā)。當應用程序

在對象上調用了一個需要花費很長時間來執(zhí)行的方法,并且不希望讓程序等待方法的返回時,就應該使用異步編程。

8)String s =newString ("xyz");創(chuàng)建了幾個String Object ?兩個,堆區(qū)中一個,常量池中一個。 String a="xyz";首先會到常量池中去查找,如果存在就不再分配,如果不存在就分配,常量池中的數據是在編譯期賦值的,也就是生成class文件時就把它放到常量池里了。

9)簡述synchronized和java.util.concurrent.locks.Lock的異同 ?主要相同點:Lock能完成synchronized所實現的所有功能主要不同點:Lock有比synchronized更精確的線程語義和更好的性能。synchronized會自動釋放鎖,而Lock一定要求程序員手工釋放,并且必須在finally從句中釋放。

10)多線程有幾種實現方法,都是什么?同步有幾種實現方法,都是什么?多線程有兩種實現方法,分別是繼承Thread類與實現Runnable接口。實現同步也有兩種,分別為使用同步方法和使用同步塊。同步方法就是在方法返回類型后面加上synchronized,如:public void synchronized add{},同步塊就是直接寫:synchronized(需要同步的對象){}

11)switch是否能作用在byte上?是否能作用在long上?是否能作用在String上? switch(expr1)中,expr1是一個整數表達式。因此傳遞給switch和 case語句的參數應該是 int、 short、 char或者 byte。long, String都不能作用于swtich。

java學習要素http://www.zparkedu.com/學習java必知

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容