1. 下面代碼視圖實現單例模式,但是犯了2處明顯的錯誤,請找出這2個錯誤。
public class Singleton {
public Singleton() {
System.out.println("Singleton is create");
}
private Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
public static void createString() {
System.out.println("createString in Singleton");
}
}
第2行public改爲private;第6行
加上static。
2. 對代理模式的作用,描述最不恰當的一項是(單選題)D
A.控制對象訪問和通信
B.延遲加載,提升系統性能
C.處於安全目的,保護被訪問者
D.動態擴充對象功能
3.Android UI體系中,事件通知實現的基本思想來源於(單選題):A
A.觀察者模式
B.代理模式
C.策略模式
D.裝飾者模式
4. Vector和ArrayList的主要區別是(單選題):B
A. ArrayList內部基於鏈表,而Vector是基於數組的
B. Vector的大部分方法做了同步,而ArrayList沒有同步
C. Vector是可串行化的,而ArrayList不是
D. Vector實現了RandomAccess,而ArrayList沒有
5.如果HashMap發生大量Hash衝突,則會導致(單選題):D
A. HashMap崩潰,導致不可用
B. HashMap沒有影響,依然可以高效的工作
C. HashMap的性能會有一點影響,但總體依然是高效的
D. HashMap依然可用,但是性能受到重創。
6.下面哪些關鍵字是和多線程併發有關的(多選)AB
A. volatile
B. synchronized
C. public
D. final
7. ReadWriteLock能夠提高併發性能的原因是(單選):C
A.它是無鎖的操作
B.它爲每個線程都提供了一份數據的複本
C.它可以使得讀讀操作真正的併發,無需等待
D.它自動進行了鎖的粗化
8.對象池和享元模式的根本不同在於(單選):C
A.對象池中的對象可以複用,享元模式中的對象不能複用
B.對象池可以提升系統性能,享元模式不能
C.對象池中的每個對象都是等價的,享元模式中的每個對象是不等價的
D.對象池中的每個對象是不等價的,享元模式中的每個對象是等價的
9.下面哪些是String對象的特性(多選)A BC
A.不變性
B.針對常量池的優化
C.類是final的
D.用戶可自定義的多態
10.簡要分析String的subString()方法造成內存泄漏的原因
substring()方法的實現中使用以下形式構造新的字符串:
new String(offset + beginIndex, endIndex - beginIndex, value);
該構造方法實現如下:
String(int offset, int count, char value[]) {
this.value = value;
this.offset = offset;
this.count = count;
}
可見,並沒有對value進行裁剪,只是設置了偏移量。因此使用subString()會造成泄漏。