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不可以使用。
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不可以使用。
相关文章推荐
- Java程序员笔试面试之java基础知识
- Java程序员笔试面试之String4
- Java程序员笔试面试之Java基础
- java程序员面试笔试题(网络部分2)
- Java程序员笔试面试之String
- java程序员面试笔试题(五)
- 软件开发 测试 Java 程序员 计算机专业 互联网 电子信息 经典 面试 笔试
- Java程序员面试笔试题二
- Java程序员笔试面试之String2
- java程序员面试笔试题(三)
- java程序员面试笔试题(四)
- java程序员--面试笔试技巧
- java程序员面试笔试题(一)
- Java程序员笔试面试之String5
- Java程序员笔试面试之Java基础
- Java程序员笔试、面试题目
- Java程序员面试笔试题一
- java程序员面试笔试题(六)
- JAVA程序员面试32问zz
- JAVA程序员面试32问,你能回答多少题?(ZZ)