1.请说一下mysql的事务隔离级别。
由于我对这里比较熟悉,所以主要讲了一下“write skew“和“Phantom“,以及”repeatable read“和”snapshot isolation“,面试官显然对这部分了解不多,然后我又讲了一下mysql的mvcc和加锁策略,以及tidb的乐观事务模型。接着说了一下数据库如何实现ACID的,以及事务的调度算法。
参考《A Critique of ANSI SQL Isolation Levels》和《数据库设计与实现》。
2.简要说一下kafka。
主要回答了一下broker,分区,isr,储存方式,零拷贝。然后扯了一下zookeeper的设计以及zab协议。参考《Kafka权威指南》《从Paxos到Zookeeper分布式一致性原理与实践》和《ZooKeeper: Wait-free coordination for Internet-scale systems》
3.算法题,leetcode 中等难度通过率31%
在指导下做出来了。
4.说一下go协程设计
由于自己用c实现过协程,所以答的很随意。讲了一下函数调用约定,栈布局,上下文切换,x86寄存器,又讲了一下用gcc的”-finstrument-functions”。然后讲了一下go的调度思路。
参考go源码runtime.schedule
5.说一下epoll
讲了epoll跟select的区别,然后回答了et和lt的区别以及使用场景。又回答了一下go的设计思路。
参考man 7 epoll和go源码 runtime.netpoll
1.讲一下raft算法
讲了一下leader选举,日志复制,应用到上层状态机这三部分。
参考《In Search of an Understandable Consensus Algorithm》
2.讲一下cap定理
回答了一下概念。然后结合 mysql(同步复制,异步复制),kafka(isr),etcd(raft),zookeeper(zab)讲了一下各自是什么系统。
参考《ddia》
3.算法题 链表排序
先用插入排序做出来了,
让用快排做,不会做。
然后问时间复杂度,这个回答错了,
接着又让证明,结果又证明出来了个logN…
4.又问了一道算法题
很水的题目,忘记了。
5.讲一下fork原理。
背了几个步骤,回答了一下。
参考《深入理解linux内核》
6.如何设计一个朋友圈。
没啥思路,在指导下写出来了。
1.zab,raft,paxos协议的区别。
回答了一下raft,然后有点蒙也不知道回答什么。
2.讲一下canal
说了一下binlog的格式。
3.讲一下协程设计
同一面
4。一道算法题
跟数列有关的算法题,可能是想考察dp的,我直接推出了通项公式,代码也没写
5.go的hashmap如何实现的
讲了一下均摊扩容,然后问了一些很细节的问题,估计是看的某个issue。
6.实现一个hashmap
。。。。写了增删改查,扩容不会写。
以上就是本次分享内容,更多大厂GO开发工程师面试经验持续关注六星社区
想要高效学习,指路微信公众号——【python编程学习圈】每日分享学习干货,关注即可免费领取整套Python零基础到入门资料及学习教程,走过路过,千万不要错过!!快行动起来!!
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!