来自银行的10个Java面试题

本文列举了银行Java面试中常见的10个问题,涉及多线程环境下的HashMap使用、不重写Bean的hashCode方法对性能的影响、不可修改类的final变量、String.substring的实现、异常处理、ExecutorService的方法区别、工厂与抽象工厂模式、单例模式、HashMap遍历以及重写hashCode和equals方法的场景。这些问题深入探讨了Java开发的关键概念和技术,有助于面试者准备面试。
摘要由CSDN通过智能技术生成

问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get方法会产生无限循环?

HashMap本身没有什么问题,有没有问题取决于你是如何使用它的。比如,你在一个线程里初始化了一个HashMap然后在多个其他线程里对其进行读取,这肯定没有任何问题。有个例子就是使用HashMap来存储系统配置项。当有多于一个线程对HashMap进行修改操作的时候才会真正产生问题,比如增加、删除、更新键值对的时候。因为put操作可以造成重新分配存储大小(re-sizeing)的动作,因此有可能造成无限循环的发生,所以这时需要使用Hashtable或者ConcurrentHashMap,而后者更优。

问题二:不重写Bean的hashCode方法是否会对性能带来影响?

这个问题非常好,每个人可能都会有自己的体会。按照我掌握的知识来说,如果一个计算hash的方法写得不好,直接的影响是,当向HashMap中添加元素的时候会更频繁地造成冲突,因此最终增加了耗时。但是自从Java8开始,这种影响不再像前几个版本那样显著了,因为当冲突的发生超出了一定的限度之后,链表类的实现将会被替换成二叉树(binarytree)实现,这时你仍可以得到O(logN)的开销,优于链表类的O(n)。对于新手小白想更轻松的学好Java提升,Java架构,web开发、大数据,数据分析,人工智能等技术,这里给大家分享系统教学资源,扩列下我尉(同英):1253431195【教程/工具/方法/解疑】

问题三:对于一个不可修改的类,它的每个对象是不是都必须声明成fina

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值