2022/6/14
一、聊项目
1.自我介绍 2.聊聊自己的技术栈 3.讲一下你的某个项目 4.对于你的项目中使用Redis分布式锁解决热点key失效问题,针对锁的过期时间你设定为多少? 5.对于你的项目中使用Redisson解决热点key失效问题,对于第上个问题,它是怎么解决的,实现原理?(看门狗-锁续期) 6.数据库中实现分布式锁了解过吗? 6.项目中的接口幂等性是如何保证的? 7.项目中遇到了哪些问题?你是如何解决的?
二、聊索引
8.表设计过程中,有哪些需要考虑的? 9.为什么MySQL底层要使用B+树来实现,而不是二叉树这些呢? 10.对于B+树了解多少?(就是问题B+树结构) 11.遇到过索引失效的情况没?索引在什么场景下下会失效?
三、聊JVM
12.JVM了解过吗?内存结构是怎么样的? 13.类加载过程? 14.对于你提到的双亲委派机制,使用这种方式解决了什么问题?
四、聊集合
15.Hashtable了解过吗? 16.Hashtable和HashMap的主要区别? 17.HashMap的底层数据结构? 18.HashMap是线程不安全的,怎么解决这个问题? 19.JDK8中HashMap底层采用数组+链表+红黑树实现,它是为了解决什么问题? 20.哈希冲突了解过吗?
五、聊并发
21.Synchronized的底层实现机制? 22.Synchronized的锁膨胀机制? 23.CAS乐观锁原理?它会出现一种什么问题(ABA问题)?如何解决?
六、聊框架
24.聊聊SpringIOC和SpringAOP? 25.@Autowired和@Resource有什么区别? 26.Spring如何解决循环依赖问题的? 27.平常你还使用哪种注入方式? 28.SpringBoot生命周期? … 最后我来一句老师,手机快没电了,我先去充下电(面试官不会以为我暗示他面的时间太久了吧…)
总结
面试中,对于索引失效场景自己没了解过,就直接说不知道了。。另外对于框架的底层的一些机制自己还是了解的太少了,还得深入研究一下。
面试官基本上都是根据上一个回答的结果,继续进行挖掘。 比如他问我Synchronized的底层机制,然后我就给他巴拉巴拉,包括对象头中的MarkWord还有HotSpot虚拟机关于Synchronized的C++源码实现以及Synchronized的特性;然后紧接着开始问我Synchronized的可重入特性与非公平特性在底层是怎么实现的? 比如他问Hashtable的特性,以及与HashMap的区别?我其中有一句回答了HashMap是有线程安全问题的?然后面试管紧接着问我怎么解决这种线程安全问题?(明摆着要问ConcurrentHashMap)
面试官人还是挺好的,有时候也会给我解释更深一点。另外给我最大的感触一点就是不能给自己挖坑,我当时只不过聊IOC时说了一下底层创建对象的流程,然后面试官开始狂问框架底层机制。。。
|