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

下载本文档

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

文档简介

JavaEE高频面试题及详细答案(实战版)一、JavaEE基础核心面试题1.谈谈你对JavaEE的理解,和普通JavaSE有什么区别?JavaEE是一套企业级开发规范和技术体系,专门用于开发大型、分布式、高可用的企业级Web项目和后台服务,核心是解决企业开发中的Web交互、事务管理、分布式协作、组件复用等问题。JavaSE是Java基础标准版,聚焦基础语法、面向对象、集合、IO、多线程等底层基础,是所有Java开发的根基,主要用于桌面程序、基础程序开发。两者核心区别:JavaSE侧重基础语法和单机程序,JavaEE基于SE拓展,新增了Web、事务、持久层、组件化、服务治理等企业级能力,适配互联网和企业项目开发场景。我们日常开发的SpringBoot、SSM项目,都属于JavaEE技术栈范畴。2.简述JavaEE的核心组件和技术体系?JavaEE整套技术体系围绕Web开发和企业服务搭建,核心组件和常用技术可以分为四类:第一类是Web基础组件,包含Servlet、Filter、Listener、JSP,是JavaWeb最底层的核心,负责请求接收、过滤、监听、页面渲染;第二类是持久层技术,以JDBC为核心,用于数据库交互,后续衍生出MyBatis、Hibernate等框架;第三类是事务与服务规范,包含JTA事务规范、JNDI资源查找等,用于企业级分布式事务和资源统一管理;第四类是主流框架体系,Spring、SpringMVC、SpringBoot、SpringCloud都是基于JavaEE规范衍生的落地框架,也是目前企业开发的主流选型。3.Servlet的生命周期是什么?详细说一下执行流程Servlet生命周期是Servlet从创建到销毁的完整过程,由Tomcat等Web容器统一管理,全程分为三个核心阶段,只会执行一次初始化和销毁,服务方法会多次执行:第一、初始化阶段:服务器启动或者第一次接收请求时,容器会创建Servlet实例,调用init()方法完成初始化,只执行一次,一般用于加载配置、初始化资源;第二、服务处理阶段:每接收一次客户端请求,容器都会调用service()方法,根据请求方式分发doGet()、doPost()方法处理业务,多次执行;第三、销毁阶段:服务器关闭、项目卸载时,容器调用destroy()方法,释放占用的资源,只执行一次。补充:默认Servlet是单例多线程,全局变量存在线程安全问题,所以开发中严禁在Servlet中定义成员变量存储业务数据。4.Servlet和JSP的区别是什么?很多人会混淆两者,本质上JSP就是Servlet的升级版,底层编译后最终也是Servlet类,核心区别有三点:第一、职责不同:Servlet是纯Java类,擅长处理后台业务逻辑、请求分发、数据处理,不适合写页面;JSP是HTML和Java代码混合的页面,擅长前端页面渲染、展示动态数据;第二、开发场景不同:早期项目前后端不分离,用JSP做页面展示;现在前后端分离项目,基本只用Servlet及衍生框架处理接口,不再使用JSP;第三、执行效率不同:JSP首次访问需要编译成Servlet,存在编译耗时,Servlet直接运行,响应更快。目前企业新项目基本淘汰JSP,全部采用前后端分离架构。二、Web核心组件面试题(Filter、Listener)5.Filter过滤器的作用和执行流程?和拦截器有什么区别?Filter是JavaEE的Web过滤器,基于Servlet规范,作用是拦截所有Web请求和响应,在请求到达Servlet之前、响应返回客户端之后做统一处理。常见使用场景:统一编码设置、登录权限校验、跨域处理、请求日志打印、敏感字符过滤。执行流程:客户端发起请求→过滤器拦截请求并预处理→放行请求到Servlet/Controller→业务处理完成→过滤器拦截响应并后处理→返回客户端。Filter和Spring拦截器(Interceptor)核心区别:1.层级不同:Filter是Servlet原生组件,属于Web容器层级;Interceptor是Spring框架提供的组件,属于Spring容器层级;2.拦截范围不同:Filter拦截所有请求,包括静态资源、JSP、Servlet;Interceptor只拦截SpringMVC的Controller请求;3.执行顺序不同:请求进来先执行Filter,再执行Interceptor;响应返回先执行Interceptor后置处理,再执行Filter后置处理。6.Listener监听器有哪些常用类型?作用是什么?Listener是Servlet规范的监听器,用于监听Web项目的事件变化,比如项目启动销毁、会话创建销毁、属性变更,无需手动触发,事件发生自动执行。常用三类核心监听器:1.上下文监听器(ServletContextListener):监听项目启动和关闭,常用于项目初始化加载配置、初始化定时任务、注册bean;2.会话监听器(HttpSessionListener):监听用户Session创建和销毁,可用于统计在线人数、用户登录状态监控;3.请求监听器(ServletRequestListener):监听请求创建和销毁,用于统计请求耗时、监控接口访问量。三、Session、Cookie、Token核心面试题7.Cookie和Session的区别?各自优缺点?Cookie是客户端浏览器的缓存数据,存储在本地;Session是服务端的会话对象,存储在服务器内存中,两者都是用来做会话跟踪、记录用户状态的。核心区别:1.存储位置:Cookie存客户端,Session存服务端;2.安全性:Cookie可被篡改、窃取,安全性低;Session数据在服务端,安全性更高;3.容量限制:Cookie容量很小,单条不超过4KB;Session无严格容量限制,但过多会占用服务器资源;4.失效机制:Cookie可设置持久化存储,关闭浏览器不失效;默认Session关闭浏览器就失效,服务端超时自动销毁。缺点:Cookie不安全、容量小;Session占用服务器内存,集群环境下存在会话共享问题。8.为什么现在项目很少用Session,改用Token?传统Session只适合单体项目,无法适配现在的分布式、微服务、前后端分离架构,核心痛点有三个:第一、集群会话共享麻烦:多台服务器部署项目时,用户请求可能分发到不同服务器,Session存储在单台服务器,会导致用户登录失效,需要额外做Session复制、共享,维护成本高;第二、不适合移动端、跨域场景:Session依赖浏览器Cookie传递会话ID,移动端APP、小程序无法原生支持,跨域场景下Cookie容易失效;第三、服务器压力大:大量用户在线时,Session会持续占用服务器内存,高并发场景容易导致服务卡顿。而Token存储在客户端,服务端无需保存会话数据,减轻服务器压力,天然支持分布式、跨域、移动端适配,所以成为目前主流方案。9.简单说说JWT的组成和使用原理?JWT是目前最常用的Token生成规范,结构分为三部分:头部、载荷、签名。头部存储加密算法和令牌类型;载荷存储用户ID、账号、过期时间等自定义业务数据;签名通过密钥加密生成,防止令牌被篡改。使用流程:用户登录成功后,服务端生成JWT令牌返回客户端;客户端后续所有请求携带令牌;服务端解析验证签名和过期时间,验证通过则放行接口,无需查询服务端会话数据,效率极高。四、HTTP协议与Web请求面试题10.GET和POST请求的区别?面试常问重点1.参数传递方式:GET参数拼接在URL后面,明文展示;POST参数放在请求体中,相对隐蔽;2.数据大小限制:GET受限于浏览器URL长度,无法传输大数据;POST无严格大小限制,适合上传文件、提交大量数据;3.缓存特性:GET请求默认可被浏览器缓存,适合查询操作;POST不会被缓存,适合新增、修改、删除操作;4.幂等性:GET请求天然幂等,多次请求结果一致;POST非幂等,多次提交可能产生重复数据;补充误区:很多人说POST比GET安全,其实不准确,POST只是参数不展示在地址栏,抓包同样可以获取数据,真正的安全需要靠HTTPS加密。11.HTTP和HTTPS的区别?HTTPS加密原理HTTP是超文本传输协议,明文传输数据,端口80,速度快但不安全,容易被抓包、篡改、劫持;HTTPS是HTTP+SSL/TLS加密协议,端口443,传输数据加密处理,安全可靠,是目前所有线上项目的标准配置。HTTPS加密流程:客户端和服务端建立连接时,先通过非对称加密协商出对称加密密钥,后续所有数据传输都通过对称密钥加密解密,既保证了安全性,又解决了非对称加密速度慢的问题。五、事务与异常、实战坑点面试题12.说说JavaEE事务的四大特性ACID?事务是企业级开发核心,保证数据库操作的一致性,四大特性缺一不可:1.原子性:事务内所有操作要么全部成功,要么全部回滚,不能部分执行;2.一致性:事务执行前后,数据库数据完整性、约束规则保持一致,不会出现脏数据;3.隔离性:多个事务并发执行时,相互隔离,互不干扰;4.持久性:事务提交成功后,数据永久落地数据库,服务器重启、断电都不会丢失。13.Spring事务失效的常见场景?这是面试高频实战考点,日常开发最容易踩坑的几种场景:1.方法非public修饰:Spring事务基于AQS动态代理,非public方法无法被代理,事务不生效;2.同类方法内部调用:本类无事务方法调用本类有事务方法,不会触发代理,事务失效;3.异常类型不匹配:默认事务只捕获RuntimeException,普通Exception、自定义检查异常不会触发回滚;4.异常被手动捕获:业务代码try-catch捕获异常,没有抛出,Spring无法感知异常,不会回滚;5.数据库引擎不支持事务:MyISAM引擎不支持事务,必须使用InnoDB引擎。六、Tomcat服务器核心面试题14.Tomcat的工作原理?请求处理流程Tomcat是JavaEE轻量级Web服务器,也是Servlet容器,核心作用是接收客户端HTTP请求,解析请求,分发到对应Servlet处理,最终返回响应结果。完整请求流程:1.客户端浏览器发起HTTP请求,访问Tomcat服务端口;2.Tomcat连接器(Connector)接收请求,解析请求头、请求参数、请求地址;3.容器(Container)根据请求路径匹配对应的项目和Servlet;4.调用Servlet的service方法执行业务逻辑,处理数据;5.处理完成后

温馨提示

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

评论

0/150

提交评论