前端面试集中复习 - http篇
1. http请求方式
HTTP请求方式有哪些:GET POST PUT DELETE OPTIONS
1) GET POST 的区别?
场景上:
GET 用于获取资源而不对服务器资源做更改提交的请求,多次执行结果一致。用于获取静态数据,幂等。
POST:会对服务器的资源做更改进而影响数据,不幂等。
状态:
浏览器不会对POST请求进行主动缓存,业务逻辑很少对POST做缓存,对GET请求会有缓存,浏览器强刷会清除缓存数据。
安全性:
GET的参数的放在url,明文发送,不安全,易被捕获。
POST支持更多种类的请求参数数据类型,放在请求头里可以更安全传输。
2) PUT请求和POST的区别?
对于更新的定义: PUT请求通常是为了修改数据内容,但不会增加种类
例如:修改登录状态,在线、离线、忙碌,仅会改变状态值,不会对状态枚举值发生改变
POST请求既可以修改内容,同时也代表着可能增加类型种类,例如:可能在状态上增加一种免打扰状态
3) OPTIONS请求方法及使用场景?
是浏览器的自动行为,是一种http请求方法,主要功能是一个预处理 预发送,浏览器会在请求之前浏览器主动发送一个体积较小,速度较快的请求,和服务器交互一种合适的方式传输数据,并利用服务器端的回复获取一部分服务器的状态和性能 判断浏览器是否需要做缓存等逻辑,检查访问权限,CORS等,可以顺利交互。
4) 了解http协议的头部算法吗,是如何降低开销的?
HPACK算法:
1) 客户端和服务端共同维护建立字典,引用索引来标识重复的字符串
2) 通过编码算法压缩字符串,从而进一步减小请求头的大小
客户端和服务端都可以利用字典来跟踪和实时访问存储之前发送的数据值,也可以实时记忆,对于相同的数据,就不再通过每次请求和响应重复发送。
5) 上述字典的生命周期是如何?如何保证被更新?
首部表在http连接期内,始终保证存在并独立的,由客户端和服务端共同演进更新
每次新增的首部会通过一个键值对追加到末尾,更新的值会替换原有的位置
6)请求头和响应头
请求头 是为了让浏览器告知服务端自己的能力和配置
1. 常见的content-type有哪些
Accept - * 浏览器能处理的能力
connection 表示浏览器和服务端之间的连接类型
cookie 页面设置的内容,一些后台配置,服务器端可以注入权限等内容
host 发出请求的页面所在的域
referer 表示当前页面的运行身份
user-agent 判断浏览器设备类型,操作版本等执行环境
响应头 服务器端告知自己的能力
Date 请求发送的时间
sever
connection
cache-control
content-type
content-type属性值:
application/x-www-form-urlencoded - 原生form表单的形式
multipart/form-data - post常用,表单提交post
application/json: 序列化后的JSON字符串
2. HTTP状态码
204: 成功,content 返回为空,但是正确处理了
206: 客户端进行了范围请求,请求头里会有一个 content-range
301:永久重定向,例如访问地址已经不用了,会被永久重定向到新的地址,域名改变或者资源地址改变
302:临时重定向,例如某个特殊节日等,会有一个特别的活动地址,过了这段期间会恢复原地址
303:请求的资源有另一个合适的途径,应该使用get方法获取资源,会将POST请求变为GET请求进行重定向
304:通常跟浏览器缓存相关,表示本次请求附带的条件未满足服务器的要求,服务器发现后让浏览器使用之前请求的缓存来使用
307:当前重定向会严格按照浏览器的诉求,不会改变请求方式
302 303 307这三种重定向有什么区别
302是http1.0中出现的重定向,在http1.1 中细化出了303和307
400:请求报文出现了语法错误
401:认证失败
403:明确拒绝,客户端非法,forbidden
404:服务器端找不到对应的资源,当服务端拒绝查询资源且未说明理由时也会返回404
405:当前请求方式不被允许 method not allowed
500:执行请求发生错误
501:暂时不支持当前操作
503:超负荷或停机维护
3. http 1.x 和 2.x 的区别
2.0: 持久型链接,复用同一个TCP连接,(1.1更新)
二进制传输,头信息和数据体都用二进制传输
多路复用,在同一个TCP连接中同时进行多个请求
数据流,以数据流ID进行索引
头信息压缩:对头信息进行字典化索引以及压缩
2.0允许服务器端主动向客户端未经请求地推送资源,即资源非动态数据
### keep-alive
什么是keep-alive,建立过程和使用场景?优缺点?
建立过程:
1) 客户端发送报文夹带keep-alive的头配置
2) 服务端接收并处理,并且返回keep-alive的返回头
3) 客户端和服务端共同维持当前长链接建立
服务端主动断开:
1) 需要先等客户端发起请求
2) 服务端返回请求并且不带keep-alive
3) 关闭连接
客户端主动断开:
1) 客户端请求头带上close字段,keep-alive改成close
2) 服务端接受后处理并断开连接,返回给客户端
3) 客户端接收资源并关闭连接
好处:
服务端-CPU和内存占用下降,请求和回复复用管道变少,降低拥堵,减少了后续请求的延时,无需每次异常都关闭TCP
缺点:
长时间的连接可能会导致无效占用
4. https 和 websocket
SSL/TLS是什么 作用 和 工作原理
是一层安全协议,用于身份验证 信息加密 完整性校验
依赖于散列函数hash、对称加密、不对称加密
散列函数hash:
MD5、SHA1等 => 单向不可逆,且输入敏感型,输出长度固定,所以对于数据的修改都会导致值的变化,所以可以做完整性校验,判断信息中途未经修改
对称加密:
特点:两者共用同一种密钥,同时对其进行加解密
缺点:不能保证密钥传输的安全性
非对称加密:
公钥 私钥,利用公钥和对应私钥的互相加解密能力进行加密传输
缺点:会被中间截取,导致信息被篡改,因此会有一个数字证书,即相当于一个可信度高的机构,公钥和其他信息加密形成一个摘要,传输信息和认证中心的私钥等生成的签名signature形成数字证书,在发送时发出去,接收时用同样的算法生成一套摘要,两个进行对比判断是否被篡改,保证传输的安全。用两次非对称加密,来保证中途信息安全。
5. websocket 基础原理? 使用方式特点?
全双工的网络技术,属于应用层协议,基于TCP传输协议,可以复用HTTP的通道
原理:
请求: 客户端向服务端发送notify, 包含接收者的 id 和通知的 event
推送: 立即通知所有客户端,id满足的客户端,才会响应当前推送的反馈
特点:实时性比较强,双向传输。握手一次就可以建立一个长链接,可以接收客户端的推送。
6. DNS 与 网络协议
DNS 作用是将域名解析为 IP 地址,客户端会向DNS服务器发送查询请求,服务器返回给我们对应的IP地址。
迭代查询:
每次请求都会单词访问不同级别的DNS服务器,没查到就再次发送请求查询,直到返回结果。
递归查询:
只向目标服务器发送一次请求,优先自我查找,未找到会向下一级服务器进一步查询,直到返回结果。
7. OSI七层模型
应用层 表示层 会话层 传输层 网络层 数据链路层 物理层
应用层 表示层 会话层 统称为应用层
8. TCP 和 UDP
区别?
TCP有握手机制,校验,有安全保障,注重完整性,确定性的领域
UDP注重分发速度
相关文章:
前端面试集中复习 - http篇
1. http请求方式 HTTP请求方式有哪些:GET POST PUT DELETE OPTIONS 1) GET POST 的区别? 场景上: GET 用于获取资源而不对服务器资源做更改提交的请求,多次执行结果一致。用于获取静态数据,幂等。 POST࿱…...

C++ - 类和对象(上)
目录 一、类的定义 二、访问限定符 public(公有) protected(保护) private(私有) 三、类声明和定义分离 四、外部变量和成员变量的区别与注意 五、类的实例化 六、类对象的模型 七、类的this指针…...
mysql基础4sql优化
SQL优化 插入数据优化 如果我们需要一次性往数据库表中插入多条记录,可以从以下三个方面进行优化。 insert into tb_test values(1,tom); insert into tb_test values(2,cat); insert into tb_test values(3,jerry);-- 优化方案一:批量插入数据 Inser…...
实现Spring Web MVC中的文件上传功能,并处理大文件和多文件上传
实现Spring Web MVC中的文件上传功能,并处理大文件和多文件上传 在Spring Web MVC中实现文件上传功能并处理大文件和多文件上传是一项常见的任务。下面是一个示例,演示如何在Spring Boot应用程序中实现这一功能: 添加Spring Web依赖&#x…...

搭建vite项目
文章目录 Vite 是一个基于 Webpack 的开发服务器,用于开发 Vue 3 和 Vite 应用程序 一、创建一个vite项目二、集成Vue Router1.安装 vue-routernext插件2.在 src 目录下创建一个名为 router 的文件夹,并在其中创建一个名为 index.js 的文件。在这个文件中…...
Docker 安装mysql 主从复制
目录 1 MySql主从复制简介 1.1 主从复制的概念 1.2 主从复制的作用 2. 搭建主从复制 2.1 pull mysql 镜像 2.2 新建主服务器容器实例 3307 2.2.1 master创建 my.cnf 2.2.2 重启master 2.2.3 进入mysql 容器,创建同步用户 2.3 新建从服务器容器实例 3308…...
GPT每日面试题—如何实现二分查找
充分利用ChatGPT的优势,帮助我们快速准备前端面试。今日问题:如何实现二分查找? Q:如果在前端面试中,被问到如何实现二分查找,如果回答比较好,给出必要的代码示例 A:当被问到如何实…...
机器学习神经网络由哪些构成?
机器学习神经网络通常由以下几个主要组件构成: 1. **输入层(Input Layer)**:输入层接受来自数据源(例如图像、文本等)的原始输入数据。每个输入特征通常表示为输入层中的一个节点。 2. **隐藏层ÿ…...
代码随想录算法训练营day19 | 二叉树阶段性总结
各个部分题目的代码题解都在我往日的二叉树的博客中。 (day14到day22) 目录 二叉树理论基础二叉树的遍历方式深度优先遍历广度优先遍历 求二叉树的属性二叉树的修改与制造求二叉搜索树的属性二叉树公共最先问题二叉搜索树的修改与构造总结 二叉树理论基础 二叉树的理论基础参…...

数据库引论:3、中级SQL
一些更复杂的查询表达 3.1 连接表达式 拼接多张表的几种方式 3.1.1 自然连接 natural join,自动连接在所有共同属性上相同的元组 join… using( A 1 , A 2 , ⋯ A_1,A_2,\cdots A1,A2,⋯):使用括号里的属性进行自然连接,除了这些属性之外的共同…...

毕业设计:日志记录编写(3/17起更新中)
目录 3/171.配置阿里云python加速镜像:2. 安装python3.9版本3. 爬虫技术选择4. 数据抓取和整理5. 难点和挑战 3/241.数据库建表信息2.后续进度安排3. 数据处理和分析 3/17 当前周期目标:构建基本的python环境:运行爬虫程序 1.配置阿里云pytho…...

(一)基于IDEA的JAVA基础7
关系运算符 运算符 含义 范例 结果 等于 12 false ! 不等于 1!2 true > 大于 1>2 false < 小于 …...

MySQL数据库概念及MySQL的安装
文章目录 MySQL数据库一、数据库基本概念1、数据2、数据表3、数据库4、数据库管理系统(DBMS)4.1 数据库的建立和维护功能4.2 数据库的定义功能4.3 数据库的操纵功能4.4 数据库的运行管理功能4.5 数据库的通信功能(数据库与外界对接࿰…...

redis实际应用场景及并发问题的解决
业务场景 接下来要模拟的业务场景: 每当被普通攻击的时候,有千分之三的概率掉落金币,每回合最多爆出两个金币。 1.每个回合只有15秒。 2.每次普通攻击的时间间隔是0.5s 3.这个服务是一个集群(这个要求暂时不实现) 编写接口&…...

考研数学|汤家凤《1800》基础部分什么时候做完?
从我个人的经验来看,做完汤家凤1800的基础部分在第一轮复习中并不是必须的,但是可以作为一个有效的复习工具。 我认为汤家凤1800的基础部分确实涵盖了考研高数的基础知识点,并且题目难度适中,适合用来巩固基础。在第一轮复习中&a…...
JS的设计模式(23种)
JavaScript设计模式是指在JavaScript编程中普遍应用的一系列经过验证的最佳实践和可重用的解决方案模板,它们用来解决在软件设计中频繁出现的问题,如对象的创建、职责分配、对象间通信以及系统架构等。 设计模式并不特指某个具体的代码片段,…...

[自研开源] MyData v0.7.5 更新日志
开源地址:gitee | github 详细介绍:MyData 基于 Web API 的数据集成平台 部署文档:用 Docker 部署 MyData 使用手册:MyData 使用手册 试用体验:https://demo.mydata.work 交流Q群:430089673 介绍 MyData …...

3月份的倒数第二个周末有感
坐在图书馆的那一刻,忽然感觉时间的节奏开始放缓。今天周末因为我们两都有任务需要完成,所以就选了嘉定图书馆,不得不说嘉定新城远香湖附近的图书馆真的很有感觉。然我不经意回想起学校的时光,那是多么美好且短暂的时光。凝视着窗…...
Java 变得越来越像 Rust
Java 变得越来越像 Rust 介绍 随着编程的增强和复杂性越来越流行,许多编程语言也相互效仿。 Java 也不例外。 尽管社区内部存在问题,Rust 仍逐年赢得了开发人员的喜爱。并且有充分的理由:由于编译器,Rust 使开发人员能够避免整…...
通过git bash 或命令行ssh访问服务器 sftp上传下载文件
上传下载文件 sftp -P 端口 appywIP 示例:sftp -P 10022 appyw25.222.133.222 然后输入密码即可 ls 查看文件 lls 查看本地文件 cd 跳转 lcd 本地跳转 get ... 下载文件 put 本地文件名 远程文件夹 //上传文件 put -r 本地文件夹 远程文件夹 //上传文件夹服务器…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...

Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
文件上传漏洞防御全攻略
要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...