Skip to content

关浩林 - Karma数据库实习
2026届, 计软, 计算机科学与技术

给学弟学妹的一句话:相信愚公移山的故事

联系方式:

  • 微信: A18022911730
  • 邮箱: mikooadrtradsioad@gmail.com

1. Offer Show

申请岗位 结果
kasma图数据库存储引擎开发实习生 offer
字节跳动推荐架构存储岗实习生 offer
Metabit量化交易平台数据存储岗位开发岗 二面挂
腾讯微信事业群分布式存储研发岗位 一面过 复试简历筛无法通过
腾讯天美工作室后台开发实习生 offer

2. 背景:

简历: 点击此处查看

项目:

  • 支持 Apache Doris 数据库 的冷数据向HDFS上传
  • 支持 分布式计算引擎velox的异步任务cancel功能
  • 支持 PostgreSQL 数据库 的Symmetric Hash算法 (深圳大学数据库内核实现课程 2024年春季大作业)
  • 支持 xv6 操作系统 的一些新特性(MIT 6.s081 操作系统内核课程 Lab)
  • 实现 bustub 数据库 的存储引擎和事务系统核心 (CMU 15-445 数据库内核课程 Lab)
  • 实现基于Raft的kv分片存储系统 (MIT 6.5840 分布式系统课程 Lab)

实习经历:

  • Kasma 图数据库存储引擎开发 (2024.4 -> 2024.7)

技术能力:

  • 熟练使用C++
  • 熟悉数据库和分布式系统

3. 经历分享:

求职是一个与自己,与信息赛跑的过程,若你对求职有所规划,希望找一份称心的工作,需要尽早开始规划
互联网开发、嵌入式开发、游戏客户端开发等岗位,通常对学历要求相对灵活,更看重实际能力。这些岗位注重求职者的项目经验、技术栈深度和匹配度,因此即使是本科学历,只要具备过硬的技术实力,同样有机会获得高薪职位。对于想要追求高薪且注重个人能力发展的本科求职者来说,这些方向都是不错的选择。
本人致力于互联网基础架构——数据库内核存储引擎的研发,因此可以提供一些对互联网开发求职的经验。

3.1 为什么是数据库内核?

这源于我大一时的一念之差。当时我刚开始学习编程,对C语言的实现原理和标准库功能产生了浓厚兴趣,并投入大量时间学习C语言和操作系统知识。

在学习过程中,我接触到C++这门强大的语言,丰富的语法特性让我渴望用它创造价值。咨询了多个领域的C++工程师后,我了解到C++适合网络底层基础架构研发、数据库内核研发、量化交易平台开发等方向。当时我对操作系统领域已有所了解,希望尝试其他方向,而朋友推荐了数据库内核方向,并鼓励我尝试。

在朋友的指引下,我选择挑战CMU15-445和MIT 6.5840这两门数据库公开课。攻克这两门课程耗费了我数月时间,但最终的Test Pass带来的成就感是难以言喻的。

3.2 开源经历:

因为本科生需要通过实习或者开源活动才有机会接触到工业化落地的数据库项目,因此,学习开源数据库项目是深入数据库内核路上的必经之路,大一暑假时,我得知朋友在一家维护开源商业化项目 Apache Doris数据库的公司工作,所以委托他邀请我加入这个开源项目的开发之中。

与此同时我也选择了经典的LSM-Based kv存储引擎项目 Leveldb 和 基于此forked开发的Rocksdb的源码进行学习,积累了大量的lsm存储引擎设计的经验。

踏入开源世界的旅程,远比想象中艰辛。从几万行的公开课项目,一下跃升到动辄数十万、甚至上百万行的开源项目,复杂度和代码技巧性呈指数级增长,学习难度也陡然上升。

无论是复杂的部署流程,还是晦涩难懂的代码,亦或是寻找解决方案时的迷茫,都让这段经历充满了痛苦。很多莫名其妙的问题,只能靠自己花费大量时间调试,一步步探索错误根源。社区大佬们也不一定能及时伸出援手,尤其是像 RocksDB 和 LevelDB 这样以邮件交流为主的社区,回复速度远不及 Doris 这种使用即时通讯工具的社区。很多时候,只能独自面对难题,默默承受"打碎了牙往肚里咽"的苦楚,仿佛置身于《黑暗之魂3》的一周目,每一步都充满着煎熬和挑战。

当然,在克服了诸多困难完成任务之后,自身的成长是肉眼可见的:从不会git到熟练使用git,从对大项目源码存在畏惧心理到流畅自如的基于此进行开发,调试,快速定位问题,能提出性能更好,耦合度更低,更优雅的方案,甚至用上更高级更炫酷的C++新特性来实现自己的设想。就像《教父》的台词所说一般,数据库内核向我提出了一个无法拒绝他的条件。

3.3 求职准备

求职的两个月是一段极其煎熬而漫长的时光,求职其实严格来说就四个流程:简历过筛->技术面->hr面->offer - 简历过筛:简历筛选其实就看你的学历,实习经历,以及项目,如果你有对口的大厂实习经历,对面试官来说非常加分,深大的本科学历其实能让你通过大部分大厂的学历筛选,所以为了增加简历过筛的成功率,深大学子更应该在项目经历或者实习经历上发力,以及多找师兄师姐或者好朋友直推,如果师弟师妹对于从哪里找到好的项目存疑,可以参考一下我的简历和我上面的经历。如果是后端的话我比较推荐去了解一下校内的华为智能基座软件开发社团。

  • 技术面:技术面试其实基本上离不开四个考察范围,基础问题(八股文),项目经历挖掘,场景问题考察,面试算法(leetcode),准备起来的话也是这几个方向,八股要熟悉,理解性的记忆,自己的项目要熟悉,要多思考一下"为什么这个地方要这样设计"的问题,场景问题比较随缘,只能多看别人的面经以及结合自己的面试经历来总结,而面试算法就是靠刷leetcode来积累,没有算法基础的同学可以关注一下微信公众号的代码随想录入一下门。技术面大部分时候都有好几轮,也基本上决定了你的面试的成败,所以要认真准备。

  • hr面:到这个阶段后,基本上都是跟你谈一下薪资,以及确定一下你的入职时间,你不把面试官打一顿基本上都不会挂

3.4 腾讯微信事业群分布式存储研发 技术面 一面

我面wxg存储的时候是大二寒假,这个面试机会是我在wxg里面的一个朋友给我强推得到的,这也是我人生第一次参加就业面试,所以我面试前一晚压根就没睡着,太紧张了,但是面试内容其实不难,考察了一下sql的基本写法,linux的一些命令,cpp八股的常见问题,leveldb中与lsm的level merge相关的问题,如何利用leveldb设计ttl机制,算法题应该是简单考察了一下数组排序和二分查找 面试完以后十分钟就告诉我初试通过了,但是很可惜通过了以后简历就一直在跑池子,后来显示挂了,没有给复试机会,事后询问朋友得知,是因为微信存储当时的老leader不想要大二的实习生,比较无奈

3.5 kasma图数据库存储岗位研发 技术面 三面

kasma的面试机会是我在里面的一个朋友给我直推到leader处得到的,这是一家初创的图数据库企业,也是一家我原以为会非常简单实际上面试难度非常大的企业,我总共经历了三轮技术面,一面和二面的面试官都是香港中文大学的博士,面的主打一个汗流浃背,对我的开源项目经历和lsm的设计问题从头拷打到尾,他们问的问题集中在s3的设计,ap数据库和tp数据库的存储引擎的选择问题,分布式kv系统的弱一致性和强一致性怎么保证,C++ CRTP(没错,这是我面了这么多公司下来唯一一家考察了CRTP的公司),C++内存序的使用和实现问题,rocksdb内核中blobdb的kv分离问题,GFS的一致性设计方案,Paxos和Raft风格对比和应用场景问题,三个技术面总共有两个算法,其实不算太难,一个是lru-cache设计,一个是多线程排序设计,面试官主要应该是想通过这个题目来观察面试者的cpp水平和风格

3.6 字节跳动推荐架构存储岗位研发 技术面 四面

字节跳动的面试机会其实同样是一个朋友给我强推才得到的,实际上他们部门leader一开始知道我是个大二的本科生的时候并不想给我面试机会,我的朋友在强推理由里面多给我写了几句好话别人才给的(所以师弟师妹们找工作一定要注重直推啊,多跟师兄师姐沟通!),面试的问题其实比较基础,大厂的面试给我感觉风格都比较稳定,不会有很难很偏的问题,比如C++的一些比较基础常见的八股,比如C++多态的实现,const,智能指针实现,自旋锁实现,vector扩容这类的,C++写得多基本都会懂这些,然后也问了pgsql如何处理哈希连接溢出,rocksdb的后台compaction机制如何并行,缓冲池如何优化等等云云,算法题同样比较基础,括号匹配,逆波兰表达式求值,以及实现一个简单的通讯录管理系统

3.7 Metabit量化交易平台数据存储研发岗 技术面 二面挂

其实Metabit这种量化公司,我这种学历一般,也没有竞赛背景的学生是很难通过面试的,是深大一位曾经在Metabit工作过的师兄给我强推所以才得到了这份面试机会,面试风格也和其他的公司不太一样,Metabit非常注重临场coding能力,考察的算法难度也非常大,一面考察了一道BFS题,二面考察了一道网络速率限制的工程题,完全没有询问过我的简历上的项目细节和我的基础知识,我没有经历过非常系统的算法训练,所以最后没有通过面试,很遗憾地落败了