一、项目 3.自己表明想用白板介绍 1.Mysql的原理介绍一下 1.3.1、如果用悲观锁,select *** for update,则为110 1.3.2、如果用乐观锁,需要判断影响行数并重试(面试官强调,金融行业不允许重试),回答101。 因为只会有一个线程修改成功,面试官表示正确。 2.1、三大要素:有序性、原子性、可见性 2.2、Synchronized和volatile一把梭 2.3、重点表明单机版用JVM锁,分布式版用redis分布式锁(本来想狂扯一把redis分布式锁,面试官听到分布式锁就让我打住了) 2.4、本来还想扯一下AQS,准备疯狂输出面试官,也没给机会让说 3.1、表示之前遇到过同事把表给锁死了。 3.2、首先阐明发生死锁的几个必要条件 3.3、再表明好像有个show processlist,还有个information schema可以查看锁。 3.4、针对占有锁的进程/线程,直接kill掉。因为它们已经发生死锁了,没法优化,只能先破坏不可剥夺条件。 4.HashMap八股 主要讲了HashMap去put时,如果扩容,会有transfer的过程,1.7的情况下会有死循环。 而且没有加锁控制,然后面试官就没让说了 (这块有点短板,因为1.7 1.8,CHM的1.7 1.8内容太多,记不住)5.考题 5.1、Integer整数,为什么(1000==1000)返回false,而(100==100)返回true 直接回答写JDK代码的设计人员考虑到程序的运行效率,缓存了-12X-12X的数据。再扯到Redis也有类似机制,缓存了10000个RedisObject, 本来还想延伸,面试官让我打住。 6.1、讲了下Java中堆主要是存放对象的,栈有虚拟机栈等。描述了两者的区别 7.1、这块其实不是很熟,讲了下注解的几个要点:@Target @Document 7.2、表示是否可以以某个具体的注解来讲,比如@Autowired,面试官表示可以 (其实还想以AOP+自定义注解+Redis Lua来实现分布式限流来讲的) 7.3、开始讲Spring的getBean(),createBean()创建实例,然后populateBean()填充属性的时候,会判断是否实现了inxxxxBeanPostProcessor, 会去自动注入相关属性,面试官让就此打住 8.1、讲了下三级缓存是拿来干嘛的,解决哪种循环依赖的。 8.2、提前暴露单实例,三级是Map,假装思考一下,ObjectFactory是用的get还是getObject()方法 因为前面说得太流畅了,要假装回忆一下。。。。。 8.2、讲了下getBean()的流程,具体以A依赖B,B依赖A,且是setter依赖,然后什么时候三级升为二级,然后又放到一级 还没讲完,面试官表示可以了三、算法题7.算法题 7.1、删除链表中重复的结点(面试官要求限时20分钟)...查看更多