搜档网
当前位置:搜档网 › 程序员面试题目

程序员面试题目

程序员面试题目
程序员面试题目

1.什么是Java集合API?

Java集合API是用来表示和操作集合的统一框架,包括接口、实现类以及帮助程序员完成一些编程的算法。

2.Java集合框架的接口有哪些?

具体来说,Java集合框架有6个集合接口,最基本的是Collection接口,由三个接口Set、List、SortedSet继承,另外两个接口是Map、SortedMap,这两个接

口不继承Collection,表示映射而不是真正的集合。

Collection为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java平台不提供这个接口任何直接的实现。

Set是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合。

List是一个有序集合,可以包含重复元素。可以通过它的索引来访问任何元素,更像长度动态变换的数组。

Map是一个将key映射到value的对象.一个Map不能包含重复的key。

3.Iterator是什么?

Iterator接口提供遍历任何Collection的接口。我们可以从一个Collection中使

用迭代器方法来获取迭代器实例。迭代器取代了Java集合框架中的Enumeration。迭代器允许调用者在迭代过程中移除元素。

4.Iterator和Listlterator的区别是什么?

(1)Iterator可以遍历Set和List集合,而ListIterator只能遍历List。

(2)Iterator只可以向前遍历,而LIstIterator可以双向遍历。

(3)ListIterator从Iterator接口继承,然后添加了一些额外的功能,比如添加一

个元素、替换一个元素、获取前面或后面元素的索引位置。

5.对比HashMap和HashTable。

两者都是用key-value方式获取数据。Hashtable是原始集合类之一(也称作遗留类)。HashMap作为新集合框架的一部分在Java2的1.2版本中加入。它们之间

有以下区别:

(1) HashMap允许key和value为null,而HashTable不允许。

(2)HashTable是同步的,而HashMap不是。所以HashMap适合单线程环境,HashTable适合多线程环境。

(3)HashMap提供对key的Set进行遍历,因此它是fail-fast的,但HashTable

提供对key的Enumeration进行遍历,它不支持fail-fast。

(4)HashTable被认为是个遗留的类,如果寻求在迭代的时候修改Map,应使用CocurrentHashMap。

6.如何决定选用HashMap还是TreeMap?

对于在Map中插入、删除和定位元素这类操作,HashMap是最好的选择。然而,假如你需要对一个有序的key集合进行遍历,TreeMap是更好的选择。基于你的collection的大小,也许向HashMap中添加元素会更快,将map换为TreeMap 进行有序key的遍历。

7.在HashTable中上下文同步是什么意思?

同步意味着在一个时间点只能有一个线程可以修改哈希表,任何线程在执行hashtable的更新操作前需要获取对象锁,其他线程等待锁的释放。

8.哪些集合类提供对元素的随机访问?

ArrayList、HashMap、TreeMap和HashTable类提供对元素的随机访问。

https://www.sodocs.net/doc/b45768231.html,parable和Comparator接口的区别是什么?

Comparable和Comparator接口被用来对对象集合或者数组进行排序。Comparable接口被用来提供对象的自然排序,我们可以使用它来提供基于单个逻辑的排序。

Comparator接口被用来提供不同的排序算法,我们可以选择需要使用的Comparator来对给定的对象集合进行排序。

10.与Java集合框架相关的有哪些最好的实践?

(1)根据需要选择正确的集合类型。比如,如果指定了大小,选用Array而非ArrayList。如果想根据插入顺序遍历一个Map,需要使用TreeMap。如果不想重复,应使用Set。

(2)一些集合类允许指定初始容量,所以如果能够估计到存储元素的数量,可以使用它,就避免了大小调整。

(3)基于接口编程,而非基于实现编程,它允许后来轻易地改变实现。

(4)总是使用类型安全的泛型,避免在运行时出现ClassCastException。

(5)使用JDK提供的不可变类作为Map的key,可以避免实现hashCode()和equals()。

(6)尽可能使用Collections工具类,或者获取只读、同步或空的集合,而非编写自己的实现。它将会提供代码重用性,它有着更好的稳定性和可维护性。

相关主题