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

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

堆(英語:heap)是計算機科學中一類特殊的數據結構的統稱。堆通常是一個可以被看做一棵樹的數組對象。堆總是滿足下列性質:
  • 堆中某個節點的值總是不大於或不小於其父節點的值;
  • 堆總是一棵完全二叉樹。

堆和棧的區別問題

T1.下列Java代碼中的變量abc分別在內存的____存儲區存放。

class A {
   
private String a =
aa;
   
public boolean methodB() {
       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 值。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章