首页 > 编程知识 正文

高级java面试题,java初级程序员面试题

时间:2023-05-03 14:40:36 阅读:29358 作者:430

这是我收集的10个高级Java面试问题的清单。 这些问题主要来自Java的核心部分,不涉及Java EE相关问题。 你可能知道这些棘手的Java问题的答案,或者觉得不足以挑战你的Java知识,但这些问题都很容易在各种Java面试中被问到,包括我的朋友和同事在内的很多程序员都很难回答

1 .为什么等待和通知是在Object类而不是Thread中声明的?

是个麻烦的Java问题。 如果Java编程语言不是你设计的,你怎么能回答这个问题? 对Java编程的常识和深刻理解有助于回答关于这些棘手的Java核心的面试问题。

为什么wait、notify和notifyAll是在Object类而不是Thread类中定义的

这是有名的Java面试问题,如果招募有2~4年经验的高级Java开发人员进行面试,就有可能发生冲突。

这个问题的幸运之处在于,它反映了面试者了解等待通知的机制,以及他对该主题的理解是否明确。 这个问题也可能有多个答案,就像为什么Java不支持多继承,或者为什么字符串在Java中是final一样。

每个人都可以说几个原因,为什么要在Object类中定义wait和notify方法。 从我的面试经验来看,wait和nofity仍然是大多数Java程序员最困惑的。 特别是2到3年的开发人员,如果要求使用wait和notify,就会感到困惑。 因此,在参加Java面试时,请充分了解wait和notify的工作原理,使用wait轻松编写代码,并通过实现生产者-消费者问题和阻止队列的机制等了解通知的工作原理。

如果您还没有读过等待和通知必须从同步块或方法中调用的原因,以及Java的wait、sleep和yield方法之间的区别,我觉得很有趣。 为什么等待、通告和通告全部属于对象类? 为什么不应该在Thread班? 以下是我认为有意义的一些想法。

1 ) wait和notify是Java两个线程之间的通信机制,而不仅仅是常规方法和同步工具,这一点很重要。 对于语言设计者来说,如果无法使用Java关键字(如synchronized )来通信此机制,并且需要确保此机制可用于每个对象,则Object类将声明正确的位置。 记住同步和等待通知是两个不同的区域,不要认为它们是相同的或相关的。 同步提供互相排他性,确保Java类线程的安全。 wait和notify是两个线程之间的通信机制。

2 )可以按对象上锁。 这是在Object类而不是Thread类中声明wait和notify的另一个原因。

3 )在Java中,线程必须锁定并等待锁定,才能进入代码的临界区域。 他们不知道哪个线程有锁,只是知道锁在某个线程上。 然后,您需要知道哪个线程位于同步块中,等待获取锁定,而不是请求解除锁定。

4 ) Java是基于Hoare的监视器思想(http://en.wikipedia.org/wiki/. )。 在Java中,所有对象都有监视器。

线程在监视器上等待,执行等待需要两个参数。

1个线程

一台监视器(任何对象)

在Java设计中,不能指定线程。 始终运行当前代码的线程。 但是我们可以指定监视器。 这是我们所谓的等待对象。 这是一个很好的设计。 因为如果允许其他线程在所需的监视器上等待,则会导致“入侵”,从而困扰并行程序的设计。 请注意,Java将放弃在执行另一个线程时进入的所有操作,如stop方法。

为什么Java不支持多重继承?

我发现很难回答这个Java的核心问题。 要说为什么,那是因为你的回答可能不会让面试官满意。 面试者往往在寻找答案中的关键点。 提到这些重点,面试官会很高兴的。 在Java中回答这些棘手问题的关键是准备相关主题以解决后续的各种可能问题。

这是一个非常经典的问题,和为什么String在Java中不变很相似; 这两个问题的相似之处主要由Java创作者的设计决策决定。

为什么Java不支持多重继承,可能有以下两点:

1 )第一个原因是钻石周围

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。