自己经历的面试问题总结
面试问题一: 说下虚拟机和容器区别
共同点都是在硬件和操作系统之上,虚拟机是完整操作系统,docker是应用容器引擎,是对进程的虚拟,基于操作系统之上虚拟
从启动方面,容器是秒级,虚拟机是分钟级
从资源方面,docker是在操作系统级别上虚拟,与内核交互,损耗低
从硬件方面,docker运行的镜像比虚拟机多,对系统利用率高
从隔离方面,docker属于进程级别隔离,隔离较弱,虚拟机是系统级别隔离
从安全方面,docker安全性较弱,docker的root用户和宿主机一样,一旦普通用户提升到root权限,可能会造成灾难性操作
从管理方面,dcoker集中和管理工具不成熟
从高可用和恢复行,docker可以对业务的快速部署和扩容伸缩
从交付方面,虚拟机可以通过镜像实现环境交付一致性,但docker只记录容器构建过程
面试问题二: 说下K8S与Docker区别
Docker是开源应用容器引擎
K8s是开源的容器集群管理系统
面试问题四: prometheus如何收集监控数据
通过各种 exporter 采集主机数据, 然后prometheus会采用http协议周期性的去export暴露的地址拉取监控样本数据
面试问题五:操作系统启动流程
内核引导, bios自建,加载硬盘
运行 init, 确定运行级别
系统初始化
建立终端
进入系统登录界面
面试问题六:OSI七层模型
物理层
数据链路层
网络层
传输层
会话层
表示层
应用层
面试问题六: TCP与UDP协议不同
TCP 可靠面向有连接,常用于点对点,安全性高
UDP 高速面向无连接,常用于点对面,安全性低
面试问题七: 三次握手和四次断开过程
第一次握手: 建立连接时,客户端发送syn(syn=j)包到服务器,客户端并进入SYS_SENT状态,等待服务器确认;
第二次握手: 服务器收到syn包,确认客户的syn(ack=j+1),同时自己也发送一个syn(syn=k)包,既SYN+ACK包,服务器进入SYN_RECV状态
第三次握手: 客户端收到服务器SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器端进入ESTABLISHED状态,完成三次握手
面试问题八:为什么连接的时候是三次握手,关闭的时候却是四次握手?
关闭的时候,服务端回回复ACK报文,收到了断开请求,但不会立即关闭,需要服务端把所有的报文发送完,才会发送 FIN 报文
面试问题九:为什么不能用两次握手进行连接
两次握手让彼此知道对方是谁,第三次是确实准备好
面试问题十:如果已经建立了连接,但是客户端突然出现故障了怎么办?
服务端会有TCP计时器,默认2个小时,如果两个小时没有收到客户端发送的数据,服务器会发送默认10次的探测报文,如果没有反应,会认为客户端故障,关闭连接
Last updated