java面试题高级_Java高级面试题整理(附答案)[通俗易懂]

java面试题高级_Java高级面试题整理(附答案)[通俗易懂]javajava8java开发Java高级面试题整理(附答案)这是我收集的10道高级Java面试问题列表。这些问题主要来自Java核心部分,不涉及JavaEE相关问题。你可能知道这些棘手的Java问题的答案,或者觉得这些不足以挑战你的Java知识,但这些问题都是容易在各种Java面试中被问到的,而且包括我的朋友和同事在内的许多程序员都觉得很难回答。1…

大家好,又见面了,我是你们的朋友全栈君。

java

java8

java开发

Java高级面试题整理(附答案)

CgpOIF5EAWWAQ0y_AAcB-fDz9P0878.png

这是我收集的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 中不支持多继承或者为什么 String 在 Java 中是 final 的问题一样,这个问题也可能有多个答案。

为什么在 Object 类中定义 wait 和 notify 方法,每个人都能说出一些理由。 从我的面试经验来看, wait 和 nofity 仍然是大多数Java 程序员最困惑的,特别是2到3年的开发人员,如果他们要求使用 wait 和 notify, 他们会很困惑。因此,如果你去参加 Java 面试,请确保对 wait 和 notify 机制有充分的了解,并且可以轻松地使用 wait 来编写代码,并通过生产者-消费者问题或实现阻塞队列等了解通知的机制。

为什么等待和通知需要从同步块或方法中调用, 以及 Java 中的 wait,sleep 和 yield 方法之间的差异,如果你还没有读过,你会觉得有趣。为何 wait,notify 和 notifyAll 属于 Object 类? 为什么它们不应该在 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中,所有对象都有一个监视器。

线程在监视器上等待,为执行等待,我们需要2个参数:

一个线程

一个监视器(任何对象)

在 Java 设计中,线程不能被指定,它总是运行当前代码的线程。但是,我们可以指定监视器(这是我们称之为等待的对象)。这是一个很好的设计,因为如果我们可以让任何其他线程在所需的监视器上等待,这将导致“入侵”,导致在设计并发程序时会遇到困难。请记住,在 Java 中,所有在另一个线程的执行中侵入的操作都被弃用了(例如 stop 方法)。

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

我发现这个 Java 核心问题很难回答,因为你的答案可能不会让面试官满意,在大多数情况下,面试官正在寻找答案中的关键点,如果你提到这些关键点,面试官会很高兴。在 Java 中回答这种棘手问题的关键是准备好相关主题, 以应对后续的各种可能的问题。

这是非常经典的问题,与为什么 String 在 Java 中是不可变的很类似; 这两个问题之间的相似之处在于它们主要是由 Java 创作者的设计决策使然。

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

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

内容来源于网络,如有侵权请联系客服删除

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161238.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月18日 上午10:16
下一篇 2022年7月18日 上午10:36


相关推荐

  • 海量数据存储技术与解决方案[通俗易懂]

    海量数据存储难点:数据量过大,数据中什么情况都可能存在;软硬件要求高,系统资源占用率高;要求很高的处理方法和技巧。海量数据存储处理经验:一、选用优秀的数据库工具    现在的数据库工具厂家比较多,对海量数据的处理对所使用的数据库工具要求比较高,一般使用Oracle或者DB2,微软公司最近发布的SQLServer2005性能也不错。另外在BI领域:数据库,数据仓库,多维数据库,数据挖

    2022年4月14日
    56
  • kivy mysql,使用Kivy检索MySQL

    kivy mysql,使用Kivy检索MySQLIhaveaKivyco wheretheoutp Iwanttogetre withstringsr classRemoveS MyLayout

    2026年3月17日
    2
  • Java三元运算符返回结果的数据类型问题

    Java三元运算符返回结果的数据类型问题最近遇到了一个问题 使用三元运算符 condition a b 其中 a 为 int 类型 b 为 double 类型 但是返回的结果总是 double 类型 原因 Java 三元表达式有字符强转的功能 返回值类型为两个返回值中类型精度更高的的那个类型 在 java 中常见数据类型其范围从小到大 精度由低到高 byte

    2026年3月26日
    3
  • 在官网下载最新版Java

    在官网下载最新版Java在Oracle官网下载最新版Java1.进入oracle官网https://www.oracle.com2.点击下拉菜单中的java3.点击如图所示4.点击最新版的javase5.若要下载其他版本,则拉滚动条至最下方,点击如图所示6.各个版本的JavaSE都展示出来了,如图所示,这里下载JavaSE9为例7.勾选下方的AcceptLicenseAgreement,否…

    2022年7月7日
    43
  • 流程图绘制心得

    流程图绘制心得http www webjx com css divcss 9009 html 网页制作 Webjx 文章简介 一个哥们在 MSN 上告诉我 他们公司的交互设计师只产出流程图 并问我用什么标准评价流程图的好坏 他的说法把我彻底震了 这分工也太细了吧 也不知道该说他们那里这样是好还是不好 一个哥们在 MSN 上告诉我 他们公司的交互设计师只产出流程图 并

    2026年3月20日
    2
  • SIP服务器类型

    SIP服务器类型有一些不同类型的 SIP 服务器 根据你的应用 你可以使用它们其中的一种或所有类型来解决你的问题 OpenSIPS 可以作为代理服务器 重定向服务器 背靠背用户代理或者注册服务器 Theproxyserv 代理服务器 在 SIP 代理模式下 所有的 IP 消息都要经过 SIP 代理 这种行为在向诸如计费 billing 的过程中帮助很大 而且迄今为止 这也是一种最普遍的选择 但是它的缺点就是在会

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号