每天进步一点点:4.8

本文概述了TCP和UDP在网络协议中的区别,包括连接状态、可靠性、有序性、速度和量级。还讲解了栈和队列的数据结构差异,以及HTTP、HTTPS和HTTP2.0的发展,以及手机扫码登录实现。涉及技术点有XSS/CSRF攻防和单线程JavaScript。
摘要由CSDN通过智能技术生成

大家好,我是梅巴哥er。 又是继续学习的一天。


1,问:计算机网络TCP和UDP的区别

答:

  • UDP用户数据报协议,TCP传输控制协议。
  • 连接状态:TCP面向连接,UDP无连接。TCP是单对单传输数据,UDP适合多波发布
  • 可靠性:TCP利用握手、确认和重传机制,提供了可靠性保证。UDP可能会丢失,不保证数据发送成功
  • 有序性:TCP利用序列号,保证了消息的顺序交付。UDP的数据包是相互独立的,不具备有序性。
  • 速度:UDP更快
  • 量级:TCP属于重量级,UDP属于轻量级。
2,问:TCP连接和释放过程(即三次握手和四次挥手)

答:

  • 三次握手:
    • 客户端向服务器发送连接请求,
    • 服务器确认收到请求,并向客户端返回应答,
    • 客户端确认收到应答,并向服务器发送确认报文,服务器确认收到报文。建立连接。
  • 四次挥手:
    • 客户端向服务器发送请求释放连接的报文
    • 服务器确认收到客户端的关闭请求,服务器进入半关闭状态,并向客户端返回确认报文
    • 服务器做好释放连接准备,再次向客户端发送报文,并停止了向客户端发送数据,只能接收客户端发送的数据
    • 客户端确认收到报文,确认服务器做好了释放连接准备,停止等待,关闭连接,并向服务器发送报文。服务器确认收到报文,关闭连接。
3,问:栈和队列的区别

答:

  • 栈和队列,都是一种线性存储结构。
  • 栈是单端口的,只能在一端操作,所以数据的存取都遵循“先进后出”的规则。理解举例:如点击页面A的连接,进入到B页面,点击B页面的连接,再进入到C页面。如果想回到A页面,就要先从C回退到B,再从B回退到A。
  • 队列是双端口的,可以在两段操作,所以数据的存取可以做到“先进先出”。理解举例:常见的排队买东西就是队列类型的。
4,问:http, https, http2.0的演变过程和特性

答:

  • http特性:
    • 基于TCP/IP,可靠传输
    • 支持客户端/服务器模式,即一个发请求,一个返回响应
    • 简单、快速、灵活:客户端向服务器发送请求时,只需发送请求方式和路径即可。http允许传输任意类型的数据对象。
    • 无状态:每个请求之间都是独立的
    • 无连接:每次连接只处理一个请求
    • 明文通信
  • http2.0特性:
    • 头部压缩
    • 二进制格式
    • 多路复用
    • 服务器推送
    • 请求优先级
  • https特性
    • 内容加密
    • 验证身份
    • 保护数据的完整性
5,问:手机扫码登陆怎么实现

答:
在这里插入图片描述

6,问:轮询,长轮询,websocket

答:

  • 轮询:
    • 客户端向服务器发送请求,客户端获取数据,更新页面数据。页面加载后触发定时器,每隔一段时间,再次向服务器发送请求。
  • 长轮询:
    • 客户端向服务器发送请求,客户端收到获取到数据后,更新页面数据,然后马上再发一次请求,看下有没有新的数据。递归执行。页面加载时,再次向服务器发送请求,看下有没有数据更新
  • websocket:
    • 持续连接,双向数据传输。服务器有数据更新时,就把数据发送给客户端,客户端收到新数据后,更新页面数据。
7,js计算精度丢失问题及解决
console.log((0.1 + 0.2) === 0.3) // false
console.log((0.2 + 0.3) === 0.5) // true
// 解决
// 先变成整数,计算完成后再变回小数
console.log((0.1*10 + 0.2*10)/10 === 0.3) // true
8,问:怎么阻止事件冒泡

答:

  • e.stopPropagation()
9,问:js基本数据类型

答:

string, number, boolean, null, undefined, symbol
10,问:XSS和CSRF攻防

答:

  • XSS: 跨站脚本攻击
    • 攻击: 不需要用户登陆,在页面输入代码,向页面注入脚本,完成破坏操作。
    • 反射型攻击:XSS代码出现在url中,作为输入发送给服务器,服务器收到后,再把响应内容和XSS代码一起返回给客户端,客户端收到后解析执行XSS代码,完成攻击。
    • 存储型攻击:XSS代码会被存储到服务器,不需要在客户端重复提交XSS代码
    • 防御:对用户输入数据进行编码、过滤和校正。
  • CSRF:跨站请求伪造
    • 攻击:网站A的用户登陆网站A,并生成了cookie信息。随后用户又通过A网站访问了危险网站B。危险网站B携带用户A的cookie信息向网站A发请求,网站A不能确定这个请求是危险网站B发出的,还是用户A发出的,网站A识别了cookie,所以同意了请求,然后危险网站B就可以模拟用户A对网站进行操作。
    • 防御:使用token,把token隐藏了http的head头中,使用Referer验证,核实请求来源,如果不是本站的请求,就拒绝。
11,问:js为什么是单线程的

答:

  • 单线程:同时只做一件事,做完一件事后,再做另一件事。
  • 作为单线程的脚本语言,js的主要用途是与用户互动和操作DOM。如果js是多线程,会面临许多问题。比如两个线程上,一个线程对该节点添加内容,另一个线程同时又删除了这个节点,在执行上就容易出现问题。而js的单线程特性,不需要考虑抢占资源等问题,恰恰提高了执行效率。
12,问:js数组方法中,哪些方法是改变原数组的,哪些不会

答:

  • 增删、反转、排序。可以改变原数组。其他的不会。
13,问:foreach和map有什么区别,分别在什么情况下使用

答:

  • map有返回值,返回的是一个新数组。
  • forEach没有返回值
14,问:js原型链

答:

  • 回答方向:
    • 为啥会有原型这个概念
    • 原型链图
15, 手撕代码:输出一个字符串中,第一个不重复的字符。如果没有不重复的字符,就输出-1
var arr = []
for(var i = 0; i < str.length; i++) {
    var str1 = str.slice(0, i) + str.slice(i+1)
    arr.push(str1.indexOf(str[i]))
}
arr.indexOf(-1) === -1 ?  console.log(-1) : console.log(str[arr.indexOf(-1)])

16, 问:介绍一下七层网络模型,以及每一层都有哪些协议

答:
OSI:

  • 物理层:EIA/TIA-232, EIA/TIA-499, V.35, V.24, RJ45, Ethernet, 802.3, 802.5, FDDI, NRZI, NRZ, B8ZS
  • 数据链路层:Frame Relay, HDLC, PPP, IEEE 802.3/802.2, FDDI, ATM, IEEE 802.5/802.2
  • 网络层:IP,IPX,AppleTalk DDP
  • 传输层:TCP,UDP,SPX
  • 会话层:RPC,SQL,NFS,NetBIOS,names,AppleTalk,ASP,DECnet,SCP
  • 表示层:TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption,MPEG,MIDI,HTML
  • 应用层:FTP,WWW,Telnet,NFS,SMTP,Gateway,SNMP
17,问:diff算法

答:

  • diff算法:即差异查找算法
  • 传统diff算法:计算两棵树的差异的时间复杂度是O(n³),计算成本过高
  • React的diff算法:跨层级移动操作特别少,可以忽略不计。通过比较同层级的DOM节点,优化diff算法,计算两棵树的差异的时间复杂度是O(n)
18,问:map数组的时候,给标签里加key有什么作用

答:

  • 不加key时,创建一个新标签,会把前面的标签都删除,然后重新创建一遍所有标签
  • 加key后,创建一个新标签,不会操作前面的标签,而是单纯的添加新创建的标签。
19,问:react数据初始化应该在哪个生命周期,为什么

答:

  • constructor()
20,问:网址输入到渲染的全过程

答:

  • DNS解析
  • 先看缓存里有没有需要的资源,如果有,就直接从缓存里拿
  • 如果没有,客户端就和服务器建立连接
  • 客户端向服务器发送请求,获取html、css、js等资源
  • 浏览器解析并渲染页面,然后断开连接。

以上。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值