Java面試四

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");
	}
}

 


2public改爲private;6行 加上static。

2. 對代理模式的作用,描述最不恰當的一項是(單選題)D

A.控制對象訪問和通信
B.延遲加載,提升系統性能
C.
處於安全目的,保護被訪問者
D.動態擴充對象功能

3.Android UI體系中,事件通知實現的基本思想來源於(單選題):A
A.觀察者模式
B.代理模式
C.策略模式
D.裝飾者模式

4. VectorArrayList的主要區別是(單選題):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.簡要分析StringsubString()方法造成內存泄漏的原因

 

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()會造成泄漏。

發佈了52 篇原創文章 · 獲贊 4 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章