以前面试经常搞不懂别人为什么要问那些问题,现在渐渐明白了,问的问题都是从实践中总结出来的。
1. 为什么会问B+ tree的问题?
因为B+ Tree是MySql的索引存储方式。如果数据库用的多,就回问索引问题,自然而然就说到B+ Tree,然后就可以开始问到B+ Tree的查询效率,高度。接着就可以和B树和跳表比较了。
2. 为什么会问跳表的问题?
因为Redis的zset会使用到跳表,接下来就回深入了解跳表的建立,删除,查询。说到查询就会又跟其他的log(n)的数据结构比较,比如红黑树。为什么redis使用跳表而不使用红黑树,因为红黑树在插入的时候,会存在rebalance操作,这样在高并发的情况下,需要争取锁去插入数据。