版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaWeb基础面试题及详细参考答案(实操接地气版)本次题库精选企业面试高频JavaWeb基础题型,涵盖Servlet、JSP、会话技术、请求响应、过滤器、监听器、Web运行机制等核心知识点,答案贴合实际开发场景,摒弃书面化空话,简洁易懂、适配面试口述作答,适合初级开发岗位面试备考。一、Servlet核心基础(高频必考)题目1:简单说说Servlet的生命周期,以及每个阶段的作用参考答案:Servlet生命周期分为四个核心阶段,由服务器全权管理,从创建实例到销毁全程自动执行,无需手动调用。第一是实例化阶段。服务器接收首次请求后,会通过反射创建Servlet实例,全局只创建一个,单例运行,这也是Servlet线程不安全的核心原因。第二是初始化阶段。实例创建完成后,服务器自动调用init()方法,且该方法只执行一次。主要用于加载配置文件、初始化数据库连接、初始化全局参数等一次性资源加载操作,后续所有请求都不会再执行该方法。第三是服务处理阶段。每次客户端发起请求,服务器都会创建独立线程,调用service()方法处理请求。该方法会根据请求方式,自动分发调用doGet()或doPost(),是真正处理业务逻辑、响应客户端的核心阶段,多次请求会多次执行。第四是销毁阶段。当服务器关闭、项目卸载或服务超时销毁时,服务器会自动调用destroy()方法,仅执行一次。主要用于释放资源,比如关闭数据库连接、清空缓存、销毁线程资源等,避免资源泄漏。题目2:doGet和doPost的核心区别是什么?开发中如何选择使用?参考答案:两者核心区别集中在请求特性、数据传输、安全性和使用场景,日常开发遵循固定选用规则。一是数据传输方式不同。GET请求将参数拼接在URL地址栏中,明文传输;POST请求将参数封装在请求体中传输,地址栏不会展示参数。二是数据大小限制不同。GET受URL长度限制,只能传输少量简短数据,一般用于传参数、ID、页码等;POST无明确长度限制,可以传输大数据,支持上传文件、长文本等场景。三是安全性不同。GET参数暴露在外,会被浏览器缓存、记录历史记录,容易泄露信息;POST参数隐藏在请求体,相对安全,适合传输敏感数据。四是缓存特性不同。GET请求默认可以被浏览器缓存,重复请求会读取缓存数据,访问速度更快;POST请求不会被缓存,每次都会发起全新请求。使用选择上,查询类、无数据修改、参数简短的场景用GET,比如分页查询、详情查询;新增、修改、删除数据,传输敏感信息、上传文件的场景统一用POST。题目3:Servlet为什么是线程不安全的?开发中如何规避线程安全问题?参考答案:Servlet默认单例多线程工作,服务器只会创建一个Servlet实例,所有客户端请求共用这一个实例。如果我们在Servlet中定义了成员变量,多个线程同时对成员变量进行读写操作时,就会出现数据覆盖、数据错乱的问题,这就是线程不安全的核心原因。如果仅使用局部变量,每个线程独有一份变量,不会出现安全问题。开发中主要通过三种方式规避问题。第一,尽量不在Servlet中定义可读写的成员变量,所有业务数据、临时数据全部定义在方法内部,作为局部变量使用。第二,如果必须使用成员变量,对读写代码添加同步锁,保证同一时间只有一个线程操作变量。第三,不使用静态成员变量存储业务数据,静态变量全局共享,线程冲突概率更高。日常开发最常用、最高效的还是第一种方式。二、JSP核心知识点题目1:说说JSP的执行原理,JSP和Servlet的关系是什么?参考答案:JSP本质上就是Servlet,只是为了方便前端页面开发做的封装,底层运行逻辑完全一致。JSP页面首次被访问时,服务器会完成三步操作:首先将JSP页面解析为Java源文件,接着编译成class字节码文件,最后创建该类的实例,初始化并执行服务方法,响应客户端请求。解析编译的过程只在首次访问执行,后续访问直接调用实例,速度更快。两者的区别与分工很明确。Servlet主打后端业务逻辑处理,擅长接收请求、处理数据、调用业务层、跳转页面,不适合编写HTML页面;JSP主打页面展示,内嵌HTML、JS、CSS代码,适合做数据渲染、页面展示,不适合编写复杂业务逻辑。传统JavaWeb开发的标准流程就是:Servlet处理业务逻辑、封装数据,转发到JSP,由JSP完成页面渲染展示,实现前后端分工。题目2:JSP的四大作用域分别是什么?优先级和适用场景有什么区别?参考答案:JSP四大作用域是数据存储和共享的核心,作用范围从小到大依次为:page、request、session、application。第一,page域(页面域)。作用范围仅当前页面,页面刷新、跳转后数据立即失效,是最小的作用域。仅用于当前页面的临时数据展示,几乎不用于数据共享。第二,request域(请求域)。作用范围为一次完整的请求,从客户端发起请求,到服务器响应、页面跳转结束,数据失效。可以在一次请求的多个资源之间共享数据,最常用于Servlet向JSP转发传值,是开发中最常用的作用域。第三,session域(会话域)。作用范围为一次用户会话,浏览器打开访问项目开始,到浏览器关闭、会话超时或手动销毁结束。数据可以在用户多次请求、多个页面之间共享,常用于存储用户登录信息、购物车数据、用户权限信息等。第四,application域(全局域)。作用范围为整个Web项目,服务器启动创建,服务器关闭销毁,所有用户、所有页面共享同一套数据。常用于存储项目全局常量、网站访问量、全局配置信息等,使用时需注意线程安全问题。优先级方面:四个作用域数据查找遵循由小到大的顺序,优先从page域查找,找不到再找request、session,最后查找application域。三、会话与Cookie、Session核心考点题目1:Cookie和Session的区别是什么?各自的优缺点和使用场景?参考答案:Cookie和Session都是Web会话跟踪技术,用于识别用户身份、记录用户状态,但存储位置、特性、安全性差异很大。Cookie是客户端技术,数据存储在用户浏览器本地。优点是不占用服务器资源、读写速度快、支持长期存储;缺点是安全性低,数据明文存储、容易被篡改,且存储容量有限,单个Cookie最大4KB,同时可以存储的数量也有限。Session是服务端技术,数据存储在服务器内存中,仅将唯一的SessionID通过Cookie发送到客户端保存。优点是安全性高,数据存在服务端,用户无法篡改,无容量限制;缺点是占用服务器资源,用户量较大时会增加服务器压力,会话超时后数据会自动丢失。使用场景上,Cookie适合存储非敏感、长期有效的数据,比如记住登录状态、网站偏好设置、免登录标识;Session适合存储用户敏感数据、临时会话数据,比如用户登录信息、权限数据、临时业务数据。题目2:Session失效的场景有哪些?如何手动销毁Session?参考答案:日常开发中,Session失效主要有四种场景。第一,浏览器关闭,客户端保存的SessionID丢失,下次请求无法匹配服务端Session,等同于失效;第二,会话超时,项目默认超时时间一般为30分钟,用户无任何操作,服务器自动销毁Session;第三,服务器重启或项目重新部署,服务端内存中的Session数据被清空;第四,代码手动调用销毁方法,主动终止会话。手动销毁Session有两种常用方式。一是调用invalidate()方法,直接销毁整个会话,清空所有session域数据,常用于用户退出登录场景;二是调用removeAttribute()方法,精准删除session中指定的某个数据,不影响整个会话。四、过滤器与监听器题目1:说说Filter过滤器的作用和执行流程,开发中常用场景有哪些?参考答案:Filter是JavaWeb的核心组件,主要用于对所有请求和响应进行统一拦截处理,实现代码复用,避免每个Servlet重复编写通用逻辑。完整执行流程:客户端发起请求,服务器接收请求后,先经过Filter拦截,过滤器预处理请求数据,执行自定义逻辑,放行请求到目标Servlet;Servlet处理完业务逻辑、生成响应结果后,再次回到Filter,由过滤器对响应数据进行二次处理,最后返回给客户端。开发常用场景非常固定,主要有四类:第一,统一设置编码格式,解决全站乱码问题;第二,登录权限拦截,未登录用户禁止访问后台页面;第三,过滤非法请求、拦截恶意参数;第四,统一处理跨域请求。题目2:Listener监听器是什么?常用的Web监听器有哪些?参考答案:Listener是Web事件监听组件,用于监听Web项目中域对象的创建、销毁、数据变更等事件,无需手动触发,事件发生时自动执行对应逻辑,主要用于全局辅助处理。开发中最常用的三类监听器:第一,ServletContext监听器,监听全局对象的创建和销毁,常用于项目启动初始化资源、项目关闭释放资源;第二,HttpSession监听器,监听会话的创建和销毁,常用于统计在线人数、监控用户登录退出状态;第三,ServletRequest监听器,监听请求的创建和销毁,用于统计请求访问量、记录请求日志。五、请求转发与重定向题目1:请求转发和重定向的核心区别?开发中怎么选用?参考答案:两者是Web页面跳转的两种核心方式,核心差异体现在请求次数、地址栏、数据保留、跳转范围四个方面。第一,请求次数不同。请求转发是服务器内部跳转,只发起一次请求;重定向是客户端跳转,服务器返回302状态码,浏览器重新发起二次请求。第二,地址栏变化不同。请求转发地址栏不会改变,始终显示原始请求地址;重定向地址栏会更新为跳转后的新地址。第三,数据保留不同。请求转发属于一次请求,request域数据可以正常传递、保留;重定向是两次独立请求,上一次的request域数据会全部丢失。第四,跳转范围不同。请求转发只能跳转当前项目内的资源,无法跳转外部网址;重定向支持站内跳转,也可以跳转到百度、第三方接口等外部资源。选用规则:需要传递request域数据、站内页面跳转、隐藏真实跳转地址时,用请求转发;需要刷新地址栏、跳转外部资源、防止表单重复提交时,用重定向。六、Web基础高频简答题题目1:Web项目中常见的乱码问题如何解决?参考答案:乱码的核心原因是客户端和服务器编码格式不统一,日常开发针对性解决即可。GET请求乱码:Tomcat8及以上版本默认解决了GET乱码,低版本Tomcat需要修改server.xml配置文件,统一设置UTF-8编码。POST请求乱码:手动设置请求体编码,在Servlet或全局过滤器中配置request.setCharacterEncoding("UTF-8"),统一接收参数编码。响应输出乱码:配置response编码格式,设置response.setContentType("text/html;charset=UTF-8"),保证服务器响应数据和页面解析编码一致。实际开发中,最便捷的方式是编写全局编码过滤器,统一处理全站请求响应乱码,无需每个接口单独配置。题目2:简述JavaWeb项目的完整运行流程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四年级数学下册 第2课时 确定位置
- 1003《MySQL数据库应用与设计》课程授课计划
- 基于构件相关性的构件交互冲突检测:方法、应用与优化
- 基于机器视觉的认知康复机器人系统:设计、实现与应用探索
- 基于机器自学习的电网安全校正算法的深度剖析与创新实践
- 基于本体的预案数字化:理论、方法与实践创新
- 基于木基碳点与木材模板的复合材料制备及催化性能的深度剖析
- 基于有限元法的三维复合型裂纹应力强度因子精准解析与工程应用探究
- 基于有色随机Petri网的大型工程设计方案业务流程建模与深度解析
- 基于智能算法的集装箱码头装船堆区场桥调度优化策略与实践研究
- 2025秋人教版(2024)数学七年级上册教案 1.2.4 绝对值
- 伤口摄影技术课件教学
- 货车装卸工人合同协议
- 民事占地纠纷协议书模板
- 青光眼相关围手术期护理
- TCECA-G 0330-2024 磁悬浮离心式鼓风机 技术条件
- 15S202 室内消火栓安装
- 机器人技术等级考试五级教学课件完整版
- 中国手术头架行业市场现状分析及竞争格局与投资发展研究报告2024-2029版
- 心电图分析病例讨论
- JBT 14646-2023 低蠕变填充改性聚四氟乙烯垫片 (正式版)
评论
0/150
提交评论