10 个最难的 Java 面试问题。
具有挑战性的 Java 问题和答案 什么是具有挑战性的
Java面试问题?为什么人们在去面试之前要研究它们?嗯,人们自然会为困难的问题做准备,即使他们不希望被
Java提出困难的问题。
为困难和棘手的问题做好准备将增强您的信心并帮助您回答任何其他问题。另一方面,如果你没有为困难的问题做好准备,那么他们在面试或笔试中的出现会给你带来不愉快的惊喜。
但是什么是困难问题的定义并不通用;同一个问题对于一个程序员来说可能很困难,而对于另一个程序员来说可能很简单。
因此,在参加Java面试之前,最好准备好您个人的难题清单。在这篇文章中,我将与您分享我自己列出的十个具有挑战性的问题,可能会对您有所帮助。
10 个困难的 Java 面试问题及其答案 正如我已经写过的,这里列出了 10 个困难的问题以及您在面试中可能遇到的技巧。这些问题仅涉及
Java内核,不影响
J2EE。正如我所说,这些问题对您来说可能很简单,而且您已经知道答案。但尽管如此,他们在采访中遇到了这些问题,而我个人也认识一些无法回答这些问题的人。
为什么wait()和notify()方法声明在Object类中而不是Thread类中? 一方面,
Java语言不是你开发的,你怎么知道为什么要这样做而不是其他方式呢?但如果您运用常识和深入的
Java编程知识,您可以轻松找到答案。阅读这篇文章 -
为什么wait()和notification()在Object类中声明,而不是Thread。
为什么Java不支持多重继承? 这个问题的难点主要在于你的答案可能无法令提问者满意。大多数情况下,需要具体的例子,如果你列出来,面试你的人会很高兴。再次,我将给您一个我自己的博客的链接 -
为什么Java不支持多重继承来回答这个问题。
为什么Java不支持运算符重载?同一类别中的 另一个
Java难题。
C++支持运算符重载,为什么
Java不?人们可能会给你这个和类似的论点,有时甚至说
+运算符在
Java中重载用于合并字符串,但不要被愚弄。阅读
为什么 Java 不支持运算符重载,以获得这个棘手问题的详细答案。
为什么 Java 中的字符串是不可变的? 我最喜欢的面试问题,它既困难又棘手,但也非常有用。您可能还会被问到为什么
在Java中字符串被声明为
final。请阅读此处
为什么 Java 中的字符串是最终且不可变的。
为什么在 Java 中字符数组比字符串更好地存储密码? 还有一个关于字符串的棘手问题,相信我,很少有
Java程序员能够回答它。这是一个关于
Java核心的非常困难的问题,需要对
String类有充分的了解才能回答。读
为什么字符数组比字符串更好地存储密码以找出答案。
如何使用双重检查锁定在 Java 中创建线程安全的单例? 表达这个问题的另一种方式是什么是
线程安全单例以及如何创建一个。
在Java 5之前,创建线程安全单例的唯一方法是通过双重锁定,否则如果多个线程尝试同时访问单例,它们将各自获得不同的实例。从
Java 5 开始,
使用 Enum 解决了这个问题。但如果面试你的人坚持要给他写这段代码。只是不要忘记将其设置为
volatile。更多详细信息,请参见
Java 中单例的 10 个问题
编写一个产生死锁的 Java 程序,并修复它。 这是经典但又困难的问题之一,其答案需要编写多线程应用程序的经验。阅读
如何在 Java 中创建或防止死锁
如果您的可序列化类包含非可序列化字段,会发生什么情况。如何修复它? 任何序列化此类类的尝试都将抛出
NotSerializedException,解决此问题的最简单方法是声明此类字段
瞬态。如果您需要更多详细信息, 请阅读
十大序列化问题。
为什么Java中的同步方法会调用wait和notify? 还有一个关于
Java核心的问题。它们是从
同步方法或同步块调用的,因为
wait()和
notification()需要调用它们的对象上的互斥体。好吧,您可以在这里阅读完整的答案 -
为什么需要在同步上下文中调用 wait() 和 notification()。
Java 中可以重写静态方法吗?如果我在后代类中创建同名的方法,会导致编译错误吗? 不,您不能重写
Java 中的静态方法。但是,如果在后代类中创建与祖先类同名的静态方法,则不会导致编译错误。这称为“方法隐藏”。您可以在这里阅读更详细的答案:
can you override a static method in Java这是我的
Java 难题列表
并回答他们。对于经验丰富的程序员来说,有些问题看起来并不那么复杂,但其中包含技巧,对于新手程序员来说回答起来并不那么容易。如果您遇到任何
Java难题,请与我们分享。
来源文章
GO TO FULL VERSION