今天面试了字节,知道是血虐,所以就抱着学习的态度去了,记录一下
网络部分
HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
HTTP1.0、HTTP1.1的区别
1.长连接:HTTP 1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。
2.节约带宽:HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。另外HTTP还支持传送内容的一部分。这样当客户端已经有一部分的资源后,只需要跟服务器请求另外的部分资源即可。这是支持文件断点续传的基础。
3:Host域,在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。
4.缓存处理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
5.错误通知的管理,在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
HTTP1.1 和 HTTP2.0 的区别
1.HTTP/2采用二进制格式而非文本格式
2.HTTP/2是完全多路复用的,而非有序并阻塞的——只需一个连接即可实现并行
3.使用报头压缩,HTTP/2降低了开销
4.HTTP/2让服务器可以将响应主动“推送”到客户端缓存中
HTTP/2为什么是二进制?
比起像HTTP/1.x这样的文本协议,二进制协议解析起来更高效、“线上”更紧凑,更重要的是错误更少。
计算机网络模型:OSI七层模型(物-数-网-传-会-表-应)和TCP/IP模型(网-网-传-应)
TCP和UDP协议的区别
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2.TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3.TCP面向字节流,UDP面向保文UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低
4.TCP连接只能是一对一,UDP支持一对一,一对多,多对一和多对多的交互通信
5.TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
当一个用户在浏览器中输入一个地址后都发生了什么?
1.浏览器解析,2,查询缓存,3,DNS查询(从本地到顶级域名依次访问),4.建立链接(TCP三次握手)5,服务器发送响应,6.服务器发送响应,7.客户端收到页面 ,8浏览器渲染
Java部分
多线程的实现,内存模型,缓存机制
MySQL部分
索引,事务的特性和实现方式,事务的隔离级别,inodb的特点
手撕--正则转换
总结
我太菜了,好多都是有印象回答的坑坑洼洼,面试