2号收到的二面通知,4号笔试,虾皮的安排还是挺舒服的。全程一个小时左右,基本上都是照着简历上的问,中间会穿插一些网络、操作系统等基础学科的相关知识。不知道为什么录音没录到我自己的,大概记录一下我回答的重点的内容和不会的知识点。
这个项目是个网站架构的搭建,前端通过两台主从Nginx做负载均衡,通过Keepalived实现高可用;后端通过NFS共享多台RS的站点目录,使得所有请求得到的响应都一致,数据库部分使用了一主两从同时使用MHA实现高可用方案
这里的高可用技术主要有两个:
Keepalived:这个软件通过VRRP(虚拟路由冗余协议),VRRP通过竞选机制确定主备,主的优先级高于备,工作时主会优先获得所有资源,备节点处于等待状态;在Keepalived服务对之间,只有作为主的服务器会一直发送VRRP广播包,告诉备它还活着,此时备不会抢占主,当主不可用时,即监听不到著发送的广播包时,就会启动相关服务接管资源MHA:MHA是针对MySQL的高可用,MHA Manager通过在各个实例服务器上安装的MHA node,通过SSH协议实时监控各台实例的情况,当监控到主库不可用时,会从从库中选择一台晋升为主库同时将原主库踢出集群中,其他从库重置主从状态监听新主库当备服务器在一段时间内收不到主服务器发来的广播包时,就会判定主服务器宕机,通过预先写好的竞选机制将一台备服务器晋升为主服务器,同时将业务入口的vip转移到这台主服务器上
若是服务本身是正常的,备服务器因网络原因而接收不到主服务器发来的广播包而生成了vip,此时会导致同个局域网内出现两个ip相同的主机,会干扰路由判断
一开始说的都是一些补救措施、预防措施:保证物理链路的正常使用、不轻易修改防火墙策略、在failover时及时通知技术人员抢救等
面试官补充说是要想办法避免:在进行failover前使用脚本真正去访问服务本身而不是单通过广播包来判断主服务器的状态
这是刚好有在工作的同学跟我聊了他们的架构,学习到了一些,真是太幸运了
通过ECMP技术(等价路由),路由在选择的时候可以在同时使用多条等价链路,简单的说,就是在LB前在路由层再做一次负载均衡,使得每一台LB都能分配到流量,而不是在服务器正常运行时当一个备胎什么都不干
MHA作为MySQL的高可用方案之一,它的高可用性并不完整,需要管理员参与:
本身没有支持vip,应用只能通过主库ip连接集群如果主库整体宕掉,SSH无法连接,很有可能丢失部分事务没有故障提醒功能,管理员不能及时得到反馈一次性的高可用,在进行一次failover后需要重新配置Mycat作为分布式方案的中间件也可以做高可用,具体是在同一datahost内的主从节点在主库宕机后从库会自动晋升,当原主库恢复时又会自动重新作为从库加入集群中
跨表连接性能问题:全局表、ER表
项目都是在学习的时候搭建的,对高可用方案都进行了手动宕机测试,对并发量和访问量这些就没进行过压测了
用ps或top查看进程,用grep筛选出僵尸进程,用awk找出指定列
读、写、执行
find . -ctime +7 -size +1G
计组学的极差,前一秒说学过后一秒什么都不会,丢人
理解字节序 大端字节序和小端字节序
VLAN原理详解
TIME_WAIT这个状态码只会出现在断开连接的主动方上,一般出现过多的场景是高并发短链接,主要回答了将短链接改成长连接让客户端作为连接断开的主动方
多了SSL握手
回答了选择、插入、归并和快排
顺序情况下插入排序效率最高,时间复杂度为 O ( n ) O(n) O(n)
乱序情况下快排和归并效率比较高,时间复杂度是 O ( n l o g n ) O(nlogn) O(nlogn)
我自己认为是快排在做折半的时候会把两端都划分成相对”有序“的部分,而归并排序需要一直遍历到底,自底向上的排序,耗费更多的内存
快排和归并排序的复杂度相同,为什么都用快排而不用归排?
运维开发会更接近于开发岗位,通常需要开发出一套完整的如CMDB系统来使用;SRE一般处理的都是业务上的,根据我们具体的需求来开发实现各种方案
一面能过其实我也是没想到的,总感觉表现的挺糟糕的也没有发挥出我擅长的知识,很感谢虾皮对我的认可。这次面试中规中矩,基本上覆盖完了校内课程比较重要学科的几个点,主要考察各个方面的基础,我在回答的时候也会尽可能的把除了问题本身将相关的知识也联系起来一并回答,一是个人认为有些知识是相辅相成的,一起回答会更能表现自己的掌握程度;二是真的怕回答的不够多没有可能继续深挖到我不会的点那就不好了哈哈哈哈。计组和OS在课内学习的并不好,以前上课的时候总觉得这东西好像没啥用啊,现在是悔不当初啊!从事这一行还是要把这些基础学科都认认真真的学好
