PingCAP春招实习面经,123面已OC。

认识PingCAP

听说PingCAP,是在我加的一个实习互助群里看到有大佬提起的。那时我还在JD实习,做着自己不太喜欢的工作内容,正想换一个方向试试。

当时的第一印象是:一个做分布式数据库的很NB的公司,交大巨佬迟先生就之前就在里面实习。

很好奇的我就去Google了这家公司。了解了一下之后发现PingCAP真的是一家很酷的公司,能够在基础架构做开源、做出盈利、去年还融到D轮2.7E刀,在国内真的凤毛麟角。我只能说一句:tql。

准备面试

了解完PingCAP的工作内容之后,我对他们的工作内容和工作文化都非常的好奇。

我开始搜索怎么才能去PingCAP实习。

在知乎上看到了黄东旭大神的一个回答,里面有一句话:"如果你做完了6.824,对自己有自信的话,就试着来实习吧。"

于是我就开始去做6.824了,一开始的时候想法很单纯,就是想通过对这个课程的学习,能够达到到PingCAP实习的要求。学习了这个课程之后,发现分布式系统和数据库这块知识真的很有意思,现在也成为我的兴趣所在了,算是意外的收获了。

在经过差不多一个月的折腾之后,我把6.824做到了Lab3B。(论文只读了5篇,差不多把所有的时间都投入到Lab上了。)

在三月下旬,我通过某乎找到了一位PingCAP的工程师,请他帮我内推。经过几天忐忑地等待,我的面试开始了。

2021.3.24 一面

1.面试官介绍了他们组目前的工作。

2.我自我介绍。

3.申请一个10kb大小的数组,操作系统发起了什么系统调用?

4.内存管理,页表。

5.一个程序从加载到运行,中间发生了什么?

6.给定10k个任务,1%低优先级,每个需要运行10s;另外99%高优先级,每个需要运行10ms。有一台双核机器,设计一种调度算法,让它们都不用等太久就能被执行。

  • 分析得出低优先级的任务有100个,总共需要运行1000s。高优先级总共需要运行约100s,完全可以先执行高优先级任务,再去执行低优先级。

  • 第二问:如果事先不了解高低优先级任务的数量要怎么做?

  • 可以让给低优先级任务设置一个优先度0,高的设置为8;优先度低的任务会被优先度高的任务抢占,此时被抢占的任务就会进入等待队列里面去等待cpu,每等待1s它的优先度就会加1。这样低优先度任务就不会永远等待下去;此时,为了让高优先低时长的任务依然能得到比较快速的响应,我们可以只在一个核中采取以上策略,另一个核仍然优先分配给高优先级任务执行。

7.Raft figure8。为什么Leader不能直接commit前一个任期留下了的log?如果这样做会出现什么问题?

8.二叉树的最近公共子树。

9.反问阶段,还有面试官给了我一些学习方面建议。(例如,要多读论文,广泛了解分布式系统的历史发展脉络和概念。)

2021.3.26 二面 技术主管面

1.讲一下上次面试的收获。

  • raft figure8 那一块内容更深入的理解

  • 回去对OS的内存管理和程序加载运行这一块知识进行了学习

  • 面试官推荐了6.828和CSAPP,让我回去有时间好好学习一下这两个部分的内容。(我读过一部分CSAPP)

2.讲一讲OS内存管理。

3.讲一讲一个程序,是怎么从源代码到真正的执行起来的。从编译开始讲。(一面的问题,让我重新回答)

4.进一步讲一下程序的加载和链接这部分。

5.讲一讲你了解的IO多路复用,他们有什么区别。(selec, poll, epoll)

6.一个RPC的调用,从发出调用到接收到对方发过来的reply; 中间OS做了什么,用户态和内核态发生了怎样的变化,有什么中断产生?数据包在网络中经过怎样的传输,经历了几层协议栈?

7.追问,TCP属于哪一层协议,链路层协议了解哪些。

8.讲一讲ACID。(中间产生了多次追问,具体到场景,以及如何实现和如何解决某个问题;还有MVVC等内容)

9.讲一讲CAP。为什么会有CP、CA的抉择?

10.分布式事务和普通事务有什么区别吗?

11.算法题:给定一个n*n的 0 1矩阵,你只能进行两行交换的操作,求让其变成右上三角全为0的最少操作次数。

例子:

 
0 0 0 1
1 1 0 0
0 1 1 0
1 0 0 0  // 输出1 (0行和4行换)

这道题我不会,但是面试官给了我很多引导,让我尽量表达出自己的思考过程,不至于让我卡在那很难受。

12.反问阶段,聊一聊自己的学习生活和对实习的期待。(核心问题:一般上班时间? 答:10 6 5 )

2021.3.31 HR面

HR姐姐非常Nice,就是聊聊天,问一问我的面试体验和对公司的看法、还有我的一些基本情况。

最后就愉快地定下了OC的时间。

面试总体感觉

整个面试流程走下来,给我都是非常良好的体验。

首先,内推简历通过筛选之后,先有一个招聘助理小姐姐加我,跟我沟通定好面试时间,在这一点上我就感觉自己是得到的一定的尊重的。并且整个面试期间,招聘助理都有持续跟进和跟我反馈面试的情况,我有什么问题问她都能很及时得到回答。这种顺畅的沟通和及时的反馈,减少了等待的焦虑,给人感觉非常棒。

然后,每次技术面试都会持续大概一个小时左右,面试官在提问的时候也不是一味地发问,而是在有些地方会给我引导和参与讨论,我觉得模糊的知识点会在跟面试官的讨论中变得清晰,每个问题也会因此说得更深入一点。

并且面试官会给我足够的思考时间,愿意花时间去听我自己对问题的看法(非标准答案),让我有更多展现自己的机会。

面试官还给了我许多进一步学习的建议,并且会在最后的反问阶段跟我聊一聊他自己对我此次面试表现的看法,有哪些可以提高的地方。这些都是有别于我的其他面试体验的,总体感受就是比较和谐,而没有紧张和焦虑。

我个人觉得实习的面试真的不算很难,比起之前面过的大厂来说,在技术层面上的考察可能就半斤八两,八股文问的不是很多。问的问题大部分在CSAPP上都能找到答案。可能更多的是看候选人对这个领域的学习热情和沟通能力吧。

#实习##PingCAP##Java工程师#
全部评论
真的tql
1 回复 分享
发布于 2021-04-03 11:37
请问楼主是哪年毕业的?
点赞 回复 分享
发布于 2021-04-03 18:35
疯狂膜拜江神
点赞 回复 分享
发布于 2021-04-03 19:56
大佬tql
点赞 回复 分享
发布于 2021-04-07 23:24
咦,老哥没问项目?
点赞 回复 分享
发布于 2021-07-07 18:07
大佬现在还在pingcap吗
点赞 回复 分享
发布于 2024-10-08 21:01 四川

相关推荐

01-15 20:43
已编辑
四川大学 Java
1、你觉得你哪些点是比较好想让我看到的吗说了下实习经历,公司有天出事跟着加班到12点2、问了下一个进程启动启动不了怎样排除,回答可以看系统调用 strace 来排查,举了下之前遇到vnc启动不了的例子,发现是某个依赖的.so文件没有。追问:还有没有其它方法回答:这个不太清楚,可能有其它的日志吧面试官:有个demsg能够看3、机器中毒你是怎样排查的回答:top、crontab、systemctl、netstat、lastb 后面清楚病毒发现入口是一台Hadoop机器说下僵尸进程 (忘了僵尸进程跟孤儿进程的差别了 寄 https://www.cnblogs.com/yychuyu/p/15553400.html) 怎样看进程父进程(扯了下systemctl status pid 后续搜了下还可以使用pstree查看)4、说下进程的状态及转变5、怎样在linux暂停进程(不清楚,只回答知道kill,但应该也有类似pause、resume的命令)7、计算机网络说下三次握手,为什么不两次握手,timewait状态时什么时候,如果timewait状态过多怎样排查8、说下你的项目有哪些亮点 说了基因算法、一些设计模式9、12306你有没有进行感谢 扯了一些串行的使用多线程改造了,效果要好写10、idea手撕快排(五六分钟手撕出来,之前敲过好多次了,idea写就是爽) 快排时间复杂度 想要倒序排改哪里11、idea手撕全排列(搜索+回溯 秒了) 如果想要三永远都在2前面怎么办(加了个flag,测试没问题)12、开始问我还有没有其它亮点 :开始扯自己博客(感觉有个博客确实还是有好处) 问我lc刷了多少题(说hot100基本刷完了) 问我 自己平时怎么学习的 (带着问题学习,博客里面很多todo,学习过程就是不断的增加todo和减少todo)13、说下对递归的理解 (霹雳巴拉扯了一堆)后续反问:做什么的、实习生进来干什么感觉整场面试难道挺高的,问了好多linux,可能自己吹linux挺熟练的,手撕的话因为是idea写还是爽面试官人也挺友善的
查看28道真题和解析
点赞 评论 收藏
分享
01-07 23:32
浙江大学 Java
本人相关bg在我之前发的帖子中也有提到,所以不再赘述了,感兴趣的朋友可以去翻翻~去年2024一整年,本人接触了完全不同的三个方向,从Java后端大模型开发,最后来到了现在做的推荐算法,其实目前也还是挺迷茫的,不知道未来何去何从,要做什么,反正姑且先做着吧:)前几个月总共面了四家大厂:字节、快手、虾皮以及九坤。拿了前面三家的搜推日常实习oc,九坤的量化开发一面就挂了。这里姑且浅浅说点跟面试相关的,如果有人想要关注更加细节的内容,可以考虑新写一篇(大概?)由于本人之前没啥搜推背景,简历也没有搜推项目,就把王树森的网课看了看,然后看了看比较经典的搜推模型结构比如dcn,然后也没其他了。真正面试中,也没有遇到问搜推相关的东西,基本问问大模型那段实习,然后就是经典coding环节。个人感觉只要把简历搞熟,能够正确手撕算法(字节出了hard,其他家是mid),其实也够了。值得一提的是,九坤的面试比较有特点,必须按照面试官顺序做题,可以使用搜索引擎辅助,考的题目基本涉及numpy和pandas的实际应用编程,(好好好!很早前学的早就忘完了),写的磕磕绊绊,不出意外g了。最后,本人目前已经入职字节啦,感慨一下日常福利是真好啊,希望自己能顺利度过landing期,也欢迎大家加入字节跳动#推荐算法##日常实习#
点赞 评论 收藏
分享
01-07 23:00
门头沟学院 C++
1、自我介绍2、项目过程中遇到什么困难的问题3、项目中的难点4、视频文件上传到文件服务器和业务服务器的差异是什么,优劣5、问了些实习时间的情况(能实习多久,从哪时到哪时)6、go内存分配的实现原理(回答的差强人意)7、go怎么并发编程下等待多个协程的结束,Add()是什么意思8、go slice不断append,是如何给它分配内存的9、slice扩容规则10、defer是用来做什么的,应用场景11、多个defer的执行顺序12、map 和 slice那个是线程安全的13、map手动加锁和sync.Map的区别14、mysql数据是怎么写的,写入的底层原理,底层涉及了哪些主键的交互啊、涉及到了哪些层次,比如说,innodb写入时是先写入buffer pool(这个是真不会)15、mysql主节点的binlog是同步的还是异步的16、mysql主节点崩溃了,数据是不是就没有了17、mysql写数据时,主节点挂了,但是向客户端返回成功。怎么保证从节点数据写入进去18、innodb索引为什么使用B+树19、数据量很大,达到内存放不下,怎么解决20、redis作为缓存的理解21、用redis缓存和本地缓存,可以用本地缓存么(答了可以,但不建议,然后面试官反问维护redis的成本呢)22、redis set和list的使用场景23、redis set的原理手撕:LRU反问:入职后的业务、实习生的培养#面经##golang面经##实习面经#
查看24道真题和解析
点赞 评论 收藏
分享
评论
12
87
分享

创作者周榜

更多
牛客网
牛客企业服务