一面(25/2/28)(挂) 1、自我介绍? 2、介绍一下什么是索引? 3、MySQL都有哪些索引?索引类型?(聚集索引和二级索引) 4、举一个项目中的例子,使用MySQL做的查询,依据什么去做的查询? 5、有遇到过一些慢查询的场景吗?知道什么是慢查询吗? 6、explain关键字你通常会关注哪些输出信息作为判断。 7、有遇到过选错索引的情况吗?有别的索引失效的场景吗? 8、介绍一下MySQL的事务的隔离级别。 9、幻读是一个什么样的场景? 10、可重复读的隔离级别可以解决幻读,那他底层是怎么解决幻读的呢? 11、你项目中用到的是哪个隔离级别,为什么这么选择? 12、如果现在让你选择一个隔离级别,你会参考哪些条件去选择隔离级别? 13、介绍一下单例模式。 14、说到Bean的两种状态,单例和非单例,那么这两种方式对比一下? 15、单例适合哪些场景? 16、一般什么类需要去做一个单例? 17、写一个线程安全的单例模式的伪代码;为什么要判断两次是否为空呢? 18、商户缓存,介绍一下场景,要缓存哪些信息? 19、介绍缓存穿透、缓存雪崩、缓存击穿。 20、优惠卷秒杀,优惠券存在哪里?(尝试吟唱不断优化过程,被打断,这一块答的有点混乱,最后被批项目不熟了) 21、秒杀优化的阻塞队列是通过什么实现的? 22、为什么要用这个实现消息队列?有了解其他的消息队列吗? 23、异步下单场景,那你怎么通知用户下单成功?(直接成功,并且指出不足,说出有思考下单失败应该怎么办) 24、介绍一下点赞排行是个什么功能?为什么使用zset呢?(面试官好像不理解为什么要使用zset) 25、了解过zset的底层实现吗?(跳表)如果往zset中添加一个元素,这个过程是怎么样的? 26、feed流实现关注推送,关注推送功能是怎么实现的?(推模式) 27、有了解过拉模式吗?对比一下推拉模式有哪些优缺点? 手撕:(定时20min) 带TTL的LRU(天塌了,不会,换了一道) 34. 在排序数组中查找元素的第一个和最后一个位置 (用二分然后往两边找,被说时间复杂度不好) 反问:应该往什么方面去学习? 应该提升一下学习的深度,像刚才zset底层实现你了解是跳表,但是再往深了了解你就没有答出来。简历上列的一些点在日常工作中都能cover到的,需要提升一些深度,虽然说是实习,为了突出你的优点,最好是挑几个方向会了解的比较深。或者说不用了解的特别深,你做过的东西起码要能够完完全全的和别人说的清楚。