堆栈问题的面试题【收集好题,经常更新】

(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 值。



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