版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HTTP项目实战面试题及详细答案(完整版)一、HTTP基础核心面试题1.简单说下HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3的核心区别,项目中分别用过哪些?参考答案:这三个版本是迭代升级的关系,核心优化方向是连接复用、传输效率、并发能力和延迟问题,项目中主流使用1.1和2.0,部分新项目适配3.0。1.HTTP/1.0:短连接为主,每次请求都会建立TCP连接、请求完成立即断开,频繁请求会产生大量三次握手、四次挥手开销;无持久连接、无管道化,不支持断点续传,现在基本淘汰。2.HTTP/1.1:目前最通用的基础版本,核心优化是持久连接,默认开启Connection:keep-alive,一次TCP连接可处理多次HTTP请求;支持请求管道化、断点续传、分块传输;新增缓存协商机制(ETag、If-Modified-Since)。缺点是单连接串行请求,队头阻塞,同一域名下浏览器默认限制6-8个并发连接。3.HTTP/2:基于HTTPS,核心解决1.1的队头阻塞问题。支持多路复用,单TCP连接可并行传输多个请求和响应,无需等待上一个请求完成;头部压缩降低请求体积;支持服务器主动推送资源。缺点是依然依赖TCP协议,TCP层面的丢包阻塞问题无法解决。4.HTTP/3:基于QUIC协议(UDP封装),彻底摆脱TCP限制,无队头阻塞,连接建立速度更快,弱网、移动网络环境下稳定性极强,目前多用于大型网站、APP接口服务,逐步普及中。2.HTTP常见请求方法有哪些?GET和POST的核心区别,项目中如何选型?参考答案:常用请求方法:GET、POST、PUT、DELETE、HEAD、OPTIONS、PATCH。GET与POST核心区别(实战角度,非八股):1.语义不同:GET用于查询、获取资源,无数据修改;POST用于提交数据、新增资源,会改变服务端数据状态。2.参数位置不同:GET参数拼接在URL后面,明文展示;POST参数放在请求体中,相对隐蔽。3.缓存机制不同:GET请求默认会被浏览器、代理服务器缓存;POST默认不缓存,每次都会发起全新请求。4.长度限制不同:GET受浏览器、服务器URL长度限制,无法传输大数据;POST无明确长度限制,可传文件、大表单数据。5.幂等性不同:GET是幂等请求,多次请求结果一致;POST非幂等,多次提交可能产生重复数据(比如重复下单)。项目选型规则:单纯查询列表、详情、筛选数据用GET;表单提交、新增数据、上传文件、接口写操作统一用POST。高频查询接口优先GET,利用缓存减轻服务端压力。3.什么是HTTP幂等性?常用方法哪些是幂等的?项目中如何保证接口幂等?参考答案:幂等性指:一个请求执行一次和执行多次,对服务端资源的影响完全一致,不会产生副作用。幂等方法:GET、PUT、DELETE、HEAD、OPTIONS非幂等方法:POST、PATCH项目实战解决方案(接口幂等):1.新增、下单、支付等POST接口,使用唯一幂等令牌,前端每次提交获取新令牌,服务端校验令牌是否已使用,杜绝重复提交;2.数据库层面加唯一索引,防止重复数据入库;3.关键接口添加状态机控制,已完成的订单、支付请求直接返回成功,不重复处理;4.接口添加防抖、节流,前端限制短时间重复点击。4.HTTP常见状态码分类,项目中高频用到的状态码及场景参考答案:状态码分5大类:1xx信息、2xx成功、3xx重定向、4xx客户端错误、5xx服务端错误。项目高频状态码:200:请求成功,常规查询、接口正常返回;201:资源创建成功,新增用户、新增订单场景;301:永久重定向,域名迁移、旧接口废弃跳转新地址;302:临时重定向,登录跳转、临时资源跳转;304:资源未修改,走浏览器缓存,无需重新请求服务端;400:参数错误,前端传参格式、字段不合法;401:未登录、token失效,无身份认证;403:权限不足,已登录但无当前接口操作权限;404:接口地址不存在、资源路径错误;405:请求方法不允许,接口只支持GET,前端用POST请求;429:请求过于频繁,触发接口限流;500:服务端代码异常、逻辑报错、数据库异常;502:网关错误,后端服务宕机、接口未启动;503:服务不可用,服务器过载、限流、维护中。二、HTTP缓存机制(面试高频重点)1.详细说下HTTP强缓存和协商缓存,项目中如何配置和优化?参考答案:HTTP缓存是前端、服务端性能优化的核心,分为强缓存和协商缓存,优先级:强缓存>协商缓存。1.强缓存无需请求服务端,浏览器直接读取本地缓存,返回200(fromcache)。对应响应头:Cache-Control、ExpiresExpires是旧版本,是绝对时间,受客户端时间影响,兼容性差;Cache-Control是主流,常用值:max-age=xxx(缓存有效秒数)、no-cache(不使用强缓存)、no-store(不缓存任何资源)、public、private。2.协商缓存强缓存失效后,浏览器携带缓存标识请求服务端,服务端对比资源是否更新,未更新返回304,使用本地缓存;更新则返回200和新资源。两组标识:(1)Last-Modified/If-Modified-Since:基于文件最后修改时间,精度低,秒级,无法识别文件内容不变、仅修改时间的场景;(2)ETag/If-None-Match:基于文件内容生成唯一指纹,精度更高,优先级高于修改时间,项目主流使用。项目实战配置优化:1.静态资源(图片、css、js)配置长时效强缓存,max-age设置7-30天,配合文件哈希命名,更新资源则修改文件名,突破缓存;2.动态接口不开启强缓存,设置Cache-Control:no-cache,走协商缓存,保证数据相对实时;3.首页、入口资源禁用缓存,避免上线后用户看不到更新。2.Cache-Control:no-cache和no-store的区别,很多人会混淆?参考答案:1.no-cache:不是不缓存,是不使用强缓存,每次请求必须先经过服务端协商校验,校验通过可使用本地缓存(304);2.no-store:彻底不缓存,浏览器和代理服务器不保存任何请求和响应数据,每次都重新请求服务端,适合隐私数据、支付、登录接口。三、HTTPS与安全相关面试题1.HTTP和HTTPS的核心区别,HTTPS的加密流程是什么?参考答案:核心区别:1.HTTP是明文传输,端口80,无加密、无校验、不安全,容易被抓包、篡改、劫持;2.HTTPS是HTTP+SSL/TLS加密,端口443,传输数据加密,具备身份校验、防篡改、防劫持,安全性高,目前线上项目全部强制HTTPS。HTTPS握手加密流程(简化实战版,易懂):1.客户端发起请求,携带支持的加密套件、TLS版本;2.服务端返回证书、选定的加密算法、公钥;3.客户端校验证书合法性(域名、有效期、CA签名),证书无效则直接告警;4.客户端生成随机密钥,用服务端公钥加密后发送给服务端;5.服务端用自身私钥解密,获取随机密钥;6.双方使用对称密钥进行后续数据加密传输,完成通信。2.什么是中间人攻击?HTTPS为什么能防止中间人攻击?参考答案:中间人攻击就是攻击者拦截客户端和服务端的HTTP明文通信,抓包、篡改数据、伪造响应,用户和服务端都无法感知。HTTPS防止攻击的核心不是单纯加密,而是证书校验机制:1.服务端证书由权威CA机构颁发,带有官方签名,无法伪造;2.客户端会严格校验证书的域名、有效期、签名合法性;3.即使攻击者拦截数据,没有服务端私钥无法解密,也无法伪造合法证书,数据无法篡改。3.线上项目为什么会出现HTTPS证书报错?常见原因有哪些?参考答案:1.证书过期,未及时续费更新;2.证书域名和访问域名不匹配(泛域名证书覆盖不全、绑定域名错误);3.证书链不完整,缺少中间证书,浏览器校验失败;4.服务器系统时间错误,导致证书显示未生效或已过期;5.使用了自签名证书,未被浏览器信任,仅适用于测试环境,禁止线上使用。四、跨域问题(项目核心实战)1.什么是跨域?跨域的判定规则是什么?参考答案:跨域是浏览器的同源策略限制,浏览器禁止不同源的页面之间相互请求资源,目的是防止恶意网站窃取用户数据。同源判定三要素:协议、域名、端口,三者必须完全一致,任意一个不同即为跨域。注意:服务端之间的请求不存在跨域,只有浏览器端请求才会触发跨域限制。2.项目中常用的跨域解决方案,各自适用场景?参考答案:1.CORS跨域(线上主流)服务端配置响应头,允许指定域名、请求方法、请求头跨域。支持所有请求方式,安全可控,适合前后端分离项目。简单请求直接放行,复杂请求会先发OPTIONS预检请求。2.代理跨域(开发环境常用)前端工程配置本地代理(Vue、React脚手架代理),本地启动服务转发请求,规避浏览器跨域限制,仅用于本地开发,线上无效。3.Nginx反向代理(线上部署常用)Nginx统一转发前端和后端请求,让前后端域名、端口保持同源,彻底解决跨域,稳定性高,是生产环境常用方案。4.JSONP利用script标签不受跨域限制的特性实现,缺点是只支持GET请求,不支持POST、请求头、请求体,现在基本不再使用,仅老旧项目可见。3.简单请求和预检请求的区别?什么场景会触发OPTIONS预检?参考答案:简单请求:满足条件则直接发送真实请求,无预检。条件:请求方法为GET、POST、HEAD;请求头仅包含默认字段,无自定义header;请求体是普通表单格式。预检请求(OPTIONS):只要不满足简单请求条件,浏览器会先发送OPTIONS请求校验跨域权限,校验通过后再发送真实请求。触发场景:1.使用PUT、DELETE、PATCH等非简单请求方法;2.请求头携带自定义字段,比如token、authorization;3.发送JSON格式请求体、文件上传等。项目优化:服务端配置缓存OPTIONS预检结果,减少重复预检请求开销。五、HTTP项目实战问题(面试压轴)1.线上接口慢、超时,如何通过HTTP层面排查问题?参考答案:日常排查主要从网络、连接、缓存、接口逻辑、资源大小几个维度逐步定位:1.查看浏览器Network面板,区分是请求阻塞、DNS解析、TCP连接、SSL握手、响应等待、数据传输哪个阶段耗时高;2.排查是否是HTTP/1.1队头阻塞,高频并发接口升级HTTP/2;3.检查静态资源是否未开启缓存,重复加载大文件;4.排查接口超时配置,前端超时时间过短、服务端接口执行耗时过长;5.查看是否存在重复请求、无效请求,增加服务端压力;6.网络层面排查DNS解析缓慢、弱网、网关转发延迟问题。2.什么是HTTP长连接?项目中Keep-Alive如何优化?参考答案:HTTP长连接就是基于TCP持久连接,一次握手后复用连接处理多次请求,减少频繁创建销毁连接的开销。项目优化方案:1.服务端开启Keep-Alive,配置合理的超时时间,避免空闲连接长期占用资源;2.避免短时间内大量新建连接,复用已有连接池;3.HTTP/2多路复用替代长连接,大幅提升并发能力;4.定时清理失效、僵死连接,防止连接池耗尽导致接口报错。3.接口304状态码过多,是好事还是坏事?项目如何处理?参考答案:静态资源304是好事,说明缓存生效,减少资源加载时间和服务端压力;动态接口、业务接口频繁304是坏事,代表数据更新后浏览器未及时获取最新内容,出现数据滞后问题。处理方案:1.静态资源保留304缓存,配合哈希文件名实现精准更新;2.动态业务接口禁用强缓存,设置no-cache,保证数据实时性;3.版本更新时强制清除浏览器缓存,兜底解决旧资源残留问题。4.说一说HTTP请求头、响应头中,项目高频使用的字段参考答案:高频请求头:Host:请求目标域名;User-Agent:客户端设备、浏览器信息;Refer
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年长春建工集团人员招聘考试题库及详细答案解析
- 2026年涂料零售行业发展趋势及投资前景报告及未来五至十年新兴市场与增量突破
- 2026事业单位笔试-甘肃-甘肃超声诊断(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-湖北-湖北中西医结合外科(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-浙江-浙江药事管理(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-河南-河南医学影像(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-江西-江西计算机信息管理(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-广东-广东神经内科(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-山西-山西中药制药(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-宁夏-宁夏医学基础知识(医疗招聘)历年参考题库含答案详解
- 2026年上海市检察院公益诉讼检察业务竞赛真题及答案
- 2026年药店岗前培训试题(附答案)
- CMA与CNAS检测报告深度解读:一单一库新政下的效力边界与实务指南
- 2026年人教版新教材数学五年级上册全套单元、期中、期末测试题及答案(共10套题)
- 全国OPC发展观察报告2026
- 2026年熔化焊接与热切割作业考试题库及模拟考试附答案
- 2026国家电投集团所属国家核电招聘(41人)笔试历年典型考点题库附带答案详解
- 2025年高考全国卷理科综合真题完整版(含标准答案+详细解析)
- 留置看护辅警考试面试真题(附答案)
- 服装企业面料采购质量控制方案
- 智慧城市重大危险源在线监控及事故预警平台规划方案
评论
0/150
提交评论