第一
談談final
finally
finalize的區別
第二
Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類
是否可以implements(實現)interface(接口)?
第三
Static Nested Class 和 Inner Class的不同
說得越多越好(面試題有的很籠統)
第四
&和&&的區別
第五
HashMap和Hashtable的區別
第六
Collection 和 Collections的區別
第七
什麼時候用assert
第八
GC是什麼? 為什麼要有GC?
第九
String s = new String(
xyz
);創建了幾個String Object?
第十
Math
round(
)等於多少? Math
round(
)等於多少?
第十一
short s
=
; s
= s
+
;有什麼錯? short s
=
; s
+=
;有什麼錯?
第十二
sleep() 和 wait() 有什麼區別?
第十三
Java有沒有goto?
第十四
數組有沒有length()這個方法? String有沒有length()這個方法?
第十五
Overload和Override的區別
Overloaded的方法是否可以改變返回值的類型?
第十六
Set裡的元素是不能重復的
那麼用什麼方法來區分重復與否呢? 是用==還是equals()? 它們有何區別?
第十七
給我一個你最常見到的runtime exception
第十八
error和exception有什麼區別?
第十九
List
Set
Map是否繼承自Collection接口?
第二十
abstract class和interface有什麼區別?
第二十一
abstract的method是否可同時是static
是否可同時是native
是否可同時是synchronized?
第二十二
接口是否可繼承接口? 抽象類是否可實現(implements)接口? 抽象類是否可繼承實體類(concrete class)?
第二十三
啟動一個線程是用run()還是start()?
第二十四
構造器Constructor是否可被override?
第二十五
是否可以繼承String類?
第二十六
當一個線程進入一個對象的一個synchronized方法後
其它線程是否可進入此對象的其它方法?
第二十七
try {}裡有一個return語句
那麼緊跟在這個try後的finally {}裡的code會不會被執行
什麼時候被執行
在return前還是後?
第二十八
編程題: 用最有效率的方法算出
乘以
等於幾?
第二十九
兩個對象值相同(x
equals(y) == true)
但卻可有不同的hash code
這句話對不對?
第三十
當一個對象被當作參數傳遞到一個方法後
此方法可改變這個對象的屬性
並可返回變化後的結果
那麼這裡到底是值傳遞還是引用傳遞?
第三十一
swtich是否能作用在byte上
是否能作用在long上
是否能作用在String上?
第三十二
編程題: 寫一個Singleton出來
以下是答案
第一
談談final
finally
finalize的區別
final?修飾符(關鍵字)如果一個類被聲明為final
意味著它不能再派生出新的子類
不能作為父類被繼承
因此一個類不能既被聲明為 abstract的
又被聲明為final的
將變量或方法聲明為final
可以保證它們在使用中不被改變
被聲明為final的變量必須在聲明時給定初值
而在以後的引用中只能讀取
不可修改
被聲明為final的方法也同樣只能使用
不能重載finally?再異常處理時提供 finally 塊來執行任何清除操作
如果拋出一個異常
那麼相匹配的 catch 子句就會執行
然後控制就會進入 finally 塊(如果有的話)
finalize?方法名
Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作
這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的
它是在 Object 類中定義的
因此所有的類都繼承了它
子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作
finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的
第二
Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類
是否可以implements(實現)interface(接口)?
匿名的內部類是沒有名字的內部類
不能extends(繼承) 其它類
但一個內部類可以作為一個接口
由另一個內部類實現
第三
Static Nested Class 和 Inner Class的不同
說得越多越好(面試題有的很籠統)
Nested Class (一般是C++的說法)
Inner Class (一般是JAVA的說法)
Java內部類與C++嵌套類最大的不同就在於是否有指向外部的引用上
具體可見
注
靜態內部類(Inner Class)意味著
創建一個static內部類的對象
不需要一個外部類對象
不能從一個static內部類的一個對象訪問一個外部類對象
第四
&和&&的區別
&是位運算符
&&是布爾邏輯運算符
第五
HashMap和Hashtable的區別
都屬於Map接口的類
實現了將惟一鍵映射到特定的值上
HashMap 類沒有分類或者排序
它允許一個 null 鍵和多個 null 值
Hashtable 類似於 HashMap
但是不允許 null 鍵和 null 值
它也比 HashMap 慢
因為它是同步的
第六
Collection 和 Collections的區別
Collections是個java
util下的類
它包含有各種有關集合操作的靜態方法
Collection是個java
util下的接口
它是各種集合結構的父接口
第七
什麼時候用assert
斷言是一個包含布爾表達式的語句
在執行這個語句時假定該表達式為 true
如果表達式計算為 false
那麼系統會報告一個 AssertionError
它用於調試目的
assert(a >
); // throws an AssertionError if a <=
斷言可以有兩種形式
assert Expression
;
assert Expression
: Expression
;
Expression
應該總是產生一個布爾值
Expression
可以是得出一個值的任意表達式
這個值用於生成顯示更多調試信息的 String 消息
斷言在默認情況下是禁用的
要在編譯時啟用斷言
需要使用 source
標記
javac
source
Test
java
要在運行時啟用斷言
可使用
enableassertions 或者
ea 標記
要在運行時選擇禁用斷言
可使用
da 或者
disableassertions 標記
要系統類中啟用斷言
可使用
esa 或者
dsa 標記
還可以在包的基礎上啟用或者禁用斷言
可以在預計正常情況下不會到達的任何位置上放置斷言
斷言可以用於驗證傳遞給私有方法的參數
不過
斷言不應該用於驗證傳遞給公有方法的參數
因為不管是否啟用了斷言
公有方法都必須檢查其參數
不過
既可以在公有方法中
也可以在非公有方法中利用斷言測試後置條件
另外
斷言不應該以任何方式改變程序的狀態
第八
GC是什麼? 為什麼要有GC? (基礎)
GC是垃圾收集器
Java 程序員不用擔心內存管理
因為垃圾收集器會自動進行管理
要請求垃圾收集
可以調用下面的方法之一
System
gc()
Runtime
getRuntime()
gc()
第九
String s = new String(
xyz
);創建了幾個String Object?
兩個對象
一個是
xyx
一個是指向
xyx
的引用對象s
第十
Math
round(
)等於多少? Math
round(
)等於多少?
Math
round(
)返回(long)
Math
round(
)返回(long)
;
第十一
short s
=
; s
= s
+
;有什麼錯? short s
=
; s
+=
;有什麼錯?
short s
=
; s
= s
+
;有錯
s
是short型
s
+
是int型
不能顯式轉化為short型
可修改為s
=(short)(s
+
)
short s
=
; s
+=
正確
第十二
sleep() 和 wait() 有什麼區別? 搞線程的最愛
sleep()方法是使線程停止一段時間的方法
在sleep 時間間隔期滿後
線程不一定立即恢復執行
這是因為在那個時刻
其它線程可能正在運行而且沒有被調度為放棄執行
除非(a)
醒來
的線程具有更高的優先級
(b)正在運行的線程因為其它原因而阻塞
wait()是線程交互時
如果線程對一個同步對象x 發出一個wait()調用
該線程會暫停執行
被調對象進入等待狀態
直到被喚醒或等待時間到
第十三
Java有沒有goto?
Goto?java中的保留字
現在沒有在java中使用
第十四
數組有沒有length()這個方法? String有沒有length()這個方法?
數組沒有length()這個方法
有length的屬性
String有有length()這個方法
第十五
Overload和Override的區別
Overloaded的方法是否可以改變返回值的類型?
方法的重寫Overriding和重載Overloading是Java多態性的不同表現
重寫Overriding是父類與子類之間多態性的一種表現
重載Overloading是一個類中多態性的一種表現
如果在子類中定義某方法與其父類有相同的名稱和參數
我們說該方法被重寫 (Overriding)
子類的對象使用這個方法時
將調用子類中的定義
對它而言
父類中的定義如同被
屏蔽
了
如果在一個類中定義了多個同名的方法
它們或有不同的參數個數或有不同的參數類型
則稱為方法的重載(Overloading)
Overloaded的方法是可以改變返回值的類型
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19774.html