版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SSH框架面试题及详细答案(实战完整版)说明:本题库基于企业真实面试场景整理,涵盖Struts2、Spring、Hibernate三大框架核心知识点,剔除理论化套话,答案贴合项目实战,适合Java后端面试复习使用。一、SSH基础概念面试题1、简单说说SSH三大框架各自的作用和职责?参考答案:SSH是经典的JavaWeb三层架构整合框架,三个框架各司其职,互不冗余,整体分工很清晰:1.Struts2(表现层/控制层):负责接收前端请求、参数封装、请求分发、页面跳转、数据校验。主要对接浏览器和后端业务,拦截用户的所有请求,调度对应的业务逻辑,不处理业务和数据库操作,只做控制器的工作。2.Spring(业务层/容器):核心是整合整个项目,负责Bean的统一管理、依赖注入、事务控制、AOP切面编程。用来解耦项目代码,统一管理所有对象的创建和销毁,同时管控业务层事务,保证数据操作的一致性。3.Hibernate(持久层):ORM持久层框架,负责数据库交互,把JDBC原生的硬编码操作封装起来,通过实体类和映射文件实现对象和数据库表的映射,不用手写大量重复SQL,简化增删改查操作。2、SSH整体执行流程是怎样的?参考答案:1.前端浏览器发起请求,请求会先被Struts2的核心过滤器StrutsPrepareAndExecuteFilter拦截;2.过滤器解析请求地址,匹配对应的Action,同时完成请求参数的自动封装、数据校验;3.Action不直接new对象,由Spring容器统一管理Action实例,通过依赖注入将Service层注入到Action中;4.Action调用对应的Service业务方法,Service层处理具体业务逻辑,同时Spring的事务管理器开启事务;5.Service层调用Dao层方法,Dao层通过Hibernate操作Session对象,完成数据库的增删改查;6.数据库操作完成后,Hibernate返回结果,Service层结束业务逻辑,Spring提交事务(异常则回滚);7.Action接收返回结果,根据配置的结果视图,跳转对应页面或返回数据,响应前端。3、说说三层架构和SSH框架的对应关系?参考答案:1.表现层(Web层):对应Struts2,包含Action、拦截器、页面跳转、参数接收;2.业务层(Service层):对应Spring,管理Service组件、事务控制、依赖注入、业务逻辑编排;3.持久层(Dao层):对应Hibernate,完成数据持久化、数据库交互、ORM映射。二、Struts2核心面试题1、Struts2的核心组件有哪些?核心控制器是什么?参考答案:核心组件包含:核心过滤器、Action、拦截器、值栈、OGNL表达式、结果视图。Struts2的核心控制器是StrutsPrepareAndExecuteFilter,区别于Struts1的Servlet控制器。所有用户请求都会经过这个过滤器,由它完成请求预处理、Action调度、拦截器执行、视图跳转等所有核心操作。2、Struts2中值栈(ValueStack)的作用是什么?参考答案:值栈是Struts2存储数据的核心容器,本质是一个数据栈结构,主要用来存放Action的属性、页面数据,实现前后端数据交互。1.前端传参自动封装到值栈,Action可以直接获取;2.后端把数据存入值栈,前端通过OGNL表达式可以直接取值展示;3.值栈生命周期和一次请求绑定,请求结束,值栈数据就会销毁,线程安全,不会出现数据串扰问题。3、Struts2拦截器的原理和常用内置拦截器?自定义拦截器怎么做?参考答案:拦截器原理:采用AOP思想,在Action执行前后做增强操作,不修改Action源码,就能实现通用功能的复用。Struts2的很多核心功能都是靠拦截器实现的,不是框架原生代码硬写的。常用内置拦截器:参数封装拦截器、数据校验拦截器、文件上传拦截器、异常拦截器、表单重复提交拦截器。自定义拦截器步骤:1.新建类继承MethodFilterInterceptor或者实现Interceptor接口;2.重写拦截方法,在方法中编写拦截逻辑(权限校验、日志记录、防重复提交等);3.在struts.xml中配置自定义拦截器,注册到拦截器栈中;4.在指定Action上引用该拦截器即可生效。4、Struts2为什么是线程安全的?和Struts1的区别?参考答案:核心区别:1.Struts1的Action是单例的,全局共享,多线程访问时会存在线程安全问题,不能定义成员变量;2.Struts2的Action是多例模式,每一次请求都会创建一个新的Action实例,请求结束实例销毁,不同请求互不影响,所以天然线程安全,可以直接定义成员变量接收参数。三、Spring核心面试题1、Spring的核心两大特性是什么?分别解释一下参考答案:Spring核心是IOC(控制反转)和AOP(面向切面编程)。IOC控制反转:传统开发是程序员手动new对象、管理对象依赖;IOC是把对象的创建、赋值、销毁全部交给Spring容器管理,将对象的控制权从代码转移到容器,降低代码耦合度。依赖注入(DI)是IOC的具体实现方式,常见的有构造器注入、setter注入、注解注入。AOP面向切面编程:在不修改原有业务代码的前提下,对方法进行增强,用来处理通用公共逻辑,比如事务控制、日志记录、权限校验、性能监控。核心原理是动态代理,分为JDK动态代理(接口代理)和CGLIB代理(类代理)。2、SpringBean的作用域有哪些?项目中最常用的是哪个?参考答案:Spring官方提供5种基础作用域:1.singleton:单例,整个容器中只创建一个Bean实例,默认作用域;2.prototype:多例,每次获取Bean都会新建一个实例;3.request:一次请求一个实例;4.session:一个会话一个实例;5.application:整个web应用一个实例。项目实战用法:Service、Dao层统一用singleton单例,效率最高;Struts2的Action必须用prototype多例,否则会出现线程安全问题、数据串号。3、Spring事务的传播特性和隔离级别,常用的有哪些?参考答案:常用事务传播特性(重点3个):1.REQUIRED:默认级别,有事务就加入,没有就新建事务,项目最常用;2.SUPPORTS:有事务就加入,没有就非事务运行;3.REQUIRES_NEW:每次都会新建独立事务,暂停原有事务。常用事务隔离级别:1.READ_COMMITTED:读已提交,解决脏读,项目默认,最常用;2.REPEATABLE_READ:可重复读,解决脏读、不可重复读,MySQL默认级别。4、Spring事务失效的常见场景有哪些?参考答案:面试高频考点,实战中经常遇到:1.方法不是public修饰,Spring无法生成代理,事务不生效;2.同类中方法内部调用(A方法调用本类带事务的B方法),绕过代理,事务失效;3.捕获了异常没有抛出,Spring无法感知异常,不会回滚;4.事务传播特性配置错误;5.数据库引擎不支持事务(比如MyISAM引擎,必须用InnoDB)。四、Hibernate核心面试题1、Hibernate的核心原理和ORM思想是什么?参考答案:ORM就是对象关系映射,核心思想是把实体类和数据库表做映射,把对象操作转为数据库SQL操作。开发者不用手写大量JDBC代码、不用拼接SQL,直接操作Java实体对象,Hibernate自动封装、自动生成SQL,完成数据库增删改查,极大简化持久层代码。2、Hibernate的三种状态及相互转换?参考答案:Hibernate实体对象有三种状态,是面试必问点:1.瞬时态(临时态):new出来的对象,没有存入Session,没有关联数据库数据,无主键值,随时被GC回收;2.持久态:对象被Session管理,存在一级缓存,数据库有对应记录,有主键值,修改对象属性会自动同步到数据库;3.脱管态(游离态):Session关闭或清空后,对象脱离缓存,有主键值,数据库有对应数据,修改属性不会自动同步数据库。状态转换核心:save()、get()、load()方法可转为持久态;close()、clear()转为脱管态;没有任何缓存关联就是瞬时态。3、Hibernate一级缓存和二级缓存的区别?参考答案:1.一级缓存(Session缓存):默认开启,自带缓存,作用域是单次请求的Session,Session关闭缓存清空。只缓存当前会话的数据,保证同一会话多次查询不重复访问数据库。2.二级缓存(SessionFactory缓存):默认关闭,需要手动配置,作用域是整个项目全局,所有Session共享。适合缓存高频查询、低修改的静态数据,比如字典表、分类表数据。4、Hibernate中get和load方法的区别?参考答案:1.加载方式不同:get是立即加载,调用就直接查询数据库;load是延迟加载,返回代理对象,使用属性时才查询数据库;2.空值处理不同:get查询不到数据返回null;load查询不到数据直接抛出异常;3.场景不同:不确定数据是否存在用get,确定数据一定存在用load,效率更高。5、Hibernate延迟加载问题怎么解决?参考答案:延迟加载异常(LazyInitializationException)是实战高频问题,核心原因是Session关闭后,访问延迟加载的属性,无缓存可用。常用解决方案:1.开启Spring的OpenSessionInView过滤器,让Session贯穿整个请求周期,页面渲染完成后再关闭;2.业务层提前初始化延迟加载属性;3.映射文件中关闭对应属性的延迟加载(不推荐,会降低性能)。五、SSH框架整合面试题(高频压轴)1、Spring如何整合Struts2?核心配置是什么?参考答案:核心思路:让Spring管理Action,消除Struts2自带的对象创建逻辑。1.引入struts2-spring-plugin整合包;2.配置Spring容器监听器,启动项目时加载Spring配置文件;3.在Spring配置文件中注册Action、Service、DaoBean,Action注入对应Service;4.struts.xml中Action的class属性填写Spring中Bean的id,不再写全类名;5.Action必须配置多例作用域,避免线程安全问题。2、Spring如何整合Hibernate?核心作用?参考答案:Spring整合Hibernate主要是接管Hibernate的核心配置,简化开发,统一事务管理:1.Spring中配置SessionFactory,加载Hibernate映射文件、数据库连接参数,替代原生hibernate.cfg.xml;2.配置HibernateTemplate模板类,简化Dao层数据库操作,不用手动开关Session、处理异常;3.配置Spring事务管理器,统一管控Hibernate的事务,不用手动commit、rollback;4.开启事务注解,业务层直接通过注解实现事务控制。3、OpenSessionInView的作用和优缺点?参考答案:作用:解决Hibernate延迟加载异常,让Session对象从请求开始创建,页面渲染结束后才关闭,全程保持会话开启。优点:彻底解决页面延迟加载报错问题,开发便捷;缺点:Session长期不关闭,数据库连接占用时间变长,高并发场景下会影响数据库性能,大型项目一般会手动控制加载策略,不依赖该过滤器。4、SSH项目常见性能优化方案?参考答案:1.Hibernate优化:合理使用延迟加载、开启二级缓存、避免N+1查询问题、使用HQL或原生SQL优化复杂查询;2.Spring优化:合理配置Bean作用域、精准控制事务传播级别、避免无效事务;3.Stru
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026四年级语文下学期期末卷
- 2025-2026华东师大版高中语文期末测试卷
- 山东版小学六年级语文下期末测试卷
- 2025-2026江苏高一物理期末模拟卷
- 2026年高二生物全套题目及答案
- 安全主任总结
- 安全责任的教学课件
- 2026年政策制定评估试卷及答案
- 一年级下册数学 第1课时 分类整 (一)
- 安全用药材教学课件
- 中枢性疼痛神经调控治疗
- 2026年重庆入团测考试题库(b卷)
- 2025-2026华为ICT大赛-基础软件赛道理论考试题库(核心500题)
- 9.《复活(节选)》课件+2025-2026学年统编版高二语文选择性必修上册
- 中草药栽种劳动课课件
- 大蜜丸炼蜜工艺优化研究
- 中国非遗文化课件幼儿园
- T/ACSC 01-2022辅助生殖医学中心建设标准
- 校外托管教育安全主题班会
- 2025年云上贵州大数据(集团)有限公司招聘笔试参考题库含答案解析
- 会展活动策划与管理实习报告
评论
0/150
提交评论