J2EE 笔试真题及详细答案(企业实战版)_第1页
J2EE 笔试真题及详细答案(企业实战版)_第2页
J2EE 笔试真题及详细答案(企业实战版)_第3页
J2EE 笔试真题及详细答案(企业实战版)_第4页
J2EE 笔试真题及详细答案(企业实战版)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

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

文档简介

J2EE笔试真题及详细答案(企业实战版)整套试题包含选择题、填空题、简答题、问答题、编程题,覆盖J2EE核心基础、Web组件、主流框架、数据库交互、事务、异常等企业高频考察点,答案贴合实际开发场景,简洁精准。一、单项选择题(10题,每题2分,共20分)1、J2EE中,以下不属于Web层组件的是()A、ServletB、JSPC、EJBD、Filter2、Servlet的生命周期中,只会执行一次的方法是()A、doGet()B、doPost()C、init()D、service()3、HttpServletRequest对象的主要作用是()A、响应客户端请求B、封装客户端请求数据C、操作服务器资源D、管理会话4、SpringIoC容器的核心作用是()A、面向切面编程B、依赖注入与对象管理C、数据库事务控制D、Web请求分发5、MyBatis中,用于定义映射关系、实现SQL解耦的核心文件是()A、xml映射文件B、properties配置文件C、web.xmlD、applicationContext.xml6、下列关于Session和Cookie的说法,正确的是()A、Cookie存储在服务器端B、Session存储在客户端C、Session依赖Cookie实现D、Cookie默认永久有效7、SpringMVC中,负责接收前端请求、分发控制器的核心组件是()A、DispatcherServletB、HandlerMappingC、ViewResolverD、Controller8、JDBC中,用于执行预编译SQL、防止SQL注入的对象是()A、StatementB、PreparedStatementC、ResultSetD、Connection9、下列不属于J2EE四大作用域的是()A、pageB、requestC、sessionD、local10、Spring事务传播特性中,默认的传播行为是()A、REQUIREDB、SUPPORTSC、MANDATORYD、NEVER单选题答案及解析1、C解析:EJB是J2EE的业务层组件,用于处理企业核心业务逻辑,Servlet、JSP、Filter均为Web层组件。2、C解析:Servlet初始化时调用init(),仅执行一次;service()、doGet()、doPost()每次请求都会触发执行。3、B解析:HttpServletRequest封装客户端所有请求参数、请求头、请求地址等数据,HttpServletResponse用于响应请求。4、B解析:IoC(控制反转)核心是容器统一管理对象创建与依赖注入,AOP是面向切面编程,为Spring另一核心特性。5、A解析:MyBatis通过xml映射文件或注解完成实体类与数据库表、方法与SQL语句的映射,实现SQL与代码解耦。6、C解析:Cookie存储在客户端浏览器,Session存储在服务器端,默认通过JSESSIONID的Cookie关联会话,Cookie默认浏览器关闭失效。7、A解析:DispatcherServlet是SpringMVC的前端控制器,统一拦截、分发所有前端请求,是整个框架的入口。8、B解析:PreparedStatement实现SQL预编译,参数化查询,有效避免SQL注入漏洞,Statement为静态SQL执行,存在安全隐患。9、D解析:J2EE四大作用域为page、request、session、application,无local作用域。10、A解析:Spring事务默认传播行为为REQUIRED,即当前有事务则加入,无事务则新建事务。二、填空题(8空,每空2分,共16分)1、J2EE三层架构分别是________、________、________。2、Servlet中处理GET请求和POST请求的方法分别是________、________。3、SpringMVC的执行流程核心三步:请求分发、________、________。4、JDBC操作数据库的标准步骤:加载驱动、________、创建执行对象、执行SQL、处理结果、关闭资源。填空题答案1、表现层(Web层)、业务逻辑层(Service层)、数据访问层(DAO层)2、doGet()、doPost()3、业务处理、视图解析渲染4、获取数据库连接三、简答题(4题,每题6分,共24分)1、简述Servlet和JSP的区别?2、简述Cookie和Session的区别与适用场景?3、SpringIoC的实现原理是什么?4、MyBatis和Hibernate的核心区别?简答题详细答案1、Servlet和JSP的区别(1)本质不同:JSP本质是Servlet,服务器会将JSP文件编译为Servlet类执行;(2)代码侧重不同:Servlet以Java代码为主,HTML页面输出需要手动拼接,适合处理业务逻辑;JSP以HTML页面为主,嵌入少量Java代码,适合页面展示;(3)使用场景:后台请求处理、业务控制优先使用Servlet;前端动态页面渲染优先使用JSP;(4)开发效率:JSP页面开发更便捷,Servlet逻辑处理更清晰。2、Cookie和Session的区别与适用场景核心区别:(1)存储位置:Cookie存储在客户端浏览器,Session存储在服务器端;(2)数据大小:Cookie容量有限(一般4KB),可存储少量字符串数据;Session无严格容量限制,可存储任意对象;(3)安全性:Cookie存储在客户端,可被篡改、窃取,安全性低;Session数据存服务器,安全性高;(4)生命周期:Cookie可手动设置过期时间,支持持久化;Session默认浏览器关闭失效,服务器重启或超时会销毁。适用场景:Cookie:记住登录状态、保存用户偏好设置、非敏感轻量数据存储;Session:存储用户登录信息、权限数据、订单信息等敏感、核心会话数据。3、SpringIoC实现原理IoC即控制反转,核心是将对象的创建、依赖管理、生命周期管理从业务代码中剥离,交由Spring容器统一管理,颠覆了传统代码主动创建对象的模式。实现流程:(1)容器启动时读取配置文件(XML/注解),扫描所有需要管理的Bean;(2)通过反射机制实例化Bean对象;(3)解析Bean之间的依赖关系,通过构造器、set方法等方式完成依赖注入;(4)将初始化完成的Bean存入容器缓存,业务代码使用时直接从容器获取,无需手动创建。4、MyBatis和Hibernate的核心区别(1)框架类型:Hibernate是全自动ORM框架,完全封装JDBC,无需手动写SQL;MyBatis是半自动ORM框架,仅封装JDBC底层,需要开发者自定义SQL;(2)SQL可控性:Hibernate自动生成SQL,适配性差,复杂查询优化困难;MyBatis手动编写SQL,灵活度高,便于优化和适配复杂业务;(3)学习成本:Hibernate规则多、门槛高;MyBatis上手简单,贴近原生JDBC;(4)适用场景:Hibernate适合简单CRUD、快速开发的中小型项目;MyBatis适合大数据量、复杂查询、需要精细化SQL优化的企业级项目。四、问答题(3题,每题10分,共30分)1、简述SpringMVC完整执行流程?2、简述SpringAOP的原理及常用应用场景?3、项目中为什么要使用事务?Spring事务失效的常见场景有哪些?问答题详细答案1、SpringMVC完整执行流程(1)用户发起前端请求,所有请求统一被DispatcherServlet(前端控制器)拦截;(2)DispatcherServlet调用HandlerMapping(处理器映射器),根据请求URL匹配对应的Controller处理器;(3)通过HandlerAdapter(处理器适配器)执行匹配到的Controller业务方法;(4)Controller处理业务逻辑,返回ModelAndView(数据+视图名);(5)ViewResolver(视图解析器)解析视图名称,定位到具体视图页面;(6)视图渲染数据,生成最终响应页面/数据,返回给客户端。2、SpringAOP原理及常用应用场景实现原理:AOP即面向切面编程,基于动态代理机制,在不修改原有业务代码的前提下,对方法进行增强。核心是将公共通用逻辑(日志、权限、事务)抽离为切面,在目标方法执行前后、异常时切入执行。SpringAOP针对接口实现JDK动态代理,针对类实现CGLIB动态代理,默认优先使用JDK代理。常用应用场景:(1)统一日志记录:记录方法入参、出参、执行耗时、异常信息;(2)统一权限校验:接口请求前校验用户权限、登录状态;(3)事务控制:方法执行开启事务,成功提交、异常回滚;(4)接口限流、缓存处理、数据脱敏等通用功能。3、事务作用及Spring事务失效场景使用事务的原因:保证数据库操作的原子性、一致性、隔离性、持久性(ACID)。多条数据库操作要么全部成功,要么全部失败回滚,避免出现数据不一致、脏数据问题,保障业务数据安全,常见于转账、订单创建、库存扣减等关联操作。Spring事务常见失效场景:(1)方法权限问题:事务注解@Transactional修饰非public方法,事务无法生效;(2)内部调用问题:同类中普通方法调用本类带事务的方法,绕过Spring代理,事务失效;(3)异常类型错误:默认只捕获RuntimeException,抛出普通Exception、IOException等受检异常,不会回滚;(4)异常被捕获:方法内部try-catch捕获异常,未向外抛出,Spring无法感知异常,不会触发回滚;(5)数据库引擎不支持:MySQL使用MyISAM引擎(不支持事务),必须使用InnoDB引擎;(6)传播行为配置不当:配置为SUPPORTS、NEVER等不支持事务的传播特性。五、编程题(1题,10分)使用原生JDBC实现用户信息查询功能,需求:连接MySQL数据库,根据用户ID查询用户姓名、手机号,写出核心代码(包含工具类核心逻辑、查询方法)。编程题参考答案1、JDBC工具类(获取连接、关闭资源)java

publicclassJdbcUtil{

//数据库配置参数

privatestaticfinalStringDRIVER="com.mysql.cj.jdbc.Driver";

privatestaticfinalStringURL="jdbc:mysql://localhost:3306/test_db?useSSL=false&serverTimezone=UTC";

privatestaticfinalStringUSER="root";

privatestaticfinalStringPASSWORD="123456";

//静态代码块加载驱动

static{

try{

Class.forName(DRIVER);

}catch(ClassNotFoundExceptione){

e.printStackTrace();

}

}

//获取数据库连接

publicstaticConnectiongetConnection(){

Connectionconn=null;

try{

conn=DriverManager.getConnection(URL,USER,PASSWORD);

}catch(SQLExceptione){

e.printStackTrace();

}

returnconn;

}

//关闭资源

publicstaticvoidclose(Connectionconn,PreparedStatementpstmt,ResultSetrs){

try{

if(rs!=null)rs.close();

if(pstmt!=null)pstmt.close();

if(conn!=null)conn.close();

}catch(SQLExceptione){

e.printStackTrace();

}

}

}2、用户查询业务方法java

publicclassUserDao{

//根据用户ID查询用户信息

publicUsergetUserById(IntegeruserId){

Connectionconn=null;

PreparedStatementpstmt=null;

ResultSetrs=null;

Useruser=null;

Stringsql="selectuser_name,phonefromuserwhereuser_id=?";

try{

//获取连接

conn=JdbcUtil.getConnection();

//创建预编译对象

pstmt=conn.prepareStatement(sql);

//设置参数

温馨提示

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

最新文档

评论

0/150

提交评论