Update 2020年11月18日23:00
刚刚问了下HR,已经凉了~毕竟自己只复习了一个多月,中间还要穿插着毕设。
秋招结束了,后面就是好好搞毕设和继续实习了。
但行好事,莫问前程。
简单介绍下自己,
楼主是某末流985的大四学生,在字节的广告团队的大数据部门实习了三个月。
一直对数据库很感兴趣,很受PingCap的Geek和开源氛围的影响,投递了PIngCap的TiDB相关的团队
面试中问到的KV数据库是我在大二的时候做的,是一个基于SkipList的K-V存储引擎。在此基础上实现了简化版KV数据库,提供增删改查和硬盘备份的功能。性能方面,随机插入查询 数据10w条,用时1.02s
笔试
我的题目和 @相见时难别亦难个球 大佬的一样,这里不做赘述了
https://blog.nowcoder.net/n/c1d7cbd237d04a3bb6b101e878fda77b
(2021年4月12日14:52:56)过去这么久了,我放一下我自己的方法:
https://github.com/AntiTopQuark/pingcap_examination
一面 1h(电话面)
自我介绍,在字节的实习经历。
问项目。一个前后端分离的Web项目的开发背景;一个是大二时做的内存KB数据库。问了一下大致的情况,当时使用了Share Mutex,问要怎么进行并发优化
Mysql是如何进行后期优化的?(回答了MVCC,其他的就不是很清楚了)
B-树与B+树的区别?
一个Sql语句的执行过程?
Mysql的Join的计算的算法?(nested_loop ,但是当时没怎么记住,回答了Spark的Hash Join 和 Sort-based Join)
堆组织表,索引组织表,索引聚簇表
多级索引,最左匹配
...有几个问题是从来没听过的,最后也没记住问的啥
事务的隔离级别,锁的算法(Record Lock\Gap Lock\Next-key Lock),悲观锁和乐观锁
LSM Tree的优缺点,怎么进行优化?
2pc的过程,优缺点。3PC
对TiDB的了解(回答了HTAP,TiKV,PD等等)
有没有看过两篇TIDB的论文:一篇是Percolate,一片式Google F1的online schema。(只看过后一篇,简单讲了下租约,delete-only,write-only)
Unicode编码了解吗?还了解其他字符集吗?(GBK UTF-8 Latin)
怎么知道的PingCap
对开源的看法
二面 45min
讲一下在字节的经历
大数据方面数仓的产品你知道哪些?
Hive和Spark的区别?
Linux的进程调度算法?(实在是忘记了)
讲一下分布式一致性协议。(讲了Raft,ZAB ;paxos没学过)
写两道算法题:找到最大数,并发。怎么优化?
层次遍历,有个Bug,自己检查出来了。。。但是留下了很不好的印象
Java的HashMap,CurrentHashMap区别。
go Map sync.Map是不是并发安全的?
currentHashMap的实现原理。
go的 mutex实现原理,了解过Go的Mutex和RWmutex吗?
CAS
Go的协程调度模型
有什么问题问我吗?
三面 55min
- 自我介绍
- KV数据库做了什么
- Spark与Hadoop的区别。
- Hadoop与Spark的shuffle区别
- Spark数据倾斜,怎么解决数据倾斜?
- 哪个项目印象最深
- GO的垃圾回收?Java的垃圾回收?Python的垃圾回收
- 对数据库认识到什么程度?ACID?四种隔离级别
- 写个算法题吧?用树状数组,不会写,口述的。问时间复杂度,记错了树状数组的查询时间复杂度。
总结
- 我是9月开学之后才开始学习Go语言和数据库相关的一些知识,所以还是有很多东西准备的不够充分。因此把经历大部分都放到了学习InnoDB和Go的上面了,对算法确实没有更多的练习,导致层次遍历都有个Bug。确实不应该。
- 日常开发中,用的最多的是Python,python由于GIL,所以我对并发的编程经验也不多,二面中并发的相关的问题都没有回答的很好。CAS我也不是很清楚。确实是一个很大问题。
- 面试官老师都非常好,给了我很多的建议,对数据库开发也推荐了一些课程(CMU的两门数据库课程,PingCap的talent plan),真的十分感谢面试官和HR小姐姐的帮助。感谢感谢感谢~
- 虽然有幸进入了三面,但是我感觉好像并不是面试通过之后再给下一轮面试,而是并发面试,最终三个面试官会一起评估。总体来看的话,我的编程能力和数据库相关知识掌握的并不是很好。也算是一大遗憾吧。
- 牛客网上pingcap相关的面经真的很少。希望我的面经能够给大家带来一些帮助吧。也给自己再许愿一次~真的很想去PingCap~加油加油~
全部评论
(12) 回帖