J2EE核心面试题及实战答案.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

J2EE核心面试题及实战答案

一、基础核心(Servlet/JSP/JavaEE规范)

问题:Servlet的生命周期中,init()、service()、destroy()方法的调用时机和特点?实际开发中init()里适合做什么、不适合做什么?

答案:

init():Servlet实例化后调用1次,用于初始化资源(如加载配置文件、创建数据库连接池),默认是非线程安全的,若重写需注意同步;不适合做耗时操作(如循环读取大文件),会导致Servlet启动失败。

service():每次客户端请求都会调用,由容器自动分配线程执行,需注意线程安全(避免成员变量共享,优先用局部变量)。

destroy():Servlet销毁前调用1次,用于释放资源(如关闭连接池、销毁线程池),容器重启或应用卸载时触发。

问题:JSP的9大内置对象中,request和session的作用域区别?实际开发中如何避免session失效导致的问题?

答案:

作用域:request是请求域(一次请求内有效,转发可共享,重定向失效);session是会话域(同一浏览器会话内有效,默认超时30分钟,服务器重启或浏览器关闭后失效)。

避坑方案:①敏感操作(如支付)需校验session是否存在,不存在则跳转登录页;②避免在session中存储大对象(如List集合),占用服务器内存;③分布式场景用Redis共享session,避免单机session丢失。

二、Spring框架

问题:SpringBean的作用域有哪些?singleton和prototype的核心区别?实际项目中什么时候用prototype?

答案:

作用域:singleton(默认)、prototype、request、session、globalSession、application、websocket。

核心区别:singleton是单例,容器启动时创建(懒加载除外),整个容器中只有1个实例;prototype是多例,每次获取Bean时创建新实例。

适用场景:prototype用于状态可变的Bean(如Struts2的Action),避免多线程共享导致的数据混乱;singleton用于无状态Bean(如Service、Dao),提升性能。

问题:SpringAOP的核心概念?实际开发中用AOP做过哪些场景?如何解决AOP切面顺序问题?

答案:

核心概念:切面(Aspect)、切入点(Pointcut)、通知(Advice:前置、后置、环绕、异常、最终)、目标对象(Target)、代理(Proxy)。

实际场景:日志记录、权限校验、事务管理、异常统一处理、接口耗时统计。

切面顺序:①用@Order注解(值越小越先执行);②实现Ordered接口重写getOrder()方法;③环绕通知可通过手动调用ProceedingJoinPoint控制顺序。

问题:Spring事务的传播机制和隔离级别?实际开发中遇到过事务不生效的情况吗?如何排查?

答案:

传播机制:REQUIRED(默认,当前无事务则新建,有则加入)、REQUIRES_NEW(新建独立事务,原有事务挂起)、SUPPORTS(有事务则加入,无则非事务执行)等7种。

隔离级别:DEFAULT(默认,跟随数据库)、READ_UNCOMMITTED、READ_COMMITTED(常用,避免脏读)、REPEATABLE_READ、SERIALIZABLE。

事务不生效排查:①方法是否为public(Spring事务只对public方法生效);②是否存在内部调用(如A类methodA调用本类@Transactional的methodB,切面无法拦截);③数据源是否配置了事务管理器;④异常类型是否为RuntimeException(默认只回滚运行时异常,checked异常需指定rollbackFor)。

三、MyBatis

问题:MyBatis的一级缓存和二级缓存区别?实际项目中是否启用二级缓存?为什么?

答案:

一级缓存:SqlSession级别,默认开启,缓存范围是同一个SqlSession,关闭SqlSession后缓存失效;基于HashMap实现,key是SQL语句+参数+RowBounds。

二级缓存:Mapper接口级别,默认关闭,需在映射文件加cache/或注解@CacheNamespace开启,缓存范围是同一个Mapper,不同SqlSession可共享。

项目实践:一般不启用二级缓存,原因:①

文档评论(0)

151****9429 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档