如果您曾经准备过Java 程序员 职位的面试或参加过任何考试(不一定是编程)以获得证书,那么您很可能已经注意到他们提出的问题非常具体。其中许多让您思考语言的架构,有些是为深入了解而设计的。还有一些更像是谜题或关注细微差别,如果不练习就很难感觉到。在本文中,开发人员Saraans Singh提供了几个此类 Java 问题。当然有答案。 1. 如果将 return 或 System.exit() 语句放在 try/catch 块中会发生什么? 这是Java中一个非常流行的“追赶”问题。诀窍在于,许多程序员相信该块
finally
在任何情况下都会被执行。return
这个问题通过在块中放置语句try/catch
或从try/catch
语句块调用来挑战这个概念System.exit ()
。 这个棘手问题的答案是:当语句放入块中时,该块finally
将被执行,而从语句块中调用时,该块将不会被执行。 2. Java支持多重继承吗? 这是一个非常棘手的问题。面试官常说:如果C++可以支持直接多重继承,为什么Java不能? 答案比看起来要复杂一些,因为 Java 支持多类型继承,因为其中的接口可以扩展其他接口。但Java语言不支持实现的多重继承。 3、父类中的方法抛出异常的情况下,是否可以被抛出异常的方法覆盖? 另一个棘手的问题与重载和覆盖的概念有关。 答案:您可以在重写的方法中安全地抛出父类异常,但不能对类型为受检查的异常执行相同的操作。 4、如何保证线程能够访问资源而不发生死锁? 如果您不太擅长编写多线程代码,那么这个问题对您来说将非常棘手。即使对于没有处理过死锁和竞争条件的经验丰富的程序员来说,这也可能具有挑战性。这里的技巧在于顺序:可以通过按照与获取资源的相反顺序释放资源来防止死锁。 5.类和Java语言中的类有什么区别?return
try/catch
try/catch
System.exit ()
NullPointerException
RuntimeException
NullPointerException – RuntimeException
Exception
N
N
StringBuffer
StringBuilder
这是一个关于 Java 语言的经典问题,一些开发人员认为很棘手,而另一些开发人员则认为非常简单。该类StringBuilder
是在 JDK 1.5 中引入的,它们之间的唯一区别是该类的方法StringBuffer
(例如length()
或capacity()
)append()
是同步的,而该类的相应方法StringBuilder
则不是。由于这种根本区别,字符串连接StringBuilder
速度更快StringBuffer
。事实上,StringBuffer
不建议使用,因为在 99% 的用例中,字符串连接是在同一个线程上完成的。 6. 表达式 1.0/0.0 返回什么?会抛出异常或者导致编译错误吗? 另一个关于班级的棘手问题Double
。尽管 Java 开发人员知道简单数据类型 double 和 class Double
,但在执行浮点运算时,他们并没有对Double.INFINITY
、NaN
以及-0.0
管理与它们相关的算术计算的规则给予足够的关注。 这个问题的答案很简单:ArithmeticException
不会抛出异常,会返回值Double.INFINITY
。 7. 如果尝试将HashMap
一个键对象插入到一个已经存在的键对象中,会发生什么情况? 这个棘手的问题是另一个常见问题的一部分:它们HashMap
在 Java 中如何工作?HashMap
是有关 Java 语言的令人困惑和棘手问题的热门主题。 答案是,如果您尝试将密钥重新插入到 中HashMap
,它将替换旧的密钥,因为该类HashMap
不允许重复的密钥。相同的密钥意味着相同的哈希码,因此它最终会出现在哈希段中的相同位置。基于Quora 的材料
GO TO FULL VERSION