滴滴四轮技术面+HRBP面试,已收sp意向书

楼主才疏学浅,如果有问题,请及时在下面留言
相比其他面经而言,我讲了一个follow up的例子,看一下如何在一个问题让面试官对你印象深刻?

简介

楼主双非本科,无大厂实习经验。项目就是烂大街的秒杀项目,面试时基本上被所有的面试官忽略了.........我这简历基本上很难过,最后也是被滴滴捞了一下,部门是网约车平台,岗位是后端研发工程师。

许愿早日OC以及意向书.....

所以没有项目就要做好被面试官死怼基础的准备了!!!!基本上就是源码或者底层原理的设计。

在看下面面经之前,我想说一些关于面试事情:

  1. 我的面经问题相比别人特别少,一个很大原因是我一直在面试时follow up,基本上不需要面试官问我,我都已经顺便给讲完了(follow up这个我一会解释)
  2. 我的面试问题其实跟大多数人差不多,甚至社招都在问这些问题。但是同样的问题,回答出正确答案可能只需要3句话,但是差距就在于你自己的理解或者说对这个问题的思考有多深,最后能答出几十句话(看下面的follow up)
  3. 简历上面的必问!!!简历上面的必问!!!简历上面的必问!!!简历上面的必问!!!不是简历上的,没答上还能勉勉强强,如果简历上面的答不上来,就GG了

关于follow up,是对面试问题的回答的一个延伸,切忌不要给自己挖坑,而是引导面试官问一些问题。

举个例子:

面试官:说说如何保证RocketMq消息不丢失?

正常回答:RocketMq提供了一种同步刷盘机制,当消息保存到磁盘上时,才会返回给生产者发送成功。

大神回答:

  • 除了这个刷盘机制,还提供一种异步刷盘机制,消息保存在缓存中,采用异步的方式刷新到磁盘上,可能会出现消息丢失的情况,但是该刷盘机制相比于同步刷盘QPS有很大的提升。(Redis也有类似的刷盘的策略,如果您想听,我想等我讲完给您讲讲这个)

  • 但是我在实际的项目中还是采用的同步刷盘机制,来保证消息一定不丢失。

  • 因为在RocketMq中做了两点的优化来提高QPS

    1. 消息存储(顺序写):RocketMQ的消息用顺序写,保证了消息存储的速度。目前的高性能磁盘,顺序写速度可以达到600MB/s, 超过了一般网卡的传输速度,但是磁盘随机写的速度只有大概100KB/s
    2. 消息发送(零拷贝):将本机磁盘文件的内容发送到客户端需要进行多次复制,比如从磁盘复制数据到内核态内存;从内核态内存复制到用户态内存;从用户态内存复制到网络驱动,最后从网络驱动复制到网卡中。RocketMq采用Java中零拷贝的技术,让从内核态内存复制到用户态内存这一步省略,直接赋值到网络驱动中
  • 除此之外,RocketMq消息选择保存到了磁盘,而ActiveMQ默认采用的KahaDB做消息存储,这是一种关系数据库。采用文件系统的除了RocketMq还有Kafka/RabbitMQ

  • 由于,普通关系型数据库(如Mysql)在单表数据量达到千万级别的情况下,其IO读写性能往往会出现瓶颈,而且关系型数据库如果出现了宕机或者损坏,就会导致Mq不可用。

  • RocketMq选择文件系统,是因为做了一些刚才说的优化,所以读写性能上,比关系型数据库会有很多优化;而除非磁盘发生损毁,消息是不会损毁的。

  • (我想继续给您将一下RocketMq的文件系统,您看可以吗?如果可以,继续....)

  • RocketMQ消息的存储是由ConsumeQueue和CommitLog配合完成的

    • CommitLog:消息真正的物理存储文件是CommitLog,默认一个文件一个G,存储的是Topic,QueueId和Message,一个存储满了会自动创建一个新的。

    • ConsumeQueue:是消息的逻辑队列,类似数据库的索引文件,存储的是指向物理存储的地址,为了加快消息的读取速度。消费者消费某条消息时,先查询索引获取CommitLog的对应的物理地址。每个Topic下的每个Message Queue都有一个对应的ConsumeQueue文件,文件很小,通常会加载到内存中。如果该文件丢失或者损坏,可以通过CommitLog恢复

    • IndexFile:也是个索引文件,为了消息查询提供了一种通过key或时间区间来查询消息的方法,这种通过IndexFile来查找消息的方法不影响发送与消费消息的主流程

    (别忘了前面还想着给面试官讲讲Redis呢,记得问一下他还想不想听了)

上面这些,讲个十来分钟还是没有问题的,如果很厉害的话,顺便可以对比一下MySQL的磁盘存储,这点我不太熟悉。如果是社招,我觉的多讲一下自己在实际中的应用,说个20-30分钟都不是问题

至于四面那个Redis的Hash数据结构源码,我是对比着Java的HashMap说的,讲完都快20分钟了。如果问索引或者SQL优化,在不打断的情况下,感觉能说个30分钟。

楼主的博客已经完成部分内容的总结:https://blog.nowcoder.net/xzzz2020
如果觉得可以,楼主会完成接下内容的总结,记得点赞以及收藏面试专栏哦,都是来源于网上开源项目以及博主自己的理解,这是楼主自己搭建的博客:https://xzzz2020.gitee.io/

如果觉得这个follow up的思路讲的可以,希望可以在下面回复一下,这样帖子就不会沉了,可以让更多的人看到

一面(30min)

Redis

  • 主从复制的架构
  • 主从复制底层原理
  • Zset的跳跃表(将这个的时候,顺便对比了平衡树树,包括一些实现源码最后也说清楚)

手写SQL(不会)

手写算法题

  • 给一串数组,一个整数,判断有连续几个比整数大,连续几个比整数小

二面(50min)

RocketMq

  • 如何保证消息不丢失

Redis

  • 水平扩展的底层原理

JVM

  • GC的语言会有内存泄漏的问题吗?

  • 什么时候会内存泄漏

  • GC对程序的影响在哪(说了fullGC)

高并发

  • 线程池都有哪些(提一下阿里巴巴的规范)
  • ThreadLocal都用在哪些场景

集合

  • LinkedList是双向链表还是单向的
  • HashMap和treeMap的区别?

手写算法

给100个篮球,放进10个不同的框子里,有几种方案?(深搜和DP我都写了)

问了看过那些源码?

  • Redis、Spring、RocketMq、Java集合

问了CAP理论(不会,简历没写)

问了Netty(不会,简历没写)

问了职业规划

三面(70min)

三面应该更多考察实际的能力,面试官很和蔼,就相当于在闲聊。这一面答的很烂,很多操作系统的东西不知道,智力题也没算正确....差点以为挂了

都看过哪些书,最推荐那本?

网络都分几层,都有哪些协议,分别在哪些层?

自己有服务器吗?为什么要整个服务器?

自己用的什么系统的电脑?

为什么不考研?

聊了聊项目都解决了什么问题,我是怎么解决的。

进程和线程的区别?

进程分配的内存空间有限制吗?

线程分配的地址xxx的(不会)

时钟和分针下一次重合的时间(算了很久没算出来,说了下思路)

Redis的端口号,用的什么协议,都用过什么东西连接的Redis

都知道哪些消息队列,都有什么区别?

项目都解决了什么问题,怎么解决的?

为什么操作系统端口号有限制?

一个Windows的程序能在Linux程序运行吗?

JDK和JRE的区别?

四面(60min)

第一个算法是给一个数组,假如[1,2,3,4],该数组求和为10,让返回一个数组[10-1,10-2,10-3,10-4],第一个数组求和减去对应位置。限制是不允许用减号。

第二个算法是计算根号三,精度不限,要求运行出结果。

最后还剩了点时间,就简单考察了一下基础,问了我Redis的源码,问的是Hash的数据结构。

最后就让我问问题,跟我闲聊问我有没有考研的想法以及都面了哪些公司了。面试官很好,后面安慰了我学历不好没关系,让我在自己能把握的地方做好就行。

HRBP面试(30min)

我投的牛客SP专场,用的牛客的简历,忘记改了,上面全是坑.....

  • 问了我对滴滴的看法

  • 问我北京那么多公司

  • 哪些公司算是一线公司

  • 问我如果阿里腾讯给我offer,我会选择哪个

  • 问了北京那么多公司,哪些公司在我眼里是一线互联网公司

  • 问我为什么要做我简历的项目

  • 问我家人和女朋友支持来北京吗

  • 什么样的人在我眼里是大佬?

  • 问我会c++嘛

  • 愿意用c++写程序嘛

  • 问我性格的缺点

  • 问我竞赛中一次当leader的感受和收获

  • 问我为什么要发表出租车相关的论文

  • 问我为什么要举办我们学校第一届建模队

  • 如何选择下一届建模的队长

  • 还有就是问我喜欢滴滴什么地方

感觉很在意我作为一个leader的表现,很不想提,不想让hr感觉我喜欢管人.....

没有问我对评级的想法,我自己主动问了我的评级,没给我说。

最后许愿希望早日OC,早日收到滴滴的意向书!!!!码字不易,希望可以让更多人看到.....

#秋招##校招##面试题目##滴滴##Java工程师#
全部评论
想了解这个问题楼主如何巧妙应对的:问我如果阿里腾讯给我offer,我会选择哪个
2 回复 分享
发布于 2020-08-15 14:08
get到了楼主的经验,自己多说。不要让面试官问,确实太累了。毕竟一天不止面你一个人。赞成面试是情商智商的双商考验。
2 回复 分享
发布于 2020-08-17 21:08
顶老哥!
1 回复 分享
发布于 2020-08-14 12:12
楼主太强了,想请问一下楼主是什么专业的?
1 回复 分享
发布于 2020-09-05 08:31
可能会觉得这样follow up会让反感? 我个人觉得,第一如果你的回答没问回答到面试官想听的程度,他要是不追问了话,即使你会,他也不知道。一般来讲,你回答到哪里,就觉得你掌握到什么程度。第二面试官,面试很累的,这样让面试官听就行了,剩很多事,在面试的时候,除了比拼智商,还有一个的比拼是情商。
12 回复 分享
发布于 2020-08-09 18:40
优秀如你
点赞 回复 分享
发布于 2020-08-09 18:38
好厉害!!
点赞 回复 分享
发布于 2020-08-14 11:26
tql
点赞 回复 分享
发布于 2020-08-14 23:49
主从复制的架构和原理是讲同步和命令传播吗😶
点赞 回复 分享
发布于 2020-08-16 08:53
没有项目影响大吗?楼主做的项目花了多长时间呢
点赞 回复 分享
发布于 2020-08-16 09:59
楼主太优秀了!!
点赞 回复 分享
发布于 2020-08-19 12:03
写得很有借鉴意义,可以把帖子链接放到秋招面经征集活动下面,这样就能领奖品了哦,活动详情:https://www.nowcoder.com/discuss/445455
点赞 回复 分享
发布于 2020-08-19 14:18
楼主,请问计算根号3的话不能直接使用java自带的函数吗
点赞 回复 分享
发布于 2020-08-21 10:28
请问楼主笔试A了几道进的面试
点赞 回复 分享
发布于 2020-08-26 11:42
楼主你好,意向书上有标明是SP的offer么
点赞 回复 分享
发布于 2020-09-01 17:50
tql
点赞 回复 分享
发布于 2020-09-04 09:28
膜拜!
点赞 回复 分享
发布于 2020-11-20 18:08
请问lz这五轮下来经历了几周时间呢
点赞 回复 分享
发布于 2020-11-23 12:33

相关推荐

点赞 评论 收藏
分享
34 145 评论
分享
牛客网
牛客企业服务