大家好呀,我是你们熟悉的——热爱技术、热衷吐槽、总在面试路上收割灵魂的程序猿小米,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
暂无评论内容