【面经总结】——协议相关

  1. http和https的区别;
  2. http1.0和http2.0的区别

1、http和https的区别
https的诞生是为了解决http的缺点。

http的缺点:

  1. 通信使用明文(不加密),内容可能会被窃听
  2. 不验证通信方的身份,因此有可能遭遇伪装
  3. 无法证明报文的完整性,所以有可能已遭篡改

为了解决 HTTP 协议的以上缺点,由网景(NetScape)公司设计了 SSL 协议。所谓的 HTTPS 其实是“HTTP over SSL”或“HTTP over TLS”,它是 HTTP 与 SSL/TSL 的结合使用而已。为了数据传输的安全,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
在这里插入图片描述
“加密”的过程,就是把“明文”变成“密文”的过程;反之,“解密”的过程,就是把“密文”变为“明文”。在这两个过程中,都需要一个关键的东西——叫做“密钥”——来参与数学运算。

对称加密:
在这里插入图片描述
非对称加密:
在这里插入图片描述
不过,窃听者可以伪造服务器的公钥与客户端通讯,客户端以为是跟服务器通讯,其实是与窃听者在通讯,后果可想而知。
CA 证书是为了解决上面非对称加密被劫持的情况,服务器申请 CA 证书时将服务器的“公钥”提供给 CA,CA 使用自己的“私钥”将“服务器的公钥”加密后(即:CA证书)返回给服务器,服务器再将“CA 证书”提供给客户端。一般系统或者浏览器会内置 CA 的根证书。
客户端获取到“CA 证书”会进行本地验证,即使用本地系统或者浏览器中的公钥进行解密,每个“CA 证书”都会有一个证书编号可用于解密后进行比对。

2、 http1.0和http2.0的区别

1、 HTTP2.0的基本单位为二进制帧
HTTP1.0利用文本与服务器交互,而HTTP2的基本协议单位为二进制帧流,每帧都有自己的类型旨在实现不同功能,然而HTTP1将继续存在,因此,HTTP2的二进制帧流需映射到HTTP1上以实现向下兼容。

2、 HTTP2.0的多路复用
浏览器对同一域名下的并发连接数量有限制,一般为6个,HTTP1中的Keep-Alive用于长连接而不必重新建立连接,然而keep-alive必须等本次请求彻底完成后才能发送下一个请求,而HTTP2的请求与响应以二进制帧的形式交错进行,只需建立一次连接,即一轮三次握手,实现多路复用。

3、 HTTP2.0压缩消息头
HTTP1的消息头很大冗余,而HTTP2.0利用HPACK对消息头进行压缩传输,假设将常用的请求GET/index.html用1表示,POST/index.html用2表示,即是将消息头中的不同的部分分别用不用的索引进行表示,且会用哈夫曼编码压缩字符串,最后封装成frame。

4、 HTTP2.0服务端推送
HTTP2.0中服务器会主动将资源推送给客户端,例如把js和css文件主动推送给客户端而不用客户端解析HTML后请求再响应。

5、 HTTP2.0只适用于HTTPS的场景
HTTPS是在HTTP和TCP之间增加了一层SSL,即secure socket layer,增加了数据安全传输及客户端和服务器端的身份验证,而HTTP2.0只适用于HTTPS的场景。

总结
HTTP1.0的缺陷
每个请求都需单独建立连接(keep-alive能解决部分问题单不能交叉推送)
每个请求和响应都需要完整的头信息
数据未加密
HTTP2.0的优势
多路复用
压缩头信息
请求划分优先级
支持服务器端主动推送

### 本地生活相关试经验 在本地生活领域,尤其是像饿了么这样的公司,技术试通常会涉及多个方的能力评估。以下是基于已有引用内容和其他专业知识总结的相关经验和技巧。 #### 技术背景的重要性 研究技术时需关注其产生的背景和适用场景[^1]。这种思维方式有助于候选人更好地解释为何某种技术被选中用于特定问题的解决方案。例如,在分布式系统设计中,了解一致性哈希算法如何优化缓存命中率并减少数据迁移成本是非常重要的。 #### 试题目覆盖范围广 对于具有五年以上服务器端开发经验的人士来说,准备阶段应全复习从基础概念到高级话题的知识点[^2]。这包括但不限于以下几类: - **网络协议与架构**: HTTP/HTTPS工作流程, RESTful API 设计原则. - **并发处理机制**: Java中的线程池配置参数(maxSize/coreSize), 并发控制策略. - **存储方案选择**: 数据库索引结构, NoSQL vs SQL 的优劣对比. #### 实际案例分享 一位成功获得饿了么P7职位offer的求职者提到,在对关于线程池原理的问题时,他通过阐述几个核心术语如`maxSize`, `coreSize`, 和`keepAliveTime`轻松作答[^3]。此例子表明掌握基础知识能够有效应对实际操作层的技术询问。 #### UI组件特性分析 (附加信息) 虽然主要讨论的是后台服务方向的内容,但前端表现形式同样不可忽视。比如Unity引擎下的UI文本显示方式有两种实现方法——标准Text控件和TMP(Text Mesh Pro)插件[^4]。两者各有千秋,在决定采用哪种之前要考虑具体需求,比如是否频繁更新内容等因素影响最终决策。 ```python # 示例代码展示简单的线程池创建过程 from concurrent.futures import ThreadPoolExecutor def task(n): return n * n with ThreadPoolExecutor(max_workers=5) as executor: results = list(executor.map(task, range(10))) print(results) ``` 上述脚本片段展示了Python环境下利用ThreadPoolExecutor模块管理多线程执行任务的一个实例。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值