面試題每日學習 12

2021-10-06 21:18:54 字數 2494 閱讀 6058

碼上生花,echarts 作品展示賽正式啟動!>>>

1.list 和 set 有什麼區別?

答:區別分為以下幾個方面:

2.哪種集合可以實現自動排序?

答:treeset 集合實現了元素的自動排序,也就是說無需任何操作,即可實現元素的自動排序功能。

3.vector 和 arraylist 初始化大小和容量擴充有什麼區別?

答:vector 和 arraylist 的預設容量都為 10,原始碼如下。

vector 預設容量原始碼:

public vector()
arraylist 預設容量原始碼:

private static final int default_capacity = 10;
vector 容量擴充預設增加 1 倍,原始碼如下:

private void grow(int mincapacity)
其中 capacityincrement 為初始化 vector 指定的,預設情況為 0。

arraylist 容量擴充預設增加大概 0.5 倍(oldcapacity + (oldcapacity >> 1)),原始碼如下(jdk 8):

private void grow(int mincapacity)
4.vector、arraylist、linkedlist 有什麼區別?

答:這三者都是 list 的子類,因此功能比較相似,比如增加和刪除操作、查詢元素等,但在效能、執行緒安全等方面表現卻又不相同,差異如下:

5.vector、arraylist、linkedlist 使用場景有什麼區別?

答:vector 和 arraylist 的內部結構是以陣列形式儲存的,因此非常適合隨機訪問,但非尾部的刪除或新增效能較差,比如我們在中間插入乙個元素,就需要把後續的所有元素都進行移動。

linkedlist 插入和刪除元素效率比較高,但隨機訪問效能會比以上兩個動態陣列慢。

6.collection 和 collections 有什麼區別?

答:collection 和 collections 的區別如下:

7.以下選項沒有繼承 collection 介面的是?

a:list b:set c:map d:hashset

答:c8.linkedhashset 如何保證有序和唯一性?

答:linkedhashset 底層資料結構由雜湊表和煉表組成,鍊錶保證了元素的有序即儲存和取出一致,雜湊表保證了元素的唯一性。

9.hashset 是如何保證資料不可重複的?

答:hashset 的底層其實就是 hashmap,只不過 hashset 實現了 set 介面並且把資料作為 k 值,而 v 值一直使用乙個相同的虛值來儲存,我們可以看到原始碼:

public boolean add(e e)
由於 hashmap 的 k 值本身就不允許重複,並且在 hashmap 中如果 k/v 相同時,會用新的 v 覆蓋掉舊的 v,然後返回舊的 v,那麼在 hashset 中執行這一句話始終會返回乙個 false,導致插入失敗,這樣就保證了資料的不可重複性。

10.執行以下程式會輸出什麼結果?為什麼?

integer num = 10;

integer num2 = 5;

system.out.println(num.compareto(num2));

答:程式輸出的結果是1,因為 integer 預設實現了 compareto 方法,定義了自然排序規則,所以當 num 比 num2 大時會返回 1,integer 相關原始碼如下:

public int compareto(integer anotherinteger) 

public static int compare(int x, int y)

11.如何用程式實現後進先出的棧結構?

答:可以使用集合中的 stack 實現,stack 是標準的後進先出的棧結構,使用 stack 中的 pop() 方法返回棧頂元素並刪除該元素,示例**如下。

stack stack = new stack();

stack.push("a");

stack.push("b");

stack.push("c");

for (int i = 0; i < 3; i++)

程式執行結果:c b a12.linkedlist 中的 peek() 和 poll() 有什麼區別?

答:peek() 方法返回第乙個元素,但不刪除當前元素,當元素不存在時返回 null;poll() 方法返回第乙個元素並刪除此元素,當元素不存在時返回 null。

13.comparable 和 comparator 有哪些區別?

答:comparable 和 comparator 的主要區別如下:

6 27 每日面試題

6.27 每日面試題 1 stringstream常見用法介紹 定義了三個類 istringstream ostringstream 和 stringstream,分別用來進行流的輸入 輸出和輸入輸出操作。本文以 stringstream 為主,介紹流的輸入和輸出操作。主要用來進行資料型別轉換,由於...

每日面試題8 13

先上題 console.log true false console.log false true false console.log false true false 今天的這一道面試題主要是關於 這個知識點的。要想完全做懂此型別的題目,我們應該需要了解以下幾個點。基本型別的轉化順序。string...

每日小記之面試寶典(面試題)

所有團隊成員都在單個主幹分支上進行開發。發布時,先考慮使用標籤 tag,如果打標籤不能滿足要求,則從主幹建立發布分支。bug在主幹上修復,然後挑選時機發布到 發布分支上 master 分支中包含的是可以部署到生產環境中的 這一點和 github flow 是相同的 develop 分支中包含的是下個...