初级 DevOps 工程师面试题与答案

Milad Bonakdar
作者
用实用问题准备 Linux 排障、Git、CI/CD、Docker、云基础、Terraform、监控、Kubernetes 和 Bash 面试重点。
快速要点
初级 DevOps 面试通常会看你是否能冷静排障、解释软件交付流程,并谨慎使用接近生产环境的工具。常见范围包括 Linux 服务和日志、Git、CI/CD、Docker、云基础、Terraform、监控、Kubernetes、配置管理和 Bash。
使用这份指南时,不要只背答案,也要练习思路:先检查什么、看哪些日志、什么时候回滚、什么时候需要更多上下文。
Linux 基础
1. 解释一下作为 DevOps 工程师,你每天都会用到的常用 Linux 命令。
答案: DevOps 工作中必不可少的 Linux 命令:
稀有度: 非常常见 难度: 简单
2. 如何排查 Linux 上无法启动的服务?
答案: 系统性的故障排除方法:
常见问题:
- 配置语法错误
- 端口已被占用
- 权限被拒绝
- 缺少依赖项
- 磁盘空间不足
稀有度: 非常常见 难度: 中等
使用 Git 进行版本控制
3. 解释一下基本的 Git 工作流程和常用命令。
答案: 日常 DevOps 任务的 Git 工作流程:
最佳实践:
- 编写清晰的提交消息
- 经常提交,定期推送
- 使用功能分支
- 推送前先拉取
- 提交前审查更改
稀有度: 非常常见 难度: 简单
4. 如何解决 Git 中的合并冲突?
答案: 冲突解决的步骤:
冲突标记:
<<<<<<< HEAD- 你当前的分支=======- 分隔符>>>>>>> branch-name- 传入的更改
稀有度: 常见 难度: 简单-中等
CI/CD 基础
5. 什么是 CI/CD,为什么它很重要?
答案: CI/CD 代表持续集成和持续部署/交付。
持续集成 (CI):
- 每次提交时自动构建和测试代码
- 尽早发现错误
- 确保代码正确集成
持续部署 (CD):
- 测试通过后自动部署到生产环境
- 更快的发布周期
- 减少手动错误
优点:
- 更快的反馈循环
- 减少集成问题
- 自动化测试
- 一致的部署
- 更快的产品上市时间
稀有度: 非常常见 难度: 简单
6. 解释一下使用 GitHub Actions 的基本 CI/CD 流水线。
答案: GitHub Actions 工作流程示例:
关键概念:
- 触发器: 何时运行流水线(推送、PR、计划任务)
- 作业: 可以并行运行的独立任务
- 步骤: 作业中的单个命令
- 工件: 在作业之间传递的文件
稀有度: 非常常见 难度: 中等
Docker & 容器化
7. 什么是 Docker,为什么我们使用容器?
答案: Docker 是一个用于在容器中开发、交付和运行应用程序的平台。
容器 vs 虚拟机:
- 容器共享宿主机操作系统内核(轻量级)
- 虚拟机包含完整的操作系统(重量级)
- 容器在几秒钟内启动
- 更好的资源利用率
优点:
- 一致性: 到处都是相同的环境
- 隔离: 应用程序互不干扰
- 可移植性: 可以在任何地方运行
- 效率: 轻量级且快速
稀有度: 非常常见 难度: 简单
8. 解释一下常用的 Docker 命令。
答案: 必不可少的 Docker 命令:
稀有度: 非常常见 难度: 简单
9. 为包含数据库的 Web 应用程序编写 Docker Compose 文件。
答案: 多容器应用程序示例:
关键概念:
- services: 定义容器
- depends_on: 服务依赖关系
- volumes: 持久数据存储
- environment: 环境变量
- ports: 端口映射
- restart: 重启策略
稀有度: 常见 难度: 中等
云基础
10. 解释一下 IaaS、PaaS 和 SaaS 之间的区别。
答案: 云服务模型:
IaaS (基础设施即服务):
- 提供:虚拟机、存储、网络
- 你管理:操作系统、运行时、应用程序
- 示例:AWS EC2、Azure VMs、Google Compute Engine
- 用例:完全控制基础设施
PaaS (平台即服务):
- 提供:运行时环境、数据库、中间件
- 你管理:应用程序和数据
- 示例:AWS Elastic Beanstalk、Heroku、Google App Engine
- 用例:专注于代码,而不是基础设施
SaaS (软件即服务):
- 提供:完整的应用程序
- 你管理:用户数据和设置
- 示例:Gmail、Salesforce、Office 365
- 用例:即用型应用程序
稀有度: 常见 难度: 简单
11. DevOps 工程师应该了解哪些基本的 AWS 服务?
答案: 必不可少的 AWS 服务:
计算:
- EC2: 虚拟机
- Lambda: 无服务器函数
- ECS/EKS: 容器编排
存储:
- S3: 对象存储
- EBS: EC2 的块存储
- EFS: 共享文件存储
网络:
- VPC: 虚拟私有云
- Route 53: DNS 服务
- CloudFront: CDN
- ELB: 负载均衡
数据库:
- RDS: 托管关系数据库
- DynamoDB: NoSQL 数据库
DevOps 工具:
- CodePipeline: CI/CD 服务
- CodeBuild: 构建服务
- CloudWatch: 监控和日志记录
- IAM: 访问管理
示例:使用 AWS CLI 启动 EC2 实例:
稀有度: 非常常见 难度: 中等
基础设施即代码
12. 什么是基础设施即代码 (IaC),为什么它很重要?
答案: IaC 是通过代码而不是手动流程来管理基础设施。
优点:
- 版本控制: 跟踪基础设施更改
- 可重现性: 创建相同的环境
- 自动化: 减少手动错误
- 文档: 代码充当文档
- 一致性: 到处都是相同的配置
流行的 IaC 工具:
- Terraform: 多云配置
- Ansible: 配置管理
- CloudFormation: AWS 特定的
- Pulumi: 基于代码的 IaC
Terraform 示例:
稀有度: 非常常见 难度: 中等
13. 解释一下基本的 Terraform 工作流程。
答案: Terraform 工作流程步骤:
Terraform 文件结构:
变量示例:
稀有度: 常见 难度: 中等
监控 & 日志记录
14. 你会监控 Web 应用程序的哪些指标?
答案: 关键监控指标:
应用程序指标:
- 响应时间/延迟
- 请求速率(每秒请求数)
- 错误率(4xx、5xx 错误)
- 吞吐量
系统指标:
- CPU 使用率
- 内存使用率
- 磁盘 I/O
- 网络 I/O
基础设施指标:
- 容器/pod 状态
- 服务可用性
- 负载均衡器运行状况
Prometheus 查询示例:
警报阈值:
- 响应时间 > 500ms
- 错误率 > 1%
- CPU 使用率 > 80%
- 内存使用率 > 85%
- 磁盘使用率 > 90%
稀有度: 常见 难度: 中等
15. 如何集中来自多个服务器的日志?
答案: 集中式日志记录架构:
常用技术栈 (ELK):
- Elasticsearch: 存储和索引日志
- Logstash/Fluentd: 收集和处理日志
- Kibana: 可视化和搜索日志
Filebeat 配置示例:
最佳实践:
- 使用结构化日志记录 (JSON)
- 包含关联 ID
- 设置保留策略
- 有策略地建立索引
- 监控日志量
稀有度: 常见 难度: 中等
Kubernetes 基础
16. 什么是 Kubernetes,它的基本组件是什么?
答案: Kubernetes 是一个容器编排平台,可以自动部署、扩展和管理容器化应用程序。
基本组件:
控制平面:
- API 服务器: 所有命令的入口点
- etcd: 用于集群数据的键值存储
- 调度器: 将 pod 分配给节点
- 控制器管理器: 维护所需状态
工作节点:
- kubelet: 管理节点上的 pod
- kube-proxy: 网络路由
- 容器运行时: 通过 containerd 或 CRI-O 等 CRI 运行时运行容器
基本 Kubernetes 对象:
1. Pod:
2. Deployment:
3. Service:
常用 kubectl 命令:
稀有度: 非常常见 难度: 简单
配置管理
17. 解释一下 Ansible 基础知识并编写一个简单的 playbook。
答案: Ansible 是一种无代理配置管理工具,它使用 SSH 来配置服务器。
关键概念:
- 清单: 要管理的服务器列表
- Playbook: 定义任务的 YAML 文件
- 模块: 可重用的工作单元
- 角色: 有组织的任务集合
清单文件:
简单 Playbook:
模板示例:
运行 Playbook:
Ansible 角色结构:
使用角色:
Ad-hoc 命令:
稀有度: 常见 难度: 中等
脚本编写 & 自动化
18. 编写一个 bash 脚本来自动化一个常见的 DevOps 任务。
答案: Bash 脚本编写对于 DevOps 中的自动化至关重要。
示例 1:备份脚本
示例 2:运行状况检查脚本
示例 3:部署脚本
面试中不一定需要展示完整脚本。更重要的是说明错误处理、退出码、日志记录,以及如何在安全环境中测试自动化。
出现频率: 非常常见
难度: 中等
总结
准备一个小型端到端项目:Git 仓库、测试、CI workflow、Dockerfile、简单部署环境,以及一些日志或指标。对初级岗位来说,能清楚说明安全排障步骤,比机械背诵命令更有价值。


