运维面试大全

文章目录

  • 第一阶段
    • 平常怎么处理故障,思路是什么样的
    • 公网和私网分类以及范围,本机地址,网络地址,广播地址
    • 交换机的工作原理
    • ICMP是什么干什么用的,它有哪些命令
    • TCP和UDP协议的区别
    • tcp有哪些控制位,分别是什么意思
    • 你是用过哪些Linux命令
    • Linux 系统安全优化与内核优化
      • 经常使用shell脚本做什么
      • 软连接与硬链接的区别
      • 怎么查看文件
    • IOS七层模型
    • 三次握手与四次挥手
    • lvm 逻辑卷创建过程
      • 磁盘配额
    • raid 磁盘阵列
    • 文本三剑客
    • 防火墙iptables与fireward
    • Linux系统资源查询命令
      • 日志的八大等级
    • Linux 引导过程
    • shell 函数的创建方法
    • 免交互的使用
    • 你是用过哪些shell脚本
    • Tcpdump抓包使用工具
    • CPU过高怎么解决
      • 如何杀死僵尸进程
    • 什么是中间件?什么是 JDK
      • 什么是CDN
  • 第二阶段
    • http
      • http 的版本
      • http 响应状态码
    • Nginx
      • Nginx 的常用模块有哪些?
      • Nginx 的 session 不同步怎么办
      • nginx的优化
      • Nginx如何实现动静分离
      • Nginx反向代理有哪些方式实现,有什么区别 ?如何配置
      • Nginx 负载均衡调度算法有哪些?
    • tomcat知识点
      • tomcat 三个端口号
      • tomcat 优化
    • LVS
      • LVS、Nginx、Haproxy 有什么区别?
      • 简述LVS三种模式 以及工作中使用哪种模式
    • keepalived
      • 脑裂的原因,如何解决
      • 简述 keepalived 如何通过健康检查来实现高可用?
    • mysql
      • sql 语句
      • 克隆表
      • 清空表数据
      • Mysql 六大约束
      • 遗忘 root 密码的解决方法
      • 索引的作用
      • 索引的创建
      • mysql 事务的 ACID 特性与四种隔离
      • 死锁的产生原因与解决方法
      • mysql 主从复制原理
    • 主从复制的部署过程
      • MHA 高可用
      • MHA 部署过程
      • MMM 高可用
      • mysql 数据库的优化
      • Mysql 数据库 cpu 飙升到 500% 怎么处理
    • Mysql 数据库备份
    • redis
      • redis 为什么读写速度那么快?
      • redis 常用的数据结构
      • redis 持久化
      • redis 哨兵
      • redis cluster 集群
      • redis 优化
      • 缓存和数据库 双写一致性问题
      • 缓存三大击穿问题
    • ELK
      • ELK 的工作原理
    • ELK 的插件有哪些
    • zabbix
      • Zabbix 组件 及 工作原理
      • zabbix 如何自定监控项
      • zabbix 你都监控哪些参数
    • kafka
      • Zookeeper 是什么?
      • Zookeeper 选举机制
      • 消息队列的作用
      • 消息队列的模式
      • kafka 架构
      • kafka ACK应答机制保证数据的可靠性
    • Ceph
      • 数据存储类型
      • Ceph 架构 (从下往上看)
      • Ceph 组件
      • Ceph 的存储过程
  • 第三阶段
    • Docker
      • docker 是什么?
      • docker 容器与 虚拟机的区别?
      • docker 三大核心概念
      • 6大namespace 命名空间是什么?
      • docker的镜像和容器管理命令?
      • docker run 的运行过程
      • cgroup 资源限制
      • docker 网络模式
      • dockerfile 有哪些指令
      • dockerfile 如何缩小构建镜像的体积
      • docker-compose 是什么?
      • docker-compose.yml 配置讲解
      • Harbor 私有仓库管理
      • consul 服务自动发现
      • https 的工作流程
      • 数据库是否放在容器中运行?为什么?
      • docker容器的重启策略?
    • Ansible
      • Ansible 概念
      • 模块
    • K8S
      • k8s 有哪些组件
      • k8s 组件的作用
      • pod 的创建过程
      • K8s 资源对象
    • K8S 二进制搭建
    • K8S kubeadm搭建
    • kubeadm 部署的K8S集群更新证书
    • K8S 3种网络
    • K8S 3种接口
    • flannel 3种模式
    • flannel UDP模式工作原理
    • flannel VXLAN模式工作原理
    • Calico IPIP模式工作原理
    • Calico BGP模式工作原理(本质就是通过路由表来维护每个 Pod 的通信)
    • flannel 和 calico 区别?
    • 陈述式资源管理
    • service 的 4 种类型:
    • service 的端口:
    • 如何获取资源配置清单文件模板(yaml配置文件)
    • 一个pod能包含几个容器?
    • pause容器的作用?
    • Pod 的 3 种类型:
    • Pod 的 3 种容器:
    • Pod 的 3 种镜像拉取策略: spec.containers.imagePullPolicy
    • Pod 的 3 种容器重启策略: spec.restartPolicy
    • Pod 容器的资源限制
    • Pod 容器的 3 种探针(健康检查)
    • 探针的 3 种探测方式
    • 探针参数:
    • Pod 应用容器生命周期的启动动作和退出动作
    • K8S是通过 List-Watch 机制实现每个组件的协作
    • scheduler 的调度策略
    • Pod 调度到指定的 Node节点
    • 标签的管理操作
    • 亲和性
    • 如何判断是否在同一个拓扑域?
    • 亲和性的策略
    • 污点 taint
    • 容忍 tolerations
    • 不可调度
    • 不可调度 + 驱逐
    • Pod 的启动过程:
    • Pod 生命周期的 5 种状态
    • K8S 中的排障手段
    • K8S 的 存储卷 volumes
    • PV PVC
    • 创建 PV 的方式(PV的类型):
    • PV 的 4 种状态:
    • 创建使用 静态PV
    • 创建使用 动态PV
    • pod的 5 种控制器:
    • 有状态服务和无状态服务的区别
    • configmap
    • Secret资源的 4 种类型:
    • 创建 Secret资源
    • 使用 Secret资源
    • 陈述式管理资源的方式 修改或添加 资源对象的配置
    • K8S集群外的客户端应用访问K8S集群内部服务的方案
    • ingress 的组成:
    • ingress 的使用:
    • ingress 的配置
    • 基于 https 代理转发
    • 基于 basic-auth 访问认证
    • 基于 rewrite 重写访问路径
    • pod 的自动伸缩
    • K8S 的安全机制
    • 如何授权让一个普通用户能够使用 kubectl 在 K8S 中具有操作资源权限?
    • Helm 是K8S的软件包(Chart包)管理器
    • Helm 的三大概念:
    • Helm 仓库管理命令:
    • chart包的关键组成:
  • Prometheus
    • 常用的监控系统有哪些?
    • Zabbix 和 Prometheus 的区别?如何选择?
    • Prometheus 主要的生态组件:
    • Prometheus 工作过程
    • Prometheus 数据采集配置

第一阶段

平常怎么处理故障,思路是什么样的

看故障现象根据经验就知道原因;
第一次碰到,先定位问题,故障不一定是我的问题,开发、测试、硬件、网络,也可能我的问题;如果问题在我,根据错误提示信息、系统日志、错误日志去分析问题。
系统问题可以用top看cpu、df看磁盘、uptime看负载、ps看进程、sar看流量。
应用程序就是看日志提示解决问题,如果是开发问题,可以通过邮件等方式,描述故障现象和定位过程发送给开发对接人和我的领导。
如果是网络问题,路由、交换机可以找网络工程师,可以抓包tcpdump;
如果是硬件问题,可以找厂商。

公网和私网分类以及范围,本机地址,网络地址,广播地址

公网
A:1.0.0.1~126.255.255.254/18
B:128.0.0.1~191.255.255.254/16
C:192.0.0.1~223.255.255.254/24
D:224.0.0.1~239.255.255.254
E:240.0.0.1~255.255.255.254
私网
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255
其他
169.254.0.0~169.254.255.255 DHCP失效时分配的网址
127开头的都是本机 127.255.255.255除外 它是广播地址

224.0.0.18 VRRP协议交换机侦听此地址

交换机的工作原理

1)交换机开机时MAC地址表没有任何记录
2)源主机通过交换机发送数据帧给目标主机,交换机学习数据帧中的源MAC和对应接口标识并记录到MAC地址表中
3)如果交换机的MAC地址没有目的MAC地址所对应的接口记录,则会进行广播泛洪
4)只有拥有对应的MAC地址的主机才会进行回应响应
5)交换机会从目的主机回复的消息中学习到MAC地址和对应的接口标识并记录到MAC地址表中,之后两台主机可以通过交换机的MAC地址表进行单播通信
交换机通过MAC地址表的记录实现数据帧的转发,MAC地址表默认老化时间300S

ICMP是什么干什么用的,它有哪些命令

是一个错误侦测与回馈机制,发送错误和控制消息来探测节点的网络连通性
ping
pathping 例子:pathping www.baidu.com 跟踪数据包路径,计算机丢包情况
traceroute

TCP和UDP协议的区别

         TCP                                UDP

可靠性 可靠 不可靠
连接性 面向连接 无连接
报文 面向字节流 面向报文(保留报文的边界)
效率 传输效率低 传输效率高
双工性 全双工 一对一、一对多、多对一、多对多
流量控制 有(滑动窗口) 无
拥塞控制 有(慢开始、拥塞避免、快重传、快恢复) 无

tcp有哪些控制位,分别是什么意思

URG 紧急位
ACK 确认位
PSH 急迫位
RST 重置位
SYN 同步(连接)位
FIN 断开位

你是用过哪些Linux命令

性能监控方面: free 查看内存 top 动态监控cpu 负载 等 df 查看磁盘使用 ps 查看进程 iostat 查看io

用户方面:useradd 创建用户 chmod 修改权限 chown 设置归属

查询方面: sed grep awk cat more less which whereis

Linux 系统安全优化与内核优化

安全优化: 设置防火墙规则 限制root 用户远程登录 设置历史命令条目及登录超时 chattr锁定文件 时间同步 配置yum更新源

内核系统优化:

sysctl.conf 文件中
net.ipv4.ip_forward  设置路由转发
net.ipv4.tcp tw recycle = 1 开启time-wait 快速回收
net.ipv4.ip_local_port_range = 1024 65000  设置外向连接端口范围


/etc/security/limits.conf
nofile 设置文件最大打开数
nproc  设置最大进程数
rss 设置最大常驻集大小
menlock  锁定内存地址空间

经常使用shell脚本做什么

使用shell脚本进行重复性的操作

一键部署公司的业务服务

日志的监控和分割 备份 配置crontab -e 进行计划性任务

巡检

软连接与硬链接的区别

  1. 硬链接与源文件共享inode ,也就是说,他们都指向同一份数据,占用的磁盘空间也相同,删除一共硬链接并不影响源文件内容和其他硬链接,相当于给文件起了一共别名

  2. 软连接与源文件不仅inode不同,源文件删除了。软连接也就失效了,类似于一个快捷方式、

怎么查看文件

find 查找文件

locate 查找系统中已经建立的文件索引库

whereis 可以查找指定命令的二进制文件、源代码文件

which 查找命令所在的目录

IOS七层模型

  1. 物理层
  2. 数据链路层
  3. 网络层
  4. 传输层
  5. 会话层
  6. 表示层
  7. 应用层

三次握手与四次挥手

三次握手 : pc1 向 pc2 发送一个 SYN 报文,pc 回复一个 SYN + ACK 报文 pc1 再次发送一个ACK报文

四次挥手: pc1发送一个FIN / ACK 报文给pc2 (此时pc1客户端进入等待断开连接状态)
pc2接收到pc1发送的请求断开报文之后回复一个ACK报文进行确认
pc2紧接着发送一个FIN / ACK 报文给pc1(此时pc2客户端进入等待断开连接状态)
pc1收到后发送ACK报文进行确认 (此时pc1进入时间等待状态 60秒后默认结束)

lvm 逻辑卷创建过程

  1. 创建一个物理卷: pvcreate 设备名(可创建多个)
  2. 创建卷组 : vgcreate 卷组名 物理卷名
  3. 创建逻辑卷: lvcreate -L 容量大小 -n 逻辑卷名 卷组名
  4. 扩展卷组:先扩展物理卷 在使用 vgextend 卷组名 设备
  5. 扩展逻辑卷 : 随后使用 lvextend -L + 容量大小 /dev/卷组名/逻辑卷名
  6. 格式化 挂载使用·

磁盘配额

  1. 首先检查是否安装 xfsprogs 和 xfs_quota
  2. 以支持配额的方式进行挂载文件系统 mount -o usrquota,grpquota /dev/vgname1/lvname1 /opt 或者永久挂载/ dev / vgname1 / lvname1 / opt xfs defaults,usrquota, grpquota 0
  3. 对用户和组账号进行配额限制 xfs_quota -x -c 'limit -u bsoft-80M bhard-100M isoft=40 ihard=50 lisi’ /opt/
  4. 验证用户在限制目录下的使用

raid 磁盘阵列

raid 0 条带化存储 传输速率达到单个硬盘的N 倍 但它没有数据冗余

raid 1 镜像存储 实现数据冗余 但利用率为N/2

raid 5 N>=3 块盘组成 利用率 (N-1)/N (其中有一块是用来校验的)

raid 6 N>=4 块盘组成 (N-2)/ N (有两块盘用来校验)

raid 1 0 先做镜像 再做条带 利用率 N/2

文本三剑客

grep :

-i 不区分大小写

-v 取反

-n 显示行号

-r 递归过滤文件夹中的所有内容

-w 只显示全部字符的列

-l 列出文件内容符合指定的样式文件名称

sed :

-i 替换:s 对指定的内容进行替换

​ d 删除选定的行

​ a 在当前行的下面增加一行内容

​ i 在当前行的上面增加一行内容

​ c 替换选定行为指定内容

​ y 字符转换 转换前后的字符必须长度相同

awk:

FS 列分隔符

NF 当前处理行的字段个数

NR 当前处理行的序号

RS 行分隔符

防火墙iptables与fireward

四表:raw 表 mangle表 nat 表 filter 表

五链:INPUT 链 OUTPUT 链 FORWARD 链 PREROUTING 链 POSTROUTING 链

firewalld防火墙9大区域:trusted(信任区域) public (公共区域) home (家庭区域) internal (内部区域) work (工作区域) dmz(隔离区域) block (限制区域) drop (丢弃区域)

Linux系统资源查询命令

free 查看交换空间内存状态

cat /etc/redat-release ; cat /etc/*release ; cat /proc/version 查看当前系统版本

uname -r 查看内核版本

cat /proc/cpuinfo、sar、 lscpu 查看cpu 信息

vmstat 查看系统内存 、交换空间、io、cpu 信息

iostat 查看磁盘io性能

top 动态的查看当前进程信息 cpu负载信息 内存信息

uptime 、 w 显示系统运行时间,登入用户和cpu负载情况

cat /proc/meninfo 查看内存

ps -T top -H 查看线程

日志的八大等级

emerg 紧急

alert 警告

crit 严重

err 错误

warning 提醒

notice 注意

info 信息

debug 调式

Linux 引导过程

  1. 开机自检
  2. MBR引导
  3. Grup 菜单
  4. 加载linux内核
  5. init进程初始化

shell 函数的创建方法

函数名 () {

}

function 函数名 {

}

免交互的使用

EOF 进行免交互

EXPECT 进行免交互:

  1. 申明脚本解释器

                                     2. swap 开启一个会话
                                        3.  expect 进行匹配 字符    
                                        4. send 代表输入字符
                                        5.  结束符  expect eof
    

你是用过哪些shell脚本

Tcpdump抓包使用工具

-i : 指定 tcpdump 监听的网络接口

-s : 指定要监听的数据包的长度

-c : 指定要监听的数据包数量 ,达到数量后自动停止抓包

-w : 指定将监听到的数据包写入文件中保存

-n : 将每个监听到的数据包中的域名转换成 IP 地址后显示

CPU过高怎么解决

用 top 命令查看哪个进程 cpu 使用过高

再用 top -H -p 显示特定进程中的线程,锁定cpu使用过高的线程

看这个进程是否是业务进程,不是直接kill 掉即可

如何杀死僵尸进程

先用top 命令查看是否具有僵尸进程

再红色表示的地方,如果 zombie 大于0 表示服务器当前存在僵尸进程

ps -A -o stat,ppid,pid,cmd | grep -e ‘1

什么是中间件?什么是 JDK

<

你可能感兴趣的:(运维,面试,职场和发展)