首页 课程 师资 教程 报名

2020年求职面试,Java经典面试题

  • 2020-04-21 14:28:43
  • 2141次 动力节点

   HashMap的实现原理

    1.HashMap概述:HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

    2.HashMap的数据结构:在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。

    当我们往Hashmap中put元素时,首先根据key的hashcode重新计算hash值,根绝hash值得到这个元素在数组中的位置(下标),如果该数组在该位置上已经存放了其他元素,那么在这个位置上的元素将以链表的形式存放,新加入的放在链头,最先加入的放入链尾.如果数组中该位置没有元素,就直接将该元素放到数组的该位置上.

    需要注意Jdk1.8中对HashMap的实现做了优化,当链表中的节点数据超过八个之后,该链表会转为红黑树来提高查询效率,从原来的O(n)到O(logn)

    你了解Fail-Fast机制吗?

    Fail-Fast即我们常说的快速失败,

    Fail-fast和Fail-safe有什么区别

    Iterator的fail-fast属性与当前的集合共同起作用,因此它不会受到集合中任何改动的影响。Java.util包中的所有集合类都被设计为fail->fast的,而java.util.concurrent中的集合类都为fail-safe的。当检测到正在遍历的集合的结构被改变时,Fail-fast迭代器抛出ConcurrentModificationException,而fail-safe迭代器从不抛出ConcurrentModificationException。

    SimpleDateFormat是线程安全的吗?

    非常不幸,DateFormat的所有实现,包括SimpleDateFormat都不是线程安全的,因此你不应该在多线程序中使用,除非是在对外线程安全的环境中使用,如将SimpleDateFormat限制在ThreadLocal中。如果你不这么做,在解析或者格式化日期的时候,可能会获取到一个不正确的结果。因此,从日期、时间处理的所有实践来说,我强力推荐joda-time库。

    如何格式化日期?

    Java中,可以使用SimpleDateFormat类或者joda-time库来格式日期。DateFormat类允许你使用多种流行的格式来格式化日期。参见答案中的示例代码,代码中演示了将日期格式化成不同的格式,如dd-MM-yyyy或ddMMyyyy。

    简单描述java异常体系

    相比没有人不了解异常体系,关于异常体系的更多信息可以见

    什么是异常链

    详情直接参见上面的白话异常机制,不做解释了。

    throw和throws的区别

    throw用于主动抛出java.lang.Throwable类的一个实例化对象,意思是说你可以通过关键字throw抛出一个Error或者一个Exception,如:thrownewIllegalArgumentException(“sizemustbemultipleof2″),

    而throws的作用是作为方法声明和签名的一部分,方法被抛出相应的异常以便调用者能处理。Java中,任何未处理的受检查异常强制在throws子句中声明。

    Java中,Serializable与Externalizable的区别

    Serializable接口是一个序列化Java类的接口,以便于它们可以在网络上传输或者可以将它们的状态保存在磁盘上,是JVM内嵌的默认序列化方式,成本高、脆弱而且不安全。Externalizable允许你控制整个序列化过程,指定特定的二进制格式,增加安全机制。

2020年求职面试,Java经典面试题

 以上就是动力节点java培训机构的小编针对“2020年求职面试,Java经典面试题”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交