写在前面:
一面问得过于简单,二面,三面难度适中过于困难。整体的体验还行。。
字节一面
1.Java如何实现线程安全(synchronized,ReentrantLock,AtomicInteger,ThreadLocal,CAS)
2.CAS如何解决ABA问题(版本号)
3.AtomicInteger的原理(UnSafe类,底层是一句CPU指令,避免了并发问题)
4.可重入锁是什么,非可重入锁又是什么(略
5.代码,实现生产者和消费者,一个长度100的buffer,10个生产者线程,10个消费者线程
(我用了ReentrantLock跟Condition,结果忘记了锁的包路径是啥了,我写成了java.util.concurrent.,后来才知道是java.util.concurrent.locks.。。。)
6.对着代码提问,判定条件的while能不能换成if,为什么?为什么用signalAll,可不可以换成signal,二者有什么区别?
7.Spring,AOP是什么,IOC是什么
8.二叉树的概念?红黑树又是什么,红黑树和其他平衡树的区别在哪
9.TCP三次握手的过程,重发报文的过程。
10.TCP和UDP的区别
11.说一下哪个项目觉得最有挑战,有几个模块,介绍一下
12.代码,LeetCode76