牛客bigo面经不多的样子,贡献一篇,顺便许愿下一面。
bigo SRE工程师 2020.6.15
一面:55min,电话面。
1、说下对sre的了解
2、redis,如何保持缓存和数据库的一致性
- 更新数据库,然后删除缓存
3、事务,是指mysql的事务,还是指更新完数据库,然后删除缓存,这整个事务
- 回答数据库的事务
4、如果更新成功,删除失败了怎么办?数据库的事务要不要回滚?
- 回答要,要保持数据的一致性。
5、继续这个逻辑,如果缓存挂了,那么所有写入都将失败?所有数据库数据都将回滚,这时该怎么办?
- 回答,redis的高可用。主从+哨兵。回答了哨兵要启动3个结果,给自己挖了坑。
6、哨兵为什么需要3个?
7、处理redis高可用,还有什么机制能够保护数据库?
- 回答,熔断机制。
8、那个地方做熔断机制?
- 回答,类似服务网关的地方做熔断机制,请求先到达网关,判断是否触发熔断机制,再决定是否将请求转个后端服务。
9、如果有三个接口,重要程度A>B>C,这时C接口可能bug了或者被攻击了,会触发熔断机制。走服务降级,导致AB也无法提供服务了,这时该怎么办?
- 回答,给每个接口设置一个熔断值。too naive。
10、如果我要添加很多接口,或者删除接口,岂不是很麻烦?
11、就算redis主从+哨兵了,如果主节点挂了,主从进行切换,切换个1 2min是很正常的,这1 2min你的系统该怎么办呢?
12、为什么不先删除缓存,再更新数据库
- 容易形成脏数据。
13、AB两个client,A先更新数据库,正准备更新缓存,但是网络延迟了。这是B也更新完数据库了,并且更新好了缓存。这时A网络正常了,它要来更新缓存了,但是这时A的数据是旧的了。这种情况该如何解决?
- 加锁,会影响性能。
- 给数据加个类似版本号的东西,比如时间戳,本质是乐观锁。
14、从哪里获取时间戳?不同应用服务器的时间是不一样的?
- 从数据库服务器获取时间戳
15、linux有哪些目录,作用是什么?
- 答了几个而已。
16、怎么查看CPU的使用率
- top
17、CPU的使用率有多种,讲下
18、多核CPU,随便启动一个进程,系统会分配那个CPU给它?
19、tcp四次挥手,第三次丢了怎么办?两边的状态分别是什么?
- 超时重传呗
20、项目
反问:
1、哪方面是需要加强的
- 面试官:redis缓存那块,你应该是看过一些文章而已吧,可能没自己动手搭建过,balabala
- 我内心:是的呢,我简历写的是“了解redis常用的数据结构以及使用场景”,您问了一堆系统结构,我天
2、从事sre需要补充那些方面的知识。
二面:39min,牛客面
没录音,记不太清了
1、docker四种网络模式
2、docker底层原理
3、链表和二叉树的优缺点
4、七层网络模型,每层的作用
5、项目
全部评论
(3) 回帖