J2EE 高频面试题及详细答案(实战向)_第1页
J2EE 高频面试题及详细答案(实战向)_第2页
J2EE 高频面试题及详细答案(实战向)_第3页
J2EE 高频面试题及详细答案(实战向)_第4页
J2EE 高频面试题及详细答案(实战向)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

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

文档简介

J2EE高频面试题及详细答案(实战向)一、J2EE基础核心面试题1、什么是J2EE?它的核心组件和优势是什么?参考答案:J2EE是一套基于Java的企业级应用开发规范和平台,专门用于开发大型、分布式、高可用、可扩展的企业后台系统,区别于普通JavaSE桌面开发,它针对互联网项目、企业业务系统做了标准化约束。核心组件主要分为三类:1、Web组件:Servlet、JSP、Filter、Listener,负责接收和处理前端请求,做页面交互和请求拦截;2、业务组件:EJB(企业JavaBean,传统项目常用,现在Spring体系基本替代),用于封装核心业务逻辑、事务管理;3、服务组件:JDBC、JNDI、JTA、JMS等,分别负责数据库连接、资源查找、分布式事务、消息队列通信。核心优势:标准化规范,不同厂商服务器、框架可以兼容;分层架构清晰,代码解耦,便于维护和迭代;支持分布式开发、集群部署,适配高并发企业场景;自带事务、安全、资源管理机制,不用开发者重复造轮子。2、J2EE常用的三层架构是什么?每层作用是什么?参考答案:常规企业项目基于J2EE规范采用表现层、业务层、持久层三层架构,也是面试和项目开发的标准分层。1、表现层(Web层):核心组件为Servlet、JSP、Filter,主要负责接收客户端请求、参数校验、请求转发、响应数据,不处理任何核心业务逻辑,只做数据交互和请求分发。2、业务层(Service层):核心是封装业务逻辑、处理业务规则、控制事务,调用持久层完成数据操作,同时做数据二次校验、业务判断,是项目的核心中枢。3、持久层(DAO层):核心负责和数据库交互,专门实现数据的增删改查,不参与业务逻辑,只负责数据存取,保证数据操作和业务解耦。3、J2EE、JavaSE、JavaME的区别?参考答案:1、JavaSE:Java标准版,是Java的基础核心,包含语法、集合、IO、多线程、网络基础等,是所有Java开发的基础,主要用于桌面程序、基础工具开发。2、J2EE(JavaEE):Java企业版,基于JavaSE扩展,新增了企业级开发规范和组件,专注后台服务、分布式系统、网站项目开发。3、JavaME:Java微型版,针对嵌入式设备、老旧移动端设备开发,现在基本已经淘汰,企业开发基本不用。二、Servlet核心面试题(J2EE重点)1、什么是Servlet?Servlet的生命周期是什么?参考答案:Servlet是J2EE的核心Web组件,是运行在服务器端的Java小程序,专门用来接收、处理客户端的HTTP请求,返回HTTP响应,是传统JavaWeb项目的核心控制器。Servlet完整生命周期分为4个阶段:1、实例化:服务器启动或第一次接收请求时,容器(Tomcat)通过反射创建Servlet实例,全局只创建一个单例对象。2、初始化init():实例创建完成后,执行一次init方法,用于初始化配置、加载资源,全程只执行一次。3、服务处理service():每次客户端发起请求,容器都会调用service方法,根据请求方式分发到doGet、doPost方法,该方法可执行多次。4、销毁destroy():服务器关闭、项目卸载时执行,释放资源、关闭连接,全程只执行一次。2、doGet和doPost的区别?开发中如何选择?参考答案:1、参数传递方式不同:GET请求参数拼接在URL地址栏中,POST请求参数放在请求体中。2、数据长度限制不同:GET有URL长度限制,无法传输大量数据;POST无长度限制,支持大文件、长文本传输。3、安全性不同:GET参数暴露在地址栏,存在泄露、篡改风险;POST参数隐藏在请求体,相对更安全。4、缓存特性不同:GET请求会被浏览器缓存,重复请求会读取缓存数据;POST默认不缓存。5、书签支持不同:GET可保存为书签,POST无法保存书签。开发选择原则:查询数据用GET,提交表单、新增、修改、删除数据用POST。3、Servlet是单例的吗?存在什么线程安全问题?如何解决?参考答案:Servlet是单例多线程,整个项目中一个Servlet类只有一个实例,所有客户端请求共用这一个对象。线程安全问题:如果在Servlet中定义了成员变量,多个线程同时访问、修改该变量时,会出现数据覆盖、数据错乱的并发问题。因为成员变量存储在堆内存,所有线程共享,局部变量存储在栈内存,线程独立,不会有安全问题。解决方案:1、尽量不要在Servlet中定义可修改的成员变量;2、必须使用变量时,改用局部变量;3、添加同步锁synchronized(不推荐,会降低并发性能)。4、forward和redirect的区别?(请求转发和重定向)参考答案:1、请求方式不同:forward是服务器内部请求转发,全程只有一次请求;redirect是服务器响应客户端,客户端重新发起二次请求。2、地址栏变化不同:forward地址栏URL不变;redirect地址栏会变成跳转后的新地址。3、数据共享不同:forward可以共享request域中的数据;redirect会重置request域,无法共享数据。4、跳转范围不同:forward只能跳转到当前项目内的资源;redirect可以跳转到任意项目、外网地址。5、效率不同:forward一次请求,效率更高;redirect两次请求,效率稍低。三、JSP核心面试题1、JSP的原理是什么?JSP和Servlet的关系?参考答案:JSP原理:JSP本质就是Servlet,服务器第一次访问JSP时,Tomcat会将JSP文件编译成JavaServlet源码,再编译成class文件,实例化运行,后续访问直接执行class文件,无需重复编译。二者关系与区别:1、本质一致:JSP最终编译为Servlet,底层运行机制完全相同;2、职责不同:Servlet侧重后台逻辑处理、请求控制,不适合写页面;JSP侧重页面展示,内嵌HTML和Java代码,适合前端页面渲染;3、使用场景:早期项目JSP做页面,Servlet做控制器,现在前后端分离项目基本淘汰JSP,只用Servlet规范衍生的SpringMVC。2、JSP四大作用域和作用范围?参考答案:JSP四大作用域用于存储和共享数据,范围从小到大依次为:1、pageContext(页面域):仅当前页面有效,页面刷新、跳转后数据失效,范围最小。2、request(请求域):一次请求有效,请求转发可共享数据,重定向、请求结束后数据销毁。3、session(会话域):一次用户会话有效,浏览器不关闭、会话未过期,数据一直存在,针对单个用户。4、application(应用域):整个项目全局有效,所有用户共享数据,服务器关闭后数据销毁,范围最大。3、session和cookie的区别?参考答案:1、存储位置不同:Cookie存储在客户端浏览器;Session存储在服务器端。2、安全性不同:Cookie保存在本地,可被篡改、窃取,安全性低;Session数据存在服务端,安全性更高。3、容量限制不同:Cookie有固定容量限制,无法存储大量数据;Session无严格容量限制。4、生命周期不同:Cookie可手动设置永久有效;Session默认超时失效(一般30分钟),服务器关闭数据丢失。5、依赖关系:Session默认依赖Cookie存储JSESSIONID,禁用Cookie时可通过URL重写实现Session共享。四、Filter、Listener面试题1、Filter过滤器的作用和生命周期?实际项目用法?参考答案:Filter是J2EE的拦截器组件,用于拦截所有客户端请求和服务器响应,在请求到达Servlet之前、响应返回客户端之前做统一处理,实现代码复用。生命周期:服务器启动时初始化(init一次)→拦截请求执行过滤方法(doFilter多次)→服务器关闭销毁(destroy一次)。项目常用场景:统一设置编码格式(解决乱码问题)、登录权限拦截、敏感词过滤、跨域处理、请求日志记录。2、Listener监听器是什么?常用的监听器有哪些?参考答案:Listener是J2EE的事件监听组件,用于监听项目中作用域对象的创建、销毁、属性变更,无需手动调用,事件触发时自动执行。常用监听器:1、ServletContextListener:监听项目启动和关闭,常用于项目初始化加载配置、初始化数据;2、HttpSessionListener:监听用户会话创建和销毁,可统计在线人数;3、ServletRequestListener:监听请求创建和销毁,记录请求访问日志。五、J2EE事务与异常、进阶面试题1、J2EE事务的四大特性(ACID)?参考答案:1、原子性(Atomicity):事务要么全部执行成功,要么全部回滚,不可拆分;2、一致性(Consistency):事务执行前后,数据库数据完整性、约束规则保持一致;3、隔离性(Isolation):多个事务并发执行时,相互独立、互不干扰;4、持久性(Durability):事务提交成功后,数据永久保存,服务器宕机也不会丢失。2、J2EE中如何处理全局异常?参考答案:传统J2EEWeb项目有两种核心处理方式:1、web.xml全局异常配置:配置不同状态码、异常类型对应的跳转页面,统一捕获页面异常,避免直接抛出堆栈信息暴露漏洞;2、自定义异常+全局异常拦截:自定义业务异常类,结合Filter拦截所有请求,统一捕获异常、打印日志、返回统一错误信息,避免代码中重复try-catch。3、什么是JNDI?作用是什么?参考答案:JNDI是Java命名和目录接口,是J2EE的标准资源查找规范。核心作用是解耦资源配置和代码,项目中数据库连接池、数据源、消息队列等资源统一配置在服务器中,代码通过JNDI名称直接查找调用,无需硬编码配置参数,修改资源信息不用改代码,直接改服务器配置即可。六、项目实战高频问答(面试必问)1、Tomcat服务器的工作原理?参考答案:Tomcat是J2EE标准的Web容器,主要包含连接器和容器两大核心:1、连接器(Connector):监听8080端口,接收客户端HTTP请求,解析请求协议、参数,封装成request、response对象;2、容器(Container):根据请求路径匹配对应的Servlet,调用Servlet方法处理业务,生成响应数据,由连接器返回给客户端。同时Tomcat支持多线程处理请求,一个请求对应一个线程,支持并发访问,适配Web项目运行。2、J2EE项目乱码问题如何彻底解决?参考答案:乱码核心原因是请求、响应、页面、数据库编码不统一,统一解决方案:1、自定义编码Filter,统一设置request、response编码为UTF-8,拦截所有请求;2、JSP页面、HTML页面指定UTF-8编码格式;3、数据库、连接池URL统一配置UTF-8编码;4、GET请求单独处理URL编码,避免地址栏参数乱码。3、简述你做过的J2EE项目架构流程参考答案:我之前的传统JavaWeb

温馨提示

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

评论

0/150

提交评论