Shopee虾⽪SRE⼯程师⼆⾯⾯经
2号收到的⼆⾯通知,4号笔试,虾⽪的安排还是挺舒服的。全程⼀个⼩时左右,基本上都是照着简历上的问,中间会穿插⼀些⽹络、操作系统等基础学科的相关知识。不知道为什么录⾳没录到我⾃⼰的,⼤概记录⼀下我回答的重点的内容和不会的知识点。
1. ⾃我介绍
2. 介绍项⽬,主要问⽤了哪些⾼可⽤技术,这些⾼可⽤技术都是什么原理
这个项⽬是个⽹站架构的搭建,前端通过两台主从Nginx做负载均衡,通过Keepalived实现⾼可⽤;后端通过NFS共享多台RS的站点⽬录,使得所有请求得到的响应都⼀致,数据库部分使⽤了⼀主两从同时使⽤MHA实现⾼可⽤⽅案
这⾥的⾼可⽤技术主要有两个:
Keepalived:这个软件通过VRRP(虚拟路由冗余协议),VRRP通过竞选机制确定主备,主的优先级⾼于备,⼯作时主会优先获得所有资源,备节点处于等待状态;在Keepalived服务对之间,只有作为主的服务器会⼀直发送VRRP⼴播包,告诉备它还活着,此时备不会抢占主,当主不可⽤时,即监听不到著发送的⼴播包时,就会启动相关服务接管资源
MHA:MHA是针对MySQL的⾼可⽤,MHA Manager通过在各个实例服务器上安装的MHA node,通过SSH协议实时监控各台实例的情况,当监控到主库不可⽤时,会从从库中选择⼀台晋升为主库同时将原主库踢出集中,其他从库重置主从状态监听新主库
3. Keepalived如何判断主服务器⼯作不正常了,需要转移vip;若服务都是正常的,中间的⽹络出了问题,这时候会出现什么情况(脑裂)
当备服务器在⼀段时间内收不到主服务器发来的⼴播包时,就会判定主服务器宕机,通过预先写好的竞选机制将⼀台备服务器晋升为主服务器,同时将业务⼊⼝的vip转移到这台主服务器上
若是服务本⾝是正常的,备服务器因⽹络原因⽽接收不到主服务器发来的⼴播包⽽⽣成了vip,此时会导致同个局域⽹内出现两个ip相同的主机,会⼲扰路由判断
4. 有没有什么办法能避免脑裂;Keepalived软件本⾝如何抑制脑裂
⼀开始说的都是⼀些补救措施、预防措施:保证物理链路的正常使⽤、不轻易修改防⽕墙策略、在failover时及时通知技术⼈员抢救等
⾯试官补充说是要想办法避免:在进⾏failover前使⽤脚本真正去访问服务本⾝⽽不是单通过⼴播包来判断主服务器的状态
5. Nginx负载均衡算法;在普通⽹站的场景下你更倾向于⽤哪种
RR
WRR
IP_HASH
⼀致性哈希
LC(忘记讲了)
6. 在⽹站架构负载较⼤的情况下,LB使⽤主备搭建,主服务器单点繁忙,备服务器空转,如何处理
这是刚好有在⼯作的同学跟我聊了他们的架构,学习到了⼀些,真是太幸运了
通过ECMP技术(等价路由),路由在选择的时候可以在同时使⽤多条等价链路,简单的说,就是在LB前在路由层再做⼀次负载均衡,使得每⼀台LB都能分配到流量,⽽不是在服务器正常运⾏时当⼀个备胎什么都不⼲
7. 后端MySQL的⾼可⽤有什么不⾜之处;还了解其他MySQL的⾼可⽤⽅案吗
MHA作为MySQL的⾼可⽤⽅案之⼀,它的⾼可⽤性并不完整,需要管理员参与:
本⾝没有⽀持vip,应⽤只能通过主库ip连接集
如果主库整体宕掉,SSH⽆法连接,很有可能丢失部分事务
没有故障提醒功能,管理员不能及时得到反馈
⼀次性的⾼可⽤,在进⾏⼀次failover后需要重新配置
Mycat作为分布式⽅案的中间件也可以做⾼可⽤,具体是在同⼀datahost内的主从节点在主库宕机后从库会⾃动晋升,当原主库恢复时⼜会⾃动重新作为从库加⼊集中
8. Mycat作为分库分表中间件有什么弊端;如何解决
跨表连接性能问题:全局表、ER表
9. 项⽬的⽤途,⾃⼰是否有对这些⽅案做过验证
项⽬都是在学习的时候搭建的,对⾼可⽤⽅案都进⾏了⼿动宕机测试,对并发量和访问量这些就没进⾏过压测了
10. 进程和线程;多线程并发执⾏的时候需要关注哪些点;Linux⾥有哪些类型的锁
进程是资源分配的最⼩单位
线程是CPU调度的最⼩单位
线程同步问题
11. Linux如何查看进程;如何出僵⼫进程并把它kill掉;pid在哪⼀列
⽤ps或top查看进程,⽤grep筛选出僵⼫进程,⽤awk出指定列
12. Linux⽂件权限有⼏类
读、写、执⾏
13. 查当前⽬录下创建时间⼤于7天,⽂件⼤⼩⼤于1G的⽂件
find . -ctime +7 -size +1G
14. 计组学过吗,字节序是什么,⼤端⼩端
计组学的极差,前⼀秒说学过后⼀秒什么都不会,丢⼈
15. OSI七层模型
16. OSPF;链路发⽣变化的时候OSPF是如何收敛的
17. VLAN 学过吗,VLAN 有什么作⽤
18. TCP 的三次握⼿和四次挥⼿
19. TIME_WAIT 出现原因、如何处理
TIME_WAIT这个状态码只会出现在断开连接的主动⽅上,⼀般出现过多的场景是⾼并发短链接,主要回答了将短链接改成长连接让客户端
作为连接断开的主动⽅
20. HTTP 协议状态码
后端工程师需要掌握哪些知识21. HTTPS 协议相⽐HTTP 多了哪些步骤
多了SSL握⼿
22. 数据库三范式
23. Redis 集架构如何实现
24. 讲⼀下⼏种主流的排序算法
回答了选择、插⼊、归并和快排
25. 这⼏种排序算法效率最⾼的是哪种,为什么快排在乱序的情况下效率最⾼
顺序情况下插⼊排序效率最⾼,时间复杂度为 乱序情况下快排和归并效率⽐较⾼,时间复杂度是 我⾃⼰认为是快排在做折半的时候会把两端都划分成相对”有序“的部分,⽽归并排序需要⼀直遍历到底,⾃底向上的排序,耗费更多的内存
26. 举个例⼦证明⾃⼰的抗压能⼒
27. 你对SRE 的理解
28. SRE ⽐较幸苦,可能需要值夜班,7×24h stand by 响应,为什么没有去选择研发岗位⽽选择SRE 岗位
29. ⼤学期间写过最长的项⽬⼤概有多少⾏,是⼀个什么样的项⽬,⾃⼰写的部分⼤概有多少⾏
反问环节
1. 你们在写SRE ⼀半的时间在开发,你们觉得SRE 和devops 之间有什么区别
运维开发会更接近于开发岗位,通常需要开发出⼀套完整的如CMDB系统来使⽤;SRE⼀般处理的都是业务上的,根据我们具体的需求来开发实现各种⽅案
2. 公司内部培训制度
总结
O (n )
O (nlogn )
⼀⾯能过其实我也是没想到的,总感觉表现的挺糟糕的也没有发挥出我擅长的知识,很感谢虾⽪对我的认可。这次⾯试中规中矩,基本上覆盖完了校内课程⽐较重要学科的⼏个点,主要考察各个⽅⾯的基础,我在回答的时候也会尽可能的把除了问题本⾝将相关的知识也联系起来⼀并回答,⼀是个⼈认为有些知识是相辅相成的,⼀起回答会更能表现⾃⼰的掌握程度;⼆是真的怕回答的不够多没有可能继续深挖到我不会的点那就不好了哈哈哈哈。计组和OS在课内学习的并不好,以前上课的时候总觉得这东西好像没啥⽤啊,现在是悔不当初啊!从事这⼀⾏还是要把这些基础学科都认认真真的学好

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。