滴滴 Java研发 社招面经
大概是八月份的时候面的滴滴,两轮技术面,一轮hr一轮主管.前两面一天走完,hr和主管面是电面,隔了大概三天
一面
自我介绍
为什么离职
当前平台发展有限,项目进入稳定期,新需求不多,维护为主,对个人发展不利说一下HashMap的数据结构,复杂度
这里可以以put方法作为切入点,把put方法分析出来,数据结构和复杂度就自然出来了有没有多线程的使用经历,如何进行的优化
讲了项目中的一个多producer多consumer的一个实现,用到了juc包中的countdownlunch,原子类,BlockingQueue等MySQL用过么?讲一下索引的数据结构.怎么分析查询效率
讲了innodb复合索引的b+tree模型,最左匹配原则.查询效率的explain分析.redis用过么?redis怎么保证查询速度
纯内存操作;单线程多路复用模型;HashMap的数据结构用过什么消息队列?为什么用RabbitMQ?应用场景有什么?有没有和其他mq作比较
用过RabbitMQ;场景:削峰填谷 异步调用 解耦 扩展性 ; 没用过其他mq遇到过什么线上问题?怎么做排查
先看日志报错,死锁的话看dump,jstat分析gc状况,服务器可连接的话可以用visualvm你有什么要问我的
问了团队组成,业务方向,我要做什么
最后留了一个算法题: LeetCode 236. 二叉树的最近公共祖先
手撕了一遍,middle难度二面
二面面试官先看了下上一轮的代码,简单对了下逻辑.然后开始面试介绍一下项目
项目中负责什么
项目中做了什么优化
讲了下项目中RabbitMQ实现了at least once
,包括mq反馈provider,消息持久化,consumer主动反馈mq.线程池消费防止消息积压等.讲一下springmvc的原理
我没用过springmvc,之前用的ssh,后来就直接SpringCloud加springboot了.这里凭印象答了一下.注册dispatcherServlet,将request按照url分发给不同的controller处理,controller调用service+dao等处理业务.之后response返回.看过什么源码?简单说一下
看过spring源码,简单说了下spring如何处理循环引用.其实答ioc和aop更好些.问了两个java基础,记不清细节了.
你简历里还写blog?看了下我的blog~
有什么要问我的?
问了还会不会有下一面,哈哈,面试官也乐了,说会有下一面~
主管面介绍下自己的经历,以及每一次跳槽选择的原因
说一下java的几种锁
这里我把几种锁的原理,用法和应用场景对比都说了.包括volatile.说一下项目中遇到的最大的困难,你是怎么解决的.
你坚持最久的事情是什么?坚持了多久
你的朋友怎么评价你?
讲真这个真的毫无准备.完全临场说了一通.
主管面的确比较偏向价值观,方法论等等.给人的感觉就是通过几个问题就能摸出来你的性格,技能等等...
hr面为什么想离职?
手上有没有其他offer,哪儿?
期望,现在的职级
一二面各持续了一个小时左右,主管电面半个小时,hr聊了十几分钟.
整个面试过程就这样~