拼多多-服务端研发工程师-提前批一面
一面
1、自我介绍
2、第一个项目是研究型项目,第二个项目是工程型项目,为什么选择做这两个项目?
3、这两个项目开源的吗?还是基于开源去改的?有多少代码是自己写的,还是只是把它跑起来了?
4、项目2,你用到了Java里面的哪些能力?
5、你提到用synchronized加锁了,为什么要加锁?讲清楚为什么要加锁,锁有锁的机制,它主要使用什么产品?避免其它什么作用?
6、为什么选择加synchronized锁呢?而不是其它的锁?
7、Java里面除了synchronized锁,你还了解过其它的锁吗?
8、你刚才讲了好多概念,又是公平锁,非公平锁,轻量级锁,自旋锁,你能讲一讲吗,比如synchronized属于哪种锁?
9、synchronized锁升级过程中会出于轻量级锁的状态,通过自旋去获取锁,自旋会消耗CPU吗?你觉得这样有什么问题呢?
10、一般是什么样的任务需要升级到自旋锁的状态是有效的,什么情况下是无效的?或者说你认为用自旋去解决冲突,适合什么样的场景?
11、对于ReentrantLock你提到了公平锁和非公平锁,谈一谈
12、手撕:一个单链表,从链表尾部开始,每两个节点位置翻转,要求时间复杂度O(n), 空间复杂度O(1)。示例:1,2,3,4,翻转后2,1,4,3
13、静态内部类和非静态内部类的调用区别
14、Java里面一般会碰到异常,你先讲讲你理解的Java里面的异常,该怎么处理?
15、比如你调一个update,产生超时了的异常,这个属于受检异常还是非受检异常?
16、有哪些异常属于受检异常?
17、出现异常怎么处理呢?
18、你觉得什么时候异常向下传递比较好?什么时候异常自己处理比较好?
19、异常不处理的后果是什么?
20、谈谈SpringBoot有哪些关键的特性?
21、谈谈对Java的GC的理解
22、什么样的对象可以称之为GC Roots呢?
23、为什么JVM要分代?
24、你觉得从写代码的角度,怎么去管理内存,管理对象的申请是对GC友好的?
25、反问