List面試準備

2021-10-19 02:42:19 字數 1959 閱讀 3646

arraylist、linkedlist 、vector

arraylist 底層是乙個陣列。

構造器三種:

①無參構造,初始化乙個預設大小為10的陣列。

②給乙個capacity初始化為這個大小。

③給定另乙個已有的集合a,呼叫a的toarray方法,a如果為0那麼也按無參構造處理,

如果a中有元素那麼就呼叫array.copyof函式複製過來。

add的話就是跟普通陣列一樣,多了擴容的判斷與操作。

真正add前先判斷擴容

倍擴容   jdk 1.8

int newcapacity = oldcapacity +

(oldcapacity >>1)

;

如果是用索引add 那麼會呼叫native的移動陣列方法

public

static

native

void

arraycopy

(object src,

int srcpos,

object dest,

int destpos,

int length)

;

特點就是隨機訪問快,在中間插入效率低下。

linkedlist是乙個雙向鍊錶,

初始化兩種方式:

①空構造

②使用乙個存在的集合。呼叫addall方法先toarray成object陣列 然後進行尾插法,插入前經過強轉linkedlist給的泛型。

採用尾插法

for

(object o : a)

在頭部和尾部get元素的和刪除的如果不存在都拋異常。

如果是get乙個index,會先進入乙個判斷方法判斷,不在範圍也是拋異常

public e getfirst()

/** * returns the last element in this list.

** @return the last element in this list

* @throws nosuchelementexception if this list is empty

*/public e getlast()

/** * removes and returns the first element from this list.

** @return the first element from this list

* @throws nosuchelementexception if this list is empty

*/public e removefirst()

/** * removes and returns the last element from this list.

** @return the last element from this list

* @throws nosuchelementexception if this list is empty

*/public e removelast()

四種add方法:

①add乙個元素:呼叫尾插法

②addfirst方法:呼叫頭插法

③addlast方法:呼叫尾插法

④add index,key:先判斷範圍,超範圍拋異常,再看是不是最後乙個位置,如果是那就直接呼叫尾插法,否則的話就找吧。

offer的話都是呼叫add方法,尾插 ,最後返回乙個true。

push是呼叫addfirst和pop 呼叫removefirst,都是對頭進行操作

是的 幾乎所有方法都使用了synchronized關鍵字

擴容兩倍增長,如果沒有指定,陣列進行遷移

2012面試準備 2012 10 26面試準備

c 1 什麼純虛函式?首先,二者申明不一樣。virtual void test void 虛函式 virtual void test void 0 純虛函式 其次,如果乙個類包含了乙個純虛函式 哪怕只有乙個是純虛函式 那麼它就是乙個抽象類 就是不能生成具體的物件!但如果類中只包含虛函式,那麼是可以定...

面試需要準備!!

1 請介紹一下你自己。這是外企常問的問題。一般人回答這個問題過於平常,只說姓名 年齡 愛好 工作經驗,這些在簡歷上都有,其 實,外企最希望知道的是求職者能否勝任工作,包括 最強的技能 最深入研究的知識領域 個性中最積極的部分 做過的最成功的事,主要的成就等,這些都可以 和學習無關,也可以和學習有關,...

騰訊面試準備

1.const的含義及實現機制,比如 const int i,是怎麼做到i只可讀的?答 const用來說明所定義的變數是唯讀的,這些在編譯期間完成,編譯器可能使用常數直接替換掉對此變數的引用 2.到商店裡買200的商品返還100優惠券 可以在本商店代替現金 請問實際上折扣是多少?答 由於優惠券可以代...