某大厂面经

第一面。

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

。。。。写了增删改查,扩容不会写。

#社招##golang工程师##面经#
全部评论
这是社招么,几年啊
点赞 回复
分享
发布于 2019-12-31 13:25
前辈,In Search of an Understandable Consensus Algorithm这篇论文是怎么看的,有借助中文资料吗?
点赞 回复
分享
发布于 2019-12-31 13:32
滴滴
校招火热招聘中
官网直投
感谢分享面经!欢迎参加过社招的牛友发社招面经拿京东卡!~ -------------------- 活动:社招面经征集|参加过社招的牛友,来发面经吧,拿京东卡
点赞 回复
分享
发布于 2019-12-31 18:31
我猜是字节,楼主,这是社招还是校招啊
点赞 回复
分享
发布于 2019-12-31 19:37
go?
点赞 回复
分享
发布于 2020-01-01 04:34
这个还是有些难度的
点赞 回复
分享
发布于 2020-01-01 08:02

相关推荐

头像
timeline:3.28投递 4.2笔试(100,100,10) 4.3一面(1h)1. 自我介绍2. 看你接触过前后端、AI相关的,为什么选择做前端呢?3. 你是怎么学习前端的?4. 上面提到你看了新的React文档,发现自己以前踩过的坑,有哪些呢,具体说说?(这里讲了纯函数、生产模式下render两次、useState的一些社区讨论的不好的点,引申出内部是链表实现的,顶层调用)5. 写过一个根据yaml文档生成word接口文档的工具,问这个的实现方式,为什么要写(因为甲方看文档而我懒)6. 有没有通过这个yaml文档提高前端开发的效率呢?(讲了前端根据yaml文档生成api接口代码,可以直接调用)7. 那么后端怎么利用这个yaml文档呢?(我说swagger有个工具可以根据yaml生成后端的一些代码)8. 现在有什么已经成熟的方法打通前后端接口呢?(已经汗流浃背了想了半天说不知道了,面试官说使用DB的方案,还指出我上面的方案有时候容易出错,yaml文档不稳定)9. 介绍一下实习过程中写的东西(有五个部分,讲的口干舌燥)10. 实习中做了移动端适配,什么方案?tailwind怎么实现的?要写两套css吗?scale怎么实现的?为什么不用rem、vw之类的?(我说因为还要换算,他说不用每次都换算啊,我说那还得通过css预处理器写函数或者每次心里算一下是多少rem,他说好的)11. 知道样式污染吗,怎么避免样式污染?(我说内联样式能避免,他说不好;我说css-in-js,他说比那个好点;我说es module,他问es module怎么避免样式污染的)12. 用过css预处理器吗,includes和extend什么区别?你用css预处理器干什么(转换px到rem……)13. 讲讲monorepo使用changesets发包的流程,github ci/cd的过程,在这个过程中会出现安全问题吗?有两个小伙伴同时要发包,怎么办?(pr没合之前会合并成一个pr)14. 讲讲你比较有意思的一个项目?15. 好了问点八股吧,怎么实现两栏布局,尽可能多的说。16. 数组怎么去重,尽可能的说。(太多字了看图)
点赞 评论 收藏
转发
点赞 评论 收藏
转发
14 77 评论
分享
牛客网
牛客企业服务