面试反思
电话面试录音。方便复盘。
感想
我竟然觉得面试比工作中收获大。我的角度是站在学习的角度方面。因为,工作极少极少有人指导你。但面试一次,就相当于有人指导了你一次(特指问的很细的情况)。
收获
两个学习技巧:
深度遍历学习法:
面试的时候,注意面试官的问答路径。模板如下:
比如问A软件。
问题:A软件跟B软件的区别是什么?(redis跟memcache)
……
问题:A软件xx有哪些?(mysql索引有哪些?)
有yy跟uu
……
问题:说下yy吧?(说下覆盖索引)
iii
……
问题:这些xx的底层结构是什么?(mysql的b+tree)
@*&……%%¥¥¥¥
问题:为什么用这个结构?有啥特点?
这就是面试官的问答路径。深度遍历问答。知道你不会为止。或者问的差不多为止。当然是靠你的深度。
所以,我们学习也应如此。用深度遍历式学习法。模板如下:
为什么这样?
为什么这样这样?
为什么不那样那样?
为什么这样这样这样?
为什么这样这样这样不那样那样那样?
“反编译”学习法:
这个说直白点就是。琢磨面试官的话。然后反思自己是不是知识掌握的方式方法不对?
当你跟比你技术好的人谈完话。对方也不指导你。你就只能不断的琢磨。为什么他说的或他做的都是知识点呢?
琢磨的过程就是"反编译"的过程。试图通过结果,去构造一个合理的解释。然后用解释推算下能不能达到这样的结果。
比如:同样 show processlist。 面试官能用这个找问题?而你却只是知道。却没有去把知道的去灵活下。
"反编译"出一个合理的解释:自己以后要应用。或者学习其他的语句(命令)去思考能干什么?还能干其他的什么?
优化点
面试官的深度遍历问法优化?
方法:压缩路径。(突然想到并查集路径压缩,为了减少层次)
举个栗子:当面试官问你mysql索引?
没有压缩路径前。
有聚集索引跟非聚集索引也就是二级索引。
面试官问你,这两个有什么区别么?
这是没有进行路径压缩的。
路径压缩后
物理角度:有聚集索引跟非聚集索引也就是二级索引。
逻辑角度:覆盖索引,唯一索引。
存储上:聚集索引存整行数据。非聚集索引存主键跟非聚集索引字段。
顺带你可以讲下什么是覆盖索引。这样的好处是不用回表。
balabala。
他们底层存储的结构都是一样的。用的b+tree。
所以,你看路径压缩了好几层。当然面试官可能还要深挖。
接着问你b+tree的特点是什么?(顺序,叶子节点链表连接,方便查询)
为什么不用btree呢?
b+tree 有几层呢? (这个其实不是固定的,书上说的也是死的,大家百度下,有测高度的文章。肯定不会高。)
路径压缩的好处:掌握主动权。如果你在回答的语言里,加一些你想要回答的方向。你可以加。然后面试官往往会根据你的回答。再深度。这样有利于你。你了解那么多也会有发挥的余地了。不然,你满腹经纶更与何人说?