一面(23min)
- 自我介绍
- 项目中最自豪的部分
也没什么太自豪的,就是在移动端开发的时候不存在cookie和session,然后用redis存了一下验证码感觉还不错。 - 讲一讲ArrayList和LinkedList
ArrayList底层实现是数组,并且每次扩容扩容1.5倍,常用在查询较多的场景中。而LinkedList底层实现是链表常用在增删比较多的场景 - 你说你对锁有了解,说一说你最熟悉的两个锁
当时太紧张就随口说了两个,乐观锁,悲观锁。乐观锁:每次执行事务的时候都是先执行在检查是否有其他是否在执行。而悲观锁如行锁,表锁,都是先锁定再执行事务。通常在并发量比较大的情况下用悲观锁,并发量小的情况下用乐观锁 - 说一下synchronied和ReentrantLock的区别
synchronied是JVM级别的,而ReentrantLock是api级别的,JVM会对synchronied做出相应的优化,锁消除:当JVM判定该资源不会被其他线程争夺的时候就会消除该锁,还有锁自旋,自适应锁(面试官速度很快,还没等我来得及解释ReentrantLock就跳下一个问题了,也许是这个超底层的回答比较满意吧) - 讲一下ThreadLoacal吧
ThreadLocal底层实现是一个Map结构的表,key是Thread.currentThread(),而Value则是我们想要保存的对象 - 它(