1. 程式人生 > >堆疊問題的面試題【收集好題,經常更新】

堆疊問題的面試題【收集好題,經常更新】

(stack)又稱堆疊,是限制在表的一端進行插入和刪除的線性表。其限制是僅允許在表的一端進行插入和刪除操作,不允許在其他任何位置進行插入、查詢、刪除等操作。

堆(英語:heap)是電腦科學中一類特殊的資料結構的統稱。堆通常是一個可以被看做一棵樹的陣列物件。堆總是滿足下列性質:
  • 堆中某個節點的值總是不大於或不小於其父節點的值;
  • 堆總是一棵完全二叉樹。

T1.下列Java程式碼中的變數abc分別在記憶體的____儲存區存放。

classA {privateStringa = aa;publicbooleanmethodB() {
       String b =
bb;
       final

String c = cc; }
}

A 、堆區、堆區、堆區

B 、堆區、棧區、堆區

C 、堆區、棧區、棧區

D 、堆區、堆區、棧區

E 、靜態區、棧區、堆區

F 、靜態區、棧區、棧區

答案:C

解釋:

堆區:只存放類物件,執行緒共享;

方法區:又叫靜態儲存區,存放class檔案和靜態資料,執行緒共享;

棧區:存放方法區域性變數,基本型別變數區、執行環境上下文、操作指令區,執行緒不共享;

T2 .(不定項選擇題) 以下集合物件中哪幾個是執行緒安全的() 

A LinkedList

B ArrayList

C Vector

D Hashtable

正確答案是:CD

Collection 是物件集合, Collection 有兩個子介面 List 和 Set。

List 可以通過下標 (1,2..) 來取得值,值可以重複,而 Set 只能通過遊標來取值,並且值是不能重複的。

ArrayList , Vector , LinkedList 是 List 的實現類。

ArrayList 是執行緒不安全的, Vector 是執行緒安全的,這兩個類底層都是由陣列實現的。

LinkedList 是執行緒不安全的,底層是由連結串列實現的。

Map 是鍵值對集合。

HashTable 和 HashMap 是 Map 的實現類。

HashTable 是執行緒安全的,不能儲存 null 值。

HashMap 不是執行緒安全的,可以儲存 null 值。