面試題上 :上半部分面試題
16.接口是否可繼承(extends)接口?抽象類是否可實現(implements)接口?抽象類是否可繼承具體類(concrete class)?
- 接口可以繼承接口
- 抽象類可以實現接口
- 抽象類可以繼承具體類也可以繼承抽象類
17.Anonymous Inner Class(匿名內部類)是否可以繼承其它類?是否可以實現接口?
都可以
18.內部類可以引用它的包含類(外部類)的成員嗎?有沒有什麼限制?
可以引用,包括私有屬性
19.Java 中的final關鍵字有哪些用法?
- 修飾類,不能被繼承
- 修飾方法,不能被重寫
- 修飾屬性,不能改變值(常量);
20.下面程序的運行結果
class HelloA {
//構造方法
public HelloA() {
System.out.println("Hello A!父類構造方法");
}
{
System.out.println("i'm A class.父類非靜態代碼塊");
}
static {
System.out.println("static A 父類靜態代碼塊");
}
}
public class HelloB extends HelloA {
//構造方法
public HelloB(){
System.out.println("Hello B! 構造方法");
} //非靜態代碼塊
{
System.out.println("i'm B class.非靜態代碼塊");
} //靜態代碼塊
static{
System.out.println("static B 靜態代碼塊");
}
public static void main(String[] args) {
System.out.println("---start---");
new HelloB();
new HelloB();
System.out.println("---end---");
}
}
執行結果:
static A 父類靜態代碼塊
static B 靜態代碼塊
---start---
i'm A class.父類非靜態代碼塊
Hello A!父類構造方法
i'm B class.非靜態代碼塊
Hello B! 構造方法
i'm A class.父類非靜態代碼塊
Hello A!父類構造方法
i'm B class.非靜態代碼塊
Hello B! 構造方法
---end---
21.如何實現字符串的反轉及替換
public static String reverse(String originStr) {
if (originStr == null || originStr.length() <= 1)
return originStr;
return reverse(originStr.substring(1)) + originStr.charAt(0);
}
22.try{}裏有一個return語句,那麼緊跟在這個try後的finally{}裏的代碼會不會被執行,什麼時候被執行,在return前還是後?
會,在返回結果前調用,如果finally中修改了返回值,則返回修改後的值.
23.運行時異常與受查異常有何異同
- 運行時異常沒有要求捕獲
- 受查異常要求捕獲或拋出異常
24.List、Set、Map是否繼承自Collection接口?
不是,List,Set 繼承自Collection接口 ,Map不是
25.闡述ArrayList、Vector、LinkedList的存儲性能和特性
- ArrayList : 基於數組實現,性能較高,非線程安全,插入刪除慢,索引快
- Vector : 基於數組實現,性能低,線程安全
- LinkedList : 基於鏈表實現,性能較高,非線程安全,插入刪除快,索引慢;
26.Collection和Collections的區別?
- Conllection 是一個接口
- Conllections 是一個工具類,輔助容器類操作,有排序,搜索,線程安全化
27.Collections工具類中的sort()方法如何比較元素?
一種是傳入容器對象
另一種是傳入容器對象後,還必須傳入Comparator子類的compare()方法
28.Thread類的sleep()方法和對象的wait()方法都可以讓線程暫停執行,它們有什麼區別?
- sleep(),交出cpu,不會釋放鎖
- wait(),釋放鎖,進入等待池,等待notify()
29.線程池基本狀態
30.synchronized和java.util.concurent.locks.Lock的區別
- 相同點:Lock能實現synchronized的所有功能
- 不同點:Lock性能好於synchronized,不強制要求獲取鎖.synchronized會主動釋放鎖,Lock需要手工釋放鎖,最好在finally中釋放