本文收录于 www.cswiki.top
以后发面经我都会尽量带上我的答案(蓝色引用框中的就是),不过不会写得那么详细,大概就是写一下如果我答的话具体逻辑是怎么样的,关键词啥的。有些我觉得不是很常见或者暂时不知道咋回答的题目,会加粗显示出来,也欢迎小伙伴们和我交流
今日面经来源:https://www.nowcoder.com/discuss/985106
总结:完全没有问项目问题,计算机网络部分问的特别细!死问我数据链路层的传输原理,答得磕磕绊绊,有好些题都没有答得很好,算法题倒是挺简单的,最后反问,面试官说我答得挺好的,但有些地方细节上还需要再学习优化下。
1)HTTP 三次握手,状态码,交互细节
HTTP 三次握手就是 TCP 三次握手,HTTP 是应用层协议,它的任务是与服务器交换信息。至于怎么连到服务器,怎么保证数据正确,HTTP 不管。事实上它总是假设数据是正确地传输的。 而 TCP 的任务是保证连接的可靠,包括防丢、防错。为了做到这些,在初次连接时要进行3次握手,以保证确实连接到了目标机器。而连接上后具体传送什么数据,TCP 是不管的 状态码:1xx 信息类提示,2xx 请求成功,3xx 请求重定向,4xx 服务器异常,5xx 客户端异常 交互细节应该就是 TCP 三次握手
2)为什么要三次握手
3)四次挥手,状态码,传输细节,为什么握手要三次,挥手要四次
4)数据链路层怎么传输数据的,展开说说
5)ARP 协议中网关怎么去转换 IP 地址到对应 MAC 地址的
关键点:ARP 高速缓存、广播 ARP 请求报文、ARP 响应报文
6)如果数据包不在当前子网内,怎么传输到目标子网网关的
首先,如何判断这个数据包的目标 IP 地址和当前主机的 IP 地址是否在同一子网(网段)内?利用子网掩码可以判断两台主机是否中同一子网中。若两台主机的 IP 地址分别与它们的子网掩码相 “与” 后的结果相同,则说明这两台主机在同一子网中。 其次,网关到底是什么呢?网关实质上是一个网络通向其他网络的 IP 地址(一般都是路由器的 IP 地址)。而默认网关(Default Gateway)就是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包 当一台计算机发送数据时,根据数据包中的目标 IP 地址,通过子网掩码来判定目标主机是否在本地子网中,如果目标主机在本地子网中,则(通过二层设备 - 交换机)直接发送即可。如果目标不在本地子网中则将该信息送到缺省网关/路由器,由路由器将其转发到其他网络中,进一步寻找目标主机。
7)MySQL 的行锁怎么实现的
InnoDB 行锁是通过给索引上的索引项加锁来实现的
8)MySQL 的事务,展开说说
先解释下 ACID 特性,然后说下 MySQL 如何保证 ACID 的:锁来保证隔离性(可扩展四种并发问题、四种隔离级别、行锁的三种算法、着重提一下 Next-Key Lock 解决幻读问题 ),redo log 保证持久性和原子性(持久性对应 WAL 和 CheckPoint,原子性对应 redo log 两阶段提交),undo log(MVCC)保证一致性
9)MySQL 索引了解吗,索引是怎么实现的
10)索引有哪些,介绍下
聚簇索引、非聚簇索引、唯一索引、联合索引、覆盖索引、前缀索引
11)联合索引中间可以有 null 值吗,为什么,测试过吗?
12)B+ 树的特点,原理
13)B+ 树索引和 Hash 索引的区别,优劣
14)了解死锁(DeadLock)吗
什么是死锁?两个线程互相请求对方的资源,并且不释放自己的资源,形成循环等待,导致死锁。 死锁的四个必要条件?互斥条件、请求和保持条件、不剥夺条件、循环等待条件 如何避免/预防死锁?破坏四个必要条件其中之一即可:
15)MySQL 怎么解决死锁的
16)平时遇到过死锁吗,怎么解决的
17)JVM 的垃圾清除说一下
18)垃圾收集算法有哪些
三大垃圾收集算法:
19)介绍下知道的垃圾收集器有些什么
新生代:
老年代:
面向全堆:
20)垃圾的判断方法,引用计数法为什么用的没有 GCRoot 的多,缺点是什么,为什么
两大方法:
21)平时测试过 JVM 的垃圾清除吗
22)Redis 的了解,介绍下
可以说下 Redis 是基于内存的,单线程工作的缓存,先介绍下为什么说 Redis 是单线程的(关键点:IO 多路复用、文件事件处理器);然后可以介绍下除了基于内存和单线程,Redis 还有哪些特性使得它那么快(Redis 特殊设计的数据结构 ziplist、skiplist,SDS 等;Redis 的虚拟内存机制)
23)Redis 的持久化
两大持久化机制:
dump.rdb
;SAVE
、BGSAVE
fork 子进程自动间隔性保存appendfsync
参数决定何时写入并同步磁盘);AOF 重写、fork 子进程 AOF 后台重写(AOF 重写缓冲区)24)算法题:删除链表的倒数第 k 个节点
心之所向,素履以往,我是小牛肉,小伙伴们下篇文章再见