我的2022年秋招后端数据库内核面经(微软蚂蚁猿辅导等)

目录

前情提要

蔚来(二面挂 数字化后端研发工程师)

米哈游(一面挂 米哈游社区服务器端研发工程师)

猿辅导(三面挂 服务器端研发工程师)

滴滴(白菜offer 运力供给生态后端研发工程师)

美团(三面挂 存储系统研发工程师)

微软(跨组转正面挂 Azure for Mysql软件开发工程师)

百度(一面挂 管控面数据库内核研发工程师)

StarRocks(一面挂 数据库内核研发工程师)

蚂蚁(二面挂 Oceanbase数据库内核研发工程师)

总结

前情提要

126天21投19面1offer结合个人条件量化2023秋招

最近完成了毕业答辩,提交了学位申请书,终于有时间(再次)盘一盘秋招了。之前有很多小伙伴说没看到面经在哪,所以这里将面经一次性发出,交于有缘人。阿弥陀佛,去年开始我佛不渡硕士以下,阿门

TIPS:

  • 本文前面为后端开发岗位,后面为数据库内核研发岗位
  • 华为要求不公开面试内容,故略去

蔚来(二面挂 数字化后端研发工程师)

  • 笔试
    • 牛客系统
    • 20道选择题
    • 最大子段和 100%
    • 树最小路径和 100%
    • 矩阵最小路径和 100%
  • 一面
    • 介绍Raft
    • Raft和Paxos有什么区别
    • 介绍一下MVCC
    • 你实现的MVCC和Mysql有什么区别
    • 你可以对MVCC实现什么改进
    • 介绍一下你在字节的工作
    • 介绍一下做的缺陷跟踪
    • 介绍一下你在微软的工作
    • 算法:手撕快排
  • 二面
    • 自己介绍有亮点的工作
    • 字节工作
    • 微软工作
    • 接口怎么优化的
    • 白名单怎么实现的
    • Miniob LRU实现
    • ABCD四个字段 A主键 BC索引 B>20 and C<10 SQL执行全流程解释
    • 索引失效几种情况
    • raft和zk的区别
    • CAP理论
    • 算法:LRU
  • 总结
    • 蔚来的笔试面试难度较低,且两轮面试均在一天内完成,二面为主管面,没有HR面,发offer较早,且挺多的, 属于是比较好拿的offer
    • 目测挂的原因:主管面反问的时候说有没有底层一点的岗位,然后这是个业务部门,不搞基架

米哈游(一面挂 米哈游社区服务器端研发工程师)

  • 笔试
    • 选择题
    • 签到题忘了 100%
    • 设计一个回合制游戏 4.67%
    • 忘了 7%
  • 一面 68min
    • 自我介绍
    • Java栈堆
    • new对象的过程
    • 什么时候可以栈上分配
    • 栈和堆开销
    • hashmap原理
    • 线程安全的hashmap
    • sync和lock
    • 可重入锁原理
    • volatile原理
    • 用户态内核态
    • 如何进入内核态
    • 中断开销
    • 浏览器访问https的过程
    • select xx and xx and xx怎么建立索引
    • 循环数组 输出第一个比自己大的数
    • 设计一个限流器(老哥吐槽说大多数人都不知道啥是限流器,还要解释一下)
    • 反问米哈游技术栈
    • 全程没写代码
  • 总结
    • 限流器的设计没有做到最优,只想到了搞个令牌桶,一秒钟投入n个,没有解决性能毛刺问题,最优解是每(1/n)s投放一个令牌
    • 因为是做社区的,所以问的东西偏八股
    • 目测挂的原因:反问问有没有中间件,基架岗位,面试官说有,目测实际没有

猿辅导(三面挂 服务器端研发工程师)

  • 笔试
    • 选择题
    • 什么字符的数量 100%
    • 双拼和全拼转换 20%
    • 忘了 跑去做米哈游了 0%
  • 一面
    • 自我介绍
    • 介绍一下你常用的数据库
    • 介绍一下MVCC
    • 介绍一下隔离级别
    • pg的可重复读怎么实现的
    • mysql和pg怎么选
    • mongodb了解吗
    • 为什么pg会更快
    • 介绍一下raft
    • 介绍一下共识的那部分
    • 笔试题错了的一个SQL问题关于left join和right join
    • 算法:LC369 给单链表+1
  • 二面
    • 74min 两个面试官
    • 自我介绍
    • raft讲一下
    • raft怎么读
    • 可以从机读吗
    • 如果要线性一致性怎么读
    • 分区怎么办
    • 如何解决commit read的效率问题
    • 如果lease read会出现什么问题
    • 想问乱序apply被我糊弄过去了
    • 有什么提高并发读能力的工程措施
    • 换人
    • leveldb介绍一下
    • memtable的结构
    • 跳表的层数增长
    • 跳表无锁插入怎么实现的
    • memtable落盘过程
    • 跳表无锁插入怎么实现的
    • mysql client和server 的connect断了会发生什么
    • 不是想问连接池 问的是TCP的FIN
    • 为什么要有2MSL
    • 一个mysql client给server发包的中间的网络流程 系统调用级别
    • io有些什么
    • 你觉得mysql用的什么io
    • 问一下go 线程和协程
    • java讲一下内存结构
    • 主要讲一下堆这边
    • map是线程安全的吗
    • 介绍一下线程安全的map
    • 算法:单例
    • 算法:往一个数字字符串加三个点,能生成多少个合法的IP
    • 换人
    • 介绍团队
    • 反问:猿辅导的业务现在如何
    • 反问:团队的人数大概是?
    • 反问:工作时间是?
    • 换人
    • 研究生专业是
    • 工作中影响深刻的事儿
    • 和团队融入有没有问题
    • 换人
    • 你未来的发展是什么,想搞哪个方向
  • 总结
    • 二三面合在一起,但是目测女面试官不是特别懂技术问题,有可能是hr?
    • 并发读可能是想问读写分离,从机Read Index机制
    • 目测挂的原因:不知道

滴滴(白菜offer 运力供给生态后端研发工程师)

  • 一面
    • 自我介绍
    • 白名单怎么实现的
    • 介绍一下你们的生命周期框架
    • 白名单信息是存在哪的
    • 什么东西放zk什么放mysql
    • java锁用过哪些
    • volatile讲一下
    • 讲一下索引
    • 联合索引
    • a=0 b>0 c=0怎么扫描
    • B+树上面怎么存储的
    • 如何顺序遍历结果用的什么数据结构
    • 主从同步如何实现
    • 分布式锁
    • mysql redis缓存一致性
    • bio nio
    • select poll epoll
    • 算法:二分法查找
    • 算法:z字形打印树
  • 二面
    • 业务和基架你怎么看的
    • 高可用有哪些实现
    • 除了冗余还有什么
    • 全年稳定性99.99%是多少时间
    • 高并发限流方面有什么方法
    • 除了负载均衡还有什么
    • 一个系统如何保证自己的高可用 从存储到操作系统内核到应用到服务
    • 缓存 存储如何保证高可用
    • redis和mysql的缓存一致性详细说说
    • 你前面说的都要写mysql 用缓存的意义在哪
    • HTTP1.0 2.0 3.0
    • 为什么3.0用udp
    • TCP的可靠性怎么保证的
    • 发送方发送seq的作用是什么
    • 算法:单行有序二维数组向量化成有序一维
    • 场景设计:停车场
  • 三面
    • 字节这边介绍一下
    • 生命周期框架介绍一下
    • 白名单介绍一下
    • ingress介绍一下
    • ingress和zk一致性怎么保证
    • 你对性能有什么优化吗
    • 接口的优化是怎么做的
    • 讲一下微软这边的工作
    • 对标一下airflow和其他的产品
    • 算法:判断是否为合法二叉搜索树
    • 场景设计:秒杀系统
      • 前端
      • 网关
      • 限流
      • 服务层
      • 存储
      • 缓存等
  • 总结
    • 笔试面试较为简单,偏业务,多八股
    • 滴滴一天完成三面,没有hr面,效率很高,然后到11月直接开始发offer
    • 并不是第一批被发的offer,是前面拒了一大堆人才给到的我

美团(三面挂 存储系统研发工程师)

  • 笔试
    • 队列模拟 100%
    • 扫地机器人 100%
    • 栈模拟 100%
    • 复杂Three sum 100%
    • 完全二叉树最大路径和 100%
  • 一面 65min
    • pingcap的这个是个实习吗
    • 常用语言
    • 线程池介绍一下
    • 三个核心参数介绍一下
    • 实战怎么设置
    • CPU密集 IO密集
    • 队列有哪些队列
    • 频繁GC可以是什么原因
    • 频繁GC怎么排查
    • 详细介绍垃圾回收算法
    • 介绍聚簇索引
    • 聚簇索引有什么好处
    • B+树
    • 聚簇索引有什么缺点
    • MVCC怎么实现的
    • B+树 和 B树的区别
    • 隔离级别
    • LevelDB的写流程
    • LevelDB的读流程
    • Level0会有重叠吗
    • memtable宕机怎么办
    • 加速读的操作
    • 布隆过滤器
    • B+树 VS LSM树
    • 四次挥手
    • 为什么2MSL
    • 介绍raft选举流程
    • 会不会出现选错leader
    • 算法:前序中序重建二叉树
  • 二面 52min
    • 介绍一下你们的mysql shard
    • shard的扩容怎么做的
    • 进程线程协程
    • 哪些东西是线程私有的
    • gmp介绍
    • 共享内存怎么加锁
    • 页表大小
    • 虚拟地址到物理地址转换
    • 多级页表
    • 快表
    • 定义中断
    • CPU中断流程
    • select poll epoll
    • epoll用到哪些数据结构
    • tcp可靠性
    • 不能两次握手吗
    • 为什么要2MSL
    • volatile
    • 锁升级
    • 为什么要锁升级
    • 和JUC Lock区别
    • 四种引用什么时候回收
    • CPU用占用过高 怎么去看是哪段代码
    • 算法:二叉树最大路径和
  • 三面 65min 美团到家
    • 介绍白名单
    • 介绍Thrift
    • 设计RPC
    • 介绍IO模型
    • tcp三次握手
    • 介绍raft
    • mysql事务实现
    • 隔离性实现
    • Java用过哪些
    • hashmap
    • arraylist 和 linkedlist
    • go协程模型
    • go并发操作
    • 线程池
    • waitgroup
    • 算法:快慢指针找入环点
  • 总结
    • 对频繁GC排查这个问题回答的不太好,没有什么经验,只有说用jstack一类的工具看堆栈情况
    • 目测挂的原因:反问问的一般加班到几点

微软(跨组转正面挂 Azure for Mysql软件开发工程师)

  • aa面 50min
    • 介绍自己的项目
    • 自己在里面的角色
    • Linux系统 intel CPU只能写代码不能写脚本,测试出L1 L2 L3大小
    • 好,那么现在,你要考虑可能有多个系统内的调用不定期的污染缓存,怎么测试出大小
    • 算法题:判断平衡二叉树
    • 反问
  • 总结
    • cache大小测试,没考虑到缓存预热,没有用最优的数组测试,用的是矩阵增加了复杂程度
    • 目测挂的原因:有一个美帝留学哥最后拿到了这个offer

百度(一面挂 管控面数据库内核研发工程师)

  • 一面
    • 介绍一下tinykv
    • tinykv在生产环境还有什么问题
    • 脑裂怎么处理
    • 写请求apply时机
    • 什么时候调用callback
    • 可不可以提前callback
    • 可不可以propose之后直接callback
    • 量化percolator对性能的影响
    • 介绍raft
    • 讲一下airflow
    • 讲一下火山引擎这边的工作
    • 讲一下白名单
    • 为什么要用zk
    • 手里几个offer了
    • 工作地点有选择吗
    • 反问:工作时间
    • 反问:百度数据库内核做什么
    • 反问:您是什么部门的
  • 正式批笔试
    • 字符串匹配100%
    • 01字符串翻转 0%
    • 迷宫剪枝 53%
  • 总结
    • 量化percolator对性能的影响这个问题没有太多的概念,理论上这是一个改进的2PC,如果系统中有参数开启或者关闭分布式事务,那可以对比两次性能,但是一般是没有这个参数的,要去改系统源代码就麻烦了一点
    • 目测挂的原因:反问的时候我说以后不想搞管控面,顺便问了下面试官的业务是什么,面试官:管控面负责人。寄

StarRocks(一面挂 数据库内核研发工程师)

  • 一面 78分钟
    1. 介绍一下raft
    2. raft和paxos解决的是一样的问题吗
    3. 共识是什么意思?怎么体现在raft的
    4. commitIndex如果出现分歧该信任谁的?
    5. follower如何判断自己的commitIndex应该上推到多少?
    6. 是min(leaderCommitIndex, len(Entry)-1)吗?
    7. 成员变更说一下
    8. 成员变更如果是leader自己被删除有什么风险?
    9. TinyKV和大论文进行对标?
    10. 讲了一下paxos是没有实现这些成员变更的,所以raft实现的是更大的问题
    11. 讲一下mysql shard产品
    12. shard是什么级别的(库,表?)
    13. airflow介绍一下 科普了一下流式计算用的多
    14. 算法
      1. 删除数组中值等于x的节点,返回最后一个不等于x的值(O(n))
  • 总结
    • SR的问题确实比较难,原因是老哥确实很懂分布式一致性协议
    • 成员变更的时候只说了一个个变更的实现(因为这是Tinykv中实现了的),没有考虑到论文原文中的newConf和oldConf共存的情况,被喷了
    • 目测被挂的原因:确实答的不好
    • 吐槽一下:StarRocks的面试体验是最差的,说了不了解Paxos的情况,老哥还继续问Paxos和Raft的区别,反问让老哥介绍一下StarRocks的时候,老哥很不耐烦的说自己去网上查

蚂蚁(二面挂 Oceanbase数据库内核研发工程师)

  • 笔试
    • 类似一个栈的1024游戏最后剩几个数 100%
    • 多叉树 每次操作子树的权值加一 最少操作多少次可以让所有结点的权值=序号 70%
    • 字符串字母单数的个数为1 其他字母都是双数成为好串 统计字符串有多少子串是好串 20%
  • 一面 60min
    • 介绍一个项目 体现出你的学习到的东西
    • 介绍tinykv miniob airflow 字节数据库团队
    • ACID
    • 隔离级别
    • 乐观锁悲观锁
    • hash和B+树索引
    • LSM介绍
    • LSM和B+树的对比
    • 算法
      • 不重复的Threesum=0的三元组
    • 反问
    • 追加
      • 如果给你ob等几个offer你想去哪
  • 二面 40min
    • 自我介绍
    • ob介绍
    • ob做了什么
    • 白名单做了什么
    • airflow做了什么
    • ob的架构是什么
    • 介绍一下LSM Tree
    • 反问
  • 总结
    • ob的面试难度在数据库内核岗位中算低的,面试官一直都比较nice
    • 目测挂的原因:投的大佬太多了,那肯定不要华师大的,要清北复交浙的

总结

这是最坏的一年,也是最好的一年

青山不改,绿水长流,若是有缘,下一篇再见

#数据库##校招##秋招##面经##笔试#
全部评论
老哥这么猛都才一个offer😅,我还找个🔨
2 回复 分享
发布于 2023-05-17 11:10 甘肃
佬好强,我是研0,目前师兄带我搞数据库内核 大佬,这个方向有搞头值得all in吗
2 回复 分享
发布于 2023-07-16 11:28 四川
考虑华为od的同学,可以联系我哈~~
1 回复 分享
发布于 2023-05-04 16:34 广东
佬是华师数据院的嘛
1 回复 分享
发布于 2023-07-12 00:49 广东
感觉大佬分享
点赞 回复 分享
发布于 2023-05-02 18:21 香港
🐮
点赞 回复 分享
发布于 2023-05-02 21:19 广东
感谢大佬分享
点赞 回复 分享
发布于 2023-05-04 09:18 北京
感谢大佬分享
点赞 回复 分享
发布于 2023-05-04 09:31 广东
感谢大佬分享
点赞 回复 分享
发布于 2023-10-23 16:08 上海
ob不是数据库内核top1嘛,为啥面试难度反而低
点赞 回复 分享
发布于 04-30 23:57 湖北

相关推荐

27 146 评论
分享
牛客网
牛客企业服务