加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 交互 > 正文

来自投资银行的20个Java面试题

发布时间:2020-12-25 19:54:05 所属栏目:交互 来源:网络整理
导读:副标题#e# 问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? ? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的。比如,你在一个线程里初始化了一个HashMap然后在多个其他线程里对其进行读取,这肯

另外,你同样要保证你的类不要通过任何方法暴露成员,特别是那些可修改类型的成员。同样地,当你的方法接收客户类传入的可修改对象的话,你应该使用一个复制的对象来防止客户代码来修改这个刚传入的可修改类。比如,传入java.util.Date对象的话,你应该自己使用clone()方法来获得一个副本。

当你通过类函数返回一个可修改对象的时候,你也要采取类似的防护措施,返回一个类成功的副本,防止客户代码通过此引用修改了成员对象的属性。千万不要直接把你的可修改成员直接返回给客户代码。

问题十八:如何在不使用任何分析工具的情况下用最简单的方式计算某个方法的执行所花费的时间?

?

在执行此方法之前和之后获取一个系统时间,取这两个时间的差值,即可得到此方法所花费的时间。

需要注意的是,如果执行此方法花费的时间非常短,那么得到的时间值有可能是0ms。这时你可以在一个计算量比较大的方法上试一下效果。

long start=System.currentTimeMillis();

method();

long end=System.currentTimeMillis();

System.out.println("Time taken for execution is "+(end-start));

问题十九:当你要把某个类作为HashMap的key使用的话,你需要重写这个类的哪两个方法?

?

为了使类可以在HashMap或Hashtable中作为key使用,必须要实现这个类自己的equals()和hashCode()方法。具体请参考问题十四。

问题二十:你如何阻止客户代码直接初始化你的类的构造方法?例如,你有一个名为Cache的接口和两个具体的实现类MemoryCache和DiskCache,你如何保证这两个类禁止客户代码用new关键字来获取它们的实例?

我把这最后一个问题留给你做练习吧,你可以在我给出答案之前好好思索一下。我确信你能够找到正确的方法的,因为这是将类的实现掌控在自己手中的一个重要的方法,同时也能为以后的维护提供巨大的好处。

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读