EJB 高频面试题及详细答案(实战完整版)_第1页
EJB 高频面试题及详细答案(实战完整版)_第2页
EJB 高频面试题及详细答案(实战完整版)_第3页
EJB 高频面试题及详细答案(实战完整版)_第4页
EJB 高频面试题及详细答案(实战完整版)_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EJB高频面试题及详细答案(实战完整版)本套面试题基于企业Java后端面试真实出题习惯整理,覆盖EJB基础、组件类型、生命周期、事务机制、JPA持久化、容器特性、与Spring区别等核心考点,答案贴合面试口述逻辑,简洁专业、无冗余话术。一、基础概念类1、什么是EJB?它的作用是什么?EJB是JavaEE的核心业务组件规范,全称EnterpriseJavaBean,专门用于开发服务端的业务逻辑代码。它的核心作用是把业务逻辑和底层服务解耦,开发者只需要专注业务代码,事务管理、对象生命周期、线程管理、安全权限、远程调用、资源池化等通用底层能力,全部由JavaEE容器全权负责。简单来说,EJB就是运行在服务端、专门处理核心业务、由容器统一托管的可复用组件。2、EJB适用于什么场景?为什么现在不如Spring普及?适用场景:大型分布式企业项目、金融、银行、政务等对事务一致性、稳定性、安全性、规范性要求极高的重型项目。没落原因:第一,EJB规范笨重、配置繁琐、依赖重型容器,只能运行在WebLogic、JBoss等专业JavaEE服务器,灵活性差;第二,Spring体系轻量、无容器依赖、开发效率高、生态完善,能完全替代EJB的核心功能;第三,微服务架构普及后,轻量框架更适配分布式场景,重型EJB架构迭代成本太高。3、EJB和JavaBean有什么区别?很多面试会混淆这两个概念,核心区别非常清晰:JavaBean:只是普通POJO规范,私有属性、get/set方法、无参构造,仅用于数据封装,无任何业务能力、无容器管理。EJB:是服务端业务组件,由容器管理,拥有事务、远程调用、生命周期、并发控制等企业级特性,是真正可运行业务逻辑的服务组件。二、EJB组件分类核心考点4、EJB有几种核心组件?各自用途是什么?EJB3.x主流分为三大类,也是面试必考:1.会话Bean(SessionBean):处理业务逻辑,分为无状态、有状态、单例三种。2.消息驱动Bean(MDB):专门用于接收JMS消息,实现异步通信,处理消息队列业务。3.实体Bean(EntityBean):早期用于数据库持久化,EJB3后被JPA替代,现在项目中基本不再使用。5、无状态Bean和有状态Bean的区别、使用场景?无状态SessionBean(Stateless)不保存客户端任何会话状态,每次调用都是独立的,容器会维护Bean池,复用对象,性能高、资源开销小。适用场景:通用业务接口、查询数据、公共处理逻辑,绝大多数业务场景都用无状态Bean。有状态SessionBean(Stateful)会保存客户端会话状态,同一个客户端多次调用可以保留属性数据,不同客户端相互隔离。Bean无法复用,占用资源高,超时会被容器销毁。适用场景:需要记录用户会话、流程步骤、购物车、分步操作的长会话业务。6、单例Bean(Singleton)特点是什么?整个应用全局只有一个实例,所有客户端共享同一个Bean,容器启动时初始化,全局唯一。特点:支持并发控制、适合全局配置、定时任务、全局计数器、公共初始化逻辑;需要手动处理线程安全问题。7、消息驱动Bean(MDB)工作原理?MDB是专门监听JMS队列或主题的异步Bean,不依赖客户端调用,容器自动监听消息服务器。当队列有消息进入,容器自动触发MDB的消息处理方法,完成异步消费。主要用于解耦、异步处理、削峰填谷,比如日志处理、订单异步通知、批量任务处理。三、生命周期与容器管理8、无状态Bean的生命周期?1、容器启动或需要实例时,创建Bean实例;2、完成依赖注入、资源注入;3、执行@PostConstruct初始化方法;4、加入Bean池,复用处理客户端请求;5、容器关闭或资源不足时,执行@PreDestroy销毁方法,释放资源。9、有状态Bean的生命周期?1、客户端首次调用,容器创建专属实例;2、依赖注入、初始化方法执行;3、持续为当前客户端服务,保存会话状态;4、长时间未访问触发超时,或客户端主动移除;5、执行销毁方法,释放实例资源。10、EJB容器的核心职责有哪些?这是高频总结题,核心职责:1、管理Bean实例的创建、复用、销毁;2、统一管理事务,支持声明式事务;3、处理远程调用、本地调用的代理逻辑;4、并发控制、线程安全管理;5、权限安全校验、资源池管理、异常处理。四、事务机制(EJB面试重中之重)11、EJB事务分为哪两种?区别是什么?声明式事务:通过注解@Transactional配置,无需手动写代码,容器自动开启、提交、回滚事务,简洁、规范、企业项目首选。编程式事务:手动获取事务对象,手动控制begin、commit、rollback,灵活但代码冗余,极少使用。12、EJB事务传播属性有哪些?常用的是哪些?一共7种传播属性,面试重点考常用4种:REQUIRED:默认级别,有事务就加入,没有就新建,最常用;REQUIRES_NEW:始终新建独立事务,挂起原有事务;SUPPORTS:有事务就参与,没事务就非事务运行;MANDATORY:必须在已有事务中运行,否则直接报错;其余NOT_SUPPORTED、NEVER、NESTED面试提问频率较低。13、EJB事务什么时候回滚?1、方法抛出RuntimeException运行时异常,容器自动回滚;2、抛出Checked受检异常,默认不会回滚,需要手动配置回滚规则;3、代码主动设置事务回滚标记,强制回滚。五、EJB远程调用与核心特性14、EJB本地调用和远程调用的区别?本地调用Local:同一容器、同一项目内调用,无网络开销,效率高,只能内部使用。远程调用Remote:支持跨项目、跨服务器、跨进程调用,基于RMI协议传输,有网络序列化开销,适合分布式调用。15、EJB依赖注入和Spring注入有什么不同?1、EJB注入由JavaEE容器实现,Spring由Spring容器实现;2、EJB注入规范固定、功能单一,Spring注入更灵活、支持更多注解、扩展能力极强;3、EJB强依赖重型容器,Spring可独立运行、轻量无侵入;4、EJB自带事务、并发、安全等企业级特性,Spring需要手动配置对应功能。16、EJB3.0相比2.x最大的改进是什么?1、摒弃了繁琐的xml配置,全面支持注解开发;2、简化Bean写法,不需要实现复杂接口;3、引入JPA替代老旧的实体Bean,持久化更简洁;4、大幅降低学习成本和开发成本,更贴近现代开发习惯。六、高频对比与实战问题17、EJB和SpringBoot的核心对比?1、架构定位:EJB是JavaEE组件规范,SpringBoot是一站式开发框架;2、容器依赖:EJB必须运行在JavaEE服务器,SpringBoot内嵌容器、独立运行;3、开发效率:EJB配置繁琐、笨重,SpringBoot快速开发、开箱即用;4、事务能力:两者都支持声明式事务,稳定性都很强;5、生态热度:Spring生态全面覆盖微服务、中间件、云原生,EJB基本只维护旧项目。18、现在企业为什么还会问EJB?很多银行、金融、传统国企、大型老系统都是基于WebLogic+EJB架构开发,存量项目庞大,维护和迭代需要开发者懂EJB基础原理。同时,EJB的事务、容器托管、组件化思想,是Spring事务、IOC思想的重要理论基础,面试用于考察底层功底。19、无状态Bean为什么可以池化复用?线程安全吗?无状态Bean不保存任何成员变量状态,所有请求都是独立的,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论