前言
也许会有人感叹某些人的运气比较好,但是他们不曾知道对方吃过多少苦,受过多少委屈。某些时候就是需要我们用心去发现突破点,然后顺势而上,抓住机遇,那么你将会走向另外一条大道,成就另外一个全新的自我。
就目前大环境来看,面试的难度比往年高很多。一个明显的感受:今年的面试,无论一面还是二面,都很考验Java程序员的技术功底。
Java
1.多个线程同时读写,读线程的数量远远⼤于写线程,你认为应该如何解决并发的问题?你会选择加什么样的锁?
2.JAVA的AQS是否了解,它是⼲嘛的?
3.除了synchronized关键字之外,你是怎么来保障线程安全的?
4.什么时候需要加volatile关键字?它能保证线程安全吗?
5.线程池内的线程如果全部忙,提交⼀个新的任务,会发⽣什么?队列全部塞满了之后,还是忙,再提交会发⽣什么?
6.Tomcat本身的参数你⼀般会怎么调整?
7.synchronized关键字锁住的是什么东⻄?在字节码中是怎么表示的?在内存中的对象上表现为什么?
8.wait/notify/notifyAll⽅法需不需要被包含在synchronized块中?这是为什么?
9.ExecutorService你⼀般是怎么⽤的?是每个service放⼀个还是⼀个项⽬⾥⾯放⼀个?有什么好处?
Spring
1.你有没有⽤过Spring的AOP? 是⽤来⼲嘛的? ⼤概会怎么使⽤?
2.如果⼀个接⼝有2个不同的实现, 那么怎么来Autowire⼀个指定的实现?
3.Spring的声明式事务 @Transaction注解⼀般写在什么位置? 抛出了异常会⾃动回滚吗?有没有办法控制不触发回滚?
4.如果想在某个Bean⽣成并装配完毕后执⾏⾃⼰的逻辑,可以什么⽅式实现?
5.SpringBoot没有放到web容器⾥为什么能跑HTTP服务?
6.SpringBoot中如果你想使⽤⾃定义的配置⽂件⽽不仅仅是appli