• 【明年找到好工作】:面试题打卡第一天


    http 和 https

    1、http:超文本传输协议;https: 是以安全为目标的HTTP通道,在HTTP的基础下添加了SSL

    2、http:明文传输;https:通过SSL进行加密,安全性比http要好

    3、http是80端口;https是443端口

    4、https:需要ca证书,费用高

    5、https协议的工作原理

    • 客户端使用 https url 访问服务器(要求web服务器建立ssl链接)
    • web服务器接收到客户端的请求后,会将网站的证书(证书包含了公钥),返回给客户端。
    • 客户端接收后,客户端和web服务器开始协商 ssl 链接的安全等级(加密等级)
    • 达成一致后,建立会话密钥,然后通过网站的公钥来加密会话密钥,并传送到网站
    • web服务器通过自己的私钥解密出会话密钥
    • web服务器通过会话密钥加密与客户端之间的通信

    在这里插入图片描述

    6、https的缺点

    • 握手阶段比较费事
    • 缓存不如http高效,会增加数据开销
    • SSL证书费用高

    TCP 和 UDP 的区别

    1、TCP是面向连接UDP是无连接的(即发送数据前无需先建立链接)‘

    2、TCP提供可靠的服务(通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达)

    3、UDP尽最大努力交付

    4、TCP面向字节流UDP面向报文,并且网络出现拥塞不会使得发送速率降低(因此会出现丢包,对实时的应用)

    5、TCP只能1对1的;UDP支持1对1,1对多

    6、TCP的首部较大为20字节,而UDP只有8字节


    webSocket的实现和应用

    1、什么是 WebSocket

    • WebSocket是一种协议,可以在单个TCP连接上进行全双工通信(可以让服务端主动向客户端推送数据)
    • 在WebSocket中,浏览器与服务器只需要完成一次握手,两者之间就可以创建持久性的连接并进行双向数据传输

    2、Websocket握手环节

    • 客户端向服务端发送请求
    • 服务端根据客户端的请求切换到WebSocket 协议
    • 服务端告知客户端服务器可以发起WebSocket连接
    • 客户端发起连接的约定
    • 客户端检查服务端的响应
    • 服务端处理客户端连接

    HEAD请求与GET请求的区别
    • HEAD请求跟GET请求相同,同样能够拿到响应头,但是不返回数据实体
    • HEAD请求通常是用来在下载文件之前,获取远程服务器上的文件信息

    BOM属性方法

    1、location 对象

    • location.href – 返回或设置当前文档的URL
    • location.search – 返回URL中的查询字符串部分(?id=5&name=haohao)
    • location.hash – 返回 URL#后面的内容
    • location.host – 返回URL中域名部分(www.baidu.com)
    • location.hostname – 返回URL中主域名部分(baidu.com)
    • location.pathname – 返回URL域名后的部分(www.baidu.com/a 返回/a)
    • location.port – 端口号
    • location.port – 协议
    • location.assign – 设置当前文档的URL
    • location.replace – 设置当前文档的URL(并且在history对象的地址列表中移除这个url)
    • location.reload() – 重载当前页面

    2、history 对象

    • history.go() – 前进或后退指定的页面数
    • history.back() – 后退一页
    • history.forward() – 前进一页

    3、navigator 对象

    • navigator.useAgent – 返回用户代理头的字符串

    • navigator.cookieEnabled – 返回浏览器是否支持(启用)cookie


    HTML5 拖拽 api
    • dragstart: 事件主体是被拖放元素,在开始拖放时触发
    • drag:事件主体是被拖放元素,正在拖放时触发
    • dragenter:事件主体是目标元素,在被拖放元素进入某元素时触发
    • dragover:事件主体是目标元素,在被拖放元素在某元素内移动时触发
    • dragleave:事件主体是目标元素,在被拖放元素移出某元素时触发
    • drop:事件主体是目标元素,在目标元素完全接受被拖放元素时触发
    • dragend:事件主体是被拖放元素,在整个拖放操作结束时触发

    http2.0

    1、http2.0是基于1999年发布的http1.0之后的首次更新

    2、请求资源所需时间更少,访问速度更快

    3、二进制分帧(在应用层(HTTP)和传输层(TCP)之间增加一个二进制分帧层)

    • 帧:HTTP2.0通信的最小单位,所有帧都共享一个8字节的首部
    • 消息:比帧大的通信单位,是指逻辑上的HTTP消息,比如请求、响应等。由一个或多个帧组成
    • 流:比消息大的通信得。是TCP连接中的一个虚拟通道,可以承载双向的消息。每一个流都有唯一的整数标识符

    在 http1.x 中传输数据使用的是文本传输数据;基于文本传输数据存在很多缺陷。而二进制不同,只有0和1的组合

    在http2.0中所有传输的数据都会被分割为更小的消息和帧,并采用二进制格式编码

    在http1.x的首部信息会被封装到Headers帧中,而Rquest Body则封装搭配Data帧中。

    4、首部压缩

    http1.x中并不支持首部压缩;在http2.0中则支持,使用首部压缩的算法是HPACK算法

    在http1.x中,使用的是文本形式进行传输,如果在header中需要携带cookie,则每次传输都传输重复数据

    在http2.0中,除了通过使用压缩算法压缩首部信息外,在客户端以及服务端都会维护一张索引表(用于记录曾经出现过的header),在后面请求过程中可以重复使用header。而对于接收端就可以通过键名找到对应的值

    5、多路复用

    在http1.x中由于浏览器限制同一个域名下的请求数量。因此,在页面需要请求很多资源时,队头会出现阻塞,只有等待前面资源加载完毕后才会加载下一个资源。

    而在http2.0中,基于二进制分帧,将http消息拆分成独立的帧(在不破坏信息的前提下),交错发出。而在另外一端根据流标识符和首部将这些帧重新组装。

    6、请求优先级

    把HTTP消息分为很多独立帧之后,就可以通过优化这些帧的交错和传输顺序进一步优化性能

    7、服务器推送

    服务器可以对一个客户端请求发送多个响应

    比如:

    • 客户端请求资源1,服务端在响应资源1的同时再次推送资源2、资源3
    • 如果该请求是从主页发出的,服务端可能会响应主页内容、logo以及样式表

    缺点:所有推送资源必须遵守同源策略


    400、401、403状态码

    1、400:请求无效

    • 可能产生的原因:前端提交数据的字段名称和字段类型与后台的实体没有保持一致

    2、401:当前请求需要用户验证

    3、403:服务器已经得到请求,但拒绝执行


  • 相关阅读:
    Android WMS——ViewRootImpl分析(六)
    django支持https
    Ajax中form表单以及模版引擎
    设计模式--责任链模式
    堆 (带图详解)
    C# 文件 文件夹 解除占用
    亚马逊刷关键词软件——亚马逊鲲鹏系统
    数据结构与算法基础(王卓)(2)
    Vue----生命周期函数
    SpringBoot
  • 原文地址:https://blog.csdn.net/weixin_44659458/article/details/126593653