前言
2019年3月14号周四中午大概12点我正在吃中饭,收到喜马拉雅HR电话,通知问我有没有兴趣面试他们的Java开发工程师。(ps:我没主动投过,我也不知道他们哪里弄来的我的简历)
废话不多说,当然愿意面试,HR说后续安排电话面试
一面
电话面试,第二天3月15号上午
简单介绍一下你最近做的项目?
我扯了一大堆,我扯到了限流
说一下你项目中限流是如何做的?
我答用令牌,获取令牌的方式实现限流
说一下令牌桶算法比普通counter计数器实现的限流优势在哪?或者说传统的counter计数器实现缺点在哪?
没答上来
说一下悲观锁和乐观锁
简答介绍悲观锁和乐观锁的含义,有对具体锁的实现举了例子,比如乐观锁CAS实现,悲观锁synchronized
又引入了乐观锁CAS的ABA问题
MySQL的间隙锁
我直接把临建锁、间隙锁、记录锁原理整了一遍,以及锁如何退化的。
SQL中的join使用的注意事项,或者join的优化点在哪?
我只提到了索引,其他没想到,答的不好。
全文检索es有没有了解过,倒排索引原理知道吗?
我说了解ELK这一套开源的日志全文检索架构。
倒排索引原理没说上来,这里准备不充分。
二面
现场面试,3月20号周三,下班之后6点多到的喜马拉雅
锁有哪些?各种实现原理以及具体实现各举个例子
悲观锁和乐观锁、可重入锁和不可冲入锁、排他