2026年JavaEE初级面试题及详细答案(实战无模板版)_第1页
2026年JavaEE初级面试题及详细答案(实战无模板版)_第2页
2026年JavaEE初级面试题及详细答案(实战无模板版)_第3页
2026年JavaEE初级面试题及详细答案(实战无模板版)_第4页
2026年JavaEE初级面试题及详细答案(实战无模板版)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

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

文档简介

2026年JavaEE初级面试题及详细答案(实战无模板版)本套试题针对JavaEE初级开发岗位整理,适配2026年企业面试真实考核重点,涵盖Java基础、Web基础、SSM框架、SpringBoot、数据库、服务器与项目实操,所有答案均为职场实战总结,语言通俗、贴合面试口述逻辑,无书面模板化内容。一、Java基础核心面试题1.说说JDK、JRE、JVM的区别和联系三者是层层包含的关系,范围从大到小依次是JDK、JRE、JVM。JVM是Java虚拟机,是Java程序运行的核心环境,负责加载class文件、解释执行字节码、内存管理和垃圾回收,是实现Java跨平台的核心,只负责运行程序。JRE是Java运行环境,包含JVM和Java核心类库,普通用户只需要安装JRE就可以运行Java程序,没有编译、调试等开发工具。JDK是Java开发工具包,包含JRE、Java编译工具、调试工具、打包工具等开发必备组件,开发人员必须安装JDK才能编写、编译、调试Java代码。2.==和equals()的区别==是运算符,可以用于基本数据类型和引用数据类型。基本类型比较的是数值本身是否相等;引用类型比较的是对象的内存地址是否相同,也就是判断是不是同一个对象。equals()是Object类的方法,默认情况下和==效果一致,比较对象地址。但像String、Integer这些常用类都重写了equals方法,重写后不再比较地址,而是比较对象的内容、数值是否一致。日常开发中,比较字符串内容、对象属性内容,统一用equals;判断对象是否为同一实例用==。3.String、StringBuilder、StringBuffer的区别String是不可变字符串,一旦创建就不能修改内容,每次拼接、修改都会生成新的字符串对象,频繁操作会产生大量冗余对象,效率很低。StringBuilder和StringBuffer是可变字符串,底层通过字符数组存储,修改时不会新建对象,效率远高于String。核心区别在线程安全:StringBuffer加了synchronized锁,线程安全,适合多线程场景;StringBuilder没有锁,线程不安全,单线程场景效率更高,日常开发绝大部分场景优先用StringBuilder。4.讲讲Java的四种引用类型一共分为强、软、弱、虚四种引用,主要用于JVM垃圾回收的不同判定规则,日常开发常用前三种。强引用:最常用的普通对象引用,只要有强引用指向对象,GC永远不会回收,哪怕内存溢出也不会回收。软引用:内存充足时不回收,内存不足触发GC时会回收,适合做缓存,比如图片缓存、临时数据缓存。弱引用:只要触发GC,不管内存是否充足都会被回收,适合存放非必须的临时数据。虚引用:最弱的引用,几乎没有实际使用价值,必须配合引用队列使用,主要用于监控对象回收状态。5.异常体系中Error和Exception的区别Error是系统级严重错误,属于不可处理异常,是JVM运行时出现的底层问题,比如内存溢出、栈溢出、虚拟机异常,程序无法捕获和修复,只能终止运行。Exception是程序可处理的异常,分为编译时异常和运行时异常,是代码逻辑问题导致的,我们可以通过try-catch捕获、throws抛出、代码规避等方式处理。编译时异常必须手动处理,否则代码无法编译;运行时异常是RuntimeException及其子类,代码编译不报错,运行才会报错,比如空指针、数组越界。二、JavaWeb核心面试题1.GET和POST请求的区别第一,参数传递方式不同。GET参数拼接在URL后面,地址栏可见;POST参数放在请求体中,地址栏不可见。第二,数据长度限制不同。GET受限于浏览器URL长度限制,只能传少量数据;POST没有长度限制,可以传输大量数据,适合上传文件。第三,安全性不同。GET参数暴露,容易被篡改、记录,安全性低;POST参数隐藏,相对更安全。第四,缓存特性不同。GET请求会被浏览器缓存,重复请求会读取缓存数据;POST默认不会缓存。第五,使用场景不同。查询数据用GET,新增、修改、提交数据用POST。2.Session和Cookie的区别与联系Cookie是客户端技术,数据存储在浏览器本地,存储容量小、不安全、可以被用户手动禁用,生命周期可以设置持久化,关闭浏览器也能保留。Session是服务端技术,数据存储在服务器内存中,安全性高、无存储限制,依赖Cookie实现会话跟踪。浏览器第一次请求服务器,服务器创建Session并生成唯一sessionId,通过Cookie返回给浏览器,后续请求携带sessionId,服务器就能识别用户会话。如果用户禁用Cookie,可以通过URL重写的方式传递sessionId,保证Session正常使用。3.Servlet的生命周期Servlet生命周期分为三个核心阶段,由服务器全权管理。第一,初始化阶段:服务器启动或第一次访问Servlet时,调用init()方法,只执行一次,主要用于加载配置、初始化资源。第二,服务阶段:每次客户端请求都会调用service()方法,根据请求方式分发doGet、doPost方法,可执行多次,是处理业务逻辑的核心。第三,销毁阶段:服务器关闭、项目卸载时,调用destroy()方法,只执行一次,用于释放资源、关闭连接。4.转发和重定向的区别转发是服务器内部跳转,只发起一次请求,浏览器地址栏URL不会变化,属于同一个请求域,可以共享request域数据。转发只能跳转到当前项目内的资源,不能访问外部地址。重定向是浏览器二次跳转,服务器返回302状态码,浏览器重新发起新请求,地址栏URL会改变,是两个独立请求,无法共享request数据。重定向可以跳转外部链接、跨项目资源。日常开发,需要传参、保留请求数据用转发;需要地址更新、防止重复提交表单用重定向。三、SSM框架面试题1.Spring的IOC和AOP原理IOC即控制反转,核心是把对象的创建、管理、依赖关系全部交给Spring容器负责,不再由开发者手动new对象。传统开发是开发者主动创建对象,反转后是容器主动注入依赖,降低代码耦合度,方便统一管理对象。依赖注入DI是IOC的具体实现方式。AOP即面向切面编程,核心是在不修改原有业务代码的前提下,对方法进行增强,实现代码解耦。底层依靠动态代理实现,目标是把日志、事务、权限校验、异常处理这些通用功能抽离为切面,统一管理,业务代码只专注核心逻辑。2.SpringBean的生命周期第一步:实例化,Spring容器扫描bean定义,通过反射创建bean对象。第二步:属性填充,容器自动完成依赖注入,给对象的属性赋值。第三步:初始化,执行前置处理方法、自定义init初始化方法、后置处理方法。第四步:销毁,容器关闭时,执行自定义destroy销毁方法,释放资源。3.MyBatis中#{}和${}的区别#{}是预编译占位符,会自动对参数进行占位、转义,防止SQL注入,安全性高,日常查询参数、条件传参优先使用。${}是直接字符串拼接,不会预编译、不会转义参数,存在SQL注入风险,安全性低。但可以用于动态排序、动态表名、字段名场景,因为预编译不支持这类动态语法。总结:普通参数用#{},动态表名、排序字段用${},同时要做好参数校验防注入。4.MyBatis一级缓存和二级缓存一级缓存是默认开启的,属于SqlSession级别缓存。同一个SqlSession中,执行相同的SQL查询,第一次查询查数据库,后续直接读缓存。SqlSession关闭、提交事务、更新操作后,一级缓存会清空。二级缓存需要手动开启,属于Mapper级别缓存,作用域是整个mapper映射文件,多个SqlSession可以共享缓存数据。适合查询多、修改少的静态数据,能有效减少数据库查询压力。5.SpringMVC的执行流程1.客户端发起请求,前端控制器DispatcherServlet接收所有请求。2.DispatcherServlet调用处理器映射器HandlerMapping,根据URL匹配对应的Controller处理器。3.调用处理器适配器HandlerAdapter,执行匹配到的Controller方法。4.Controller处理业务逻辑,返回ModelAndView视图数据。5.视图解析器ViewResolver解析视图路径,渲染页面。6.封装响应结果,返回给客户端浏览器。四、SpringBoot核心面试题(2026高频)1.SpringBoot的核心特性、为什么要用它核心特性主要是自动配置、起步依赖、内嵌服务器、无XML配置。传统SSM项目需要手动配置大量XML文件、导入各种依赖、配置Tomcat服务器,配置繁琐且容易出错。SpringBoot通过starter起步依赖,一键整合常用框架,自动加载默认配置,无需手动写XML,同时内嵌Tomcat,项目可以直接打包启动,大幅提升开发和部署效率,也是目前企业主流开发框架。2.SpringBoot自动配置原理核心依靠启动类的@SpringBootApplication注解,该注解整合了三个核心注解:@Configuration配置注解、@EnableAutoConfiguration自动配置注解、@ComponentScan包扫描注解。其中@EnableAutoConfiguration会读取框架的自动配置文件,根据项目中引入的依赖包,自动判断需要加载的配置类,自动创建Bean、装配组件,无需开发者手动配置。同时支持自定义配置覆盖默认配置,灵活性很高。3.application.yml和perties的区别两者都是SpringBoot核心配置文件,功能完全一致,只是语法不同。properties是键值对格式,层级不清晰,配置多了容易混乱;yml是缩进式层级格式,结构清晰、可读性强,支持数组、对象、层级配置,更适合大型项目。优先级上,同一配置项,properties优先级高于yml,会覆盖yml配置。企业开发目前主流使用yml格式。4.SpringBoot如何自定义全局异常处理日常开发统一使用@RestControllerAdvice结合@ExceptionHandler实现全局异常处理。创建全局异常处理类,添加@RestControllerAdvice注解,拦截所有控制器的异常。通过@ExceptionHandler指定需要捕获的异常类型,比如空指针、参数异常、自定义业务异常,在方法中统一封装返回结果,统一前端响应格式,避免前端接收杂乱报错信息,同时方便后端统一日志记录。五、数据库MySQL面试题(初级必问)1.事务的四大特性ACID原子性:事务是最小执行单元,要么全部执行成功,要么全部回滚,不会出现部分执行的情况。一致性:事务执行前后,数据库数据的完整性、一致性不变,约束规则不会被破坏。隔离性:多个事务并发执行时,相互独立、互不干扰,通过隔离级别控制并发问题。持久性:事务提交成功后,数据会永久写入数据库,即使服务器宕机、重启,数据也不会丢失。2.MySQL四大隔离级别及并发问题1.读未提交:最低级别,能读取其他事务未提交的数据,会出现脏读、不可重复读、幻读,基本不使用。2.读已提交:只能读取其他事务已提交的数据,解决脏读,存在不可重复读、幻读,是Oracle默认级别。3.可重复读:同一事务多次读取同一数据,结果一致,解决脏读、不可重复读,存在幻读,是MySQL默认隔离级别。4.串行化:最高级别,事务串行执行,完全解决三类并发问题,但性能极低,并发场景不推荐使用。3.索引的作用、优缺点索引是数据库优化的核心,底层是B+树结构,作用是大幅提升查询效率,快速定位数据,减少全表扫描。优点:极大提升查询、排序、分组效率,减少数据库IO消耗。缺点:索引会占用磁盘空间;新增、修改、删除数据时,需要同步更新索引结构,会降低写操作效率。所以索引不是越多越好,只需要给高频查询字段建索引。4.什么是慢查询,如何优化执行时间超过指定阈值的SQL语句就是慢查询,会拖垮整个数据库性能。优化方式:开启慢查询日志,定位慢SQL;对查询字段建立合理索引;避免select*、避免索引失效(like%开头、or、null判断、类型不匹配);减少关联查询、分页优化、避免大量数据排序。六、Tomcat与项目实操面试题1.Tomcat的作用Tomcat是轻量级JavaWeb服务器,属于容器,主要用于运行Servlet、JSP等JavaWeb项目。可以接收客户端HTTP请求,分发请求、处理响应,管理项目运行生命周期,是JavaWeb项目部署的核心服务器。SpringBoot内嵌Tomcat,无需单独安装配置。2.项目部署流程1.本地开发完成后,通过Maven执行clean、package打包,生成jar或war包;2.将打包文件上传至服务器;3.配置服务器JDK环境,通过java-jar命令启动jar包;4.配置端口、防火墙、项目日志,测试接口访问,完成部署;5.线上环境一般配置守护进程,保证项目后台运行,宕机自动重启。3.开发中遇到的SQL注入问题如何解决最核心的方式是使用预编译SQL,也就是MyBatis的#{}占位符,参数预编译后无法拼接恶意SQL。同时禁止直接使用字符串拼接SQL,对前端传入的参数做校验、过滤,限制特殊字符,从源头规避注入风险。七、2026年初级高频场景面试题1.项目中如何处理表单重复提交日常开发常用两种方式:前端拦截和后端拦截。前端通过按钮置灰、禁止重复点击防止用户误操作;后端使用token机制,提

温馨提示

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

评论

0/150

提交评论