🔥 2026年最全DevOps面试题整理(建议收藏)

工欲善其事,必先利其器。这份面试题涵盖DevOps核心知识点,助你拿下理想Offer!

📋 目录

  1. DevOps基础概念
  2. Linux基础
  3. Shell脚本
  4. Git版本控制
  5. CI/CD持续集成
  6. Docker容器
  7. Kubernetes容器编排
  8. 配置管理Ansible
  9. 监控与日志
  10. 云服务与Terraform

1️⃣ DevOps基础概念

Q1: 什么是DevOps?核心理念是什么?

DevOps = Development + Operations,是一种强调协作、自动化、持续交付的软件开发方法论。

核心理念(CALMS模型):

  • Culture - 文化:打破开发与运维之间的壁垒
  • Automation - 自动化:自动化一切可自动化的流程
  • Lean - 精益:消除浪费,优化流程
  • Measurement - 度量:数据驱动决策
  • Sharing - 分享:知识共享与持续反馈

Q2: 什么是CI/CD?

CI (持续集成):频繁将代码合并到主干,每次合并自动执行构建和测试。

CD (持续交付/部署)

  • 持续交付:代码随时可部署,但需要手动审批
  • 持续部署:代码自动部署到生产环境,无需人工干预

Q3: 蓝绿部署 vs 金丝雀发布

蓝绿部署:维护两套环境,通过负载均衡器切换流量,回滚快但成本高。

金丝雀发布:先将小部分流量切到新版本,逐步增加,风险可控。


2️⃣ Linux基础

Q4: 查看系统资源

# CPU和内存
top / htop
free -h
lscpu

# 磁盘
df -h
du -sh *

# 网络
netstat -tulnp
ss -tulnp

Q5: 进程管理

# 查看进程
ps aux
ps -ef
pstree

# 终止进程
kill PID
kill -9 PID
pkill 进程名

# 服务管理
systemctl start/stop/restart/status 服务名

Q6: 文件权限

# 权限格式: rwxrwxrwx (所有者/组/其他)
# r=4, w=2, x=1

chmod 755 file.sh    # rwxr-xr-x
chmod 644 file.txt   # rw-r--r--
chmod +x script.sh   # 添加执行权限
chown user:group file

3️⃣ Shell脚本

Q7: 变量和条件判断

#!/bin/bash

# 变量
NAME="DevOps"
echo $NAME

# 条件判断
if [ $a -eq $b ]; then
    echo "相等"
elif [ $a -gt $b ]; then
    echo "a大于b"
else
    echo "a小于b"
fi

# 文件判断
if [ -f /path/to/file ]; then
    echo "文件存在"
fi

Q8: 循环语句

# for循环
for i in 1 2 3 4 5; do
    echo "Number: $i"
done

for file in *.txt; do
    echo "Processing: $file"
done

# while循环
counter=0
while [ $counter -lt 5 ]; do
    echo "Counter: $counter"
    counter=$((counter + 1))
done

4️⃣ Git版本控制

Q9: Git基本操作

# 初始化和克隆
git init
git clone [url]

# 基本操作
git add [file]
git commit -m "message"
git push origin main
git pull

# 分支管理
git branch              # 查看分支
git branch [name]       # 创建分支
git checkout [name]     # 切换分支
git checkout -b [name]  # 创建并切换
git merge [branch]      # 合并分支

Q10: Git撤销操作

# 撤销工作区修改
git checkout -- [file]
git restore [file]

# 撤销暂存区
git reset HEAD [file]

# 回退版本
git reset --soft HEAD~1   # 软回退,保留修改
git reset --hard HEAD~1   # 硬回退,丢弃修改

# 撤销已推送的提交
git revert [commit_hash]

5️⃣ CI/CD

Q11: GitHub Actions示例

name: CI/CD Pipeline

on:
  push:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm test
      - run: npm run build

Q12: Jenkins Pipeline示例

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'mvn clean package'
            }
        }
        stage('Test') {
            steps {
                sh 'mvn test'
            }
        }
        stage('Deploy') {
            steps {
                sh 'kubectl apply -f k8s/'
            }
        }
    }
}

6️⃣ Docker容器

Q13: Docker常用命令

# 镜像操作
docker images
docker pull nginx:latest
docker rmi nginx:latest
docker build -t myapp:v1 .

# 容器操作
docker ps                # 运行中的容器
docker ps -a             # 所有容器
docker run -d -p 80:80 nginx
docker stop/start/restart [容器]
docker rm [容器]
docker logs -f [容器]
docker exec -it [容器] bash

Q14: Dockerfile最佳实践

# 多阶段构建
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
CMD ["node", "dist/main.js"]

7️⃣ Kubernetes

Q15: K8s核心概念

  • Pod:最小部署单元,包含一个或多个容器
  • Deployment:管理Pod副本数量,支持滚动更新
  • Service:为Pod提供稳定的网络访问入口
  • ConfigMap/Secret:存储配置和敏感信息
  • Namespace:资源隔离

Q16: kubectl常用命令

# 查看资源
kubectl get pods/services/deployments
kubectl get pods -o wide
kubectl describe pod [name]

# 应用配置
kubectl apply -f deployment.yaml
kubectl delete -f deployment.yaml

# 调试
kubectl logs -f [pod]
kubectl exec -it [pod] -- /bin/sh

# 扩缩容
kubectl scale deployment [name] --replicas=3

8️⃣ Ansible配置管理

Q17: Ansible Playbook示例

---
- name: 配置Web服务器
  hosts: webservers
  become: yes
  tasks:
    - name: 安装Nginx
      apt:
        name: nginx
        state: present
        
    - name: 启动Nginx
      service:
        name: nginx
        state: started
        enabled: yes
        
    - name: 复制配置文件
      template:
        src: nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify: 重启Nginx
      
  handlers:
    - name: 重启Nginx
      service:
        name: nginx
        state: restarted

9️⃣ 监控与日志

Q18: Prometheus告警规则

groups:
  - name: 基础告警
    rules:
      - alert: 高CPU使用率
        expr: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "CPU使用率超过80%"
          
      - alert: 磁盘空间不足
        expr: (node_filesystem_avail_bytes / node_filesystem_size_bytes) * 100 < 10
        for: 5m
        labels:
          severity: critical

🔟 Terraform

Q19: Terraform基础

# 工作流程
terraform init      # 初始化
terraform plan      # 预览
terraform apply     # 执行
terraform destroy   # 销毁

Q20: Terraform配置示例

provider "aws" {
  region = "ap-northeast-1"
}

resource "aws_instance" "web" {
  ami           = "ami-xxx"
  instance_type = "t2.micro"
  
  tags = {
    Name = "web-server"
  }
}

output "public_ip" {
  value = aws_instance.web.public_ip
}

🎯 总结

DevOps面试核心知识点:

  • 基础:Linux、Shell、Git
  • CI/CD:Jenkins、GitHub Actions、GitLab CI
  • 容器:Docker、Kubernetes
  • IaC:Terraform、Ansible
  • 监控:Prometheus、Grafana、ELK

💡 建议收藏本文,面试前快速复习!

发表回复

后才能评论