跳转至

Ch15 生产软件工程 · 阶段测试题 (25 题)

测试目标: 全面考察 Ch15 五节: Linux(§01) / Git(§02) / 代码设计(§03) / 测试(§04) / DevOps(§05) 难度分布: ★ 基础 / ★★ 中等 / ★★★ 拔高 / ⭐⭐⭐⭐ 竞赛


Part A 选择题 (10 题, 每题 3 分)

A1 (★★)

题目: chmod 644 file 权限含义? - A) owner rwx, group r-, other - - B) owner rw-, group r--, other r-- - C) owner rwx, group r-x, other r-x - D) owner r--, group -w-, other -w-

答案: B


A2 (★★★)

题目: git rebase 与 git merge 的核心区别? - A) rebase 删除分支 - B) rebase 重放 commit, merge 保留分支结构 - C) merge 删除分支 - D) merge 重放 commit

答案: B


A3 (★★)

题目: Docker volume 用途? - A) 镜像打包 - B) 数据持久化 - C) 网络隔离 - D) CPU 限制

答案: B


A4 (★★★)

题目: K8s Pod 是什么? - A) 单个容器 - B) 1+ 容器共享网络/存储 - C) 节点 - D) 服务

答案: B


A5 (★★)

题目: pytest 默认发现测试的命名规则? - A) _test.py - B) test_*.py + test_* 函数 - C) *_spec.py - D) *.test

答案: B


A6 (★★★)

题目: SOLID 原则的 O 指? - A) Open/Closed - B) Object-Oriented - C) Override - D) Optimized

答案: A


A7 (★★)

题目: FastAPI 与 Flask 核心区别? - A) FastAPI 同步, Flask 异步 - B) FastAPI 异步原生 + 类型提示, Flask 同步 - C) 都是同步 - D) 都是异步

答案: B


A8 (★★★)

题目: GitOps 核心思想? - A) 手动部署 - B) Git 是单一真相, 部署自动同步 - C) 只用 GitLab - D) 不用 CI

答案: B


A9 (★★)

题目: vLLM 是什么? - A) 向量数据库 - B) 高吞吐 LLM 推理引擎 - C) 训练框架 - D) 数据集

答案: B


A10 (★★★)

题目: git reset --hard HEAD^ 后果? - A) 创建新 commit - B) 撤销最近 commit, 不可恢复 - C) 推到远程 - D) 创建分支

答案: B


Part B 简答题 (8 题, 每题 5 分)

B1 (★★★)

题目: Docker 与 VM 核心区别?

要点: - 容器共享 OS 内核, 启动快 (秒级) - VM 自带内核, 启动慢 (分钟级) - 容器资源占用少, VM 隔离强


B2 (★★★)

题目: 解释 CI/CD 流程。

要点: - CI: 自动化测试 + 集成 - CD: 自动部署到 staging/prod - 工具: GitHub Actions, Jenkins, GitLab CI


B3 (★★★)

题目: K8s 三件套 (Pod / Deployment / Service) 的关系。

要点: - Pod: 容器组 - Deployment: 管理 Pod 副本 - Service: 暴露 Pod 给外部


B4 (★★★)

题目: 单元测试与集成测试取舍。

要点: - 单测: 速度快, 隔离, 适合算法 - 集成: 慢, 真实, 适合端到端


B5 (★★★)

题目: SOLID 五原则简述。

要点: - S: 单一职责 - O: 开闭 (扩展开放, 修改关闭) - L: 里氏替换 - I: 接口隔离 - D: 依赖倒置


B6 (★★★)

题目: LLM 推理服务的关键组件。

要点: - 推理引擎 (vLLM / TGI) - API 层 (FastAPI) - 容器化 (Docker) - 编排 (K8s) - 监控 (Prometheus)


B7 (★★★)

题目: 蓝绿部署 vs 金丝雀发布。

要点: - 蓝绿: 两套环境, 切换流量 - 金丝雀: 5% → 50% → 100%


B8 (★★★)

题目: Git LFS 用在什么场景?

要点: - 模型权重 (.pt / .bin) - 大数据集 - 避免 git 仓库膨胀


Part C 编程题 (5 题, 每题 10 分)

C1 (★★★)

题目: 用 pytest 写测试, 验证 LLM tokenize 函数。

def tokenize(text):
    return text.lower().split()

def test_tokenize():
    assert tokenize("Hello World") == ["hello", "world"]
    assert tokenize("") == []
    assert tokenize("  spaces  ") == ["spaces"]

C2 (★★★)

题目: 写 Dockerfile 部署 FastAPI 服务。

FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

C3 (★★★)

题目: 写 GitHub Actions CI 跑 pytest。

name: CI
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-python@v5
      with:
        python-version: '3.11'
        cache: 'pip'
    - run: pip install -r requirements.txt
    - run: pytest --cov=src --cov-report=xml

C4 (★★★)

题目: 写 K8s Deployment + Service 部署 LLM 服务。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: llm-server
spec:
  replicas: 3
  selector:
    matchLabels:
      app: llm
  template:
    metadata:
      labels:
        app: llm
    spec:
      containers:
      - name: llm
        image: myregistry/llm:v1
        resources:
          limits:
            nvidia.com/gpu: 1
        ports:
        - containerPort: 8000
---
apiVersion: v1
kind: Service
metadata:
  name: llm-service
spec:
  selector:
    app: llm
  ports:
  - port: 80
    targetPort: 8000
  type: LoadBalancer

C5 (★★★)

题目: 写 FastAPI LLM 推理端点。

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Query(BaseModel):
    prompt: str
    max_tokens: int = 256

@app.post("/generate")
async def generate(q: Query):
    # 实际调 vLLM
    response = llm_engine.generate(q.prompt, q.max_tokens)
    return {"text": response}

@app.get("/health")
async def health():
    return {"status": "ok"}

Part D 综合题 (2 题, 每题 15 分)

D1 (⭐⭐⭐⭐)

题目: 设计一个 LLM 推理服务的完整部署方案: Docker + K8s + CI/CD + 监控。

要点: 1. Dockerfile 多阶段构建 2. K8s Deployment + HPA + Service 3. GitHub Actions CI (lint + test + build + push) 4. Prometheus + Grafana 监控 5. ArgoCD 自动同步


D2 (⭐⭐⭐⭐)

题目: 综述 2024 年 LLM 部署工具 (vLLM, TGI, SGLang, TensorRT-LLM)。

要点: - vLLM: PagedAttention, 易用 - TGI: HF 集成, Rust - SGLang: RadixAttention, 多轮 - TensorRT-LLM: NVIDIA 极致性能


评分标准

题型 题数 总分
选择 10 30
简答 8 40
编程 5 50
综合 2 30
合计 25 150

自测建议

目标 分数 行动
及格 75 复习 §01-§02, 默写 Linux + Git
良好 100 复习 §04-§05, 跑通编程 C1-C3
优秀 120 完成综合 D1-D2 (部署方案)