百度Go后台开发 - 一面 - base深圳 面经

1. 自我介绍

2. 问 ACM 情况,什么奖,还熟悉吗,熟悉的话打开vjudge来一道(婉拒了哈)

3. 之前有实习过吗,如果你有机会转正会考虑百度转正吗

4. 我们在深圳,你能实习多久

5. 好的,我们现在根据简历去问一下,我看你做过的东西还挺多的,一个开源的分布式事务框架,一个开源的数据库项目,还有一个分布式kv项目对吧,这三个你觉得哪个有意思,想讲哪一个?(选了自己的分布式kv项目)

6. 好的,你先跟我讲一下你这里要解决什么样的问题,主要的难点痛点是什么?

7. 打断一下,你这里为什么要使用布隆过滤器?

8. 好的,我看你这里有用到raft是吧,那我问一下你存储的基本单元是什么?

9. 好的,你可以类比一下redis想象下面的整个过程:因为你在做kv存储对吧,比如我有一份数据,问我怎么保证这个数据一定写成功,不会丢失,不会损坏,你怎么解决这个问题的?(问了一下面试官,自己理解的是否对,大概是问在一个集群环境中进行写入,怎么保证数据会完整的同步到其他节点上。回答的时候对比了redis的集群Master, Slave这些,还有哨兵机制,然后讲哨兵的时候说类似raft投票那样,在这里被打断了一下)

10. 你解释一下这个相似的过程,讲一下raft。(讲了投票,Leader选举,数据同步)

11. 打断一下,假如我现在集群分散在青岛和广州,Leader在青岛,现在青岛和广州的网络断开了,Leader宕掉了,然后广州机房有一半以上的节点,此时广州机房会产生大量的Candidate对吧,并且此时在广州机房选出了新的Leader,但在这个时候网络链接又好了,青岛和广州机房又连接起来了,这个时候会有什么问题吗?

12. 有看过Mit6.824吗?(当时做了个MapReduce然后就没继续跟了)

13. 好没事,MapReduce和布隆过滤器你更熟悉哪一个?(布隆过滤器)

14. 讲一下布隆过滤器,原理是什么,你对他的理解是什么?

15. 好的,我们还是进行一些扩展:假设,疫情的时候,你是你们学校核酸这方面的负责人,现在我要做这么一件事,输入一个学生的学号,判断他有没有做过核酸,你会怎么去做?

16. 好,可以,项目这块我就聊的差不多了,然后我可以问一些基础的问题吗,计网,操作系统,数据库,数据结构熟悉哪个?(数据结构)

17. 说一下排序吧

18. 快排的时间复杂度是什么?分析一下。

19. 我还有一个事情比较感兴趣,我看你Seata-Go这边有个undo log的事情对吧?这个东西你是怎么解决的?介绍一下Seata-Go是个什么样的东西。

20. Seata支持的事务模型是什么知道吗?(说了四个模式,AT, XA, TCC, Saga)

21. 你了解的AT模式是什么?(解释了一下流程)

22. 好的,解释的很棒,那么XA模式能解释一下吗?(没有参与XA相关的工作)

23. 你没有参与的就不聊,除了AT还做了哪个?(Saga)

24. 好的,你讲讲Saga模式。(讲了流程,还有Seata-Go和Seata java的Saga实现的一些小区别)

25. 知识面做的不错,待会面试完把你的commit记录发我邮箱一下吧,我看看。

26. 开共享我们做个题吧,LRU,保证它的线程安全。

27. 把代码拉到最上面,讲一下,你Put这里有个问题,并发安全的问题,发现了吗?(面试官讲完就发现了,size应该用atomic,还有双向链表应该CAS或者加锁,太紧张忘了)

28. 你这个问题如果别人不review你代码的话很难发现的,继续讲吧。

29. 好的我看着差不多了,如果给你过了多久能来入职?能实习六个月对吧?

30. 好,今天面试就到这里,你还有什么要问我的吗?

反问:

1. 您觉得我有什么需要改进的吗?(基础)

2. 如果过了的话是做什么业务?(广告业务)

结束

---

20分钟后Hr约二面

#面经#
全部评论

相关推荐

点赞 评论 收藏
分享
评论
3
4
分享

创作者周榜

更多
牛客网
牛客企业服务