蓝标传媒(北京) - 面经
BG:双飞鼠鼠,两段开源经历,一个分布式KV存储项目
面经:
1. 自我介绍
2. 我看到你在参与Apache社区的项目,也有做贡献,当时是什么样的一个契机让你想要做这件事?
3. 你觉得参与这些开源项目对你来讲最大的收获是什么?
4. 你参与的这个Seata-Go项目应该是做分布式一致性的对吧?(分布式事务框架)
5. 你对这个项目主要贡献了哪些地方?是在使用过程中遇到了什么问题或者什么契机让你觉得某个东西可以升级一下吗?你改进前后有什么变化,改进的时候做了哪些思考,我想听听你的思考过程。
6. 这种分布式事务一般都逃不开分布式一致性对吧,我们实现分布式一致性的时候会有很多算法,也有相关论文,有这方面比较深入的应用吗?(讲了KV项目中Raft的用法)
7. OK,我其实更想听到一些更底层的内容,比如你对论文的理解等等更基础的实践。(详细的讲了一下自己的理解)
8. OK,你可以自己用一句话描述一下Raft吗?或者你的理解中的Raft,以及你为什么使用Raft,一些基本的原理
9. (面试官补充了一下自己的看法)那么你参与的第二个开源项目anara-db/kiwi中你都做了什么?
10. 好的了解,然后我有看你的个人博客,里面也有关于Golang的一些内容,比如Channel之类的对吧?
11. 那我们看一个简单的场景:假设我有一个Web服务,本来一天服务100个人,能够正常工作,但是今天出现了某个事件,突然有2000万用户使用,显然我们的后端处理不过来对吧,不可避免的需要一个限流的功能,我现在目标是:我一分钟内只能处理100个请求,多余100个请求的都进入排队状态,但是它不能长时间驻留,我要它一分钟内没有处理完成的直接返回一个失败的状态。我想听听你的思考,你会怎么设计和实现,使用Golang的并发特性以及redis之类的中间件
12. 挺好的,Channel在项目中有用到吗?(KV存储中用到过,实现异步写)
13. 好的好的,我看你做的这些事情对于一个本科生来说还是比较有亮点的,然后我看你还参加了一些CCPC之类的比赛对吧,是有参与ACM的一些集训吗?
14. 好的,那在这之前高中有参与过NOI之类的吗?(没有,大学参与的算竞)
15. 问个开放一点的问题,你觉得你掌握的比较好的地方,以及你学习过但是长时间没有接触的可以很快拣起来的技术
16. 除了Redis这类的中间件,或者分布式文件系统的操作,还有关系型/非关系型数据库之类的相关经验吗?(讲了字节青训营项目中的使用)
17. 这个青训营是一个什么性质的东西?
18. OK,你觉得分布式这块自己掌握的还是相对扎实的对吧?
19. 那我们再考虑一个场景:我现在有500段250G的视频,显然我无法快速的处理分析他们,我现在要在所有的视频文件中快速找到某个人出现的画面,如何快速的找到我要的内容,从分布式,流式处理的角度考虑,没有标准答案,我想听听你的思考。
20. OK,那现在我们让这个情况稍微复杂一点,给你一些有字幕的视频,给你一个确保可用的服务,这个服务可以把视频按照字幕切分为很多帧/片段,提示一下,MapReduce切分任务后应该会出现时间戳信息丢失的情况。假设我现在给你的是一个包含犯罪嫌疑人犯罪动机的视频,我想知道,这个犯罪嫌疑人在哪个时间说了什么话可能会是犯罪前提,可能可以作为证据,怎么快速解析出所有文本性质的内容,以及快速定位到可能的某一句话。针对这个稍微复杂一点的场景,我想听听你更详细的设计方案和思考。
21. 现在应该你简历上的大部分内容我们都覆盖到了,还有什么你觉得有特色有意思的内容吗?你可以再表述一下。(讲了KV项目中DB层的设计和一些实现方案)
22. 你这里有参考Redis的实现吗?做这个项目的动机是什么?
23. 好的,你还有什么想问我的吗?一两个问题。
反问:
您觉得我还有哪些需要改进的地方吗
最后面试官问了一下现在在哪里,出勤时间之类的
结束
#面经#