SRE运维面试题整理
综合整理自:面试题汇总(个人学习总结)、面试题总结(往期同学)、PDF面试过程问题
| 优先级 | 分类 |
|---|---|
| ⭐⭐⭐ | Linux基础、K8S、Docker |
| ⭐⭐ | 网络、Nginx、数据库、监控 |
| ⭐ | CI/CD、Shell、系统优化、安全 |
| 了解 | JVM、Ansible、信创、高可用、云服务 |
综合开放
自我介绍
- 自我介绍(公司情况+自己熟悉的技术栈)
- 你们公司团队情况,你在里面的主要角色是什么?
- 你主要在哪些方面投入的精力比较多?
- 你觉得你擅长哪一方面?
- 你对运维工作的理解?从技术方面,从团队方面?
- 你觉得一个好的运维工程师好的胜任力是哪几点?
- 你对现在找工作有什么想法吗?
- 学习方面你自己有什么想法?
- 毕业之后怎么会想到往运维方向去发展的?
- 你的未来发展规划是什么?
- 你有没有做过体系化线上的运维(资源监控、容量管理、数据监控、巡检、事故处理、资源管理)?
- 你对国产信创系统的理解是什么?跟其他操作系统最主要的区别是什么?
- 遇到没有接触过没做过的东西如何做?
- 测试后没有报错后就可以直接部署到生产环境吗?
- 你对加班和出差怎么看?能接受吗?
- 为什么考虑离职?到岗时间大概是多久?期望薪资多少?
- 有对象吗?结婚了吗?未来几年有结婚打算吗?
项目与业务
- 你们公司主要负责什么业务?
- 你们公司是自研还是外包?
- 你们项目周期是多少?
- 挑一个项目介绍一下,什么类型的项目,怎么做的?
- 你们集群有多大?
- 你们公司服务器有多少台?
- 你们小组多少人?组内的人是做什么的?
- 你负责的部署的项目有多少?部署的方式有哪些?
- 你们的产品是部署到自己服务器上还是客户服务器上?
- 你们用到多少容器?正常部署一个项目大概多少个容器?
- 你工作主要负责什么?
- 你们部署新业务的逻辑是什么,从0到1?
- 你平常工作对接开发吗?
- 你们公司之前业务主要用什么开发的?
- 你对我们公司有什么了解吗?研究过我们公司的产品吗?
- 容量管理怎么做的?
- 巡检怎么做的?是什么机制?
- 应急响应怎么做的?机制是啥?
- 事故管理是怎么做的?(生产故障、运维事故、管理分级、事故判断)
开放性问题
- 正在运行的系统业务突然502都有哪些层面的原因?
- 系统出现一个十分火急的故障你怎么办?
- 无效告警有哪些原因,你该如何抑制无效告警?
- 有很多重复性的工作你该怎么处理,会选择躺平吗?
- 印象比较深刻的故障有哪些?
- 遇到过一些容量问题吗?
- 你每天做什么?给你一个服务器流程是什么?
- 你们平时报警多吗?大的报警多吗?为什么大的报警不多?
- 如何保证服务器容灾问题?
- 物理机没电怎么去部署服务?
- 如何评估一个网络的质量?除了看带宽外还有哪些方式?
- 带宽的单位是什么?是大B还是小B?
- 如果用户反馈系统服务无法通过公网访问,从哪些方面入手排查?
- 如果客户给你打电话说系统上不去了,怎么办?
- 客户提出需求后你的具体处理流程是什么?
Linux基础
系统操作与常用命令
- 如何查看服务器CPU使用率?
- 如何查看磁盘占用量?
- 如何查看服务器空闲内存?
- 如何查看进程是否在线?
- 如何查询端口是否被占用?
- 如何杀死进程?
- 列举五个常用的Linux指令及其用途
- 请列出你最常使用的Linux命令及其用途
- 查看系统版本用什么命令?内核版本怎么查?
- uptime会显示哪些内容?
- 查看linux网络流量以及带宽使用什么命令?
- 如何查看系统负载?怎样定义它是高了还是低了?
- top一般都看哪些参数?
- top命令后面可以加什么参数?
- top和lscpu的区别?
- ping使用的是什么协议?工作在几层?
- 如何查看服务器网卡的上连信息(包括接口、mac、名称等信息)?
- File.txt文件有400行,如何查看文件的第200-300行(两种方法以上)?
- 用什么命令查看文件的详细信息(stat)?
- du -h -m /* | sort -nr | head -10这条命令执行代表什么意思?
- 如何查看系统启动的端口?
- 统计目录文件数量用什么命令(tree)?
- 如何实时查看日志文件?
- vi编辑器内如何检索error字样?
- vi编辑器内如何将"北京"批量替换为"天津"?
- vim编辑器如何保存退出?使用!呢?
- 你上家公司都用过什么内核版本的操作系统?
- DNS的配置文件是哪个?
- 如何将一个进程放到后台持续运行(screen/nohup)?
- /etc/fstab含义及每一列含义是什么?
- 查看系统运行级别用什么命令?
- 使用什么命令可以查看Linux的启动信息?
- 如何查看当前目录位置(pwd)?
- 怎么看滚动日志?
- 系统的7个运行级别分别代表什么?
文件与磁盘
- 磁盘空间快满了,你怎么做?
- 删除大小很大的文件之后,磁盘空间没有释放,这是怎么回事?
- 当数据库程序一直写入日志文件,日志文件达到2T,rm删除后磁盘空间没有释放,在不重启程序的情况下如何处理?
- 日志满了怎么处理?
- 日志轮转是什么?
- 简单说一下挂盘的具体步骤
- 磁盘具体挂载流程是什么?
- 逻辑卷怎么扩容?怎么缩容?
- Linux的逻辑卷有涉及吗?和普通逻辑卷有什么区别?
- df和du有什么区别?
- 磁盘挂载后重启读取不了数据怎么解决?
- 服务器运行一段时间后磁盘满了怎么排查?
- ext2、ext3、ext4会默认预留多少磁盘空间?用于什么?
- inode或者block满了会导致什么?
- 如何查找出系统中的大文件?
- 查找系统中大于30天前的文件并且删除?
- 服务器不关机的情况下挂载的目录卸载不掉该怎么办?如果进程也杀不死呢?
- 往文件系统里面写数据发现无法写入可能是哪些原因?
- 磁盘经常空间不足一般是些什么文件引起的?
- 如何保留一个文件为30天?
- 小于2T和大于2T的磁盘分别用什么工具分区(fdisk/parted)?
- RAID常用级别以及区别是什么?
- 你公司物理服务器磁盘配置是怎样的?
- 取消挂载磁盘的命令是什么?强制取消挂载的命令是什么?
用户权限
- chmod修改文件权限为755,解释一下755的含义
- 修改文件权限的命令是什么?
- 修改属主属组用什么命令?
- chown命令是用来做什么的?
- 如何添加用户,设置密码?
- 如何查看系统中有多少用户?
- 命令限制是怎么实现的?
进程管理
- 查找一个正在运行的进程
- 怎么根据文件名找到进程ID?
- kill -9和kill -15的区别是什么?
- ps有什么参数?
- 系统负载高怎么排查?
- 磁盘IO过高怎么排查是哪个进程导致的?
- 如果CPU负载过高怎么处理?
- 系统负载高排查流程是什么?(uptime → top → 区分CPU/内存/IO → 定位进程)
- 大量僵尸进程怎么处理?
- 查看文件被哪个进程所调用(lsof)
系统启动与服务
- Linux的开机启动流程
- 部署过开机自启服务吗?Service文件写过吗?
- 物理机没有正常启动,进入紧急模式,排查思路是什么?
- 一台服务器异常关闭,开机后异常现象(报错)怎么查看?用什么命令?
- 开机自动执行命令的文件有哪些(/etc/rc.local、/etc/profile、systemctl enable)?
系统优化
- 系统优化做过什么?
- 新系统部署服务需要做什么优化?
- 一个新系统用过需要干什么优化?
- SSH优化、禁止root登录如何实现?
- 加大文件描述符怎么配置?
- 内核参数优化一般优化哪些?
- TCP连接队列大小怎么调整?
- TCP快速打开怎么启用?
- swap分区的作用是什么?用或不用的好处坏处是什么?
- 部署K8S时为什么要关闭swap分区?
- 系统优化一般是在什么场景下优化?
- vm.swappiness参数的作用是什么?
- 文件描述符限制怎么调整?
- SSD使用noatime、nodiratime挂载选项有什么好处?
- net.core.somaxconn的作用是什么?
- net.ipv4.tcp_fin_timeout的作用是什么?
- net.ipv4.tcp_tw_reuse的作用是什么?
- vm.overcommit_memory参数的作用是什么?
- vm.dirty_ratio和vm.dirty_background_ratio的作用是什么?
- vm.max_map_count参数的作用是什么?
- worker_rlimit_nofile的作用是什么?
- 时间同步写入定时任务怎么配置?
- SSH连接不上Linux怎么排查?
- SSH配置文件中PermitRootLogin和PasswordAuthentication的作用是什么?
- 麒麟系统忘记密码怎么办?
- CentOS、Ubuntu、Kylin系统的不同点是什么?
- Ubuntu的包管理器是什么?apt更新到最新版本怎么操作?
- 如果对端服务器设置了禁ping,如何测试连通性?
- 怎么判断服务器是x86还是ARM架构?
软硬连接
- 软硬链接的区别是什么?
- Linux系统中硬链接和软链接有什么区别?
定时任务
- 定时任务每分钟执行一次怎么配置?
- crontab的语法格式是什么?
- 每天晚上12点执行一次定时任务怎么配置?
硬件与RAID
- 问硬件配置?你接触过物理机吗?
- 用过交换机吗?用过啥型号的?
- 服务器配置是怎样的?
- 你接触过嵌入式的版卡吗?
- 你会组网吗?只有服务器你会怎么组网?
- 磁盘空间不够时如何解决(新磁盘+软链接方案)?
网络相关
TCP/IP
- TCP三次握手四次挥手详细说一下
- 为什么要三次握手?
- 完成通信之后建立什么状态?
- TCP连接数过多类似的问题,IP通端口不通你怎么解决?
- 如果服务器长期处于established状态是什么原因?
- 高并发下TCP连接延迟升高,如何从操作系统层面进行调优?
- 我想查看TCP的各种连接状态并统计,怎么统计?
- 常见的网络协议有哪些?
DNS
- DNS解析流程说一下
- DNS解析失败排查思路是什么?
- ping域名、指定yum仓库、FTP下载解析失败排查思路,如果nslookup解析失败怎么办?
- DNS在Linux里面的解析域名失败排查思路是什么?
- 通过IP可以访问,但通过域名访问不到,怎么排查?
HTTP
- 浏览器输入URL到页面加载完成,涉及到的网络协议有哪些?
- 网站访问流程是什么?
- 常见的HTTP状态码有哪些?
- HTTP响应码200、400、401、403、404、500、502、503、504分别代表什么?
- HTTP请求和响应的基本流程是什么?
OSI七层模型与端口
- 说一下OSI七层模型
- 七层模型有哪些?四层的协议说两个
- 路由器和交换机工作在几层?
- 四层负载和七层负载之间的区别是什么?
- SSH默认端口、HTTP默认端口分别是什么?
- 常见服务端口有哪些?(FTP 21、SSH 22、Telnet 23、SMTP 25、HTTP 80、HTTPS 443、DHCP 67/68等)
- 系统最大端口号是多少?
- 网段范围10.10.0.0/19换算成子网掩码是多少?
- BGP协议是几层?
防火墙
- iptables怎么去屏蔽特定网段?
- iptables添加规则的命令是什么?
- iptables如何限制某个IP访问服务器某个端口?说出详细命令
- 如何查看防火墙开放了哪些端口?
- 对本机放行8080端口允许172.1.1.6网段来访问,怎么编写iptables规则?
- 对于Ubuntu系统除了ufw防火墙还用过哪些防火墙?
- 有没有用iptables去配置流量转发?
- 什么时候开启防火墙?什么时候关闭防火墙?
网络排查
- 在现场环境网络方面有遇到什么问题吗?
- IP通端口不通怎么解决?
- 局域网中服务器和服务器网络不通怎么排查?
- mtr和Traceroute用过吗?
- 都用过哪些抓包工具?
- tcpdump具体命令是啥?如何指定网卡?用什么参数?
- 有配置过交换机或者路由器吗?
- 上不了网排查思路是什么?
- 如何实现不同网段的通信?
网络配置
- Ubuntu怎么添加静态IP?
- Ubuntu网络服务叫什么名字?
- 给主机加路由用什么命令?
Nginx/Web服务
基础配置
- Nginx反向代理如何配置?
- Nginx做过哪些优化?
- Nginx的配置和反向代理怎么写?
- Nginx部署后只能公司内部访问如何实现?
- Nginx除了做负载均衡还有哪些地方用到?
- Nginx都有哪些模块?常用的模块有哪些?
- Nginx工作原理是什么?为什么消耗资源少并发能力强?
- Nginx工作在几层?
- Nginx有哪些负载均衡模式?
- Nginx日志格式知道吗?
- 如果Nginx接收到请求,但不想将客户端的源IP向后端服务器传递,应该如何处理?
- Nginx的server_name配置有什么作用?一般会配什么内容?
- Nginx有没有用缓存模块?
- Nginx 404为啥?如何解决?
- Nginx优化使用什么参数?性能调优有哪些?
- 用shell脚本统计Nginx日志文件里面的平均耗时应该怎么统计?用到哪些关键命令?
- 分析Nginx访问日志,一条命令找出访问IP前十
- Nginx的大日志有5个G,怎么找出top10的IP地址?
- Nginx和Apache的区别是什么?
反向代理与负载均衡
- 负载均衡的作用是什么?怎么实现的?
- 负载均衡的转发模式有哪些?(轮询、IP哈希、最少连接、加权轮询)
- 正向代理与反向代理的区别?
- SLB和Nginx有什么区别?
- Nginx负载均衡和LVS负载均衡有什么区别?
- Nginx、LVS、HAProxy有什么区别?
- Nginx在配置上四层和七层代理有什么区别?
- 如何配置负载均衡?
location匹配
- location模块里面代理静态页面时root和alias有什么区别?
- location模块匹配的优先级是什么?
- Nginx匹配模式是什么?
HTTPS
- https加密流程是什么?
- 证书公司怎么配置的?
Web服务对比
- Nginx和Tomcat什么区别?
- 除了Nginx还部署过什么Web服务器?是Apache吗?
- Tomcat负载高排查流程是什么?
- Tomcat假死,但是进程还在怎么解决?什么原因?
- 公司里面Tomcat和哪些中间件搭配使用,优化过什么方面?
- 如何查看Tomcat 15分钟的日志?
高可用/集群
Keepalived
- Keepalived是干什么用的?
- Nginx和Keepalived是怎么组合使用的?具体配置流程是怎样的?
- Keepalived除了和Nginx搭配,还能和其他组件组合实现高可用吗?
- Keepalived是几个节点?使用什么样的轮询策略?
- 使用的是抢占还是非抢占模式?
- 主节点挂了的话,怎么去处理轮询策略?优先级如何设置?
LVS
- LVS的几种模式是什么?(NAT、DR、TUN)
- 简要介绍一下你对Nginx和LVS的理解,以及它们在运维工作中的应用场景和区别
- 所有的负载均衡都有高可用吗?
- 你们的负载有多大?并发是有多大?秒级PV是多少?
脑裂
- Keepalived脑裂问题怎么预防和解决?出现脑裂的原因有哪些?
CDN
- CDN加速原理是什么?
- SLB和CDN怎么配置?
- 什么是CDN?
数据库
MySQL主从
- MySQL主从原理是什么?
- MySQL主从复制延迟怎么导致的?怎么解决?
- MySQL主从同步的底层逻辑是什么?使用什么工具实现主从同步?
- 主从同步用户的权限有特殊要求吗?
- 数据库的负载策略是如何实现的?
- 如何知道数据库主从出问题了?从底层上说说看?
- 你们数据同步状态怎么保证从库是最新的状态?
- MySQL的架构是什么?MHA还是什么?
- 假如有100个读写请求,按照轮询策略应该怎么分配?
MySQL备份恢复
- MySQL的备份方案是什么?
- 数据库的备份和恢复怎么做?
- 备份是怎么实现的?自动化备份怎么实现的?
- 怎么利用binlog恢复数据?
- 数据损坏了需要恢复数据怎么办?
- 实际工作有没有遇到过数据恢复的情况?
- MySQL备份文件存放地点,本地还是服务器?
MySQL优化与基础
- MySQL你做过调优吗?做过哪个方面?
- 数据库查询突然变慢(从毫秒级变成几秒甚至十几秒),可能的原因有哪些?针对这些原因做哪些优化?
- 除了资源维度和"缺索引"外,数据库查询突然变慢还有哪些数据库自身技术层面的原因?
- 当业务数据量或请求量激增导致数据库查询延迟飙升,从系统架构层面应该如何优化?
- MySQL的CPU会突然飙升,作为运维排查思路是什么?
- MySQL左右内外连接如何连接?左表连接跟其他连接有什么不同?
- MySQL子表查询你会吗?
- 如何查看MySQL一个语句的执行过程?
- 在MySQL中需要删除一张大表,怎么删除能防止产生死锁?
- 数据库锁表了如何处理?
- 数据库ACID机制都有什么?
- MySQL常用的存储引擎以及区别?
- 日常工作中优化SQL的方案有哪些?
- MySQL增删改查语句
MHA
- MHA的底层原理是什么?
- MySQL的MHA高可用如何搭建?
Redis
- Redis有哪些基本数据类型?
- Redis默认端口是什么?
- Redis怎么搭集群?
- Redis集群的作用是什么?
- Redis cluster模式是什么?
- Redis有多少个数据库?
- Redis正在运行看他哪些指标?
- 你们用Redis来干什么?
- Redis缓存用过没有?搭建的什么结构的Redis?
- 如何监控一个云产品Redis的状态?
国产数据库
- 国产数据库你了解哪些?会用国产数据库吗?
Shell脚本
awk/sed/grep
- awk用过吗?一般都用来干啥?
- 用awk、sed、grep做数据统计分析
- grep有哪些参数?
- find用过哪些?
- find和grep的区别是什么?
- 实时去查看日志文件用什么命令?
- sed如何替换文件中的某个字符?
- 过滤出文件中包含root的行(grep/sed/awk三种方式)
- 取出文件的第某行第某列
- 要将文件中所有的某字符替换成某字符
- 想看过滤到内容的上和下面的内容(grep -A/-B/-C)
- 分析Nginx访问日志,一条命令找出访问IP前十
- 怎么替换一个文件中的空行?具体命令是什么?
- 用shell脚本怎么把一个文档空格都去掉?
脚本编写
- 写过哪些脚本?讲讲逻辑
- 用shell脚本怎么计算浮点数?
- 如何用shell写一个替换域名的脚本?
- Shell中第一行#!/bin/bash代表什么意思?
- Shell脚本的循环语句怎么写?循环里的break和continue的区别是什么?
- 判断磁盘占用率,当使用率大于95%时,删除/var/log/下的7天之前的日志,怎么写?
- 2>xx、2>&1、&>xx这三个命令分别代表什么意思?
- 正则表达式中.、*、+、[]、^、$、w、d、s分别代表什么?
- 用shell脚本统计文本的次数跟排序,用具体命令
Docker
基础命令
- 你经常用的docker命令有哪些?
- 如何查看正在运行的容器?
- 如何查看容器日志异常?
- Docker怎么查看守护进程?
- Docker容器的数据持久化方案包括什么?
- 如何实现容器数据持久化?
- 批量停止所有运行中容器、批量删除所有已停止容器的命令是什么?
- Docker如何解决与宿主机的时间同步问题?
- docker后面跟什么参数?
- 如何还原一个Docker容器的启动命令?
- 查看磁盘占用空间,知道哪些位置满了,但不知道哪些容器日志满了怎么办?
- 如何删除镜像?
- 如何查看容器资源占用以及使用情况?
Dockerfile
- 用过Dockerfile里的哪些指令?
- Dockerfile的常用字段有哪些?
- Dockerfile中COPY和ADD有什么区别?
- CMD和ENTRYPOINT有什么区别?什么时候用ENTRYPOINT什么时候用CMD?
- Dockerfile中环境变量的关键字是啥?
- 一个Dockerfile可以有几个FROM?
- 多个RUN怎么写在一起?
- Dockerfile层的概念是什么?
- 在编写Dockerfile时,镜像是动态的,打包时可以传进来,这个机制是怎么做的?
镜像管理
- 怎么在构建Dockerfile的时候减小镜像体积和构建速度?
- 怎么保证打出来的image是最小的?
- 构建镜像的时候有什么优化的方法?
- 在业务容器里安装服务,哪种安装方式会更节省容器体积?
- 怎么把Docker镜像传到Harbor仓库,再拉下来?
- Harbor仓库高可用原理是什么?
- docker buildx知道吗?
网络
- Docker有多少种网络模式?
- bridge和host的区别,各有什么优缺点?
- 容器里的DNS是怎么配置的?
Docker Compose
- docker-compose几种类型?
- 用过docker-compose吗?
- depends_on是做什么的?
- 使用docker-compose如何实现有顺序依赖的服务的启动顺序?
- 如果在docker-compose启动过程中,其中一个项目出问题如何排查?
Docker与虚拟机
- Docker跟虚拟机的区别是什么?
- Docker为什么比VM快?
- Docker的优缺点有哪些?
- 容器化和VM的对比是什么?
其他
- Docker日志保存在什么地方?
- 一体机开机自启,Docker怎么实现自动启动?容器启动后怎么启动服务?
- Docker的原理有了解过吗?
K8S
组件与架构
- K8S组件有哪些?各自的作用是什么?
- K8S的架构是怎样的?
- K8S和容器什么关系?
- K8S的最小部署单元是什么?
- kube-proxy的模式有哪些?(iptables、IPVS、userspace)
- kube-apiserver高可用是如何实现的?
- etcd的快照恢复流程是什么?
- etcd如何保证高可用?
- scheduler底层的调度算法有哪些?
- K8S你负责的集群都是自建的吗?
- K8S有哪些优缺点?
Pod生命周期与状态
- Pod的生命周期是什么?具体过程是怎样的?
- Pod有几种状态?分别代表什么意思?(Pending、Running、Succeeded、Failed、Unknown)
- 如果Pod的状态是Pending,一般有哪些原因?
- Pod一直重启什么原因导致的?
- Pod一直处于CrashLoopBackOff状态怎么排查?
- Pod状态为Error怎么排查?
- 怎么查看上一个Pod的启动日志?
- 说一下Pod的重启策略(Always、OnFailure、Never)
- 删除Pod会发生什么事情?
- 什么是静态Pod、自主式Pod、动态Pod?
- Pod地址是唯一的吗?Pod和Pod之间共享资源吗?
- Pod的创建流程是怎样的?各组件都做了哪些工作?
Service
- K8S的Service是干什么用的?
- Service有几种类型?(ClusterIP、NodePort、LoadBalancer、ExternalName)
- ClusterIP和NodePort是什么关系?
- Service无法访问其后端Pod,该如何排查?
- 通过NodePort暴露服务,客户通过IP加端口访问,怎么获得客户的真实IP?
- Stateful Service和普通的Service有什么区别?
Deployment与控制器
- Deployment和StatefulSets的区别是什么?
- Deployment、DaemonSet、StatefulSet之间的区别和特性是什么?
- Deployment的滚动更新是怎么配置的?
- DaemonSet类型的资源特性是什么?
- 现在有一个需求想使用Deployment的模式达到DaemonSet的效果,该怎么实现?
- Deployment的YAML文件怎么编写?有哪些关键字段?
- 容器控制器如果想要在每个节点部署Pod用什么控制器?
- docker控制器有哪些?各自的作用?
故障排查
- K8S中容器出现故障怎么排查?排查流程?
- K8S中遇见的网络故障有哪些?
- K8S集群中Node节点状态为NotReady怎么排查?
- K8S集群前面负载的架构是什么?
- K8S中Service访问不通排查用什么命令?
- 维护K8S集群的时候都遇到过哪些问题?怎么解决的?
- K8S突发故障怎么处理?
- K8S集群中Pod出故障不会转移到其他节点吗?
- Pod拉取不动镜像要怎么排查?
- K8S各组件及作用是什么?
- 现在有一个系统访问缓慢,排查思路是什么?
- 如果磁盘IO压力过大,应该如何排查?
探针
- K8S探针用过吗?了解探针吗?
- K8S探针类型有哪些?(livenessProbe、readinessProbe、startupProbe)
- 探针的探测方法有哪些?(httpGet、exec、tcpSocket)
- 健康检查怎么写的?是用的探针请求接口吗?
- 存活探针是由哪个服务发起请求的?
PV/PVC
- PV和PVC是什么?
- PV的生命周期状态有哪些?(Available、Bound、Released、Failed)
- StorageClass的作用是什么?
Ingress
- K8S中Ingress和普通Nginx有什么区别?
- 请结合业务描述Nginx Ingress的工作原理。
- 你了解Ingress Controller的Webhook或Admission Controller吗?
镜像与配置
- K8S的镜像拉取策略有哪些?(Always、IfNotPresent、Never)
- K8S中如何给节点打污点?
- K8S中需要将Pod中的文件拉取到本地目录,用什么命令?
- configmap的作用是什么?
- 资源清单里的kind字段有哪些类型?
网络插件
- K8S中的网络插件有哪些?(Flannel、Calico、Canal、Weave Net、Cilium)
- Flannel的几种模式是什么?(VXLAN、Host-GW、UDP)
- 为什么选择Flannel作为CNI插件?和Calico相比有何考虑?
调度与资源
- Pod的调度依据是什么?具体的调度机制(驱逐机制)是什么?
- K8S中Pod调度不均匀怎么办?
- K8S怎么节省资源?
- Request和Limit这两个值会设置成一样吗?
- YAML文件一般都会定义哪些主要的参数?
- Pod亲和是什么?
HPA
- HPA了解过吗?HPA底层的逻辑怎么实现的?底层的原理是什么?
- 同一个服务,想增加Pod的数量怎么做?
日志采集
- K8S上Pod的工作日志如何管理?
- 如果Pod漂移到了其他节点日志是如何采集的?
- 怎么采集K8S日志?
部署与迁移
- K8S上都做过什么实际项目?
- 你们现在K8S上项目是怎么部署的?
- 从物理机迁移到K8S后,在服务交付、CI/CD和监控方案上有哪些具体差异?
- 环境迁移到K8S集群怎么做的?
- 如果想从docker-compose业务迁移到K8S集群怎么去做?
- K8S迁移应该注意哪些问题?比如说正在运行的业务?
- 假设现在业务基于K8S环境运行,要把业务迁到K8S环境,思路是什么?
- 假设业务在线下基于K8S环境运行,怎么把K8S这套业务迁移到云上?
- 有一个Java代码怎么部署到K8S集群?
- Java服务迁移到K8S后,编写了哪些K8S资源清单(YAML)?
- 部署一个Java服务,它在容器里不同状态对应的服务状态是怎样的?
- 在什么场景下你会使用kubectl describe pod?又在什么情况下使用kubectl logs?
CI/CD
Jenkins
- Jenkins部署业务服务是单节点还是集群的?
- Jenkins都是先部署在内部服务器还是直接上线?
- Jenkins工作流程是什么?
- Jenkins如何实现代码的回滚?具体是配了什么?
- Jenkinsfile如何安全传输像密码、安全地址这种敏感信息?
- Jenkins的多分支并行构建怎么做?
- Jenkins构建失败之后你们是怎么做的?
- 如果给你一台空白的Jenkins机器,如何从零搭建?
- 使用哪一种Jenkins方式实现自动化流程?
- Jenkins中涉及到和GitLab的一个认证,怎么认证的?
GitLab
- GitLab的钩子函数怎么配?这个东西是哪里面的?
发布流程
- CI/CD流程是怎么样的?
- 滚动更新如何实现?
- 业务更新的时候,保障服务的持续稳定的运作有什么方式吗?
- 蓝绿发布和金丝雀发布如何在K8S上落地?各自有什么优缺点?
- 你们是多久更新一次?发布一次新版本?
- 你们滚动更新,Server怎么去挂的容器?
- 如何控制发布的Pod?
- CICD执行失败了,但有些配置已经生效了,怎么进行恢复?
- 灰度发布有哪些方式?
- 在CI/CD流程中,如何使用Jenkins与Docker集成?
- 打包镜像上传到仓库的动作详细流程是什么?
- DevOps中的CI和CD分别是做什么用的,优点是什么?
- 代码上线流程是什么?会遇到什么问题?
监控
Prometheus
- Prometheus监控过什么?是怎么实现的?
- 监控数据的采集和实现是什么?
- Prometheus架构是什么?监控了什么?怎么安装部署?
- Prometheus如何自定义监控Java项目?
- 如何在K8S集群外部搭建Prometheus对集群进行监控?
- Prometheus监控K8S的原理是什么?
- Prometheus如何收集K8S指标?
- Prometheus监控Pod的哪些指标?
- 监控K8S的状态关注哪些关键指标?
- 一个服务上线要监控哪些核心指标?
- rate()和irate()的区别和使用场景是什么?
- Prometheus输出的都是数字对吧?这个数字分为什么类型?(Counter、Gauge、Histogram、Summary)
- 这四个有什么区别?使用场景是什么?
- Prometheus如何自定义监控指标?举个例子
- 你们普罗米修斯的指标有多少?做了哪些预置?
- 普罗米修斯具体指标怎么设置?设置多少?
- 普罗米修斯计算七天的平均量是怎么算的?函数叫什么?语句是什么?
- Prometheus各个组件和作用是什么?主要监控哪些指标?
- Prometheus是部署在K8S集群内还是独立物理机上?
- 用Prometheus Operator还是其他方式部署?两种部署方式各有什么优劣?
Grafana
- 用过Grafana吗?如何让Prometheus和Zabbix的监控项一起展示?
- Grafana自己做的界面是怎么做的?用的哪些标签?
- Grafana和Prometheus之间是怎样通信的?
- Grafana自定义面板、数据展示Dashboard怎么做?
Zabbix
- Zabbix和Prometheus有什么区别?
- Zabbix的基本架构是什么?
- Zabbix和Prometheus后端的数据库有什么不同?
- Zabbix自动发现有研究过吗?
- Zabbix监控突然缺失了一部分怎么排查?
- 如果Zabbix监控突然缺失了一部分,可能是哪些原因?
- Zabbix服务端优化怎么做?
- 假设现在有100台服务器,怎么用Zabbix去部署监控?触发器怎么设计?
告警
- 告警是通过什么告警的?
- 告警分级是具体怎么做的?
- 如果要实现告警,实现不同组收到告警信息如何配置?
- 报警抑制怎么做?举一下例子
- 设置报警的时候,怎么进行报警分类?
- 告警流程是什么?
- 监控一般监控啥?
- 系统级别监控包括哪些?
- 应用程序级别监控包括哪些?
ELFK/ELK
- ELK了解吗?怎么用的?
- ELFK架构数据流走向是什么?
- ELFK一般用来采集什么日志?
- Filebeat怎么推数据?
- Elasticsearch分片和副本是什么?
- ES集群写入比较慢了怎么办?
- ES集群物理机配置是什么?多少个节点?多少个索引?副本数是多少?分片数是多少?
- 分片数怎么形成的?为什么会是这些分片?
- 关于索引、副本数、分片数大概怎么分的?有没有什么性能瓶颈?官方有没有限制?
- 如果分片数量太少有什么影响吗?
- 在Logstash和Elasticsearch之间想到什么办法提升性能?
- 如果在Elasticsearch中已经创建了一个索引,现在需要调整其已有的索引结构,比较好的实践方案是什么?
- 影响日志检索的响应时间的因素有哪些?
阿里云/云服务
ECS与基础服务
- 阿里云ECS的底层原理熟悉吗?
- 阿里云相关的主要做过什么?使用过什么?
- 用过哪些公有云?
- 你们公司用的云厂商是?一般买多大的云服务器?
- ECS的OS镜像类型你实际用过的有哪些?
SLB与CDN
- SLB和CDN怎么配置?
- SLB和Nginx有什么区别?
- 有用过云上的SLB吗?搭建流程是什么?
OSS
- OSS和NAS、云盘有什么区别?主要存储什么数据?主要用于什么实际场景?
WAF
- 你对WAF有没有什么了解?WAF主要做什么的?配置过吗?
VPC
- 阿里云VPC网络了解吗?里面子网、路由表和安全组之间都是什么关系?
- 云上的网络策略限制是通过什么做的?
云平台架构
- 云平台的组件架构是什么?
- OpenStack包含哪些组件?
- 你使用过云服务器干过什么?
- 除了传统ECS、OSS、SLB、CDN之外还接触过什么?
系统优化
内核参数
- 内核参数优化一般优化哪些?
- net.core.somaxconn的作用是什么?
- net.ipv4.tcp_fastopen的作用是什么?
- net.ipv4.tcp_fin_timeout的作用是什么?
- net.ipv4.tcp_tw_reuse的作用是什么?
- vm.swappiness参数的作用是什么?
- vm.overcommit_memory参数的作用是什么?
- vm.dirty_ratio和vm.dirty_background_ratio的作用是什么?
- vm.max_map_count参数的作用是什么?
- 文件系统优化挂载选项有哪些?(noatime、nodiratime、barrier=0、data=writeback)
SSH
- SSH连接不上Linux怎么排查?
- SSH优化、禁止root登录、创建普通账号怎么实现?
- SSH配置文件中PermitRootLogin和PasswordAuthentication的作用是什么?
文件描述符
- 加大文件描述符怎么配置?
- worker_rlimit_nofile的作用是什么?
时间同步
- 时间同步写入定时任务怎么配置?
安全相关
防火墙
- 服务器防火墙会配置吗?
- 查看防火墙开放了哪些端口?
- iptables添加规则
- iptables怎么去屏蔽特定网段?
- 如何限制某个IP访问服务器某个端口?
DDoS与攻击
- 当遇到DDoS攻击时怎么处理?
- 配置过防火墙吗?防DDoS、防CC?
漏洞修复
- 安全这一块了解吗?业务上线做漏洞扫描、攻防检测和代码质量检测
- 服务器的安全方面,漏洞的修复怎么做?
挖矿病毒
- 挖矿病毒怎么处理?
安全工具
- 你对WAF有没有什么了解?WAF主要做什么的?
JVM/Java相关
GC排查
- JVM调优怎么做?
- Tomcat CPU利用率高排查流程是什么?
- 导致频繁GC的原因和原理是什么?
- 如果有一个Java程序突然占用了大量内存与CPU,怎么排查?
- GC日志分析怎么做?使用什么JVM参数?
- jstat怎么监控GC情况?
- 内存分析工具(MAT、JVisualVM、JProfiler)怎么用?
- 用什么APM工具做深入分析?(Arthas、SkyWalking)
- 具体多线程占用情况怎么看?
内存溢出
- 内存溢出常见的原因有哪些?(堆内存溢出、栈内存溢出、永久代内存溢出)
- 堆转储分析怎么做?jmap怎么用?
- 代码层面如何减少频繁GC?
- JVM配置参数(-Xms、-Xmx、-XX:NewRatio、-XX:SurvivorRatio、-XX:+UseG1GC)怎么调?
Tomcat优化
- Tomcat线程池怎么配置?(server.xml中的Executor)
- Tomcat负载高排查流程是什么?
- Tomcat假死但进程还在怎么解决?
- 公司里面Tomcat和哪些中间件搭配使用,优化过什么方面?
Ansible
基础使用
- Ansible用过哪些模块?
- 用过Ansible吗?工作方式和模块有哪些?
- Ansible底层的原理是什么?核心依赖什么?
- 如何通过Ansible批量重启Nginx服务?
- 给你10台机器,用Ansible查各个机器里边的磁盘情况,命令是什么?
- 我想用Ansible给一个文件的权限是777怎么改?
playbook
- Ansible的playbook是用来做什么的?
- 会写playbook吗?
- Ansible都写了哪些playbook?
加密与变量
- 在Ansible的playbook中如何对敏感变量进行加密?
条件判断与优化
- 在Ansible中如何进行判断,条件满足的时候才会去执行?
- 如何优化Ansible的执行速度?
故障排查
- Ansible部署服务出现错误了怎么快速恢复?
- Ansible故障排查怎么做?
信创/国产化
- 信创项目你了解哪些?其中有遇到什么问题?
- 你对国产操作系统安装了解吗?
- 你在使用国产Kylin系统的时候遇到过哪些坑,相比其他操作系统有哪些不好用的地方?
- 国产化操作系统用到过哪些?
- 说一下你了解的信创产品?
- Kylin操作系统部署服务遇到过哪些问题?
- 用Kylin时Docker有没有遇到过镜像不兼容?
- 军工单位涉及软件包认证,要打RPM包,了解过吗?
- 公司涉及很多设备都不能联网,部署服务有什么解决办法?
KVM虚拟化
- 什么是KVM?它的全称是什么?
- KVM与Xen、VMware ESXi在架构上有什么主要区别?
- KVM主要由哪两个组件组成?它们各自的作用是什么?
- 解释一下/dev/kvm这个设备文件的作用
- KVM是如何实现CPU虚拟化的?
- KVM的内存虚拟化是如何工作的?影子页表和EPT是什么?
- KVM的I/O虚拟化主要有哪几种方式?比较优缺点
- 什么是vhost?它相对于传统的virtio有什么改进?
- 使用过哪些KVM管理工具?比较libvirt和qemu-kvm命令行
- 如何查看一个宿主机上是否支持并开启了KVM?
- 如何使用virsh命令启动、暂停、关闭和销毁一个虚拟机?
- 虚拟机的配置文件通常存放在哪里?格式是什么?
- 如何对KVM虚拟机进行CPU和内存的过热使用?
- 什么是CPU亲和性?为什么要设置它?
- 常见的KVM性能优化技巧有哪些?
- 什么是QCOW2格式?优缺点是什么?
- 如果一个KVM虚拟机无法启动,排查思路是什么?
- 如何监控KVM虚拟机的性能?
- 你了解哪些虚拟化手段?它们之间有什么区别?
中间件与其他
消息队列
- 使用过哪些消息队列中间件?
- 如何保证消息不丢失的机制?
- Kafka了解多少?如果想从头开始消费数据应该怎么做?partition数量是越大越好吗?
Maven/Nexus
- Maven是什么?Nexus私服的作用是什么?
Cookie与Session
- Cookie与Session的区别是什么?
Jar与War包
- Jar包部署和War包部署的区别是什么?
RPM打包
- RPM包的编译和打包了解吗?
笔试题
选择/填空题
- 在Linux系统中,用于查看当前系统进程状态的核心命令是什么?
- 能强制终止指定PID进程的是什么命令?
- Docker中,用于查看本地已下载镜像列表的命令是什么?
- 在Linux系统中,要将文件file1从/opt目录移动到/home目录,正确的命令是什么?
- Docker Compose的核心配置文件默认名称是什么?
- Linux系统中,用于查看系统负载情况(1分钟、5分钟、15分钟)的命令是什么?
- 能查看Docker容器实时日志的是什么命令?
- Linux系统中,要给test.sh添加可执行权限,正确的命令是什么?
- Docker中,用于停止并删除指定容器的命令组合是什么?
- 在Linux系统中,用于查看指定目录下文件详细信息的命令是什么?
- 取消挂载磁盘的命令是什么?强制取消挂载的命令是什么?
- ping使用的是什么协议?工作在几层?
- 交换机一般工作在几层?路由器工作在几层?
- 系统最大端口号是多少?
- 网段范围10.10.0.0/19换算成子网掩码是多少?
- centos系统下执行uptime命令可以查看到的内容都有什么?
- last命令后的-x选项代表什么意思?
- chmod命令是用来做什么?chown命令是用来做什么?
操作/简答题
- 请写出Linux系统中查询/var/log目录下近24小时内修改过的以.log结尾的文件的命令,并说明各参数含义
- 请写出Docker环境中基于nginx:latest镜像创建一个名为nginx-web的容器的命令,要求后台运行、端口映射、目录挂载
- Linux系统中,若发现某台服务器的sshd服务无法启动,请写出至少3步排查思路及对应的核心命令
- 请写出Docker中批量停止所有运行中容器、批量删除所有已停止容器、批量删除所有未被使用的镜像的命令
- 在阿里云ECS服务器中,需要定期每天凌晨2点执行一个脚本进行数据备份,核心步骤及命令是什么?
- 写出用tar打包压缩/home/目录所有文件并放到/root/目录下名称为home.tar.gz的完整命令,并写出解压到/aaa/bbb/目录的完整命令
- 请描述Linux系统常用命令以及命令简介
- 请描述常用的JVM调优的参数都有哪些
- 请描述Cookie与Session的区别
- 请描述Redis的基本数据类型有哪些
- 请描述使用过的消息队列中间件以及如何保证消息不丢失的机制
- 请描述MySQL常用的存储引擎以及区别
- 请描述日常工作中优化SQL的方案
- 请描述DevOps中的CI和CD分别是做什么用的,优点是什么
- 请描述Jar包部署和War包部署的区别
- 请描述常用的反向代理和负载均衡软件以及应用场景
- 请描述MySQL数据库源码编译工具(版本5.6及以上)
- 请描述MySQL数据库源码编译常用参数(版本5.6及以上)
- 请描述MySQL数据库编译部署后常用初始化命令(版本5.6及以上)
- 如何从学生表查询到分数大于等于80的所有男性姓名?
- 如何将表里的分数在70到80的女学生信息删除?
- 如何创建一个新表?
综合笔试
- 在Linux系统中,磁盘管理相关的命令有哪些?
- Docker容器的数据持久化方案包括哪些?
- 可用于查看网络连接状态的命令有哪些?
- 关于Docker镜像的说法正确的有哪些?
正文完