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 (部署方案) |