蚂蚁金服面经:
一面技术面,过。
紧接着发了机式链接
机式题两道算法,在leetcode简单难度的题的基础上提出了一些新要求。接近中等难度。不会写,寄!
1.数据库
mysql索引结构
B+树,B树的区别
为什么同等数据量下,B+树的高度更低?树的高度低的好处?
b树子节点是链表?双向链表?这里用链表的作用?
sql如何优化
abc三个字段建立联合索引,用到a,c,怎么写sql把b也用上(这里不能重建索引;如果建立索引用什么命令)
哪些情况适合做索引
表里有百万级数据,查第100万条到110万条数据,怎么优化sql(和索引无关)
四个隔离级别,每个级别的事务问题
DB事务的原理(我只提到了undolog,和事务point,不太了解)
2.redis
雪崩、穿透、击穿
IO多路复用原理
3.hashmap
为什么要引入红黑树
哈希碰撞
4.springboot
springboot启动类注解,每个注解的作用
springboot原理
所有spring.factories里面的所有配置都会加载吗
5.spring
spring怎么解决的循环依赖问题(虽然是高频面试题,但我还是第一次被问到这个)
三级缓存的作用
BeanFactory、FactoryBean的去区别;FactoryBean的作用(第一次被问这个问题,没准备 QAQ)
6.锁
java锁了解吗
synchronized和lock的区别 重量级/轻量级
锁的原理(我直接说AQS,奈何太菜,AQS的细节没有battle过面试官,应该先说CAS再说AQS)
synchronized的原理是AQS吗
分布式锁可以用什么实现?(数据库/ZOOKEEPER/Redis/Redisson)
Redission实现分布式锁的原理(只说到了setnex)
锁续期怎么实现(看门狗机制)
锁重入(/(ㄒoㄒ)/~~,实现细节忘了)
7.项目亮点(10分钟)
一个亮点说的不到10分钟,会问有没有其他亮点
总结:一面整体不难,问题涉及项目和技术栈。
覆盖面还是比较广的
技术问题会从八股文开始问,但是由浅入深。比如索引的问题,从mysql的索引结构是什么问到叶子节点的数据结构的作用。
需要继续打磨项目亮点
索引和锁是技术重点,值得投入更多时间研究,尤其是CAS和AQS,如果和面试官把AQS聊好了,面试官应该会刮目相看
算法一如既往的烂,继续坚持刷算法喽