堆疊問題的面試題【收集好題,經常更新】
棧(stack)又稱堆疊,是限制在表的一端進行插入和刪除的線性表。其限制是僅允許在表的一端進行插入和刪除操作,不允許在其他任何位置進行插入、查詢、刪除等操作。
堆(英語:heap)是電腦科學中一類特殊的資料結構的統稱。堆通常是一個可以被看做一棵樹的陣列物件。堆總是滿足下列性質:- 堆中某個節點的值總是不大於或不小於其父節點的值;
- 堆總是一棵完全二叉樹。
T1.下列Java程式碼中的變數a、b、c分別在記憶體的____儲存區存放。
classA {privateStringa = “aa”;publicbooleanmethodB() {
String b = “bb”;
final
}
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 值。