如果您曾经准备过Java 程序员职位的面试或通过了任何认证考试(不一定是关于编程的),那么您可能已经注意到那里提出的问题非常具体。其中许多迫使您考虑语言的设计。有些旨在探索您的知识深度。有些问题看起来比其他任何问题都更像是谜题,而其他问题则涉及语言的细微差别,如果不练习就很难理解。在本文中,开发人员Sarans Sing提出了一些有关 Java 的此类问题。当然有答案。
1. 如果我在 try/catch 块中放入 return 语句或 System.exit() 会发生什么情况? 这是一个非常流行且微妙的 Java 问题。诀窍在于许多程序员认为该

finally
块始终会执行。return
通过在块中放置语句或从块内部try/catch
调用,问题对这种信念产生了怀疑。 这个棘手问题的答案是:当一个语句被放入一个块中时,该块将被执行,但当从一个块中被调用时将不会被执行。 2、Java支持多重继承吗? 这是一个非常棘手的问题。面试官经常会问,“如果 C++ 支持直接多重继承,那为什么 Java 不能呢?” 答案_System.exit()
try/catch
finally
return
try/catch
System.exit()
try/catch
比看起来要复杂一点,因为 Java 支持多类型继承。毕竟,Java 接口可以扩展其他接口。也就是说,Java 不支持实现的多重继承。 3.如果父类中的方法抛出NullPointerException
s,是否可以用抛出s的方法重写RuntimeException
? 这是另一个与重载和覆盖相关的棘手问题。 答案:重写的方法可以安全地抛出 的NullPointerException
父类 — RuntimeException,但您不能对 .checked 异常类型做同样的事情Exception
。 4、如何保证N
线程访问N
资源时不会出现死锁? 如果编写多线程代码不是您的强项,那么您可能真的会被这个问题绊倒。即使对于没有遇到过死锁和竞争条件的有经验的程序员来说,这也可能很困难。 这里的全部技巧是顺序:您可以通过以与获取资源相反的顺序释放资源来防止死锁。 5.Java中的类和类有什么区别?StringBuffer
StringBuilder
这是一个经典的 Java 语言问题,一些开发人员发现它很棘手,而另一些开发人员则认为它非常简单。该类StringBuilder
出现在 JDK 1.5 中。这些类之间的唯一区别是StringBuffer
的方法,如length()
、capacity()
和append()
,是同步的,而相应的方法在StringBuilder
不是。这一根本区别意味着字符串连接 withStringBuilder
比 with更快StringBuffer
。StringBuffer
实际上,不推荐 使用,因为字符串连接 99% 的时间是在同一个线程上执行的。6. 计算表达式 1.0/0.0 的结果是什么?它会产生异常或编译错误吗? 这是关于课程的另一个棘手问题。Java 开发人员知道基本双精度数据类型和类的存在,但是在执行浮点运算时,他们没有足够注意, , ,以及管理相关算术计算的规则。 这个问题的答案很简单:一个
Double
Double
Double.POSITIVE_INFINITY
Double.NEGATIVE_INFINITY
NaN
-0.0
ArithmeticException
不会被抛出;表达式的计算结果为Double.POSITIVE_INFINITY
。 7. 如果您尝试将密钥插入到HashMap
已经包含该密钥的 a 中,会发生什么情况? 这个棘手的问题是另一个常见问题的一部分:HashMap
在 Java 中如何工作?HashMap
是有关 Java 的令人困惑和棘手问题的流行来源。 答案如下:如果您尝试在 a 中重新插入一个键HashMap
,旧键将被替换,因为该类HashMap
不允许重复键。并且相同的密钥将获得相同的哈希码,这意味着它将最终位于哈希桶中的相同位置。基于Quora资料
GO TO FULL VERSION