前端-深入探讨网络面试题

第一关 请求-文件、数据、连接

文件类的请求:加载HTMl、CSS
数据: ajax请求(基于HTTP,HTTP基于TCP),如何建立连接的(三次握手,为什么不是两次或者四次),socket长连接,beacon(在浏览关闭的时候也能保持连接),长连接方式(socket、websocket、HTTP只要不返回也可以实现长连接)。

协议

HTTP 与 TCP的区别
解释性的题(可以举例子)
假设现在有一个网站
http://www.baidu.com 这里的http是应用层协议,TCP是传输层协议,http是基于tcp传输实现的应用层连接。

http请求、发送、状态(状态码)

http版本:

http1.0:
http1.1:引入长连接
http2.0:二进制 | 多路复用 (没有并发的限制)| 包头压缩 | 服务端推送
http3.0:

https

请添加图片描述
https相对于http更加安全,但是性能损耗更发大
优化方法: 整合请求、长连接

白屏现象

上一个请求依赖前一个请求的返回值
ajax1 => ajax2 => ajax3
代码书写
回调 => 回调地狱 => Promise => async / await
可以从network面板中有个瀑布/时间线,如果其中ajax1请求失败或者超时了,就会产生阻塞,此时就会发生白屏现象
阻塞场景: 代码层面 网关层面(比如请求一个认证信息失败了) 没有使用CDN,服务器负载过多也会导致请求缓慢触发请求超时
在这里插入图片描述

当请求数据总是很大时,该怎么优化

单纯从网络协议层来优化的话,可以将内容压缩,例如图片上传的时候,可以使用Accept-Encoding进行压缩 => 期望返回内容被压缩,以减少网络流量,提升性能, 比如可以压缩图片的base64码
有三种压缩方式gzip deflate br
但是需要看服务端支不支持压缩或者服务端性能不足导致没有开启压缩,第三方Api需要手动开启压缩
所以Accept-Encoding是一种请求性的并不是强制性的策略

如果服务端支持压缩也开启了压缩,响应头里具有Content-Encoding:gzip

请求头

1、请求头中的 Cookie (cookie是一种小型文本文件,用于存储用户信息,实现网站的登录、记录、分析等功能。) =>

cookie、localStorage、sessionStorage区别
特性CookielocalStoragesessionStorage
数据的生命期一般由服务器生成,可设置失效时间。如果在浏览器端生成Cookie,默认是关闭浏览器后失效除非被清除,否则永久保存仅在当前会话下有效,关闭页面或浏览器后被清除
存放数据大小4K左右一般为5MB一般为5MB
与服务器端通信每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题仅在客户端(即浏览器)中保存,不参与和服务器的通信仅在客户端(即浏览器)中保存,不参与和服务器的通信
易用性需要程序员自己封装,源生的Cookie接口不友好源生接口可以接受,亦可再次封装来对Object和Array有更好的支持源生接口可以接受,亦可再次封装来对Object和Array有更好的支持

Cookie无法跨域,需要以一种非常不安全的形式使其支持跨域,例如将ifram中的cookie传出来,会非常不安全
跨tab通信(实质上就是进程之间怎么通信),cookie需要同源才支持,sessionStorage不能跨tab,但是localStorage凌驾于浏览器之上所以可以跨tab通信
其他存储方式还有indexDB(键值对数据库)、webSQL(完整的关系型数据库),Vuex之类的

场景题

登陆态以及自动登录,对cookie
小程序登录态(微信一键登录)

重定向(性能优化场景)

强缓存和协商缓存
last-modified Etag

请求控制 手写并发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/575977.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FL Studio21中文版包含哪些强大的内置工具?有哪些新功能

FL Studio21中文版是一款功能强大的数字音频工作站(DAW),专为音乐制作人、作曲家和声音工程师设计。该版本提供了直观且易于使用的界面,让用户能够快速上手并创作出专业水准的音乐作品。无论是新手还是专业音乐制作人,…

鱼眼相机的测距流程及误差分析[像素坐标系到空间一点以及测距和误差分析]

由于最近在整理单目测距的内容,顺手也总结下鱼眼相机的测距流程和误差分析,如果有错误,还请不吝赐教。 参考链接: 鱼眼镜头的成像原理到畸变矫正(完整版) 相机模型总结(针孔、鱼眼、全景) 三维…

如何快速搭建一个ELK环境?

前言 ELK是Elasticsearch、Logstash和Kibana三个开源软件的统称,通常配合使用,并且都先后归于Elastic.co企业名下,故被简称为ELK协议栈。 Elasticsearch是一个实时的分布式搜索和分析引擎,它可以用于全文搜索、结构化搜索以及分…

零基础10 天入门 Web3之第1天

10 天入门 Web3 Web3 是互联网的下一代,它将使人们拥有自己的数据并控制自己的在线体验。Web3 基于区块链技术,该技术为安全、透明和可信的交易提供支持。我准备做一个 10 天的学习计划,可帮助大家入门 Web3: 想要一起探讨学习的…

鸿蒙OS开发实例:【Web网页】

背景 HarmonyOS平台通过Web控件可支持网页加载展示,Web在中是作为专项参考的。 本篇文章将从Android和iOS平台研发角度出发来实践学习API功能 说明 整个示例是以HarmonyOS开发文档网址作为加载目标页面布局增加了三个按钮“后退”,“前进”&#xff…

Linux 基础IO [缓冲区文件系统]

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:Linux知识分享⏪   🚚代码仓库:Linux代码练习🚚   🌹关注我🫵带你学习更多Linux知识   🔝 目录 前言 一.Linux下一切皆文件 二.缓冲…

Redis、Mysql双写情况下,如何保证数据一致

Redis、Mysql双写情况下,如何保证数据一致 场景谈谈数据一致性三个经典的缓存模式Cache-Aside Pattern读流程写流程 Read-Through/Write-Through(读写穿透)Write behind (异步缓存写入) 操作缓存的时候,删除…

Mac添加和关闭开机应用

文章目录 mac添加和关闭开机应用添加开机应用删除/查看 mac添加和关闭开机应用 添加开机应用 删除/查看 打开:系统设置–》通用–》登录项–》查看登录时打开列表 选中打开项目,点击“-”符号

excel 提取数字字符混合文本中的数字(快捷键ctrl+e)

首先,已知A列数据,在B1单元格输入A列中的数据,如3*4*6 第二部:全选对应的B列,然后: ctrld 批量复制 CTRLE 智能复制 由此可见,智能提取汉字与数字混合中的数字方法 。若想分别提取3个数字&am…

【ONE·基础算法 || 分治·快排并归】

总言 主要内容:编程题举例,理解分治的思想(主要是对快排、并归的应用)。       文章目录 总言1、基本介绍2、颜色分类(medium)2.1、题解 3、快速排序(medium)3.1、题解&#xff…

2024年最新阿里云服务器价格表2核2G、2核4G、4核8G、8核16G等配置报价

2024年阿里云服务器优惠价格表,一张表整理阿里云服务器最新报价,阿里云服务器网aliyunfuwuqi.com整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单,大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新…

IntelliJ IDEA中遇到的“cannot access java.lang.String“错误及其解决方案(day8)

intelliJ 今天遇到使用intelliJ遇到了一个新错误,有问题就解决问题是一个程序员最基本的修养,如下: 在上面的代码中,我使用了this.这个关键字,发现出现了以上问题,找了一些资料,不是很明白&am…