网易一面 231026
0、介绍下你自己
1、具体负责的工作内容
系统的建设与维护工作。环境搭建与维护、巡检、容量规划、CICD流水线管理、可观测指标建立、监控告警处理,用户的请求事件问题处
2、介绍一下http协议
http协议(hyper text transfer protocol),超文本传输协议。是建立在传输层协议TCP之上的应用层传输协议,简单来说就是客户端和服务端建立TCP连接,之后发送HTTP请求响应进行数据传输的一种协议规则。
超文本是什么呢?文本是一些字符串数字等文字,超文本可以是图像、音频和视频等二进制文件。http协议是一种不可靠的协议,它依托与tcp实现可靠传输。为什么说它不可靠呢,是因为它没有超时传输、文本标记、确认等机制。
3、http的无状态是什么?
http是一种无状态的协议,HTTP协议本身不会对发送过的请求和响应的通信状态进行持久化处理。
这样做的目的是为了保持HTTP协议的简单性,从而能够快速处理大量事务,提高效率。
但当用户跳转页面想要保持登录状态时,就需要另一种技术cookie和session来实现。
4、http的无连接是什么?
http的无连接是指每个连接仅处理一个请求就断开连接。
这样做可以节省传输时间,提高并发性能。
但传输效率不高,同一个用户多次请求需要建立多个TCP连接。因此1.1版本有了keep-aive特性实现长连接,即在一次TCP连接中进行多次请求。
5、几个版本的不同
http0.9:已过时,纯文本,只能发送html格式字符串;只支持GET;无状态;
http1.0:超文本;增加POST、HEAD等请求方法;增加头信息;
http1.1:默认持久连接(串行传输);请求管道化;增加缓存处理;请求头新增Host字段,用来指定服务器的域名;支持断点续传分块传输等;
http2.0:二进制分帧;多路复用;头信息压缩;服务器推送;
http3.0:使用UDP传输;
6、主流版本
http1和http2
7、http请求和响应
请求格式:请求状态行(方法+URI+协议版本)+请求首部字段+请求实体
响应格式:响应状态行(协议版本+状态码+状态码描述)+响应首部字段+响应实体
8、响应状态码
1xx:指示信息 - 表示请求已接收,继续处理。100:Continue;
2xx:成功 - 请求已被成功接收、理解。200:OK;
3xx:重定向 - 要完成请求必须进行更进一步的操作。301:Moved Permanently;302:Moved Temporarily;304:Not Modified;
4xx:客户端错误 - 请求有语法错误或请求无法实现。400:Bad request;401:Unauthorized请求未授权;403:Forbidden拒绝;404:Not Found;
5xx:服务端错误 - 服务器未能实现合法的请求。500:Internal Server Error;502:Bad gateway;503:Server Unavailable;504:Gateway Time-out
9、HTTPS(Secure)
通过SSL或TLS的组合使用,加密HTTP的通信内容。使用公开密钥加解密的方式协商出共享密钥,之后的通信使用共享密钥加密传输。
10、TCP三次握手和四次挥手
SYN、SYN+ACK、ACK
FIN、ACK、FIN+ACK、ACK
11、TCP的半连接状态是什么时候
服务端收到客户端发起SYN建立连接的请求后,进入TCP的半连接状态。
12、如何查看服务器上的半连接队列并修改长度
修改内核参数,半连接和全连接队列的长度一起改
13、如何保证tcp的可靠性
- 面向连接,通过三次握手建立连接,四次挥手销毁连接;
- 有状态,记录数据的传输和接收序号,在窗口内按序收发;
- 可控制,报文校验、ACK应答、超时重传、流量控制(滑动窗口)、拥塞控制(慢启动、拥塞避免、快重传、快恢复)等;
14、TCP的bbr是什么?
是一种拥塞算法。以往大部分拥塞算法是基于丢包来作为降低传输速率的信号。而BBR则基于模型主动探测。
通过检测带宽和RTT两个指标进行拥塞控制。
- 不考虑丢包,因为丢包并不一定是网络出现拥塞的标志了。
- BBR依赖实时监测出来的带宽和RTT来决定拥塞窗口的大小:带宽*RTT(往返时间Round Trip Time)
15、RC和deployment的区别
确保容器应用的副本数始终保持在用户定义的副本数。
RC:基于Pod模板和replicas副本个数来管理pod。pod的标签选择器仅支持等值。
RS:类似RC,但支持集合的形式的标签选择器。
DP:通过控制RC来控制Pod,同时增加了滚动升级、回滚、暂停继续、扩缩容等操作。
16、Docker的端口暴露底层
iptables
17、iptables四表五链
表:
- raw,追踪; – output、prerouting --/
- mangle,修改数据包的头部信息; – all --五边形
- nat,网络地址转换(IP、端口); – prerouting、postrouting、output – 四边形
- filter,过滤; – input、output、filter – 倒三角
链:
- prerouting,对数据包做路由选择前应用此链上的规则
- postrouting,对数据包进行路由选择后应用此链上的规则
- input,数据包中的目标地址是本地地址
- output,从本机发出去的数据包
- forward,转发流经本机的数据包
18、端口暴露经过了哪些表和链?
表:prerouting --> input --> output --> postrouting
https://blog.csdn.net/WuLex/article/details/130193920
16、python class 静态方法
网易二面 231030
中国电信天翼云一面 20231101
1、介绍下自己和主要的工作
2、介绍下负责系统的架构
3、网站的安全措施
WAF:web application firewall,网站应用防火墙。对网站或者app的业务流量进行恶意特征识别及防护,在对流量进行清洗和过滤后,将正常、安全的流量返回给服务器,避免网站服务器被恶意入侵导致性能异常等问题,从而保障网站的业务安全和数据安全。
通过修改网站域名解析CNAME记录到WAF提供的域名,并在WAF中配置网站域名的相关配置(证书)进行回流。
防火墙:是一种用于保护网络环境免受未经授权访问和攻击的安全设备。位于网络边界,控制流入和流出网络的数据流量。防火墙基于事先定义的安全策略,对网络流量进行检查和过滤,以阻止潜在的攻击流量进入网络内部。
区别:
- 位置:WAF位于应用程序与外部网络之间,防火墙位于网络边界。
- 工作方式:WAF通过分析HTTP请求和响应以及应用层协议,检测和阻止针对WEB应用程序的攻击。防火墙主要通过检查网络流量中的源和目标ip地址端口等信息,来判断是否允许网络流量通过。
- 保护范围:WAF专注于保护web应用,防火墙则可以保护整个网络环境中的所有设备和系统。
4、awk、kubectl、uniq、sort基础命令的使用
awk [参数] [处理内容] [操作对象]
- BEGIN{}:最开始执行
- //:正则, ~正则匹配(包含); !~:正则匹配(不包含)
- {}:循环体
- END{}:最后执行
流程控制只存在循环之中。 ‘{ if(){} else if(){} else(){} }’
https://www.cnblogs.com/zhengyan6/p/16290156.html
sort,排序,-n:按数值升序排列;-r:相反的顺序;-t:排序时指定分隔符;-k:与-t合用,指定要排序的列数;
uniq,去重,-c:显示次数
wc,统计次数,-l:行数;-w:字数;-c:字节数;
5、ansible常用模块、ansible-playbook使用
ansible,基于ssh和远程主机通讯。python编写的自动化运维工具。
任务模式:ad-hoc,点对点模式,使用单个模块,支持批量执行单个命令;playbook,剧本模式,通过多个task集合完成一类功能;
常用模块:ping、shell、copy、file、fetch、cron、yum、service、user、group;
playbook由YAML语言编写。核心元素:Hosts、Tasks、Variables、Templates、Handlers;
6、主机网络出现问题后的排查思路
- 根据网络中主机通讯情况,判断出问题的主机和区段。即是a主机,以及a-c之间的通讯;
- 定位到异常主机后,登录主机查看:网卡是否工作、ip是否正确配置启用、网关路由策略配置、DNS配置、tracepath或traceroute探测网络中的链路与延迟、telnet检查端口连通性、netstat查看本机是否开放服务连接、iptables查看防火墙规则配置
7、如何使用mysql的binlog进行数据恢复
flush logs;生成新的binlog日志。为了使恢复操作在新的binlog中记录,不影响之前的。
mysqlbinlog --start-positon=xx --stop-position=xx /var/lib/mysql/mysql-bin.000006 | mysql -uroot -pxx; 恢复数据
https://www.cnblogs.com/YCcc/p/10825870.html
8、mysql的主从切换怎么操作
- 主库正常,主从切换;确认主从数据状态、从库停掉复制进程并清空主从信息、从库关闭只读开启读写,转为新主库、主库设置执行新主库的复制链路,转为新备库,完成主从切换、应用流量切换至新主库。
- 主库宕机,从库升级为主库;差异数据处理。binlog
9、MySQL自动主从切换
MHA,所有节点上安装mha,一主多从,主节点宕机后,挑选最新数据的slave升级为主,其他节点重新指向新的主。
keepalived,主从,主节点宕机后,vip漂移至slave节点,slave节点升级为新主库提供服务。
问题:如何判断主库宕机?可用性和数据一致性哪个更重要?
10、where和having的区别
- where用于条件筛选,having用于分组后筛选;
- where后不能跟聚合函数,having一般配合group by或者聚合函数(min,max,avg,count,sum)使用;
- where在group by前,having在group by后;
9、mysql如何查看主从实例的延迟
show slave status;
Second_Behind_Master:0 --> 无延迟、 Null --> 主从同步已停止、大于0 --> 比主库慢
10、redis中如何查看某个key是否存在
exists key1;1存在,0不存在;
keys后可跟通配符,*所有,?单个字符,[]某个字符,keys a*
增&改:set key value; set key expire value;mset key1 value1 key2 value2 key3 value3;存在则改,不存在则加;
删:del key;del key1 key2;
查:get key;mget key1 key2;不存在返回空行;type key;查看类型
11、redis中如何查看目前一共有多少key
dbsize; (integer) 69421
info keyspace; db0:keys=69421,expires=10845,avg_ttl=570070743
12、redis的架构实现,主从+高可用
单机、主从(手动切换)、哨兵(自动切换主从)、集群(分片、扩展性)
13、rabbitmq的管道、队列如何创建,操作命令
14、rabbitmq的架构实现
趣丸科技一面 231106
1、介绍下自己
2、为什么离职,还选择的是广州(本人在深圳)
男朋友在广州
3、docker和虚拟机的区别
- docker容器与宿主机共享内核,每个虚拟机有自己单独的内核
- docker容器镜像小到M-1G,虚拟机普遍10G左右
4、docker镜像对运维工作的便利之处
- 分层结构,提供了便利的缓存共享,使得磁盘占用较小
5、K8S的组件介绍
- master:
- kube-apiserver:集群中唯一一个可以与etcd进行通信的组件,集群操作的统一入口
- kube- schedule:调度器,负责将未绑定node的pod依据调度策略绑定至node节点
- kube-controller-manager:调谐器,其中运行着各种各样的控制器,来保证pod运行状态与用户期望状态一致
- node
- kubelet:与master节点的apiserver通信,上报节点信息,控制node节点上容器的创建与销毁
- kube-proxy:将service转化为iptables或ipvs规则
- etcd
- 集群的存储服务,保存了集群中所有的数据
6、使用kubectl创建一个pod的过程
- apiserver接收到指令后,将pod特征信息存储至etcd
- schedule监听到有pod的nodename字段为空,于是依据pod特征,在集群中筛选打分节点,选出最佳节点保存至pod的nodename
- 对应node节点上的kubelet监听到有新pod需要创建,于是调用cri、cni、csi来创建目标容器,并将相关信息通过apiserver写入etcd
7、讲一讲健康检查的不同方式
- startProbe:启动探针,失败后
- Livenessprobe:存活性探针,失败后将重启容器
- ReadinessProbe:就绪性探针,失败后将从service的endpoint中移除对应节点
8、headless的原理
- 无头服务,没有clusterip
- 通过服务名,直接获得多个后端地址
9、讲一讲你遇到印象最深刻的问题
10、select、poll和epoll的区别,nginx使用的是哪一个
IO多路复用,就是一个进程可以监视多个文件描述符(socket),一旦描述符就绪(读或写),能够通知程序进行相应的读或写操作。但select、poll和epoll本质上都是同步IO,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说整个读写过程时阻塞的,而异步IO则无需自己负责进行读写,异步IO的实现会负责把数据从内核空间拷贝至用户空间。
IO多路复用的最大好处就是不用创建多个线程或线程,系统开销小。
select和poll使用线性轮询机制,连接数有限制,1024,修改连接数大小,需要修改FD_SETSIZE宏并重新编译。
epoll采用回调callback的机制,连接数无限制。
nginx使用的epoll
select和epoll,住校时,你的朋友来找你:
select版宿管阿姨,会带着你朋友挨个宿舍询问,是不是你的朋友呀?
epoll版宿管阿姨,会记着每个人的房间号,当你朋友来时,报你的名字,阿姨告诉房间号即可。
大多数文件系统的默认IO都是缓存IO。即如果要操作数据,需要将数据从磁盘拷贝至内核空间,再由内核空间拷贝至用户空间的应用程序地址空间。为什么不直接从磁盘拷贝至用户空间呢,因为应用程序不能直接操作底层硬件。
11、软中断和硬中断的区别
中断是一种电信号,当设备有某件事情发生时,就会产生中断,通过总线将电信号发送给中断控制器。如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚,处理器立即停止正在做的事情,跑到中断处理程序的入口点,进行中断处理。
- 软中断,执行中继指令产生的,由程序安排好的,不是随机的。软中断不可屏蔽。
- 硬中断:与系统相连的外设(CPU、网卡、硬盘等)自动产生的。具有随机性和突发性。主要用来通知操作系统系统外设状态的变化。比如当网卡收到一个数据包时就会发出一个中断。硬中断可以屏蔽。
12、TCP三次握手四次挥手
三次握手:SYN、ACK+SYN、ACK
四次挥手:FIN、ACK、FIN+ACK、ACK
13、time_wait发生在哪个阶段,主机上有大量time_wait连接应该怎么处理?
四次挥手中主动断开连接的一方,最后一次请求发出去的时候。等待2MSL后关闭连接。
每一个time_wait连接都会占用主机上一个端口号,主机总共能有65535个端口号。(这是因为TCP头部使用16bit存储端口号)
缩短time_wait时间长度为1MSL;服务器端允许time_wait状态的socket被重用。
(我脑洞大开,横向扩容节点:)
14、进程、线程和协程的区别
15、使用一次for循环,在一群数字中找到最大和第二大的值
16、如何理解sre
使用软件工程的方式来解决问题
17、大模型、服务网格
大模型是一种AI机器学习领域的产物,其次它可以用来提高运维的工作效率;
服务网格可以用来监听pod的出站入站流量,让流量追踪更加便利直观,其次可以用作无中心化的服务注册与发现;
18、如何理解运维工作带给公司的价值
生产环境的守护神,应用程序稳定高效运行的负责人;
19、职业生涯的规划
SRE
20、还有什么想问的吗