您的位置:首页 > 职场人生

java程序员面试笔试题(二)

2016-09-26 09:19 309 查看
(1)hashcode的作用

HashSet根据hashcode()方法的返回值来计算存储位置,所以不同对象的hashcode()方法的返回的数值应该是不同的

(2)Arraylist,Linkedlist,Vector的区别

Arraylist中的数据元素依次存放在某个存储区域中。ArrayList和Vector从内部实现机制来讲,都是使用数组(Array)来控制集合中的对象。

两者的区别是:1)Arraylist是异步的,Arraylist中的对象不是线程安全的;Vector是同步的,这个类中的方法保证了Vector中的对象是线程安全的。

                            2)数据增长方面。当你向这两个类型中增加元素的时候,如果元素的数目超出了内部数组目前的长度,它们都需要扩展内部数组的长度,Vector缺省情况下自动增长原来一倍的数组长度,Arraylist原来的50%。

Linkedlist中的元素使用链表的形式存储。Linkedlist实现了List接口,允许null元素。此外,Linkedlist提供额外的get,remove,insert方法在Linkedlist的首部和尾部。这些操作使Linkedlist可被用作堆栈(stack),队列(queue)或者双向队列(deque)。

(3)String,StringBuffer与StringBuilder的区别

1.在执行速度方面的比较:StringBuilder>StringBuffer

2.StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当用它们对字符串做操作时,实际上是在一个对象上操作的,不想String一样创建一些对象再进行操作,所以速度就快了。

3.StringBuilder是线程非安全的,StringBuffer是线程安全的

当我们在字符串缓冲区被多个线程使用时,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下我们是在单线程下进行操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer,就是速度的原因。

对于三者使用的总结:

                               1.如果要操作少量的数据用=String

                               2.单线程操作字符串缓冲区下操作大量数据=StringBuilder

                               3.多线程操作字符串缓冲区下操作大量数据=StringBuffer

(4)Map,Set,LIst,Queue,Stack的特点和用法

Map:键——值映射对;

Set:不允许重复的集合;

List:可以有重复元素的集合;

queue:队列限定所有的插入只能在表的一端进行,而所有的删除都在表的另一端进行的线性表。

            表中允许插入的一端称为队尾(Rear),允许删除的一端称为队头(Front)。

            队列的操作是按照先进先出(FIFO)的原则进行的。

stack:栈也是一种特殊的线性表,是一种后进先出(LIFO)的结构。

(5)HashMap与HashTable的区别

hashtable不允许null值(key和value都不可以),HashMap允许null值(key和Value都可以)。

hashtable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步,HashMap这个区别就像Vector和ArrayList的区别。

Hashtable除了使用Iterator迭代,还可以使用Enumeration。HashMap不可以使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: