Bootstrap

23年面试总结

网易一面 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、还有什么想问的吗

;