MySQL社招面试题:hash索引的数据结构?我居然卡在这!

大家好呀,我是你们熟悉的——热爱技术、热衷吐槽、总在面试路上收割灵魂的程序猿小米,31岁,头发还算健在,爱吃火锅,主攻后端。

最近啊,有个老同事跟我说:

“小米,我面了家大厂,面试官问我:MySQL的 hash 索引底层用的是什么数据结构?我一时语塞,最后只能说是哈希表……然后就没然后了。”

他满脸懊悔,我却忍不住一笑:“你知道,你这个回答,就跟面试官问你你妈是谁,你回答说‘人类’一样啊。”

今天我们就来聊聊这个看似简单但面试场上能“一招封喉”的问题:

MySQL 中 Hash 索引到底是什么?底层数据结构又是什么?

但讲干货之前,我们先来回顾一段我亲身经历的社招故事。

MySQL社招现场:Hash索引的一道送命题

事情发生在去年秋天,我跳槽去面一家金融科技公司。

二面的时候,面试官40岁上下,技术扎实,笑里藏刀。

他看了我简历,说:“小米,你这写着熟悉MySQL索引优化,那我问你个简单的,MySQL里的Hash索引你了解不?”

我当时心想:这题稳了,开局一个哈希表,回答靠想象。

于是我微笑着说:“哈希索引嘛,底层就是哈希表,O(1) 查询,效率高!”

面试官笑了:“嗯?你说的是哪种引擎的 hash 索引?MySQL 的默认存储引擎 InnoDB 不是 B+ 树索引么?”

我嘴角一抽,这才意识到——面试官开始“下套”了!

我赶紧补充:“是是是,InnoDB 默认是 B+ 树。不过 Memory 引擎可以用 hash 索引。”

他笑得更灿烂了:“那你知道 hash 索引具体的结构和特点吗?冲突怎么解决?你了解 MySQL 的实现细节吗?”

我顿时如坐针毡,脑中闪回大学时听不懂的《数据结构与算法》,汗都下来了。

这次社招,我虽然最后勉强过了,但也意识到:

“我虽然

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容