时长:30min
八股:
1.登陆拦截器实现原理?
拦截器的思想主要是基于Java的反射机制,属于面向切面编程(AOP)的一种运用,就是在Service或者一个方法前调用一个方法preHandle(),或者在方法后调用一个方法postHandle(),甚至在抛出异常的时候做业务逻辑的操作afterCompletion()
具体实现:
https://blog.csdn.net/weixin_47555380/article/details/107917348
2.如果要在http header中增加字段,应该放在哪一步?
Http头一般存放校验规则,一般规定Http头中必须携带 User-Id 与 Token 来验证用户身份,在拦截器中间这两个信息会绑定到ThreadLocal,所以增加字段应该放在拦截器之前。(这个问题很迷惑...可能是实际开发的业务逻辑,瞎编仅供参考,面试官居然没有反对)
3.线程池工作原理?
介绍七个参数 工作流程
4.初始创建线程池里有线程吗?
没有理解面试官的奇特脑回路...只能往四种线程池扯了扯,并介绍了对应的核心线程、阻塞队列容量大小设置
5.线程池的线程异常会发生什么?
线程池任务提交有两种方法execute()和submit()。首先二者最大的区别就是execute没有返回值,submit有返回值(future类型),前者会抛异常,后者内部捕获异常。在不需要返回结果的情况下,最好用execute ,这样如果疏漏了异常捕获,也不至于丢掉异常信息
6.项目如何实现线程通信?
volatile 关键字(基于共享内存)
Object类的 wait/notify 方法
condition 的 await/signal 方法
join 的方式
7.Synchronized和ReentrantLock区别?
相同点都是非公平锁
·获取和释放方式机制
·底层实现层面
·性能方面:sychronized锁膨胀机制,资源竞争不是很激烈的情况下,性能优于后者
无手撕代码,听说只要过了前面的笔试,后续不需要手撕(有一说一,LAZADA的笔试题是真简单,和团子pdd完全不是一个维度)
再一个就是,阿里面试官几乎问的大多是奇怪的场景题,脑回路也很奇特,背的那一套八股不能生搬硬套,需要临场发挥。