1. 面试官:“为什么myisam查询比innodb快?” 我:“因为XXXX” 面试官:“最重要的你没说,MyISAM用hash索引” 我内心:“MyISAM什么时候用过hash索引???”2. 同一个面试官: “hash索引和b+树索引的区别” 我:“hash索引查找复杂度O(1),但不支持范围查找” 面试官:“你确定hash索引不支持范围查询吗?” 我:“hash的特性决定了它没法做范围查询,因为他不能保证数据都是按顺序存储的” 面试官:“我不这么认为” 我 :“那如果hash查询又比b+树快,还能支持范围查询,那为什么mysql还要用B+树作为默认索引呢?” 面试官:“你这是在反问?” 我:“。。。。。” 面试官:“你使用过hash索引吗?” 我:“hash索引应用场景少,因为他不支持范围查询” 面试官:“那我就要用hash实现范围查找怎么做呢?” 我:“。。。。。”3. 还是同一个面试官:“那hash索引等值查找为什么比b+树块?” 我:“B+树查询时间负责度O(logn),hash查询复杂度O(1)” 面试官:“hash查询复杂度真的是O(1)吗?他如果出现了hash碰撞呢?” 我:“就算出现hash碰撞,也不会出现长度logn量级的链表,肯定是比B+树快的” 面试官:“你怎么证明呢?” 我:“。。。。。”4. 另一个面试官:“TCP第三次挥手时出现异常情况会发生什么” 我:“第三次挥手是服务端发送FIN给客户端,如果因为异常客户端没有正确接收到FIN报文,就不会返回ACK,服务器一段时间没有收到ACK会触发超时重传重新发送FIN,如果重传次数过多就会直接断开连接” 面试官:“那第四次挥手出现异常呢?” 我:“第四次挥手是客户端返回ACK给服务端,因为异常没有正确到达服务端,服务端由于没有接收到ACK,而它并不知道是FIN报文丢包还是ACK报文丢包,他一样会触发超时重传” 面试官:“不对,你结束之后去查一下,我们就不纠结这个了” 我:“。。。。。”