热门话题白皮书HR资料
滴滴50+道面试题汇总:后端、golang岗必看!
2024.01.15

企业简介:DiDi Global Inc.(滴滴全球股份有限公司)是全球卓越的移动出行科技平台,在亚太、拉美、非洲等市场提供网约车、出租车召车、代驾、顺风车等多元化出行服务,并运营车服、外卖、货运、金融业务。



面经目录:

①滴滴后端开发工程师面经

②滴运营中台-后端研发实习生

③滴滴golang面经

④投递入口、面经、内推传送门


01

滴滴后端开发工程师面经
 来源牛友@肆意不羁少年鼠

一面:

自我介绍

算法

1.二叉树的层序遍历

实习项目

简历项目

1.如何利用MySQL + Redis实现的好友功能?

2.为什么要结合Redis实现?

3.如果用户数量过多,考虑怎么去优化?去设计存储?

4.expire 过期机制如何实现的?

5.过期机制的存贮数据结构是什么?

6.如何实现的定期删除策略?

7.目前的定期删除策略有哪些不足?如何去优化?

其他

1.有没有用过C++,Golang?对比一下他们和Java的优缺点?

2.为什么一直写博客?

3. 还有一些其他技术问题想不起来了

反问

1.部门的业务?(国际化)

2.部门的技术栈?(GoLang)


二面:

自我介绍

算法

1.最大子数组和

2.同一道题,要求可以打印出路径

简历项目

1.介绍一下项目中各个模块的实现?

2.项目中如何解决的超卖和限制一人一单?

3.Redis实现分布式锁,释放锁包含读取锁变量值、判断锁变量值和删除锁变量4.三个操作,如何保证他们原子性执行?

5.好友功能如何实现的?

6.千万级的用户量,如何优化好友功能?

7.了解哪些分布式缓存?

8.大概介绍一下这个缓存框架?

9. 底层采用哪种数据结构进行存储?

10.解释一下什么是渐进式 rehash?

11.渐进式 rehash 扩容机制如何实现的?

MySQL

1.MySQL 支持哪些存储引擎?

2. MyISAM 和 InnoDB 的区别有哪些?

3.实际场景中,自己如何选择使用MyISAM存储引擎还是 InnoDB存储引擎,又或者说自己没有考虑过这个问题,直接用的默认?

计网

1.TCP和UDP的区别?

2.为什么音视频传输使用UDP协议?

操作系统

1.线程,协程,进程的区别?

2.如何理解协程不被操作系统内核管理,而完全是由程序控制?

其他

1.Java和Golang的各自优缺点?

反问

1.部门的业务? 

2.部门的技术栈?


三面:

自我介绍

算法

1.LRU 缓存

Redis

1.Sorted set底层实现原理?

2.Sorted set底层为什么采用2种数据结构(压缩列表+跳表)实现?

3.Redis渐进式rehash原理?

4.Bitmap底层数据结构是什么?Bitmap底层实现原理?

5. 一个Redis字符串可以表示多少位的bitmap?

6.跳跃表为什么不用平衡树这些数据结构实现?

7.GEO 底层采用的哪种数据结构?

8.GEO 如何存贮经纬度?GEOHash编码方法讲一下?

简历项目

1.为什么考虑用Redis实现签到功能?签到数据如何存储的?

2.为什么考虑用GEO实现附近的人功能?

3.如何使用MySQL实现附近的人功能?

4.分布式锁如何实现?

5.如果获得分布式锁的机器宕机了,如何解决死锁问题?

6.Feed流功能如何实现的?

分布式事务

1.对分布式事务了解多少?

2.有哪些实现分布式事务的方法?

MySQL

1.什么是覆盖索引?

2.为什么索引结构默认使用B+Tree?

3.MySQL主从复制流程和原理?

4.说一下MySQL 的四种隔离级别?

其他

1.什么是字符串HashCode算法?

2.考虑自己去设计实现一个HashCode算法?  

反问 

1.部门的业务?

2.部门的技术栈?


02

滴运营中台-后端研发实习生面经
来源牛友@Geeksun

一面:

1.自我介绍

2.复盘笔试题写的抢红包代码

3.线程的状态有哪几种,分别是什么含义

4.new String[]{"a", "B"},这段语句创建了几个对象?

5.你对锁了解得怎么样?

6.看看你的项目,打开了本科时候写的一个会议室相关的项目,问了下怎么防止多线程情况下对同一个会议室的重复预定

7.反问环节

8.无算法题


二面:

1.自我介绍

2.询问了我刚投稿的一篇联邦学习相关论文,大概和面试官讨论了15分钟左右。

3.给了一道股票买卖的题目,按照可重复买卖用dp写的(大概花了5分钟),但是面试官又让输出购买的时间和卖出的时间,卡了大概5分钟。

4.一周能上班几天,大概什么时候能到岗?

5.反问环节


03

滴滴golang面经

—来源牛友@21摄氏度

一面:

自我介绍环节

闲谈三分钟

1.git的提交代码流程
2.go channel有缓冲区和无缓冲区还了解其他类似的吗

3.互斥锁,读写锁应用什么场景
4.waitegroup的使用
5.go的map的结构
6.map里能不能存空数据,为什么
7.map初始化的new、make区别
8.redis数据类型了解哪些,zset使用场景,zset底层
9.为什么redis里用跳表不用搜索平衡树

10.redis数据怎么设置过期时间,原理是什么,让你来设计过期机制你会怎么设计
11.MySQL普通索引的数据结构(没太明白,面试官提醒了个二叉树,瞬间明白应该是B+树和其他结构进行对比)

12.平衡二叉树和主键hash的关系(不明白,不理解,说了自己没了解过这方面)


二面:

1.自我介绍

2.mysql方面

正常八股(懒得写了)

3.redis方面

正常八股(懒得写了)

4.寻找数组只出现一次的元素


 求职传送门


● 投递简历: 
https://www.nowcoder.com/link/pc_social_gzh_ddjl

 面经合集:
https://www.nowcoder.com/link/pc_social_gzh_ddhj

 滴滴内推:
https://www.nowcoder.com/link/pc_social_gzh_ddnt