专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 25道Java高级工程师面试题及答案

25道Java高级工程师面试题及答案

更新时间:2022-03-31 10:44:00 来源:动力节点 浏览19722次

1.为什么 Java 被称为“平台无关编程语言”?

Java 的设计考虑到了多功能性。它的应用程序可以在任何平台上运行,而无需程序员为每个单独的平台重写或重新编译数据。

2.什么是JVM?

JVM代表“Java虚拟机”,是一种能够执行Java字节码的进程虚拟机。每个 Java 源文件都被编译成一个字节码文件。JVM 使 Java 如此通用,因为当它执行字节码文件时,它知道任何底层硬件平台的特定指令长度和其他必要性。

3.什么是Spring?

在技​​术领域,Spring 是一个用于企业 Java 的开源开发框架。虽然 Spring 框架的核心功能与开发任何 Java 应用程序兼容,但存在用于在 Java EE(企业版)平台之上构建单独的 Web 应用程序的特殊扩展。

Spring 框架提倡一种 POJO(Plain Old Java Object)编程模型,这被认为是良好的编程实践,也使得 J2EE(Java 2 企业版)开发更易于使用。

4.JDK和JRE有什么区别?

Java 运行时环境 (JRE) 本质上是执行 Java 程序的 JVM。JRE 还包括浏览器插件。

Java 开发工具包 (JDK) 是用于 Java 的全功能软件开发工具包。除了允许用户开发、编译和执行 Java 应用程序的编译器和工具(如 JavaDoc 和 Java 调试器)之外,它还包括 JRE。

5.什么是Bean?

Bean 是构成应用程序主干的对象,由 Spring IoC 容器管理。Bean 是使用提供给容器的配置元数据创建的。XML 定义就是一个例子。

6.使用 Spring 有哪些好处?

以下是这个问题的一些可接受的答案:

轻的。Spring 框架的基本版本约为 2MB,这使得 Spring 在大小和透明度方面都很轻巧。

控制反转 (IoC)。Spring 使用 IoC 的技术来实现松散耦合并为对象提供依赖关系,而不是创建或搜索依赖对象。

容器。Spring 管理并包含应用程序对象的配置,以及它们的生命周期。

面向方面(AOP)。Spring 支持面向方面的编程。它还将应用程序业务逻辑与系统服务分离,以实现内聚开发。

MVC 框架。Spring 使用了精心设计的 MVC 框架,与其他类型的 Web 框架相比,它高效且流行。

交易管理。Spring 一致的管理接口可以针对全局和本地事务进行放大或缩小。

异常处理。Spring 的应用程序编程接口 (API) 将特定于技术的异常转换为一致的、未经检查的异常。

7.system.gc() 和 runtime.gc() 方法有什么作用?

这两种方法都可以用作 JVM 启动垃圾收集的提示。但是,由 JVM 决定是否立即或稍后开始收集。

8.什么是应用程序上下文?

应用程序上下文类似于 bean 工厂,两者都能够加载定义、将 bean 连接在一起以及根据请求分配 bean。但是应用程序上下文还具有其他功能,包括加载文件资源的通用方法、解析文本消息的方法以及注册为侦听器的 bean 事件。

9.什么是 JDBC?

JDBC 是一个抽象层。它允许用户在数据库之间进行选择,并使开发人员能够用 Java 编写数据库应用程序,而无需担心特定数据库的底层细节。

10.什么是反射?

反射描述了可以检查同一系统中的其他代码并在运行时进行修改的代码。

11.持续集成(CI)服务器的功能是什么?

CI服务器功能不断检查编译错误并集成由不同开发人员提交到存储库的所有更改。它必须每天多次构建代码,最好是在每次提交之后,这样它就可以检测到损坏并确定是哪个提交导致的。

12.类和对象之间是什么关系?

类定义了多个对象共有的属性、状态和行为,类似于蓝图。对象是类的一个实例。

例如,将“犬”视为一个类。该类别中的对象可以包括狼、狗、狐狸、土狼等。

13.== 可以用在枚举上吗?

是的。枚举具有严格的实例控制,允许您使用 == 来比较实例。

14.比较 Java 中的 sleep() 和 wait() 函数。

sleep() 是一个阻塞操作。它将保持在监视器上并将共享对象锁定一定的毫秒数。

wait() 暂停线程,直到经过指定的毫秒数或它从另一个线程接收到通知,无论哪个实例先发生。此函数不会保留监视器或锁定共享对象。

sleep() 通常用于定期检查某些结果,例如轮询。wait() 常用于多线程对话,以实现同步并避免竞争条件。

15.Spring Bean 是否提供线程安全?

在默认模式下,Spring bean 不是线程安全的,因为作用域是单例。每个上下文只有一个实例,这意味着拥有一个可以被任何线程更新的类级变量将导致数据不一致。

但是,可以将 Spring bean 范围更改为请求、原型或会话以实现线程安全。这是基于项目要求的设计决策。进行此调整将影响性能。

16.Java 是“按引用传递”还是“按值传递”?对于初学者来说,这可能是一个棘手的问题。

Java 是按值传递的。然而,传递对象值的方法是传递对它的引用,这就是为什么这有时会让初学者感到困惑。

17.Java中有静态类吗?

Java 没有办法使顶级类成为静态的。但是,您可以通过以下步骤模拟静态类:

宣布你的班级决赛。这可以防止类扩展。

将构造函数设为私有。这将防止客户端代码实例化。

使所有类成员和函数成为静态的。

请注意,如果您尝试调用实例成员,编译器不会阻止您声明非静态成员。

18.说明界面的特点。

接口是一个模板,它只包含方法的签名,由参数的数量、类型和顺序组成。一个接口不能单独实现,因为它包含方法的定义但缺少方法体,但它可以从多个接口派生。接口的特点包括:

在代码中实现多重继承

定义一组特定的方法及其参数

将变量声明为 public、static 和 final

将方法声明为公共的和抽象的

实现类的所有方法

19.持续集成、持续交付和持续部署之间有什么区别?

持续集成是指开发人员尽可能频繁地将他们的更改合并回主分支。采用这种做法有助于避免当人们必须等待发布日才能将他们的更改合并到发布分支时发生的问题。

持续交付比持续集成更进一步。它确保您可以快速、有效地向客户发布新的更改。除了自动化测试之外,发布过程也是自动化的,因此只需单击一个按钮即可随时部署应用程序。

持续部署是基于其他两种实践的又一扩展。没有人为干预;通过所有生产阶段的每个更改都会发布给客户。

20.Spring MVC 框架中的 Controller 是什么?

控制器通过解释用户输入并将其转换为表示模型来提供对应用程序行为的访问。Spring 的控制器实现非常抽象,它使开发人员能够创建各种不同的控制器。

21.什么是 Spring IoC 容器?

Spring 容器使用依赖注入 (DI) 来管理组成应用程序的组件。它负责创建对象、将它们连接在一起、配置它们并管理它们的完整生命周期。

Spring IoC 容器有两种类型:

豆因子容器。对 DI 的基本支持。此容器是最简单的,通常在资源有限时首选,例如移动设备或基于小程序的应用程序。

Spring ApplicationContext 容器。企业特定的功能。示例包括从属性文件解析文本消息的能力或将应用程序事件发布到感兴趣的侦听器的能力。

22.什么是 JavaBean?

一个 bean 必须是一个可序列化的对象,它的属性带有 getter 和 setter,它们只是具有特定名称的方法。它还必须有一个公共的 0-arg 构造函数,以便可以随意创建它,然后通过属性设置进行配置。如果一个类遵循所有的标准,那么它就被认为是一个 JavaBean。

23.快速故障和故障安全之间有什么区别?

故障安全适用于基础集合的克隆,因此不受集合中任何修改的影响。快速失败的迭代器利用 ConcurrentModificationException;故障安全迭代器不会抛出这样的异常。

java.util 中的所有类都是快速失败的。java.util.concurrent 中的集合类是故障安全的。

24.Java堆的结构是什么?

JVM 有一堆运行时数据。所有类实例和数组的内存都分配给这个堆,它是在 JVM 启动时创建的。对象的堆内存由垃圾收集器回收,垃圾收集器是一个自动内存管理系统。

应用程序可以访问但不会成为垃圾收集的一部分的活动对象和应用程序永远无法访问但尚未被垃圾收集器收集的死对象组成了堆内存空间直到死对象最终进入垃圾收集器。

25.什么是 JIT?

JIT 代表 Just In Time,是 JVM 在运行时优化代码的机制。它可以执行代码内联、锁粗化、锁删除、逃逸分析和其他优化。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>