Java面试必备:吊打面试官的21道面试题
前面有一期讲过一些Java的面试题,这一期我们再讲几道题,会了这几道题,你基本上可以吊打你的Java面试官了。
言归正传。
第1道题是List和Set的区别是什么?
List可以包含重复的元素,而Set只能包含不同的元素。
第2道题是HashSet和TreeSet的区别。
HashSet元素没有顺序排列,TreeSet元素是从小到大的顺序排列的。
第3道题是Set和Map的区别是什么?
Set只能包含值,而Map可以包含Key和Value作为一个条目。
第4道题是HashSet和HashMap的区别。
HashSet只包含了值,HashMap包含Key和Value作为一个条目。这点跟上题类似。
HashSet可以迭代访问,而HashMap需要转成Set以后才能迭代访问。
第5道题是HashMap和TreeMap的区别是什么?
HashMap不维护元素的顺序, 而TreeMap维护元素从小到大的顺序。
第6题是Collection和Collections的区别。
Collection是一个接口,Collections是一个类。Collection接口派生出集合类如List, Set, Queue, 它提供了基本的数据结构。
Collections用来对Collection元素进行排序,同步操作。
第7道题是properties文件的作用是什么?
改变properties文件,不需要重新编译Java的代码,这样使得你的应用程序非常容易配置管理。
第8道题是hashCode方法是干什么的?
hashCode的方法主要是返回一个整形的数值,理论上讲我们想力求做到一个对象有一个独一无二的哈希代码, 但是有时候不可避免的不同的两个对象,有可能会有相同的哈希代码。
第9道题是为什么要重写equals方法?
equals方法主要是用来检查两个对象是否相同,而检查两个对象是否相同,我们需要检查对象的属性,这个时候我们就需要重写equals方法。
第10道题通用模板的作用是什么?
如果我们使用通用的类,我们就不需要进行类型的转化。在编译的时候是类型安全和编译可通过的。
第11题是哈希冲突指是什么?在Java中如何避免?
如果两个不同的键对应着相同的哈希值,这种情况我们称之为哈希冲突。解决哈希冲突现象,需要把这两个具有相同哈希值的条目放在一个单元里面,这个单元可能是一个列表。
第12题是poll和remove方法的区别。
这两个方法都是从队列中取出一个对象,但是poll失败的话会返回空值,而remove失败的话会扔出一个异常。
第13题是linkedHashMap和priorityQueue的区别是什么?
priorityQueue会保证最小的或者最大的元素在队列的前头,但是linkedHashMap只会保证元素的插入顺序。
当你用迭代方法儿遍历priorityQueue的时候,不能够保证元素的访问顺序。但是当你用迭代的方法遍历linkedHashMap的时候,会保证按照元素的插入顺序访问。
第14题是你知道几种给一个集合对象排序的方法。
你可以使用有排序功能的集合类,像treeSet,treeMap, 或者你可以用Collections.Sort方法来对一个集合对象进行排序。
第15道题是有没有可能两个不相同的对象有相同的哈希代码。
答案是yes,两个不相同的对象有可能有相同的哈希代码。
这就是为什么在HashMap中会存在哈希冲突。
比较有趣的现象是,在哈希代码的协议中指明了如果两个对象相同那么他们一定会有相同的哈希代码,反之,则不一定。
第16道题是我们能不能用随机数实现哈希代码方法?
答案是no. 因为一个对象的哈希代码,应该总是相同的。
第17题是为什么你需要重写哈希代码方法?什么时候你需要重写equals方法?
因为equals协议要求对这两个方法同时进行重写,还有一些容器类像hashMap都依赖于这两个方法。
第18道题是什么是字典类?
字典类是用来维护存储key-value 条目的工具。
第19道题是我可以写自己的容器类并使用forEach循环吗?
是的,你可以。
如果想支持forEach 循环的话,你需要实现可迭代接口。
第20题是Java中如何打印数组?
你可以使用Arrays.toString方法,或者Arrays.deepToString方法来打印数组。
第21题在哈希类表中缺省的加载因子大小是多少?
缺省的加载因子大小是0.75。假设一个哈希表的初始容量是16的话,乘以0.75就是12了,那么12就是哈希表缺省的容量。