java面试题详解及复习资料

java面试题详解及复习资料

ID:8871359

大小:146.00 KB

页数:48页

时间:2018-04-10

java面试题详解及复习资料_第1页
java面试题详解及复习资料_第2页
java面试题详解及复习资料_第3页
java面试题详解及复习资料_第4页
java面试题详解及复习资料_第5页
资源描述:

《java面试题详解及复习资料》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1、什么是Java集合APIJava集合框架API是用来表示和操作集合的统一框架,它包含接口、实现类、以及帮助程序员完成一些编程的算法。简言之,API在上层完成以下几件事:●编程更加省力,提高城程序速度和代码质量●非关联的API提高互操作性●节省学习使用新API成本●节省设计新API的时间●鼓励、促进软件重用具体来说,有6个集合接口,最基本的是Collection接口,由三个接口Set、List、SortedSet继承,另外两个接口是Map、SortedMap,这两个接口不继承Collection,

2、表示映射而不是真正的集合。2、什么是Iterator一些集合类提供了内容遍历的功能,通过java.util.Iterator接口。这些接口允许遍历对象的集合。依次操作每个元素对象。当使用Iterators时,在获得Iterator的时候包含一个集合快照。通常在遍历一个Iterator的时候不建议修改集合本省。3、Iterator与ListIterator有什么区别?Iterator:只能正向遍历集合,适用于获取移除元素。ListIerator:继承Iterator,可以双向列表的遍历,同样支持元素的

3、修改。4、什么是HaspMap和Map?Map是接口,Java集合框架中一部分,用于存储键值对,HashMap是用哈希算法实现Map的类。5、HashMap与HashTable有什么区别?对比HashtableVSHashMap两者都是用key-value方式获取数据。Hashtable是原始集合类之一(也称作遗留类)。HashMap作为新集合框架的一部分在Java2的1.2版本中加入。它们之间有一下区别:●HashMap和Hashtable大致是等同的,除了非同步和空值(HashMap允许null

4、值作为key和value,而Hashtable不可以)。●HashMap没法保证映射的顺序一直不变,但是作为HashMap的子类LinkedHashMap,如果想要预知的顺序迭代(默认按照插入顺序),你可以很轻易的置换为HashMap,如果使用Hashtable就没那么容易了。●HashMap不是同步的,而Hashtable是同步的。●迭代HashMap采用快速失败机制,而Hashtable不是,所以这是设计的考虑点。6、在Hashtable上下文中同步是什么意思?同步意味着在一个时间点只能有一个线

5、程可以修改哈希表,任何线程在执行hashtable的更新操作前需要获取对象锁,其他线程等待锁的释放。7、什么叫做快速失败特性从高级别层次来说快速失败是一个系统或软件对于其故障做出的响应。一个快速失败系统设计用来即时报告可能会导致失败的任何故障情况,它通常用来停止正常的操作而不是尝试继续做可能有缺陷的工作。当有问题发生时,快速失败系统即时可见地发错错误告警。在Java中,快速失败与iterators有关。如果一个iterator在集合对象上创建了,其它线程欲“结构化”的修改该集合对象,并发修改异常(C

6、oncurrentModificationException)抛出。8、怎样使Hashmap同步?HashMap可以通过Mapm=Collections.synchronizedMap(hashMap)来达到同步的效果。9、什么时候使用Hashtable,什么时候使用HashMap基本的不同点是Hashtable同步HashMap不是的,所以无论什么时候有多个线程访问相同实例的可能时,就应该使用Hashtable,反之使用HashMap。非线程安全的数据结构能带来更好的性能。如果在将来有一种可能—你

7、需要按顺序获得键值对的方案时,HashMap是一个很好的选择,因为有HashMap的一个子类LinkedHashMap。所以如果你想可预测的按顺序迭代(默认按插入的顺序),你可以很方便用LinkedHashMap替换HashMap。反观要是使用的Hashtable就没那么简单了。同时如果有多个线程访问HashMap,Collections.synchronizedMap()可以代替,总的来说HashMap更灵活。10、为什么Vector类认为是废弃的或者是非官方地不推荐使用?或者说为什么我们应该一直

8、使用ArrayList而不是Vector你应该使用ArrayList而不是Vector是因为默认情况下你是非同步访问的,Vector同步了每个方法,你几乎从不要那样做,通常有想要同步的是整个操作序列。同步单个的操作也不安全(如果你迭代一个Vector,你还是要加锁,以避免其它线程在同一时刻改变集合)。而且效率更慢。当然同样有锁的开销即使你不需要,这是个很糟糕的方法在默认情况下同步访问。你可以一直使用Collections.sychronizedList来装饰一个集合。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。