经产观察
IT资讯
IT产业动态
业界
网站运营
站长资讯
互联网
国际互联网新闻
国内互联网新闻
通信行业
通信设备
通信运营商
消费电子
数码
家电
网站运营

国外投资银行最常问的10个Java面试问题!

作者:habao 来源: 日期:2018-4-1 6:27:23 人气:

  【IT168 资讯】现在的银行早已经有了自己成熟稳定的信息化团队,自然也成为了不少技术人员求职的好去处。这篇来自国外的面试文章清楚表明很多Java开发人员乐于向花旗银行、巴克莱银行,信贷银行提交申请,但很多人可能还不清楚面试时可能会被问到哪些问题。

  本文的作者分享了投资银行的一些常见面试问题,主要针对3年以上工作经验的Java开发人员,这些问题不适用于新手或具有1 - 2年Java经验的人员。通常情况下,银行式不会雇佣经验较少的开发者。并且,银行内还有不少实习生是名牌大学的研究生。

  答:没有什么方法是错误的——这取决于程序员如何使用它。例如,如果只使用一个线程初始化HashMap,并且所程都只能从中读取,那么这非常好。其中一个例子是包含配置属性的Map。当不止一个线程正在更新HashMap,即添加,更改或删除任何键值对时,真正的问题就开始了。

  由于put()操作可能会导致重新调整大小,从而导致无限循环,这就是为什么要使用Hashtable或ConcurrentHashMap(后者更好)。

  答案:这是一个很好的问题,几乎会问所有面试者。一个糟糕的hashCode函数会导致HashMap中频繁的冲突,最终增加向HashMap中添加对象的时间。

  然而,从Java 8开始,冲突不会像早期版本那样影响性能。因为在阈值之后,链接列表将被二叉树替换,这在最坏的情况下时间复杂度还可以达到O(log N)。

  这个问题有时难以回答,是因为许多开发人员只知道equals 和hashcode契约,并没有考虑它们的性能影响。

  答:不必要。如上所述,可以不是final而是 private - 不是在构造函数中修改它们来实现相同的功能,不要为它们提供setter方法。如果是一个可变对象,永远不要泄露对该的任何引用。

  请记住,变量属性设为final仅确保它不会被重新分配不同的值,但仍可以更改该引用变量所指向的对象的各个属性。这是面试官希望从候选人那里听到的关键点之一。提到这一点,就可以得到一些分数。

  答:许多开发人员知道答案:“子字符过获取原始字符串的一部分,从原字符串中创建一个新对象。”

  但我认为这个答案是不够的。这个问题的目的在于看看开发人员是否熟悉子串可能产生的内存泄漏风险。

  在Java 1.7之前,一个保存了原始字符数组引用的子字符串,意味着5个字符长的子字符串也可以通过保留强引来垃圾收集中的1GB字符数组。

  这个问题在Java 1.7中得到了修复,原来的字符数组不再被引用,但是这种改变也使得创建子字符串在时间上成本更高。早些时候,它在O(1)范围内,在Java 7最坏的情况下可能是O(N)。

  答:这个核心Java问题是前一个问题的后续,希望面试者使用双重检查锁定模式编写Java单例,请记住使用volatile变量来使Singleton线程安全。

  以下是使用Double-Checked Locking模式单例模式在多线程下安全性的代码:

  答:这是Java面试题中几乎对所有人的问题。如果某个操作失败,存储过程应该返回一个错误代码,但如果存储过程本身失败,那么捕获SQLException是唯一的选择。

  这个Java面试问题的答案是前者返回一个Future对象,它可以用来从worker线程中查找结果。查看异常处理时有区别。如果任务抛出一个异常(如果是在执行时提交的),这个异常将进入未捕获的异常处理程序(当没有显式提供异常时,默认只会将堆栈打印到System.err)。

  如果在提交任何抛出异常时提交了任务,则检查异常与否,这是任务返回状态的一部分。对于已提交并以异常终止的任务,Future.get()将重新抛出此异常,并包装在ExecutionException中。

  这个问题需要程序员了解使用Enums编写单例和使用双重检查锁定的一些细节,这是此Java面试问题的目的。

  答:这是一个棘手问题,程序员可以设法使用while和for循环。但实际上,有几种方法可以遍历Java中的所有Map。

  第二种方法涉及使用entrySet()并遍历它们,方法是使用for循环或使用Iterator.hasNext()方法。这个方法更好。因为在迭代过程中key和value对象都可用,并且不需要调用get()方法来检索值,这可以提供O(N)性能。

  这就是投资银行常见的Java面试问题。如果你正在寻找Java开发人员相关岗位,那么应该多了解Java并发性,多线程,集合,JVM内部结构,垃圾回收以及如何提高Java应用程序的性能。

  

推荐文章