J2EE 访谈问题

2025年3月17日 | 阅读11分钟

以下是关于 J2EE 的一些最常见、最常被问到的访谈问题和答案。

1) 您对 J2EE 有何理解?

J2EE 是 Java 2 Enterprise Edition 的缩写。J2EE 的功能是开发和部署多层 Web 应用程序。J2EE 平台是服务、应用程序编程接口 (API) 和协议的集合。J2EE 平台增加了在企业级提供完整、稳定、安全和快速的 Java 平台所需的功能。


2) J2EE 模块是什么意思?

J2EE 模块是一个软件单元,它由一个或多个相同容器类型的 J2EE 组件组成,并带有一个该类型的部署描述符。模块可以轻松地部署或组装到 J2EE 应用程序中。


3) J2EE 有四种类型的模块?

J2EE 定义了四种类型的模块

  • 应用程序客户端模块
  • WEB 模块
  • Enterprise JavaBeans 模块
  • 资源适配器模块

4) 应用程序客户端模块包含什么?

应用程序客户端模块包含以下内容

  • 类文件
  • 客户端部署描述符

它被打包为 .jar 扩展名的 JAR 文件。


5) Web 模块包含什么?

Web 模块包含以下内容

  • JSP (Java Server Pages) 文件
  • Servlet 的类文件
  • Web 部署描述符
  • GIF (Graphics Interchange Format) 和 HTML (Hypertext Markup Language) 文件

这些模块被打包为 .war (Web Archive) 扩展名的 JAR 文件。


6) Enterprise JavaBeans 模块包含什么?

Enterprise JavaBeans (EJB) 模块包含以下内容

  • Enterprise Bean 的类文件
  • EJB 部署描述符

这些模块被打包为 .jar 扩展名的 JAR 文件。


7) 资源适配模块包含什么?

资源适配器模块包含以下内容

  • Java 接口
  • 原生库
  • 其他文档
  • 资源适配器部署描述符

这些模块被打包为 .rar (Resource Adapter Archive) 扩展名的 JAR 文件。


8) J2EE 应用程序的主要组件是什么?

J2EE 组件与相关的类和文件一起组装成 J2EE 应用程序。它还可以与其他组件通信。J2EE 定义了以下主要组件

  • 应用程序客户端组件。
  • Java Servlet 和 JavaServer Pages 技术组件。
  • 业务组件(Enterprise JavaBeans)。
  • 资源适配器组件。

9) 什么是 Web 组件?

Java Servlet 和 Java Server Pages 技术组件被认为是 Web 组件。Servlet 基于 Java 编程语言,动态接收请求并生成响应。Java Server Pages 作为 Servlet 执行,并提供了一种更自然的方式来创建静态内容。


10) J2EE 客户端有哪些类型?

  • Applets
  • 应用程序客户端
  • Java Web Start 启用的客户端
  • 无线客户端

11) 您对 Applet 这个词有什么理解?

Applet 是一个 J2EE 组件,通常在 Web 浏览器中执行。它也可以在支持 Applet 编程模型的各种其他应用程序或设备中执行。


12) 什么是容器?

容器是系统级别实体的运行时支持。容器为组件提供生命周期管理、安全性、部署和线程等功能。


13) 什么是“Applet 容器”?

提供 Applet 编程模型支持的容器称为“Applet 容器”。


14) 您对瘦客户端有什么理解?

瘦客户端是应用程序的一个轻量级接口,它不支持查询数据库、执行复杂的业务规则或连接到遗留应用程序等操作。


15) 什么是 JavaServer Faces (JSF)?

JavaServer Faces 是一个用于 Java Web 应用程序的用户界面 (UI) 设计框架。JavaServer Faces 提供了一组可重用的 UI 组件,是 Web 应用程序的标准。JSF 基于 MVC 设计模式。它会自动将表单数据保存到服务器,并在客户端显示时填充表单日期。


16) 什么是 EJB 平台?

EJB 是 Enterprise JavaBeans 的缩写。EJB 平台在您专注于编写业务逻辑时,会管理诸如事务和状态管理、资源池、多线程以及简单搜索等功能。


17) “部署描述符”是什么意思?

部署描述符基于 XML (Extensible Markup Language),支持 .xml 扩展名。它用于描述组件的部署设置。J2EE 应用程序及其模块都有自己的部署描述符。


18) 在 J2EE 框架中定义 Struts?

Struts 是一个基于 MVC (Model-View-Controller) 架构的应用程序开发框架。它是 Java Servlets、JSP、自定义标签和消息的组合。它用于设计大型企业应用程序。它可以描述为

  • 模型

模型定义了系统的内部状态。它可以是基于应用程序架构的单个 Java Bean 或一组 Java Bean。

  • 视图 (View)

JSP 技术用于设计任何企业应用程序的视图。

  • 控制器

控制器用于管理用户操作。它处理客户端请求并根据请求进行响应。框架中的主要组件是 ActionServlet 类的一个 Servlet。通过定义一组 ActionMappings 来配置此 Servlet。


19) 在 J2EE 中定义 Hashtable?

Hashtable 与 HashMap 类似,但 Hashtable 是同步的。Hashtable 是一个同步对象的集合,不允许 null 值和重复值。


20) 定义 Hibernate 和 HQL?

Hibernate 是一个对象关系映射和查询服务。在 Hibernate 中,我们可以编写 HQL (Hibernate Query Language) 脚本而不是 SQL,这可以节省大量时间和精力。Hibernate 提供了更强大的关联、继承、多态、组合和集合。我们可以使用 Java 对象轻松地将查询处理到数据库中。Hibernate 还允许我们使用基于 Java 的条件来表达查询。


21) Hibernate 有哪些局限性?

以下是 Hibernate 的一些局限性

  • 查询执行速度较慢。
  • 组合键仅支持 HQL。
  • 值类型没有共享引用。

22) Hibernate 的主要优点是什么?

以下是 Hibernate 的一些主要优点

  • Hibernate 独立于数据库和供应商,因此它是一个可移植的框架。
  • 域对象可以映射到关系数据库。
  • JPA 支持标准 ORM。
  • 与 JDBC 相比,Hibernate 具有更好的数据库连接性。

23) 定义 ORM 及其在 J2EE 中的工作原理?

ORM 指的是对象关系映射。它是 Java 类中的对象,通过描述对象与数据库之间映射的元数据映射到关系数据库的表中。它将数据从一种表示形式转换为另一种表示形式。


24) 什么是授权?

授权是通过身份验证确定访问方法或资源的过程。它依赖于确定通过身份验证与请求关联的主体是否在给定的安全角色中。安全角色可以解释为由应用程序组装者定义的用户的逻辑分组。部署者将安全角色映射到安全身份。安全身份可能是操作环境中的主体或组。


25) 定义授权约束?

确定谁有权访问 Web 资源集合的授权规则称为授权约束。


26) 如何解释 Hibernate 中的 save() 和 saveorupdate() 方法?

Hibernate 中的 Save() 方法用于将对象存储到数据库中。如果记录不存在,它会创建一个新条目。

Hibernate 中的 Saveorupdate() 方法用于使用标识符更新对象。如果标识符可用,此方法将调用 save()。如果标识符可用,它将调用 update 方法。


27) 如何解释 load() 和 get() 方法?

Load():如果对象在缓存或数据库中丢失,Load() 方法将抛出异常。Load() 方法永远不会返回 null。

Get():如果对象在缓存或数据库中丢失,Get() 方法将返回 null 值,而不是异常。


28) J2EE 中的 Web 容器是什么?

J2EE 中的 Web 容器被定义为组件与具有支持组件的既定功能性低级平台之间的接口。


29) 连接池的概念是什么?

连接池是一个流行的简单概念,用于重用现有连接。这意味着如果对象连接已经定义良好并已连接,则可以在需要时重用它们,而不是生成新的连接。


30) 您对 Servlet 有何理解?

Servlet 是一个服务器端组件,提供创建服务器端程序的全部功能。有不同的 Servlet 可供选择,它们针对各种协议有特定的设计。Servlet 最流行的协议类型是 **HTTP.Servlets**,它使用 `javax.servlet`、`javax.servlet.http.HttpServletRequest`、`javax.servlet.http.HttpServletResponse`、`javax.servlet.http.HttpSession` 等 Java 包中的类。所有 Servlet 都必须包含定义生命周期方法的 Servlet 接口。


31) ORM (对象关系映射) 有哪些优点?

  • 生产力

基于定义的数据模型自动生成代码,可减少总体数据访问时间。

  • 性能

ORM 生成的自动化代码管理着应用程序的全部需求,这意味着无需任何额外代码,并且整体数据访问过程更快、更优化。

  • 供应商独立
  • 生成的代码独立于供应商,从而提高了应用程序的整体可移植性。
  • 可维护性

ORM 生成的代码经过精心测试,只有开发人员才能完美理解。


32) 谈谈 Hibernate 框架的核心接口?

  • Session 接口
  • SessionFactory 接口
  • Configuration 接口
  • Transaction 接口
  • Query 和 Criteria 接口

33) 什么是 B2B?

B2B 指的是 business-to-business (企业对企业)。


34) Hibernate 映射文件和 Hibernate 配置文件使用的文件扩展名是什么?

对于 Hibernate 映射,文件名应为 **filename.hbm.xml**。

对于 Hibernate 配置,文件名应为 **hibernate.cfg.xml**。


35) 定义一种在 Hibernate 配置文件中添加 Hibernate 映射文件的方法?

这可以轻松完成


36) 多层架构的主要组成部分是什么?

多层架构的主要组成部分是

  • 表示层

此层中的前端组件用于显示表示。

  • 资源层

此层中的后端组件用于与数据库通信。

  • 业务层

此层中的组件用于为系统提供业务逻辑。


37) 解释 JTA、JNDI 和 JMS。

**JTA** 代表 JAVA Transaction API,用于协调和管理企业信息系统中的事务。

**JNDI** 代表 Java Naming Directory Interface,用于从目录服务访问数据。

**JMS** 代表 Java Messaging Service,用于通过消息系统接收和发送消息。


38) 解释 J2EE 层次结构。

J2EE 具有以下层次结构

  • 客户端层

它指的是从中处理请求到服务器的浏览器。此层中的接口是 HTML 浏览器、Java 应用程序、Applet 或非 Java 应用程序。

  • 中间层

它包括表示层和集成层。UI (用户界面) 在表示层中使用 JavaServer Pages 创建。业务逻辑在业务层中使用 Enterprise Java Bean 编写。数据库对象在集成层中创建。

  • 后端

它构成了用于存储数据的企业信息系统 (EIS)。


39) 描述 EAR、WAR 和 JAR。

EAR 是 Enterprise Archive file 的缩写。它包含 Web、EJB 和客户端的组件。EAR 的所有组件都打包在一个扩展名为 **.ear** 的压缩文件中。

WAR 是 Web Archive file 的缩写。它包含与 Web 应用程序相关的所有组件。所有组件都打包在一个扩展名为 **.war** 的压缩文件中。

JAR 是 Java Archive file 的缩写。它包含构成 API (Application Programming Interface) 的所有类文件和库文件。所有组件都打包在一个扩展名为 **.jar** 的压缩文件中。

应用程序服务器、Servlet 容器、EJB 容器等以独特的方式处理每种文件类型(.ear、.war 和 .jar)。


40) 您对 Spring 有何理解?

Spring 是一个轻量级的开源框架,用于开发企业应用程序。它解决了企业应用程序开发的复杂性,并为 J2EE 提供了便捷的开发。它最初由 **Rod Johnson** 编写。它于 2003 年 6 月在 **Apache 2.0 许可**下发布。


41) Spring 中使用了哪些不同的模块?

Spring 主要有七个核心模块

  1. 核心容器模块
  2. 对象/关系映射模块
  3. DAO 模块
  4. 应用程序上下文模块
  5. 面向切面的编程
  6. Web 模块
  7. MVC 模块

42) 什么是 Action Mapping?

在 Action Mapping 中,用户为特定 URL(即路径)指定 Action 类和不同的目标视图,这意味着转发到请求-响应被转发到的地方。ActionMapping 定义了 ActionServlet 关于将特定请求映射到特定 Action 类的实例的信息。映射会传递到 Action 类的 execute() 方法,从而可以直接访问此信息。


43) 您对 ActionForm 有何理解?

ActionForm 是一个 Java bean,可以关联一个或多个 ActionMappings。当用户扩展 `org.apache.struts.action.ActionForm` 类时,Java bean 会变为 FormBean。ActionForm 对象通常在服务器端自动填充,并且客户端从 UI 输入数据。ActionForm 管理 Web 应用程序的会话状态。


44) 什么是 backing bean?

backing bean 是一个 JavaBeans 组件,它对应于包含 JavaServer Faces 组件的 JavaServer Pages。backing bean 描述了页面上组件的属性以及执行组件处理的方法。

此处理可能包括事件处理、验证和与导航相关的处理。


45) 什么是构建文件?

构建文件是一个 XML 文件,包含一个或多个 Ant 目标。目标是一组用户希望执行的任务。启动 Ant 时,用户可以选择要执行的目标。如果没有目标,则执行项目的默认目标。


46) 您对业务逻辑有何理解?

业务逻辑是包含应用程序功能的代码。在 EJB (Enterprise JavaBeans) 架构中,此逻辑由 Enterprise Bean 的方法实现。


47) 如何解释 CDATA?

CDATA 是字符数据的预定义 XML 标签,表示“不要解释这些字符”,它类似于解析的字符数据 (PCDATA),在 PCDATA 中适用标准的 XML 语法规则。CDATA 部分用于显示 XML 语法的示例。


48) “组件契约”是什么意思?

J2EE 组件与其容器之间的契约称为组件契约。这种契约包括

  • 组件的生命周期管理
  • 实例用于从其容器获取各种信息和服务的接口
  • 每个容器必须为其组件提供的服务列表。

49) 您对 Connector 有何理解?解释 Connector 架构。

连接器是容器的标准扩展机制,它提供与企业信息系统的连接。它特定于企业信息系统,包含资源适配器和用于企业信息系统连接的应用程序开发工具。资源适配器通过其对连接器体系结构中定义的系统级契约的支持插入到容器中。

J2EE 产品与企业信息系统集成的一种架构称为连接器架构。连接器架构包括

  • 由企业信息系统供应商提供的资源适配器
  • 允许此资源适配器插入的 J2EE 产品。

连接器架构还定义了一组资源适配器必须支持的契约才能插入 J2EE 产品(例如,事务、安全和资源管理)。