Java 面試準備[二]

關於字符串的10個面試問題

1. == 和 equals()方法

== 是用於比較對象的引用地址的,或者說是否指向同一個變量。
equals是比較對象的真實值的面試

2. 爲何針對安全保密高的信息,char[]比String更好?

char[] 是能夠修改的,String是不可變對象,建立以後沒法修改,沒法刪除,只能等到JVM垃圾回收。編程

3. 咱們能夠針對字符串使用switch條件語句嗎?

JDK7 是支持在switch中使用字符串比較的,但Android目前仍是基於JDK6的。數組

4. 如何將字符串轉化成int?

int a = Integer.partInt("124");安全

5. 如何將字符串用空白字符分割開?

String [] a = aString.split(" ");數據結構

6. substring()方法到底作了什麼?

JDK7 中 subString(m, n) 會建立一個新的字符串。多線程

7. String vs StringBuilder vs StringBuffer

String 不可變對象。
StringBuilder 線程不安全類,速度比StringBuffer快。
StringBuffer 線程安全類,內部使用同步機制。框架

關於集合框架

1. Java集合框架都有哪些最佳實踐呢?

根據實際的使用狀況選擇合適的數據結構,例如固定大小的仍是須要增長大小的,有重複元素的仍是沒有的,須要保持有序仍是不須要,遍歷是正向的仍是雙向的,插入是在末尾的仍是任意位置的,更多的插入仍是更多的讀取,是否須要並行訪問,是否容許修改,元素類型是相同的仍是不一樣的,等等。另外,還須要儘早考慮多線程,原子性,內存使用量以及性能等因素。性能

不要假設你的集合裏元素的數量一直會保持較小,它也有可能隨着時間增加。因此,你的集合最好可以給定一個合適的大小。ui

針對接口編程優於針對實現編程。例如,可能在某些狀況下,LinkedList是最佳的選擇,可是後來ArrayList可能由於性能的緣由變得更加合適
很差的方式線程

ArrayList list = new ArrayList(100);

好的方式,針對接口編程

// program to interface so that the implementation can change
List list = new ArrayList(100);
List list2 = new LinkedList(100);

List emptyList = Collections.emptyList( );
Set emptySet = Collections.emptySet( );

在取得列表的時候,若是返回的結果是空的話,最好返回一個長度爲0的集合或者數組,而不要返回null。由於,返回null的話可能能會致使程序錯誤。調用你的方法的開發人員可能會忘記對返回爲null的狀況進行處理。

封裝好集合:通常來講,集合都是不可變的對象。因此儘可能不要把集合的成員變量暴露給調用者。由於他們的操做通常都不會進行必要的校驗。

相關文章
相關標籤/搜索