面试前端八股文十问十答第一期

面试前端八股文十问十答第一期

作者:程序员小白条个人博客

相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!

⭐点赞⭐收藏⭐不迷路!⭐

1)http 和 https 的基本概念

HTTP(Hypertext Transfer Protocol)是一种用于在Web浏览器和Web服务器之间传输数据的协议。HTTP使用TCP/IP作为传输协议,通过URL(Uniform Resource Locator)来定位和访问Web资源。它是无状态的,即每个请求与响应之间是相互独立的,服务器不会保存客户端的状态信息。

HTTPS(Hypertext Transfer Protocol Secure)是在HTTP基础上添加了安全性的扩展协议。HTTPS使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议来加密和保护数据传输。它使用公钥加密和私钥解密的方式来确保数据的机密性和完整性。

2)http 和 https 的区别及优缺点?

  • 安全性:HTTP是明文传输,数据容易被窃听和篡改,而HTTPS通过加密技术保护数据的安全性,提供更高的安全性和隐私保护。
  • 证书验证:HTTPS使用数字证书来验证服务器的身份,确保通信双方的身份真实可信,而HTTP没有这种验证机制。
  • 性能:HTTPS由于加密和解密的过程会增加额外的计算和处理时间,相对于HTTP来说会稍微降低性能。
  • 部署成本:HTTPS需要购买和维护数字证书,这增加了部署的成本和复杂性,而HTTP不需要这些额外的准备工作。

3)https 协议的工作原理

  • 客户端发起HTTPS请求:客户端(通常是浏览器)向服务器发起HTTPS请求,请求的URL以https://开头。
  • 服务器发送数字证书:服务器收到请求后,会将自己的数字证书发送给客户端。证书包含了服务器的公钥和证书相关的信息。
  • 客户端验证证书:客户端使用内置的根证书机构列表或操作系统提供的根证书来验证服务器的证书是否有效和可信。
  • 客户端生成对称密钥:客户端随机生成一个对称密钥,并使用服务器的公钥进行加密,然后将加密后的密钥发送给服务器。
  • 服务器解密对称密钥:服务器使用自己的私钥对收到的加密密钥进行解密,得到对称密钥。
  • 数据传输加密:客户端和服务器使用对称密钥进行加密和解密数据传输,保证数据的机密性和完整性。
  • 安全通信建立:一旦安全通信建立,客户端和服务器之间的通信将在加密的环境下进行。

通过以上的工作流程,HTTPS确保了数据在传输过程中的安全性和保密性,有效防止了窃听和篡改等安全威胁。

4)TCP三次握手

TCP三次握手是建立TCP连接的过程,具体步骤如下:

  1. 客户端向服务器发送一个SYN(同步)包,表示自己想建立连接。
  2. 服务器收到SYN包后,会回复一个SYN+ACK(同步+确认)包,表示收到了客户端的请求,并准备好建立连接。
  3. 客户端收到服务器的SYN+ACK包后,会再发送一个ACK(确认)包,表示连接建立成功。

5)TCP 四次挥手

TCP四次挥手是关闭TCP连接的过程,具体步骤如下:

  1. 客户端向服务器发送一个FIN(结束)包,表示自己想关闭连接。
  2. 服务器收到FIN包后,会回复一个ACK包,表示收到了客户端的关闭请求。
  3. 服务器在关闭连接前,会再发送一个FIN包给客户端,表示自己也准备关闭连接。
  4. 客户端收到服务器的FIN包后,会回复一个ACK包,表示收到了服务器的关闭请求,并关闭连接。

6)TCP/IP / 如何保证数据包传输的有序可靠?

TCP/IP协议保证数据包传输的有序可靠主要通过以下几个机制来实现:

  1. 序号和确认应答:TCP协议中每个数据包都有一个序号,接收方会发送一个确认应答,确保数据包按顺序到达。
  2. 超时重传:如果发送方在规定时间内没有收到确认应答,会重新发送数据包,确保数据的可靠传输。
  3. 滑动窗口:发送方和接收方都有一个窗口,用于控制数据包的流量,防止数据包丢失或堵塞。
  4. 检验和:TCP协议会对数据包进行校验和计算,确保数据的完整性,避免数据包损坏。
  5. 连接管理:通过三次握手和四次挥手来建立和关闭连接,确保数据传输的可靠性和有序性。

7)TCP和UDP的区别

  • TCP(Transmission Control Protocol)是面向连接的传输层协议,提供可靠的数据传输,通过三次握手和四次挥手来建立和关闭连接,适用于对数据传输可靠性要求较高的场景,如文件传输、网页浏览等。
  • UDP(User Datagram Protocol)是无连接的传输层协议,提供不可靠的数据传输,不进行连接的建立和关闭,适用于对实时性要求较高的场景,如视频直播、在线游戏等。UDP具有传输速度快、实时性好的特点,但不保证数据传输的可靠性。

8)HTTP 请求跨域问题

跨域问题是指在浏览器中,当一个网页的JavaScript代码向不同源(协议、域名、端口号任何一个不同)发起请求时,会受到同源策略的限制,导致请求被拒绝。为了解决跨域问题,可以通过以下几种方式:

  • JSONP(JSON with Padding):利用script标签的src属性不受同源策略限制的特性,通过动态创建script标签实现跨域请求。
  • CORS(Cross-Origin Resource Sharing):在服务端设置Access-Control-Allow-Origin等响应头,允许跨域请求。
  • 代理:在同源服务器端设置代理服务器,将跨域请求转发到目标服务器,再将响应返回给客户端。

9)Cookie、sessionStorage、localStorage 的区别

  • Cookie:存储在客户端的小型文本文件,用于在浏览器和服务器之间传递信息,有过期时间,每次请求都会携带到服务器端。
  • sessionStorage:HTML5引入的Web存储机制,存储在浏览器的sessionStorage对象中,仅在当前会话有效,关闭页面或浏览器后会被清除。
  • localStorage:HTML5引入的Web存储机制,存储在浏览器的localStorage对象中,数据长期有效,除非手动清除或达到存储容量上限。

10)粘包问题分析与对策

粘包问题是指发送方连续发送多个小数据包时,接收方可能会将多个数据包粘合在一起接收,导致数据解析出错。常见的解决方案包括:

  • 增加消息边界:在数据包中加入消息边界,接收方根据消息边界来区分多个数据包。
  • 消息长度固定:发送方和接收方约定每个数据包的固定长度,接收方按照固定长度来接收和解析数据。
  • 使用特殊字符:在数据包中使用特殊字符作为分隔符,接收方根据特殊字符来切分数据包。

通过以上方法,可以有效解决粘包问题,确保数据的正确解析和处理。

开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system

前后端总计已经 900+ Star,1.5W+ 访问!

⭐点赞⭐收藏⭐不迷路!⭐

  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小白条

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值