滴滴秋储后端实习生面经+秋招正式批面经(均已offer)
秋储实习生面经(2轮技术面)
秋储实习生是两轮技术面+HR面,面试效率非常高,两轮技术面是连着面的,面完一轮等15分钟左右,第二轮面试的邮件就收到了。技术面完事后10分钟收到了HR面的电话面试。对于秋储实习生而言,电话面试比较简单,主要还是问你啥时候能到岗实习,她那边就会给你发offer,并且安排好入职的流程。然后是大家最感兴趣的技术面都面了哪些内容,这个我很久之前其实写过一个面经,现在对这些东西重新进行总结一下,准确来说这个是去年的面经,但是对今年的面试还是有一定的参考价值。
一面:
面试官上来就让我讲了一下简历上的项目,此时我正在公司实习,简历上的项目其实也是我实习做的一些工作内容以及之前做的一个简易RPC框架。围绕我的实习项目,问了一些项目中涉及到的八股。讲完之后就是项目外感兴趣的八股环节。
- Java BIO NIO AIO 三者的区别?
- 了解NIO 的epoll bug吗?谈谈epoll bug的危害
- 讲讲你理解的Netty 的零拷贝,有什么优点?
- 讲讲Reactor线程模型,netty是基于Reactor的哪种模式?
- 序列化ID有什么作用?怎么生成的?
- 怎么实现随机负载均衡算法和轮转算法?如果实现基于权重的负载如何设计?
- spring中涉及到的一些设计模式?这些设计模式分别在哪些spring模块中体现出来?
- 讲讲spring的AOP,你的项目中哪些地方用到了一些AOP?
- 讲讲Java的垃圾回收策略?G1垃圾回收器是怎么同时回收年轻代和老年代的?讲讲G1垃圾回收阶段?
- 聊聊redis的数据结构,说说跳表的实现原理,增删改查的时间复杂度?聊聊redis的哈希槽
- 手撕算法:下一个排列
- 反问环节。我:啥时候出结果?你对我的面试评价如何?哪些做的好,哪些需要改进?
二面:
简单自我介绍之后,就讲讲我目前做的实习项目,balabala讲了20分钟,中间针对一些细节做了提问。然后就是下面的一些问题。
- 通过@Reference注解,dubbo是怎么得到服务提供者的实例化对象?中间的过程能否简单讲一下
- 提供者和消费者是什么连接?长连接 or 短连接?
- nacos作为配置中心是基于推还是拉取更新配置?这个过程用长轮询会有什么问题?
- Guava的本地缓存的线程安全问题?缓存的淘汰策略?
- 怎么同步mysql数据库到ES?
- 这个项目你碰到最大的挑战是什么?你是怎么解决的?
- 平时是怎么学习的?
HR面:
秋招正式批面经(4轮技术面)
滴滴的秋招正式批是3轮技术面+一轮加面,最后一轮技术面是sp/ssp加面。前面两轮技术面主要是针对一些项目中涉及到的八股,后面两轮是针对项目进行深挖。总体而言,我觉得稍有些难度,有部分问的挺仔细的,部分问题在面试官的引导下给出了答案。前面三面是连着面的,中间每面完一轮休息10分钟。第四轮加面是一周后联系我的,总的来说面试体验还是不错的,面试官还是比较专业,比较幸运,最后给的评级是ssp。
一面
在我讲完两个实习项目之后,并没有深入我的项目细节。后面就是一顿八股文的输出。
- 进程间的通信方式?消息队列的方式有啥缺点?
- 父子进程的内存是拷贝还是共享?OS是怎么实现的?
- 孤儿进程和僵尸进程的区别?
- 线程之间的通信方式?
- Java的volatile关键字?
- Java创建线程的几种方式?
- 线程池的几个重要参数?.线程池的拒绝策略?
- Mysql的锁(行锁,间隙锁,临键锁,共享锁/排他锁等)
- MySQL的隔离级别?MVCC和gap锁分别是解决什么问题?MVCC的原理?
- MySQL索引的数据结构?为什么要用b+树不用红黑树?一般情况下b+树多高?能存储多少多大的数据量?
- 手撕:最长回文子串
- 反问环节:面试表现如何?啥时候出结果?
二面
面完第一轮,取上个厕所,然后接杯水。收到了二面的邮件,随后就是HR的电话。进入链接,二面面试官坐在貌似食堂?后面还有带着厨师帽的,做完自我介绍之后,重复一面那套,细讲了一下我的实习项目。正准备听他提问,结果给我先出个算法。
- 手撕算法:IP地址(回溯)
- 讲讲CAP理论?怎么理解分区容错性?
- ZooKeeper可以保证哪些分布式一致性特性?
- 听过ZAB协议吗?讲讲?
- 为什么用nacos配置中心+zk注册中心组合?(遗留问题)nacos注册中心和zk有啥区别?
- 项目中哪些用到多线程的东西?讲讲有哪些线程池?使用的场景分别是什么?
- 项目中用到的本地缓存你是怎么实现的?如果你来设计怎么样做?
- 反问环节:部门的主要业务?应届生培养方式?
三面
嗓子非常难受了,二面中间因为有点紧张,甚至忘了喝水。上到一半厕所,收到HR电话了,然后三面邮件发到邮箱了,此时距离三面还有10分钟。真的有点疲惫了,注意力高度集中了两个小时了。开头又是自我介绍,然后又是项目详细介绍,挺好,没有打断我,听我讲完了项目,然后针对项目开始提问。值得一提的是,这是当初实习二面的那个面试官,长着标志性的国字脸戴着个黑框眼镜,留着胡子,有些印象深刻。甚至有点尴尬,怕他认出我来,我实习拒了滴滴。
- 你项目中有没有碰到过非常棘手的问题?一般碰到这类问题,你都有哪些解决思路?
- springcloud和dubbo区别在哪?各有什么优缺点?
- 你用了nacos配置中心,讲讲nacos配置中心是怎么实现配置更新的?推 or 拉?推或者拉各有什么优缺点?
- 为什么会用nacos配置中心,你们在选nacos的时候是基于业务的什么特性考量?有没有用过Apollo这类框架?区别在哪?
- 做一个算法题,实现一个线程池,简易版的。
- 反问环节:啥时候有结果?技术面是不是就此结束了?面评如何?
- 中间其实省略了一些关系到公司项目中的细节问题,主要还是抠项目细节
HR面
问一些对于滴滴当下的处境有啥看法(当时滴滴因为安全审查问题下架),然后具体做啥会到部门之后再进行分配。我有没有想去的小组?或者想做的业务都可以跟她进行交流...............平时的兴趣爱好................有哪些offer............
四面
本以为滴滴的秋招到此结束了,等后面的开奖。然而,一周之后滴滴的HR给我打电话,约我什么时候有时间安排一下技术面加面,刚开始给我整懵了,后来听完解释之后原来是sp/ssp加面,大部门的老大面我。然后约好时间,开启了我滴滴最后一轮技术面。
自我介绍完了之后,跟面试官讲讲我的实习项目。然后面试官开始提问了。
- 谈谈你两段实习最大的收获?遇到了解决不了的问题,怎么办?
- 滴滴每天有数千万的订单交易,日处理的数据量达到5kTB,针对如此庞大的高并发的数据,在后端的角度上,你从设计层面上讲讲从哪些方面可以优化系统,让系统的鲁棒性更强。如果不好描述的话,可以试着从某个功能点出发,比如下单系统,结算系统等等。
- 有这么个场景,在某块区域内,有N辆车,有M个用户下单,每个用户账号会有一定的权重,每个司机针对服务质量也有权重,下单的时候也会考虑人车距离,订单的类型,等待时长等因素,怎么把M个用户最优分配到N辆车,让司机和乘客的满意度最高
- 平时是怎么学习的?当你接触新的知识体系,例如新的框架?
- 你们公司是怎么管理项目的?遇到不好沟通的同事怎么办?你的想法和你的leader想法不一致,这种情况下怎么处理?
- 反问环节:面试有没有达到你的预期?面评如何?
总结
说实话,说实话滴滴的整个面试过程还是比较累的,一个接一个面试,整个面试流程下来让人精疲力竭。但是没有等待结果的煎熬,面完之后立马就有反馈。大家其实可以从上面的面经可以看出来滴滴的难度,基本上每轮面试都有手撕算法环节,有些面试官侧重项目,有些侧重基础,还有些侧重你的思维能力,我们在准备秋招的时候一方面自己的算法项目等常常考察的东西一定要准备充分,另一方面也要常常看一些其他大牛写的东西,比如美团技术博客这些。有的时候这些东西会给你后面的面试带来一些帮助,给你一些难题的解决方案带来灵感。