1.自信
想到一个话题,就是不卑不亢、落落大方反而是最好的,不要特别卑微,不管是在关系中还是求职都是一样。
今天在回忆,在上次面试的时候,有什么做的不好的部分,就发现很多次自己的回答不是很确定,然后怎么怎么样。但是事实上,不知道就是不知道。因为我看到一个这样子的一个网上的一段话,他说面试官的追问的目的就是追问到直到你不知道。所以说你不知道你就直说,反而是对双方利益最大化的。
2.关于 HTTP 1.1、HTTP 2.0、HTTP 3.0 的区别。
主要体现在它们的传输效率上。HTTP 一点一,它是按照字节流去传输,而且是应用层的数据信息是逐个的去发送,前面的没有响应,后面的就要需要被阻塞。HTTP 2.0在这个基础上允许不同的应用层协议。我按序发送,然后到结尾再组装。但是因为 TCP 本身是字节流协议,所以说前方的字节流仍然会阻塞后续的字节流。
HTTP 3.0使用基于 UDP 的 QUIC 协议,它就真正实现了应用层独立的接收和确认的机制,因为它不再是 TCP 协议。
3.TCP 三次握手和四次挥手有关的过程和状态。
首先是为什么需要使用三次握手和四次挥手?三次握手是确保服务和客户端它们都具有收发能力,需要确认双方都得确认。而四次挥手是确保双方都发送完自己想发送的数据,并且已经都接收到对方的意图。
在三次握手阶段,首先初始状态下,是 close 的服务端进入 listen 状态,然后客户端是发送一个序号以及 SYN 标志,然后进入 SYN_SENT 阶段,服务端收到之后发送一个 ACK,它 ACK 是客户端发的序号加一,然后发送 ACK 标志,以及自己的 SYN 标志。SYN 进入 SYN_RECEIVE 阶段之后,客户端收到服务端的确认之后,返回最后的确认和 SYN,这时候可以写数据,这时候客户端进入 ESTABLISHED 的状态,然后服务端收到确认后也是一样的。
在四次挥手的阶段,通常是由客户端首先断开连接。客户端断开连接发送 FIN 标志进入 FIN_WAIT_1,服务端收到之后返回确认,然后服务端进入 CLOSE_WAIT,客户端收到确认之后变成 FIN_WAIT_2。
当服务端发完自己要发送的数据,也要关闭连接,就发送 FIN 标志,然后进入 LAST_ACK,需要等待最后的确认。然后客户端发送最后的确认之后,就进入 TIME_WAIT。如果 TIME_WAIT 2MSL 之后,没有收到其他信息,连接就算关闭,服务端进入 CLOSE 的状态。
这里 SYN sent、 SYN receive 还有 close wait、 last ACK、 time wait 这些可能大家不太容易记清每个词,然后 time wait 的存在的意义是一个高频的 面试问题。
4.和数据库事务有关的知识。
首先是事务具有四个特性,这是最基本的 ACID,原子性、一致性、隔离性和持久性。事务的原子性的实现是通过 Undo log,Undo log 具有纠正和反向操作来实现。而隔离性是通过多版本并发控制来实现,结合 Undo log 以及视图来实现。持久性通过 Redo log 预写日志来实现。Redo log 也是要走磁盘去刷盘的,但是它比普通的写磁盘的一个优点就是它是顺序写,它性能快得多。
数据库的事务的特性和它的隔离级别是离不开的。比如说使用不同的隔离级别,就是避免直接使用读写锁、直接使用互斥锁,这些锁性能会下降很多。所以说设置不同的隔离级别。隔离级别包括四种,比如说读未提交、读已提交、可重复读和可串行化。
其中,InnoDB 默认的隔离级别是可重复读,它的实现主要是通过多版本并发控制和临键锁来实现的。
这里我们刚才说 MVCC 是通过 Undo log 来实现的,这里有三个日志文件,它们的作用要能够了解,分别是 Undo log、 Redo log 和 Bin log。
Undo log 的作用主要就是用于记录旧值,用于事务失败时的回滚。而 Redo log 是用于数据的持久化去刷盘,是预写日志。
Binlog 的作用,一个也是可以做持久化,另外一个就是可以用于主从复制。在实际使用过程中,Redo log 和 Binlog 是使用两阶段提交的方式去写的。首先在 Redo log 中标记 prepare,然后在 Binlog 中去提交 Binlog 提交成功之后,在 Redo log 中去变成 commit。
然后最后总结一下我通过上一场面试学到了什么。主要是学到了:
-
在小屋子里边不要戴耳机,否则可能会被怀疑有作弊的嫌疑。
-
关于 HTTP 1.1 和 2.0 和 3.0 的叙述,这个是我之前复习的一个点,所以说感觉自己复习的很到位。
-
想到的就是关于手撕,还是得自己多刷,还是会有用的。
感觉自己渐渐的秋招也像了一个倦怠期,因为最近可能面试也少了,不过还没有很顺利的得到 offer。后续等到补录的时候,如果还不是很顺利,可能会比较焦虑。大概是等到 1 月中旬吧,过年之前。
不过还是比较正确的去书写自己的心态的,因为着急也没有用。更好的做法,更重要的是去认真的准备,做好下一场面试。另外就是,这是一个客观的事实,而且哪怕就算真的完全找不到工作,人也不会死,对,就是这样。