个人背景
农业末流211,学校的强专业在农学那边,计算机专业很弱,Java自学快满一年
拼多多
时间线
- 3.22 在牛客里找了一个拼多多的内推人,投递简历。
- 4.7 在线笔试,好像4道a出2道半
- 4.13 通知进入面试环节,填写应聘登记表
- 4.15 一面
- 4.20 二面
- 4.23 三面主管面
- 4.29 HR面
- 5.10 应聘信息确认(感觉offer马上到)
- 5.12 OFFER LETTER(有5天的意向确认时间)
4.15一面50min
感觉挺难,面试官全程严肃还时不时叹气(弄得我很慌 😂 😂 😂)。。。
自我介绍
简单介绍项目,怎么做的,为什么要做这个,用到了什么技术。
乐观锁、悲观锁、举例讲讲,CAS
异步同步、阻塞非阻塞,他们之间有联系吗,说说区别,再从内核的角度说说看(私下查了资料答错了)
synchronized,放在各个地方锁的是啥,一个synchronized静态方法,一个普通的synchronized方法,访问静态方法后还能访问普通方法吗,锁的对象是一样的吗。
synchronized的底层实现,知道多少说多少,和ReentrantLock的区别
Redis单线程为什么这么快(之前美团问过,但是还是有点记不清。。。)
。。。还有很多底层的问题记不起来了,一面问的都很底层基础。
最后一道算法题是二叉树方面的做了好久。。。
求一个二叉树里的2个节点的距离,二叉树每个节点的值是唯一的。
当时写的是用递归的先序遍历方式去写,面试官说往这个方向想是对的,就继续卡了挺久,面试官提醒说可以吧走过的路径记录下来,
提醒到这差不多有思路了,就用栈去记录遍历的节点,还是递归先序遍历,当遍历到2个节点中的一个时当前的 栈轨迹就是那个节点的路径(从根节点开始算起的),最后比较这2个栈轨迹就行,类似最近公共祖先,比如找节点4和5的距离如果得出是[1,2,3,4]和[1,2,5] 那他们的距离就是3,及4->3->2->5.
4.20 二面50min
一度以为一面能过的概率不大,结果过了还是比较惊喜。
二面面试官特别和善,心情很好,上来就活跃气氛,说我这里天气很好啊,在寝室吗。。。
自我介绍
问项目,问具体实现,怎么使用Redis的,myqsql有优化过吗,说说过程,登录流程,拦截器,jwt,2级缓存,部署,docker,git,
都是简单的聊,没有深入,这些技术是怎么开始去学的,碰到问题怎么解决的。
问了个ConcurrentHashMap
问了项目的实际使用情况,一