美文网首页Java升级打怪之旅@IT·互联网Java学习笔记
那些年我们追过的Java面试之集合类、异常处理

那些年我们追过的Java面试之集合类、异常处理

作者: 万丰路甲一号 | 来源:发表于2017-05-09 17:34 被阅读314次

    标签:Java面试、集合类、异常处理 2017/05/09 09:36

    三.Java集合类

    10.Java集合类框架的基本接口都有哪些

    Java集合类里面最基本的接口有:

    Collection:代表一组对象,每一个对象都有它的子元素;

    set:不包含重复元素的collection;

    List:可以包含重复元素的有顺序的collection;

    Map:包含Key和Value的,key不能重复。

    11.迭代器

    Iterator接口提供了很多对集合元素迭代的方法,每个集合类都包含了可以返回迭代器实例的迭代方法,迭代器可以在迭代的过程中删除底层集合的元素。

    Iterator与ListIterator的区别:

    Iterator可以遍历List和Set集合,但是ListIterator只能遍历list

    Iterator只能前向遍历,但是ListIterator可以双向遍历

    ListIterator实现了Iterator接口,并且包含了其他功能:增加元素,替换元素,获取前后索引等。

    12.Java中HashMap的工作原理

    Java中的HashMap是以键值对(Key-Value)的方式进行存储,HashMap需要一个Hash函数,

    一个HashCode,一个是equals函数,当调用put()方法时,HashMap会计算key的hash值,然后把键值对存储在集合中合适的索引上,如果key的hash值已经存在了,value会被更新。

    一般需要重写HashCode方法和equals方法。

    HashMap与HashTable区别联系:

    HashMap允许键和值都为null,而HashTable不允许这样;

    hashtable是同步的,而HashMap不是,HashMap更适合于单线程环境。

    13.数组(Array)和列表(ArrayList)、LinkedList的区别?

    前者可以包含基本类型和对象类型,ArrayList只能包含对象类型;

    前者大小是固定的,而后者是变化的,

    ArrayList提供了更多的方法和特性,如:addAll().removeAll();iterator()

    ArrayList基于索引的数据接口,它的底层是数组实现,可以0(1)时间复杂度进行随机访问;而Linkedlist是基于元素列表的形式存储的数据,时间复杂度为0(n)表示,LinkedList增减删查操作更快,但是其LinkedList更占内存,因为LinkedList为每一个节点存储了两个引用(前后两个元素)。

    O(大O符号)就是衡量数组元素增加带来的复杂度,比如有序数组(TreeSet)查找一个元素的复杂度是O(log n),但是要插入一个新元素的复杂度是0(n),而无序数组(HashSet)的查找一元素复杂度O(n),插入一个远胜于复杂度是O(1)。

    14. Comparable和Comparator接口时干什么的?列出他们的区别

    Java提供了含有compareTo方法的comparable接口,这个方法可以给两个对象排序,返回负数,0,证书分别代表小于,等于,大于已经存在的对象。

    同理,Java也提供了一个包含compare()和equals()两个函数的Comparator接口,compare()与compareTo()方法相似,equals()方法需要一个对象作为参数,它用来决定输入参数是否和 comparator 相等。只有当输入参数也是一个 comparator 并且输入参数和当前 comparator 的排序结果是相同的时候,这个方法才返回 true。

    15.enumeration接口与Iterator接口的区别在哪?

    Enumeration接口比Iterator速率的2倍,同时占用更少的空间,但是Iterator的线程比Enumeration安全,因为其他线程不能修改正在被Iterator遍历的元素,同时他也允许删除底层集合中的元素,这对Enumeration是不能的。

    额外福利:jvm内存分区

    四:异常处理

    16.Java中的两种异常类型是什么?他们有什么区别?

    受检查和不受检查的异常,受检查的异常必须使用throws抛出异常,还可以再分为Exception用于用户可以 捕获的异常程序和Error不可捕获的异常。

    异常处理的时候 ,无论是否抛出异常,finally代码总会被执行,finally块主要用来释放资源。

    异常处理之后,Exception对象会在下一个垃圾回收过程中被回收掉。

    finalized()方法是Object类的一个protect方法,是在对象被垃圾回收之前由JVM调用的。

    请尊重原创,转载请联系,前行路上的你并不孤单,小蚁君每天都会陪着你......

    相关文章

      网友评论

      本文标题:那些年我们追过的Java面试之集合类、异常处理

      本文链接:https://www.haomeiwen.com/subject/feritxtx.html