无内鬼来点干货,银行java开发面试题(含答案) 您所在的位置:网站首页 java面试要求机试一般有什么 无内鬼来点干货,银行java开发面试题(含答案)

无内鬼来点干货,银行java开发面试题(含答案)

2024-07-10 19:36| 来源: 网络整理| 查看: 265

目录 前言 1、在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? 2、不重写Bean的hashCode()方法是否会对性能带来影响? 3、对于一个不可修改的类,它的每个对象是不是都必须声明成final的? 4、String的substring()方法内部是如何实现的? 5、你在写存储过程或者在Java里调用存储过程的时候如何来处理错误情况? 6、Java 中新的 Lock 接口相对于同步代码块(synchronized block)有什么优势? 7、Executor.submit()和Executor.execute()这两个方法有什么区别? 8、能否写一段用Java 4或5来遍历一个HashMap的代码? 9、你在什么时候会重写hashCode()和equals()方法? 10、如果不重写hashCode方法会有什么问题? 11、HashMap在调用get()方法的时候equals()和hashCode()方法都起了什么样的作用? 12、在Java中如何避免死锁? 13、说说ClassLoader.loadClass()与Class.forName()的区别

前言

这篇文章主要介绍了银行java开发笔试面试题13道,小编昨天晚上在网上刷到的,觉得挺不错的(最主要还是有答案),现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

在这里插入图片描述

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

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

2、不重写Bean的hashCode()方法是否会对性能带来影响?

这个问题非常好,每个人可能都会有自己的体会。按照我掌握的知识来说,如果一个计算hash的方法写得不好,直接的影响是,当向HashMap中添加元素的时候会更频繁地造成冲突,因此最终增加了耗时。但是自从Java 8开始,这种影响不再像前几个版本那样显著了,因为当冲突的发生超出了一定的限度之后,链表类的实现将会被替换成二叉树(binary tree)实现,这时你仍可以得到O(logN)的开销,优于链表类的O(n)。

3、对于一个不可修改的类,它的每个对象是不是都必须声明成final的?

不尽然,因为你可以通过将成员声明成非final且private,并且不要在除了构造函数的其他地方来修改它。不要为它们提供setter方法,同时不会通过任何函数泄露出对此成员的引用。需要记住的是,把对象声明成final仅仅保证了它不会被重新赋上另外一个值,你仍然可以通过此引用来修改引用对象的属性。这一点是关键,面试官通常喜欢听到你强调这一点。

4、String的substring()方法内部是如何实现的?

又一个Java面试的好问题,你应该答出“substring方法通过原字符串创建了一个新的对象”,否则你的回答肯定是不能令人满意的。这个问题也经常被拿来测试应聘者对于substring()可能带来的内存泄漏风险是否有所了解。直到Java 1.7版本之前,substring会保存一份原字符串的字符数组的引用,这意味着,如果你从1GB大小的字符串里截取了5个字符,而这5个字符也会阻止那1GB内存被回收,因为这个引用是强引用。

5、你在写存储过程或者在Java里调用存储过程的时候如何来处理错误情况?

这是个很棘手的Java面试题,答案也并不固定。我的答案是



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有