Files
zhuangang/catalog.json
T

6904 lines
154 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"schema_version": 1,
"generated_by": "tools/build_catalog.py",
"stacks": [
{
"stack": "agent-design",
"domain": "ai",
"title": "Agent 设计",
"index": "topics/ai/agent-design/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/ai/agent-design/examples/agent-patterns"
]
},
{
"stack": "agent-ops",
"domain": "ai",
"title": "Agent 评测与运维",
"index": "topics/ai/agent-ops/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/ai/agent-ops/examples/eval-gate"
]
},
{
"stack": "ai-coding",
"domain": "ai",
"title": "AI 编程工具与验证",
"index": "topics/ai/ai-coding/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/ai/ai-coding/examples/ai-workflow"
]
},
{
"stack": "function-calling",
"domain": "ai",
"title": "Function Calling 工具调用",
"index": "topics/ai/function-calling/index.md",
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 2,
"场景题": 2
},
"examples": [
"topics/ai/function-calling/examples/tool-loop"
]
},
{
"stack": "langchain",
"domain": "ai",
"title": "LangChain",
"index": "topics/ai/langchain/index.md",
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 2,
"场景题": 2
},
"examples": [
"topics/ai/langchain/examples/lc-basics"
]
},
{
"stack": "langgraph",
"domain": "ai",
"title": "LangGraph",
"index": "topics/ai/langgraph/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/ai/langgraph/examples/ticket-flow"
]
},
{
"stack": "llm-serving",
"domain": "ai",
"title": "模型侧基础(了解级)",
"index": "topics/ai/llm-serving/index.md",
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/ai/llm-serving/examples/model-router"
]
},
{
"stack": "lowcode",
"domain": "ai",
"title": "低代码 AI 平台(Dify / Coze)",
"index": "topics/ai/lowcode/index.md",
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 2,
"场景题": 2
},
"examples": [
"topics/ai/lowcode/examples/dify-tool-api"
]
},
{
"stack": "mcp",
"domain": "ai",
"title": "MCP 模型上下文协议",
"index": "topics/ai/mcp/index.md",
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 2,
"场景题": 2
},
"examples": [
"topics/ai/mcp/examples/kb-server"
]
},
{
"stack": "prompt-engineering",
"domain": "ai",
"title": "提示词与上下文工程",
"index": "topics/ai/prompt-engineering/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/ai/prompt-engineering/examples/prompt-kit"
]
},
{
"stack": "rag",
"domain": "ai",
"title": "RAG 检索增强生成",
"index": "topics/ai/rag/index.md",
"lessons": 3,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
},
"examples": [
"topics/ai/rag/examples/mini-rag"
]
},
{
"stack": "vector-db",
"domain": "ai",
"title": "向量数据库",
"index": "topics/ai/vector-db/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/ai/vector-db/examples/vector-stores"
]
},
{
"stack": "data-pipeline",
"domain": "backend",
"title": "数据管道与第三方接口对接",
"index": "topics/backend/data-pipeline/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "elasticsearch",
"domain": "backend",
"title": "Elasticsearch",
"index": "topics/backend/elasticsearch/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "gin",
"domain": "backend",
"title": "Gin Web 框架",
"index": "topics/backend/gin/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
},
"examples": [
"topics/backend/gin/examples/unified-api"
]
},
{
"stack": "go",
"domain": "backend",
"title": "Go 语言",
"index": "topics/backend/go/index.md",
"lessons": 3,
"scenarios": 1,
"interview_questions": {
"基础": 5,
"进阶": 4,
"场景题": 3
},
"examples": [
"topics/backend/go/examples/batch-fetch"
]
},
{
"stack": "grpc-microservices",
"domain": "backend",
"title": "gRPC 与微服务",
"index": "topics/backend/grpc-microservices/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
},
"examples": [
"topics/backend/grpc-microservices/examples/grpc-user",
"topics/backend/grpc-microservices/examples/resilience"
]
},
{
"stack": "java-spring",
"domain": "backend",
"title": "Java / Spring Boot(了解级)",
"index": "topics/backend/java-spring/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "mongodb",
"domain": "backend",
"title": "MongoDB",
"index": "topics/backend/mongodb/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "mq",
"domain": "backend",
"title": "消息队列(RabbitMQ / Kafka)",
"index": "topics/backend/mq/index.md",
"lessons": 3,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
},
"examples": [
"topics/backend/mq/examples/delay-cancel",
"topics/backend/mq/examples/outbox"
]
},
{
"stack": "mysql",
"domain": "backend",
"title": "MySQL",
"index": "topics/backend/mysql/index.md",
"lessons": 3,
"scenarios": 1,
"interview_questions": {
"基础": 5,
"进阶": 4,
"场景题": 3
},
"examples": [
"topics/backend/mysql/examples/deep-pagination"
]
},
{
"stack": "nodejs",
"domain": "backend",
"title": "Node.js 后端(Express / NestJS)",
"index": "topics/backend/nodejs/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "postgresql",
"domain": "backend",
"title": "PostgreSQL",
"index": "topics/backend/postgresql/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 5,
"进阶": 4,
"场景题": 3
},
"examples": [
"topics/backend/postgresql/examples/order-state"
]
},
{
"stack": "redis",
"domain": "backend",
"title": "Redis",
"index": "topics/backend/redis/index.md",
"lessons": 3,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
},
"examples": [
"topics/backend/redis/examples/stock-lock-ratelimit"
]
},
{
"stack": "algorithms",
"domain": "cs",
"title": "数据结构与算法(面试)",
"index": "topics/cs/algorithms/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "network-os",
"domain": "cs",
"title": "网络与操作系统基础",
"index": "topics/cs/network-os/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "web-security",
"domain": "cs",
"title": "Web 安全",
"index": "topics/cs/web-security/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "cicd",
"domain": "devops",
"title": "CI/CD",
"index": "topics/devops/cicd/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 3
},
"examples": [
"topics/devops/cicd/examples/pipeline"
]
},
{
"stack": "docker",
"domain": "devops",
"title": "Docker 与 Compose",
"index": "topics/devops/docker/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
},
"examples": [
"topics/devops/docker/examples/go-api-compose"
]
},
{
"stack": "git",
"domain": "devops",
"title": "Git",
"index": "topics/devops/git/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
},
"examples": [
"topics/devops/git/examples/git-lab"
]
},
{
"stack": "k8s",
"domain": "devops",
"title": "Kubernetes 基础",
"index": "topics/devops/k8s/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "linux",
"domain": "devops",
"title": "Linux 运维基础",
"index": "topics/devops/linux/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
},
"examples": [
"topics/devops/linux/examples/log-analysis"
]
},
{
"stack": "nginx",
"domain": "devops",
"title": "Nginx",
"index": "topics/devops/nginx/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
},
"examples": [
"topics/devops/nginx/examples/gateway"
]
},
{
"stack": "fe-testing-perf",
"domain": "frontend",
"title": "前端测试与性能",
"index": "topics/frontend/fe-testing-perf/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "react",
"domain": "frontend",
"title": "React",
"index": "topics/frontend/react/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "ssr",
"domain": "frontend",
"title": "SSR(Nuxt / Next.js)",
"index": "topics/frontend/ssr/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "typescript",
"domain": "frontend",
"title": "TypeScript",
"index": "topics/frontend/typescript/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "vite",
"domain": "frontend",
"title": "Vite",
"index": "topics/frontend/vite/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "vue",
"domain": "frontend",
"title": "Vue 3 + Pinia + Router",
"index": "topics/frontend/vue/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "webpack",
"domain": "frontend",
"title": "Webpack",
"index": "topics/frontend/webpack/index.md",
"lessons": 0,
"scenarios": 0,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
},
"examples": []
},
{
"stack": "asyncio",
"domain": "python",
"title": "asyncio 异步编程",
"index": "topics/python/asyncio/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
},
"examples": [
"topics/python/asyncio/examples/fanout"
]
},
{
"stack": "fastapi",
"domain": "python",
"title": "FastAPI",
"index": "topics/python/fastapi/index.md",
"lessons": 3,
"scenarios": 1,
"interview_questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
},
"examples": [
"topics/python/fastapi/examples/chat-api"
]
},
{
"stack": "python",
"domain": "python",
"title": "Python 语言",
"index": "topics/python/python/index.md",
"lessons": 3,
"scenarios": 1,
"interview_questions": {
"基础": 5,
"进阶": 4,
"场景题": 3
},
"examples": [
"topics/python/python/examples/reconcile"
]
}
],
"items": [
{
"id": "ai.agent-design.context-skills-multiagent",
"title": "上下文工程、Skills、多 Agent 和 A2A",
"type": "lesson",
"domain": "ai",
"stack": [
"agent-design"
],
"tags": [
"上下文工程",
"Context Engineering",
"Skills",
"多 Agent",
"Supervisor",
"Handoff",
"A2A"
],
"level": "advanced",
"prerequisites": [
"ai.agent-design.react-planning"
],
"related": [
"ai.prompt-engineering.index",
"ai.mcp.protocol-server",
"ai.ai-coding.index",
"ai.agent-design.interview"
],
"est_hours": 3.5,
"week": [
11,
13
],
"order": 2,
"path": "topics/ai/agent-design/02-context-skills-multiagent.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.agent-design.index",
"title": "Agent 设计",
"type": "index",
"domain": "ai",
"stack": [
"agent-design"
],
"tags": [
"ReAct",
"规划",
"上下文工程",
"Skills",
"多 Agent",
"A2A",
"Agentic RAG"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
10,
11,
13
],
"order": null,
"path": "topics/ai/agent-design/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "ai.agent-design.interview",
"title": "Agent 设计面试题",
"type": "interview",
"domain": "ai",
"stack": [
"agent-design"
],
"tags": [
"ReAct",
"规划",
"上下文工程",
"多 Agent",
"A2A",
"面试"
],
"level": "advanced",
"prerequisites": [],
"related": [
"ai.agent-design.react-planning",
"ai.agent-design.context-skills-multiagent"
],
"est_hours": null,
"week": [
11,
13,
16
],
"order": null,
"path": "topics/ai/agent-design/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "ai.agent-design.react-planning",
"title": "Agent 推理模式:ReAct、Plan-and-Execute、反思和 Agentic RAG",
"type": "lesson",
"domain": "ai",
"stack": [
"agent-design"
],
"tags": [
"ReAct",
"Plan-and-Execute",
"规划",
"反思",
"Agentic RAG",
"工作流 vs Agent"
],
"level": "intermediate",
"prerequisites": [
"ai.function-calling.tool-loop"
],
"related": [
"ai.agent-design.context-skills-multiagent",
"ai.langgraph.state-graph",
"ai.agent-design.interview"
],
"est_hours": 3,
"week": [
10,
11
],
"order": 1,
"path": "topics/ai/agent-design/01-react-planning.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.agent-design.scenario.report-agent",
"title": "运营报表 Agent:规划、只读 SQL 工具、结构化输出和任务进度",
"type": "scenario",
"domain": "ai",
"stack": [
"agent-design",
"langgraph",
"postgresql",
"fastapi"
],
"tags": [
"报表 Agent",
"Text-to-SQL",
"规划",
"结构化输出",
"任务状态",
"流式进度"
],
"level": "advanced",
"prerequisites": [
"ai.agent-design.react-planning"
],
"related": [
"ai.agent-design.interview",
"ai.langgraph.persistence-hitl",
"ai.agent-ops.observability-cost"
],
"est_hours": 3,
"week": [
11,
13
],
"order": null,
"path": "topics/ai/agent-design/scenarios/report-agent.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "ai.agent-ops.eval-quality-gate",
"title": "Agent 评测和质量门禁:评测集、打分方法、幻觉防护、Bad Case 分析",
"type": "lesson",
"domain": "ai",
"stack": [
"agent-ops"
],
"tags": [
"Agent 评测",
"评测集",
"LLM-as-judge",
"幻觉",
"质量门禁",
"Bad Case",
"回归测试"
],
"level": "advanced",
"prerequisites": [
"ai.rag.generation-eval",
"ai.function-calling.tool-loop"
],
"related": [
"ai.agent-ops.observability-cost",
"ai.agent-ops.scenario.agent-quality-gate",
"ai.agent-ops.interview"
],
"est_hours": 4,
"week": [
13
],
"order": 1,
"path": "topics/ai/agent-ops/01-eval-quality-gate.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.agent-ops.index",
"title": "Agent 评测与运维",
"type": "index",
"domain": "ai",
"stack": [
"agent-ops"
],
"tags": [
"评测",
"质量门禁",
"幻觉防护",
"Bad Case",
"可观测性",
"成本",
"记忆"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
12,
13
],
"order": null,
"path": "topics/ai/agent-ops/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "ai.agent-ops.interview",
"title": "Agent 评测与运维面试题",
"type": "interview",
"domain": "ai",
"stack": [
"agent-ops"
],
"tags": [
"评测",
"幻觉",
"可观测性",
"成本",
"面试"
],
"level": "advanced",
"prerequisites": [],
"related": [
"ai.agent-ops.eval-quality-gate",
"ai.agent-ops.observability-cost"
],
"est_hours": null,
"week": [
13,
16
],
"order": null,
"path": "topics/ai/agent-ops/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "ai.agent-ops.observability-cost",
"title": "Agent 可观测性、成本和延迟:链路追踪、记忆管理、缓存和降级",
"type": "lesson",
"domain": "ai",
"stack": [
"agent-ops"
],
"tags": [
"可观测性",
"链路追踪",
"OpenTelemetry",
"LangSmith",
"Langfuse",
"成本",
"延迟",
"记忆",
"缓存"
],
"level": "advanced",
"prerequisites": [
"ai.agent-ops.eval-quality-gate"
],
"related": [
"ai.llm-serving.index",
"ai.agent-ops.interview"
],
"est_hours": 3,
"week": [
13
],
"order": 2,
"path": "topics/ai/agent-ops/02-observability-cost.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.agent-ops.scenario.agent-quality-gate",
"title": "客服 Agent 上线流程:评测集、质量门禁、灰度和线上 Bad Case 闭环",
"type": "scenario",
"domain": "ai",
"stack": [
"agent-ops",
"cicd",
"langgraph"
],
"tags": [
"质量门禁",
"灰度发布",
"Bad Case",
"评测集",
"线上监控"
],
"level": "advanced",
"prerequisites": [
"ai.agent-ops.eval-quality-gate"
],
"related": [
"ai.agent-ops.interview",
"devops.cicd.release-rollback"
],
"est_hours": 3,
"week": [
13
],
"order": null,
"path": "topics/ai/agent-ops/scenarios/agent-quality-gate.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "ai.ai-coding.index",
"title": "AI 编程工具与验证",
"type": "index",
"domain": "ai",
"stack": [
"ai-coding"
],
"tags": [
"AI 编程",
"Claude Code",
"Cursor",
"Codex",
"Skills",
"规则文件",
"验证",
"会话记录"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
1,
8,
10,
15
],
"order": null,
"path": "topics/ai/ai-coding/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "ai.ai-coding.interview",
"title": "AI 编程工具面试题",
"type": "interview",
"domain": "ai",
"stack": [
"ai-coding"
],
"tags": [
"AI 编程",
"Cursor",
"Claude Code",
"验证",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"ai.ai-coding.workflow-rules-skills",
"ai.ai-coding.verify-evidence"
],
"est_hours": null,
"week": [
15,
16
],
"order": null,
"path": "topics/ai/ai-coding/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "ai.ai-coding.scenario.ai-assisted-feature",
"title": "团队引入 AI 编程:从“各用各的”到可验证、可复用的工作流",
"type": "scenario",
"domain": "ai",
"stack": [
"ai-coding",
"cicd",
"git"
],
"tags": [
"AI 编程规范",
"规则文件",
"Skills",
"代码审查",
"CI",
"数据安全"
],
"level": "intermediate",
"prerequisites": [
"ai.ai-coding.verify-evidence"
],
"related": [
"ai.ai-coding.interview",
"devops.git.index"
],
"est_hours": 2,
"week": [
8,
15
],
"order": null,
"path": "topics/ai/ai-coding/scenarios/ai-assisted-feature.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "ai.ai-coding.verify-evidence",
"title": "验证 AI 产出:测试、审查清单、真实环境验证和会话记录作为作品证据",
"type": "lesson",
"domain": "ai",
"stack": [
"ai-coding"
],
"tags": [
"AI 产出验证",
"代码审查",
"测试",
"会话记录",
"作品集",
"脱敏"
],
"level": "intermediate",
"prerequisites": [
"ai.ai-coding.workflow-rules-skills"
],
"related": [
"ai.ai-coding.scenario.ai-assisted-feature",
"devops.cicd.index",
"ai.ai-coding.interview"
],
"est_hours": 2.5,
"week": [
8,
15
],
"order": 2,
"path": "topics/ai/ai-coding/02-verify-evidence.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.ai-coding.workflow-rules-skills",
"title": "AI 编程工具工作流:Claude Code / Cursor / Codex、规则文件、Skills 和 MCP",
"type": "lesson",
"domain": "ai",
"stack": [
"ai-coding"
],
"tags": [
"AI 编程",
"Claude Code",
"Cursor",
"Codex",
"AGENTS.md",
"规则文件",
"Skills",
"MCP",
"Vibe coding"
],
"level": "basic",
"prerequisites": [],
"related": [
"ai.ai-coding.verify-evidence",
"ai.agent-design.context-skills-multiagent",
"ai.mcp.protocol-server",
"ai.ai-coding.interview"
],
"est_hours": 2.5,
"week": [
1,
8,
10
],
"order": 1,
"path": "topics/ai/ai-coding/01-workflow-rules-skills.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.function-calling.index",
"title": "Function Calling 工具调用",
"type": "index",
"domain": "ai",
"stack": [
"function-calling"
],
"tags": [
"Function Calling",
"Tool Calling",
"Agent"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
10
],
"order": null,
"path": "topics/ai/function-calling/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "ai.function-calling.interview",
"title": "Function Calling 面试题",
"type": "interview",
"domain": "ai",
"stack": [
"function-calling"
],
"tags": [
"Function Calling",
"工具调用",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"ai.function-calling.tool-loop"
],
"est_hours": null,
"week": [
10,
16
],
"order": null,
"path": "topics/ai/function-calling/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 2,
"场景题": 2
}
},
{
"id": "ai.function-calling.scenario.safe-business-tools",
"title": "让 Agent 安全地调用内部业务接口:权限、确认、幂等和审计",
"type": "scenario",
"domain": "ai",
"stack": [
"function-calling",
"fastapi"
],
"tags": [
"工具权限",
"人工确认",
"幂等",
"审计日志",
"限流",
"提示词注入"
],
"level": "advanced",
"prerequisites": [
"ai.function-calling.tool-loop"
],
"related": [
"ai.function-calling.interview",
"ai.prompt-engineering.index",
"ai.mcp.index"
],
"est_hours": 2.5,
"week": [
10
],
"order": null,
"path": "topics/ai/function-calling/scenarios/safe-business-tools.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "ai.function-calling.tool-loop",
"title": "工具调用原理:工具定义、调用循环、参数校验、并行调用和错误回传",
"type": "lesson",
"domain": "ai",
"stack": [
"function-calling"
],
"tags": [
"Function Calling",
"Tool Calling",
"JSON Schema",
"调用循环",
"参数校验"
],
"level": "intermediate",
"prerequisites": [
"python.python.typing-errors-testing"
],
"related": [
"ai.mcp.index",
"ai.langgraph.state-graph",
"ai.function-calling.interview"
],
"est_hours": 3,
"week": [
10
],
"order": 1,
"path": "topics/ai/function-calling/01-tool-loop.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.langchain.index",
"title": "LangChain",
"type": "index",
"domain": "ai",
"stack": [
"langchain"
],
"tags": [
"LangChain",
"LCEL",
"结构化输出",
"Agent"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
6,
11
],
"order": null,
"path": "topics/ai/langchain/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "ai.langchain.interview",
"title": "LangChain 面试题",
"type": "interview",
"domain": "ai",
"stack": [
"langchain"
],
"tags": [
"LangChain",
"LCEL",
"结构化输出",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"ai.langchain.lcel-structured-agent"
],
"est_hours": null,
"week": [
6,
11,
16
],
"order": null,
"path": "topics/ai/langchain/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 2,
"场景题": 2
}
},
{
"id": "ai.langchain.lcel-structured-agent",
"title": "LangChain 1.x:模型和消息、LCEL、结构化输出、create_agent 和中间件",
"type": "lesson",
"domain": "ai",
"stack": [
"langchain"
],
"tags": [
"LangChain",
"LCEL",
"init_chat_model",
"结构化输出",
"create_agent",
"middleware",
"重试",
"备用模型"
],
"level": "intermediate",
"prerequisites": [
"ai.function-calling.tool-loop"
],
"related": [
"ai.langgraph.state-graph",
"ai.langchain.scenario.ticket-triage",
"ai.langchain.interview"
],
"est_hours": 3,
"week": [
6,
11
],
"order": 1,
"path": "topics/ai/langchain/01-lcel-structured-agent.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.langchain.scenario.ticket-triage",
"title": "工单自动分类服务:结构化输出、批处理、重试降级和人工复核",
"type": "scenario",
"domain": "ai",
"stack": [
"langchain",
"fastapi",
"postgresql"
],
"tags": [
"结构化输出",
"批处理",
"重试",
"降级",
"人工复核",
"成本"
],
"level": "intermediate",
"prerequisites": [
"ai.langchain.lcel-structured-agent"
],
"related": [
"ai.langchain.interview",
"ai.llm-serving.index"
],
"est_hours": 2.5,
"week": [
6,
11
],
"order": null,
"path": "topics/ai/langchain/scenarios/ticket-triage.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "ai.langgraph.index",
"title": "LangGraph",
"type": "index",
"domain": "ai",
"stack": [
"langgraph"
],
"tags": [
"LangGraph",
"状态图",
"检查点",
"人机协作"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
11,
12
],
"order": null,
"path": "topics/ai/langgraph/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "ai.langgraph.interview",
"title": "LangGraph 面试题",
"type": "interview",
"domain": "ai",
"stack": [
"langgraph"
],
"tags": [
"LangGraph",
"检查点",
"人机协作",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"ai.langgraph.state-graph",
"ai.langgraph.persistence-hitl"
],
"est_hours": null,
"week": [
11,
12,
16
],
"order": null,
"path": "topics/ai/langgraph/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "ai.langgraph.persistence-hitl",
"title": "检查点、人机协作和异常恢复:checkpointer、interrupt、RetryPolicy、任务状态",
"type": "lesson",
"domain": "ai",
"stack": [
"langgraph"
],
"tags": [
"checkpointer",
"thread_id",
"interrupt",
"Command",
"RetryPolicy",
"崩溃恢复",
"任务状态"
],
"level": "advanced",
"prerequisites": [
"ai.langgraph.state-graph"
],
"related": [
"ai.langgraph.scenario.refund-approval",
"ai.agent-ops.eval-quality-gate",
"ai.langgraph.interview"
],
"est_hours": 4,
"week": [
12
],
"order": 2,
"path": "topics/ai/langgraph/02-persistence-hitl.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.langgraph.scenario.refund-approval",
"title": "退款工单 Agent:人工审批、任务状态和崩溃恢复",
"type": "scenario",
"domain": "ai",
"stack": [
"langgraph",
"fastapi",
"postgresql"
],
"tags": [
"人机协作",
"审批流",
"任务状态",
"异常恢复",
"幂等",
"流式进度"
],
"level": "advanced",
"prerequisites": [
"ai.langgraph.persistence-hitl"
],
"related": [
"ai.langgraph.interview",
"ai.agent-ops.scenario.agent-quality-gate",
"backend.postgresql.scenario.order-state-audit"
],
"est_hours": 3,
"week": [
12
],
"order": null,
"path": "topics/ai/langgraph/scenarios/refund-approval.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "ai.langgraph.state-graph",
"title": "LangGraph 状态图:状态、节点、边、条件路由和流式输出",
"type": "lesson",
"domain": "ai",
"stack": [
"langgraph"
],
"tags": [
"LangGraph",
"StateGraph",
"reducer",
"条件边",
"流式输出",
"stream_mode"
],
"level": "intermediate",
"prerequisites": [
"ai.function-calling.tool-loop"
],
"related": [
"ai.langgraph.persistence-hitl",
"ai.agent-design.react-planning",
"ai.langgraph.interview"
],
"est_hours": 3,
"week": [
11
],
"order": 1,
"path": "topics/ai/langgraph/01-state-graph.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.llm-serving.index",
"title": "模型侧基础(了解级)",
"type": "index",
"domain": "ai",
"stack": [
"llm-serving"
],
"tags": [
"多模型路由",
"vLLM",
"LoRA",
"微调",
"模型网关"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
10,
13
],
"order": null,
"path": "topics/ai/llm-serving/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "ai.llm-serving.interview",
"title": "模型侧面试题(了解级)",
"type": "interview",
"domain": "ai",
"stack": [
"llm-serving"
],
"tags": [
"模型路由",
"vLLM",
"LoRA",
"微调",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"ai.llm-serving.routing-vllm-lora"
],
"est_hours": null,
"week": [
13,
16
],
"order": null,
"path": "topics/ai/llm-serving/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "ai.llm-serving.routing-vllm-lora",
"title": "模型侧基础:多模型接入和路由、vLLM 部署、LoRA / QLoRA 概念",
"type": "lesson",
"domain": "ai",
"stack": [
"llm-serving"
],
"tags": [
"多模型路由",
"OpenAI 兼容接口",
"降级",
"熔断",
"vLLM",
"量化",
"LoRA",
"QLoRA",
"微调"
],
"level": "intermediate",
"prerequisites": [
"python.asyncio.concurrency-control"
],
"related": [
"ai.agent-ops.observability-cost",
"ai.llm-serving.scenario.multi-provider-gateway",
"ai.llm-serving.interview"
],
"est_hours": 3,
"week": [
10,
13
],
"order": 1,
"path": "topics/ai/llm-serving/01-routing-vllm-lora.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.llm-serving.scenario.multi-provider-gateway",
"title": "公司级大模型网关:多厂商路由、配额、敏感数据走内网模型",
"type": "scenario",
"domain": "ai",
"stack": [
"llm-serving",
"fastapi",
"redis"
],
"tags": [
"模型网关",
"多模型路由",
"配额",
"熔断",
"降级",
"敏感数据",
"成本分摊"
],
"level": "advanced",
"prerequisites": [
"ai.llm-serving.routing-vllm-lora"
],
"related": [
"ai.llm-serving.interview",
"python.fastapi.index",
"backend.redis.lock-ratelimit"
],
"est_hours": 3,
"week": [
13,
14
],
"order": null,
"path": "topics/ai/llm-serving/scenarios/multi-provider-gateway.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "ai.lowcode.dify-coze",
"title": "Dify / Coze 低代码 AI 平台:工作流、知识库、自定义工具和与代码开发的分工",
"type": "lesson",
"domain": "ai",
"stack": [
"lowcode"
],
"tags": [
"Dify",
"Coze",
"低代码",
"工作流",
"知识库",
"自定义工具",
"OpenAPI"
],
"level": "basic",
"prerequisites": [
"ai.rag.pipeline-chunking"
],
"related": [
"ai.lowcode.scenario.poc-to-production",
"ai.function-calling.tool-loop",
"ai.lowcode.interview"
],
"est_hours": 2.5,
"week": [
13
],
"order": 1,
"path": "topics/ai/lowcode/01-dify-coze.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.lowcode.index",
"title": "低代码 AI 平台(Dify / Coze)",
"type": "index",
"domain": "ai",
"stack": [
"lowcode"
],
"tags": [
"Dify",
"Coze",
"低代码",
"工作流"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
13
],
"order": null,
"path": "topics/ai/lowcode/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "ai.lowcode.interview",
"title": "低代码 AI 平台面试题",
"type": "interview",
"domain": "ai",
"stack": [
"lowcode"
],
"tags": [
"Dify",
"Coze",
"低代码",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"ai.lowcode.dify-coze"
],
"est_hours": null,
"week": [
13,
16
],
"order": null,
"path": "topics/ai/lowcode/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 2,
"场景题": 2
}
},
{
"id": "ai.lowcode.scenario.poc-to-production",
"title": "从 Dify 原型到生产:哪些留在平台、哪些改成代码",
"type": "scenario",
"domain": "ai",
"stack": [
"lowcode",
"fastapi",
"rag"
],
"tags": [
"PoC",
"低代码",
"私有化部署",
"自定义工具",
"迁移",
"评测"
],
"level": "intermediate",
"prerequisites": [
"ai.lowcode.dify-coze"
],
"related": [
"ai.lowcode.interview",
"ai.agent-ops.scenario.agent-quality-gate"
],
"est_hours": 2,
"week": [
13
],
"order": null,
"path": "topics/ai/lowcode/scenarios/poc-to-production.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "ai.mcp.index",
"title": "MCP 模型上下文协议",
"type": "index",
"domain": "ai",
"stack": [
"mcp"
],
"tags": [
"MCP",
"工具",
"集成"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
10,
11
],
"order": null,
"path": "topics/ai/mcp/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "ai.mcp.interview",
"title": "MCP 面试题",
"type": "interview",
"domain": "ai",
"stack": [
"mcp"
],
"tags": [
"MCP",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"ai.mcp.protocol-server"
],
"est_hours": null,
"week": [
10,
11,
16
],
"order": null,
"path": "topics/ai/mcp/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 2,
"场景题": 2
}
},
{
"id": "ai.mcp.protocol-server",
"title": "MCP 协议和服务开发:tools / resources / prompts、传输方式、接入客户端",
"type": "lesson",
"domain": "ai",
"stack": [
"mcp"
],
"tags": [
"MCP",
"Model Context Protocol",
"tools",
"resources",
"prompts",
"stdio",
"Streamable HTTP"
],
"level": "intermediate",
"prerequisites": [
"ai.function-calling.tool-loop"
],
"related": [
"ai.mcp.scenario.internal-tools-gateway",
"ai.ai-coding.index",
"ai.mcp.interview"
],
"est_hours": 3,
"week": [
10,
11
],
"order": 1,
"path": "topics/ai/mcp/01-protocol-server.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.mcp.scenario.internal-tools-gateway",
"title": "企业内部 MCP 服务:统一接入、鉴权、审计和版本管理",
"type": "scenario",
"domain": "ai",
"stack": [
"mcp",
"fastapi",
"nginx"
],
"tags": [
"MCP",
"企业集成",
"鉴权",
"审计",
"工具治理",
"Streamable HTTP"
],
"level": "advanced",
"prerequisites": [
"ai.mcp.protocol-server"
],
"related": [
"ai.function-calling.scenario.safe-business-tools",
"ai.mcp.interview"
],
"est_hours": 2.5,
"week": [
10,
11
],
"order": null,
"path": "topics/ai/mcp/scenarios/internal-tools-gateway.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "ai.prompt-engineering.context-injection",
"title": "提示词注入和防护:直接注入、间接注入、输出校验和权限兜底",
"type": "lesson",
"domain": "ai",
"stack": [
"prompt-engineering"
],
"tags": [
"提示词注入",
"间接注入",
"越狱",
"输出校验",
"数据泄露",
"安全"
],
"level": "advanced",
"prerequisites": [
"ai.prompt-engineering.prompt-structured-output"
],
"related": [
"ai.function-calling.scenario.safe-business-tools",
"ai.agent-design.context-skills-multiagent",
"ai.prompt-engineering.interview"
],
"est_hours": 2.5,
"week": [
11,
13
],
"order": 2,
"path": "topics/ai/prompt-engineering/02-context-injection.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.prompt-engineering.index",
"title": "提示词与上下文工程",
"type": "index",
"domain": "ai",
"stack": [
"prompt-engineering"
],
"tags": [
"提示词",
"结构化输出",
"上下文工程",
"提示词注入"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
5,
11,
13
],
"order": null,
"path": "topics/ai/prompt-engineering/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "ai.prompt-engineering.interview",
"title": "提示词与上下文工程面试题",
"type": "interview",
"domain": "ai",
"stack": [
"prompt-engineering"
],
"tags": [
"提示词",
"结构化输出",
"提示词注入",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"ai.prompt-engineering.prompt-structured-output",
"ai.prompt-engineering.context-injection"
],
"est_hours": null,
"week": [
5,
13,
16
],
"order": null,
"path": "topics/ai/prompt-engineering/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "ai.prompt-engineering.prompt-structured-output",
"title": "提示词结构、少样本、结构化输出和提示词版本管理",
"type": "lesson",
"domain": "ai",
"stack": [
"prompt-engineering"
],
"tags": [
"提示词结构",
"少样本",
"Few-shot",
"思维链",
"结构化输出",
"JSON Schema",
"提示词版本"
],
"level": "basic",
"prerequisites": [],
"related": [
"ai.prompt-engineering.context-injection",
"ai.langchain.lcel-structured-agent",
"ai.prompt-engineering.interview"
],
"est_hours": 2.5,
"week": [
5
],
"order": 1,
"path": "topics/ai/prompt-engineering/01-prompt-structured-output.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.prompt-engineering.scenario.injection-defense",
"title": "读邮件的办公助手:间接提示词注入的多层防护",
"type": "scenario",
"domain": "ai",
"stack": [
"prompt-engineering",
"function-calling",
"agent-ops"
],
"tags": [
"间接注入",
"邮件助手",
"权限最小化",
"人工确认",
"输出校验",
"安全评测"
],
"level": "advanced",
"prerequisites": [
"ai.prompt-engineering.context-injection"
],
"related": [
"ai.prompt-engineering.interview",
"ai.function-calling.scenario.safe-business-tools"
],
"est_hours": 2.5,
"week": [
13
],
"order": null,
"path": "topics/ai/prompt-engineering/scenarios/injection-defense.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "ai.rag.generation-eval",
"title": "生成与评测:带引用的提示词、拒答、检索评测和答案评测",
"type": "lesson",
"domain": "ai",
"stack": [
"rag"
],
"tags": [
"提示词",
"引用",
"拒答",
"幻觉",
"Recall@k",
"MRR",
"评测集"
],
"level": "intermediate",
"prerequisites": [
"ai.rag.hybrid-rerank"
],
"related": [
"ai.rag.scenario.permission-aware-kb",
"ai.prompt-engineering.index",
"ai.agent-ops.index",
"ai.rag.interview"
],
"est_hours": 3,
"week": [
6
],
"order": 3,
"path": "topics/ai/rag/03-generation-eval.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.rag.hybrid-rerank",
"title": "检索优化:向量 + 关键词混合检索、RRF 融合、重排、查询改写",
"type": "lesson",
"domain": "ai",
"stack": [
"rag"
],
"tags": [
"混合检索",
"BM25",
"RRF",
"重排",
"rerank",
"查询改写"
],
"level": "intermediate",
"prerequisites": [
"ai.rag.pipeline-chunking"
],
"related": [
"ai.rag.generation-eval",
"ai.vector-db.ann-metrics",
"ai.rag.interview"
],
"est_hours": 3,
"week": [
6
],
"order": 2,
"path": "topics/ai/rag/02-hybrid-rerank.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.rag.index",
"title": "RAG 检索增强生成",
"type": "index",
"domain": "ai",
"stack": [
"rag"
],
"tags": [
"RAG",
"检索",
"知识库",
"评测"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
5,
6
],
"order": null,
"path": "topics/ai/rag/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "ai.rag.interview",
"title": "RAG 面试题",
"type": "interview",
"domain": "ai",
"stack": [
"rag"
],
"tags": [
"RAG",
"检索",
"评测",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"ai.rag.pipeline-chunking",
"ai.rag.hybrid-rerank",
"ai.rag.generation-eval"
],
"est_hours": null,
"week": [
5,
6,
16
],
"order": null,
"path": "topics/ai/rag/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
}
},
{
"id": "ai.rag.pipeline-chunking",
"title": "RAG 流水线和文档切分:加载、清洗、切分策略、元数据",
"type": "lesson",
"domain": "ai",
"stack": [
"rag"
],
"tags": [
"RAG",
"文档加载",
"切分",
"chunk",
"元数据",
"嵌入"
],
"level": "basic",
"prerequisites": [
"python.python.syntax-for-js"
],
"related": [
"ai.rag.hybrid-rerank",
"ai.vector-db.ann-metrics",
"ai.rag.interview"
],
"est_hours": 3,
"week": [
5
],
"order": 1,
"path": "topics/ai/rag/01-pipeline-chunking.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.rag.scenario.permission-aware-kb",
"title": "带权限的企业知识库问答:不同部门看到不同内容",
"type": "scenario",
"domain": "ai",
"stack": [
"rag",
"vector-db",
"elasticsearch",
"fastapi"
],
"tags": [
"企业知识库",
"权限过滤",
"文档解析",
"混合检索",
"重排",
"拒答",
"增量更新"
],
"level": "advanced",
"prerequisites": [
"ai.rag.generation-eval"
],
"related": [
"ai.rag.interview",
"ai.vector-db.scenario.multi-tenant-index",
"backend.elasticsearch.index"
],
"est_hours": 3,
"week": [
5,
6
],
"order": null,
"path": "topics/ai/rag/scenarios/permission-aware-kb.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "ai.vector-db.ann-metrics",
"title": "向量检索原理:距离度量、暴力检索、HNSW / IVF 近似索引",
"type": "lesson",
"domain": "ai",
"stack": [
"vector-db"
],
"tags": [
"向量检索",
"余弦相似度",
"内积",
"L2",
"HNSW",
"IVF",
"PQ",
"召回率"
],
"level": "basic",
"prerequisites": [
"ai.rag.pipeline-chunking"
],
"related": [
"ai.vector-db.selection-pgvector",
"ai.rag.hybrid-rerank",
"ai.vector-db.interview"
],
"est_hours": 2.5,
"week": [
5
],
"order": 1,
"path": "topics/ai/vector-db/01-ann-metrics.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "ai.vector-db.index",
"title": "向量数据库",
"type": "index",
"domain": "ai",
"stack": [
"vector-db"
],
"tags": [
"向量数据库",
"HNSW",
"pgvector",
"Chroma",
"Milvus"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
5,
6
],
"order": null,
"path": "topics/ai/vector-db/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "ai.vector-db.interview",
"title": "向量数据库面试题",
"type": "interview",
"domain": "ai",
"stack": [
"vector-db"
],
"tags": [
"向量数据库",
"HNSW",
"pgvector",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"ai.vector-db.ann-metrics",
"ai.vector-db.selection-pgvector",
"ai.rag.interview"
],
"est_hours": null,
"week": [
5,
6,
16
],
"order": null,
"path": "topics/ai/vector-db/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "ai.vector-db.scenario.multi-tenant-index",
"title": "多租户知识库的向量索引:隔离、过滤召回和增量更新",
"type": "scenario",
"domain": "ai",
"stack": [
"vector-db",
"postgresql"
],
"tags": [
"多租户",
"元数据过滤",
"增量更新",
"召回率",
"SaaS"
],
"level": "advanced",
"prerequisites": [
"ai.vector-db.selection-pgvector"
],
"related": [
"ai.rag.scenario.permission-aware-kb",
"ai.vector-db.interview"
],
"est_hours": 2.5,
"week": [
6
],
"order": null,
"path": "topics/ai/vector-db/scenarios/multi-tenant-index.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "ai.vector-db.selection-pgvector",
"title": "向量库选型和 pgvector 实战:Chroma / pgvector / Milvus / Elasticsearch",
"type": "lesson",
"domain": "ai",
"stack": [
"vector-db",
"postgresql"
],
"tags": [
"向量库选型",
"pgvector",
"Chroma",
"Milvus",
"Elasticsearch",
"元数据过滤"
],
"level": "intermediate",
"prerequisites": [
"ai.vector-db.ann-metrics"
],
"related": [
"ai.vector-db.scenario.multi-tenant-index",
"backend.postgresql.index",
"backend.elasticsearch.index"
],
"est_hours": 3,
"week": [
5,
6
],
"order": 2,
"path": "topics/ai/vector-db/02-selection-pgvector.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.data-pipeline.index",
"title": "数据管道与第三方接口对接",
"type": "index",
"domain": "backend",
"stack": [
"data-pipeline"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
14
],
"order": null,
"path": "topics/backend/data-pipeline/index.md",
"sections": []
},
{
"id": "backend.elasticsearch.index",
"title": "Elasticsearch",
"type": "index",
"domain": "backend",
"stack": [
"elasticsearch"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
6,
14
],
"order": null,
"path": "topics/backend/elasticsearch/index.md",
"sections": []
},
{
"id": "backend.gin.index",
"title": "Gin Web 框架",
"type": "index",
"domain": "backend",
"stack": [
"gin"
],
"tags": [
"Go",
"Gin",
"REST",
"中间件"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
1,
2,
3
],
"order": null,
"path": "topics/backend/gin/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "backend.gin.interview",
"title": "Gin 面试题",
"type": "interview",
"domain": "backend",
"stack": [
"gin"
],
"tags": [
"Gin",
"Web",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"backend.gin.routing-binding",
"backend.gin.middleware-auth",
"backend.gin.scenario.unified-api-response"
],
"est_hours": null,
"week": [
1,
2,
3,
16
],
"order": null,
"path": "topics/backend/gin/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
}
},
{
"id": "backend.gin.middleware-auth",
"title": "中间件、JWT 鉴权和统一错误处理",
"type": "lesson",
"domain": "backend",
"stack": [
"gin"
],
"tags": [
"Gin",
"中间件",
"JWT",
"鉴权",
"错误处理"
],
"level": "intermediate",
"prerequisites": [
"backend.gin.routing-binding",
"backend.go.errors-concurrency"
],
"related": [
"backend.gin.scenario.unified-api-response",
"backend.gin.interview"
],
"est_hours": 3,
"week": [
2,
3
],
"order": 2,
"path": "topics/backend/gin/02-middleware-auth.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.gin.routing-binding",
"title": "路由、参数绑定和校验",
"type": "lesson",
"domain": "backend",
"stack": [
"gin"
],
"tags": [
"Gin",
"路由",
"参数校验",
"REST"
],
"level": "basic",
"prerequisites": [
"backend.go.basics-types"
],
"related": [
"backend.gin.middleware-auth",
"backend.gin.interview"
],
"est_hours": 3,
"week": [
1
],
"order": 1,
"path": "topics/backend/gin/01-routing-binding.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.gin.scenario.unified-api-response",
"title": "企业后台接口规范:统一响应、错误码、请求 ID 和参数校验",
"type": "scenario",
"domain": "backend",
"stack": [
"gin",
"go"
],
"tags": [
"接口规范",
"错误码",
"请求ID",
"可观测性",
"参数校验"
],
"level": "intermediate",
"prerequisites": [
"backend.gin.middleware-auth"
],
"related": [
"backend.gin.interview"
],
"est_hours": 2,
"week": [
2,
3
],
"order": null,
"path": "topics/backend/gin/scenarios/unified-api-response.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "backend.go.basics-types",
"title": "语法、类型和接口(对照 TypeScript)",
"type": "lesson",
"domain": "backend",
"stack": [
"go"
],
"tags": [
"Go",
"切片",
"map",
"结构体",
"接口"
],
"level": "basic",
"prerequisites": [],
"related": [
"backend.go.interview"
],
"est_hours": 4,
"week": [
1
],
"order": 1,
"path": "topics/backend/go/01-basics-types.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.go.errors-concurrency",
"title": "错误处理和并发:goroutine、channel、context",
"type": "lesson",
"domain": "backend",
"stack": [
"go"
],
"tags": [
"Go",
"错误处理",
"goroutine",
"channel",
"context",
"并发"
],
"level": "intermediate",
"prerequisites": [
"backend.go.basics-types"
],
"related": [
"backend.go.scenario.batch-third-party-calls",
"backend.go.interview"
],
"est_hours": 4,
"week": [
1,
3
],
"order": 2,
"path": "topics/backend/go/02-errors-concurrency.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.go.index",
"title": "Go 语言",
"type": "index",
"domain": "backend",
"stack": [
"go"
],
"tags": [
"Go",
"后端",
"并发"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
1,
2,
3,
14
],
"order": null,
"path": "topics/backend/go/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "backend.go.interview",
"title": "Go 面试题",
"type": "interview",
"domain": "backend",
"stack": [
"go"
],
"tags": [
"Go",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"backend.go.basics-types",
"backend.go.errors-concurrency",
"backend.go.testing-engineering"
],
"est_hours": null,
"week": [
1,
3,
16
],
"order": null,
"path": "topics/backend/go/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 5,
"进阶": 4,
"场景题": 3
}
},
{
"id": "backend.go.scenario.batch-third-party-calls",
"title": "批量调用第三方接口:并发控制、超时和部分失败",
"type": "scenario",
"domain": "backend",
"stack": [
"go"
],
"tags": [
"并发",
"超时",
"第三方接口",
"限流",
"重试"
],
"level": "intermediate",
"prerequisites": [
"backend.go.errors-concurrency"
],
"related": [
"backend.go.interview",
"backend.redis.lock-ratelimit"
],
"est_hours": 2,
"week": [
3
],
"order": null,
"path": "topics/backend/go/scenarios/batch-third-party-calls.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "backend.go.testing-engineering",
"title": "测试和工程化:表格驱动测试、httptest、模块、项目结构",
"type": "lesson",
"domain": "backend",
"stack": [
"go"
],
"tags": [
"Go",
"测试",
"httptest",
"go mod",
"项目结构"
],
"level": "intermediate",
"prerequisites": [
"backend.go.basics-types"
],
"related": [
"backend.go.interview",
"backend.gin.routing-binding"
],
"est_hours": 3,
"week": [
1,
2,
3
],
"order": 3,
"path": "topics/backend/go/03-testing-engineering.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.grpc-microservices.governance",
"title": "服务治理:超时、重试、熔断、限流、注册发现、链路追踪、分布式事务",
"type": "lesson",
"domain": "backend",
"stack": [
"grpc-microservices"
],
"tags": [
"超时",
"重试",
"熔断",
"限流",
"服务发现",
"链路追踪",
"Saga",
"分布式事务"
],
"level": "advanced",
"prerequisites": [
"backend.grpc-microservices.grpc-proto"
],
"related": [
"backend.grpc-microservices.scenario.monolith-split",
"backend.mq.reliability",
"backend.grpc-microservices.interview"
],
"est_hours": 3,
"week": [
14
],
"order": 2,
"path": "topics/backend/grpc-microservices/02-governance.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.grpc-microservices.grpc-proto",
"title": "gRPC 和 Protobuf:IDL、四种调用方式、错误码、超时、拦截器",
"type": "lesson",
"domain": "backend",
"stack": [
"grpc-microservices",
"go"
],
"tags": [
"gRPC",
"Protobuf",
"HTTP/2",
"拦截器",
"deadline"
],
"level": "intermediate",
"prerequisites": [
"backend.go.errors-concurrency"
],
"related": [
"backend.grpc-microservices.governance",
"backend.grpc-microservices.interview"
],
"est_hours": 3,
"week": [
14
],
"order": 1,
"path": "topics/backend/grpc-microservices/01-grpc-proto.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.grpc-microservices.index",
"title": "gRPC 与微服务",
"type": "index",
"domain": "backend",
"stack": [
"grpc-microservices"
],
"tags": [
"gRPC",
"Protobuf",
"微服务",
"服务治理"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
14
],
"order": null,
"path": "topics/backend/grpc-microservices/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "backend.grpc-microservices.interview",
"title": "gRPC 与微服务面试题",
"type": "interview",
"domain": "backend",
"stack": [
"grpc-microservices"
],
"tags": [
"gRPC",
"微服务",
"服务治理",
"分布式事务",
"面试"
],
"level": "advanced",
"prerequisites": [],
"related": [
"backend.grpc-microservices.grpc-proto",
"backend.grpc-microservices.governance"
],
"est_hours": null,
"week": [
14,
16
],
"order": null,
"path": "topics/backend/grpc-microservices/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
}
},
{
"id": "backend.grpc-microservices.scenario.monolith-split",
"title": "单体拆分:从单体到“订单 + 用户”两个服务",
"type": "scenario",
"domain": "backend",
"stack": [
"grpc-microservices",
"go",
"mq"
],
"tags": [
"单体拆分",
"绞杀者模式",
"数据拆分",
"gRPC",
"灰度"
],
"level": "advanced",
"prerequisites": [
"backend.grpc-microservices.governance"
],
"related": [
"backend.grpc-microservices.interview",
"backend.mq.reliability"
],
"est_hours": 2,
"week": [
14
],
"order": null,
"path": "topics/backend/grpc-microservices/scenarios/monolith-split.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "backend.java-spring.index",
"title": "Java / Spring Boot(了解级)",
"type": "index",
"domain": "backend",
"stack": [
"java-spring"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
14
],
"order": null,
"path": "topics/backend/java-spring/index.md",
"sections": []
},
{
"id": "backend.mongodb.index",
"title": "MongoDB",
"type": "index",
"domain": "backend",
"stack": [
"mongodb"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
14
],
"order": null,
"path": "topics/backend/mongodb/index.md",
"sections": []
},
{
"id": "backend.mq.index",
"title": "消息队列(RabbitMQ / Kafka)",
"type": "index",
"domain": "backend",
"stack": [
"mq"
],
"tags": [
"消息队列",
"RabbitMQ",
"Kafka",
"异步",
"削峰"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
3,
14
],
"order": null,
"path": "topics/backend/mq/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "backend.mq.interview",
"title": "消息队列面试题",
"type": "interview",
"domain": "backend",
"stack": [
"mq"
],
"tags": [
"RabbitMQ",
"Kafka",
"可靠性",
"幂等",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"backend.mq.rabbitmq",
"backend.mq.kafka",
"backend.mq.reliability"
],
"est_hours": null,
"week": [
14,
16
],
"order": null,
"path": "topics/backend/mq/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
}
},
{
"id": "backend.mq.kafka",
"title": "Kafka:主题、分区、消费组、位移和顺序",
"type": "lesson",
"domain": "backend",
"stack": [
"mq"
],
"tags": [
"Kafka",
"分区",
"消费组",
"offset",
"顺序消息",
"ISR"
],
"level": "intermediate",
"prerequisites": [
"backend.mq.rabbitmq"
],
"related": [
"backend.mq.reliability",
"backend.mq.interview"
],
"est_hours": 3,
"week": [
14
],
"order": 2,
"path": "topics/backend/mq/02-kafka.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.mq.rabbitmq",
"title": "RabbitMQ:交换机、队列、确认机制、死信和延迟",
"type": "lesson",
"domain": "backend",
"stack": [
"mq"
],
"tags": [
"RabbitMQ",
"AMQP",
"交换机",
"ACK",
"死信",
"延迟队列"
],
"level": "basic",
"prerequisites": [],
"related": [
"backend.mq.reliability",
"backend.mq.scenario.delayed-order-cancel",
"backend.mq.interview"
],
"est_hours": 3,
"week": [
3,
14
],
"order": 1,
"path": "topics/backend/mq/01-rabbitmq.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.mq.reliability",
"title": "可靠性:不丢消息、幂等消费、发件箱模式、积压处理",
"type": "lesson",
"domain": "backend",
"stack": [
"mq"
],
"tags": [
"可靠投递",
"幂等",
"发件箱",
"Outbox",
"消息积压",
"最终一致性"
],
"level": "intermediate",
"prerequisites": [
"backend.mq.rabbitmq"
],
"related": [
"backend.mq.kafka",
"backend.mq.scenario.delayed-order-cancel",
"backend.mq.interview",
"backend.postgresql.scenario.order-state-audit"
],
"est_hours": 3,
"week": [
3,
14
],
"order": 3,
"path": "topics/backend/mq/03-reliability.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.mq.scenario.delayed-order-cancel",
"title": "订单超时自动取消:延迟消息、幂等和兜底扫描",
"type": "scenario",
"domain": "backend",
"stack": [
"mq",
"redis",
"mysql"
],
"tags": [
"延迟消息",
"死信",
"订单超时",
"幂等",
"定时任务"
],
"level": "intermediate",
"prerequisites": [
"backend.mq.rabbitmq"
],
"related": [
"backend.mq.reliability",
"backend.redis.scenario.stock-reservation",
"backend.mq.interview"
],
"est_hours": 2,
"week": [
14
],
"order": null,
"path": "topics/backend/mq/scenarios/delayed-order-cancel.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "backend.mysql.index",
"title": "MySQL",
"type": "index",
"domain": "backend",
"stack": [
"mysql"
],
"tags": [
"数据库",
"SQL",
"MySQL",
"InnoDB"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
2,
14
],
"order": null,
"path": "topics/backend/mysql/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "backend.mysql.index-explain",
"title": "InnoDB 索引:B+ 树、聚簇索引、回表、最左前缀和 EXPLAIN",
"type": "lesson",
"domain": "backend",
"stack": [
"mysql"
],
"tags": [
"索引",
"B+树",
"聚簇索引",
"回表",
"EXPLAIN"
],
"level": "basic",
"prerequisites": [
"backend.postgresql.schema-sql"
],
"related": [
"backend.mysql.tx-locks-mvcc",
"backend.postgresql.index-tx-mvcc",
"backend.mysql.interview"
],
"est_hours": 3,
"week": [
2
],
"order": 1,
"path": "topics/backend/mysql/01-index-explain.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.mysql.interview",
"title": "MySQL 面试题",
"type": "interview",
"domain": "backend",
"stack": [
"mysql"
],
"tags": [
"MySQL",
"InnoDB",
"索引",
"事务",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"backend.mysql.index-explain",
"backend.mysql.tx-locks-mvcc",
"backend.mysql.ops-scale",
"backend.postgresql.interview"
],
"est_hours": null,
"week": [
2,
14,
16
],
"order": null,
"path": "topics/backend/mysql/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 5,
"进阶": 4,
"场景题": 3
}
},
{
"id": "backend.mysql.ops-scale",
"title": "运维与扩展:慢查询、主从复制、读写分离、分库分表",
"type": "lesson",
"domain": "backend",
"stack": [
"mysql"
],
"tags": [
"慢查询",
"主从复制",
"读写分离",
"分库分表",
"在线 DDL"
],
"level": "intermediate",
"prerequisites": [
"backend.mysql.tx-locks-mvcc"
],
"related": [
"backend.mysql.scenario.deep-pagination",
"backend.mysql.interview"
],
"est_hours": 3,
"week": [
14
],
"order": 3,
"path": "topics/backend/mysql/03-ops-scale.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.mysql.scenario.deep-pagination",
"title": "大表深分页和历史数据:游标分页、延迟关联、归档",
"type": "scenario",
"domain": "backend",
"stack": [
"mysql"
],
"tags": [
"深分页",
"游标分页",
"延迟关联",
"归档",
"大表"
],
"level": "intermediate",
"prerequisites": [
"backend.mysql.index-explain"
],
"related": [
"backend.mysql.ops-scale",
"backend.mysql.interview"
],
"est_hours": 2,
"week": [
2,
14
],
"order": null,
"path": "topics/backend/mysql/scenarios/deep-pagination.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "backend.mysql.tx-locks-mvcc",
"title": "事务、隔离级别、MVCC 和锁(行锁、间隙锁、死锁)",
"type": "lesson",
"domain": "backend",
"stack": [
"mysql"
],
"tags": [
"事务",
"隔离级别",
"MVCC",
"间隙锁",
"死锁",
"undo log",
"redo log"
],
"level": "intermediate",
"prerequisites": [
"backend.mysql.index-explain"
],
"related": [
"backend.postgresql.index-tx-mvcc",
"backend.mysql.interview"
],
"est_hours": 4,
"week": [
2,
14
],
"order": 2,
"path": "topics/backend/mysql/02-tx-locks-mvcc.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.nodejs.index",
"title": "Node.js 后端(Express / NestJS)",
"type": "index",
"domain": "backend",
"stack": [
"nodejs"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7,
14
],
"order": null,
"path": "topics/backend/nodejs/index.md",
"sections": []
},
{
"id": "backend.postgresql.index",
"title": "PostgreSQL",
"type": "index",
"domain": "backend",
"stack": [
"postgresql"
],
"tags": [
"数据库",
"SQL",
"PostgreSQL"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
2,
3,
6
],
"order": null,
"path": "topics/backend/postgresql/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "backend.postgresql.index-tx-mvcc",
"title": "索引、EXPLAIN、事务、隔离级别和 MVCC",
"type": "lesson",
"domain": "backend",
"stack": [
"postgresql"
],
"tags": [
"索引",
"EXPLAIN",
"事务",
"隔离级别",
"MVCC",
"锁"
],
"level": "intermediate",
"prerequisites": [
"backend.postgresql.schema-sql"
],
"related": [
"backend.postgresql.scenario.order-state-audit",
"backend.mysql.tx-locks-mvcc",
"backend.postgresql.interview"
],
"est_hours": 4,
"week": [
2,
3
],
"order": 2,
"path": "topics/backend/postgresql/02-index-tx-mvcc.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.postgresql.interview",
"title": "PostgreSQL 面试题",
"type": "interview",
"domain": "backend",
"stack": [
"postgresql"
],
"tags": [
"PostgreSQL",
"SQL",
"事务",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"backend.postgresql.schema-sql",
"backend.postgresql.index-tx-mvcc",
"backend.mysql.interview"
],
"est_hours": null,
"week": [
2,
16
],
"order": null,
"path": "topics/backend/postgresql/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 5,
"进阶": 4,
"场景题": 3
}
},
{
"id": "backend.postgresql.scenario.order-state-audit",
"title": "订单状态机:状态流转、乐观锁和审计日志",
"type": "scenario",
"domain": "backend",
"stack": [
"postgresql",
"go"
],
"tags": [
"状态机",
"乐观锁",
"审计",
"并发",
"事务"
],
"level": "intermediate",
"prerequisites": [
"backend.postgresql.index-tx-mvcc"
],
"related": [
"backend.postgresql.interview",
"backend.mq.reliability"
],
"est_hours": 2,
"week": [
2,
3
],
"order": null,
"path": "topics/backend/postgresql/scenarios/order-state-audit.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "backend.postgresql.schema-sql",
"title": "表设计和 SQL:约束、JOIN、CTE、窗口函数、JSONB、UPSERT",
"type": "lesson",
"domain": "backend",
"stack": [
"postgresql"
],
"tags": [
"SQL",
"表设计",
"约束",
"JOIN",
"窗口函数",
"JSONB"
],
"level": "basic",
"prerequisites": [],
"related": [
"backend.postgresql.index-tx-mvcc",
"backend.postgresql.interview"
],
"est_hours": 4,
"week": [
2
],
"order": 1,
"path": "topics/backend/postgresql/01-schema-sql.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.redis.cache-patterns",
"title": "缓存模式:旁路缓存、穿透 / 击穿 / 雪崩、一致性",
"type": "lesson",
"domain": "backend",
"stack": [
"redis"
],
"tags": [
"旁路缓存",
"缓存穿透",
"缓存击穿",
"缓存雪崩",
"一致性",
"singleflight"
],
"level": "intermediate",
"prerequisites": [
"backend.redis.data-structures"
],
"related": [
"backend.redis.lock-ratelimit",
"backend.redis.interview"
],
"est_hours": 3,
"week": [
3,
6
],
"order": 2,
"path": "topics/backend/redis/02-cache-patterns.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.redis.data-structures",
"title": "数据结构和常用命令:String、Hash、List、Set、ZSet、Stream",
"type": "lesson",
"domain": "backend",
"stack": [
"redis"
],
"tags": [
"String",
"Hash",
"ZSet",
"Stream",
"过期时间"
],
"level": "basic",
"prerequisites": [],
"related": [
"backend.redis.cache-patterns",
"backend.redis.interview"
],
"est_hours": 2,
"week": [
3
],
"order": 1,
"path": "topics/backend/redis/01-data-structures.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.redis.index",
"title": "Redis",
"type": "index",
"domain": "backend",
"stack": [
"redis"
],
"tags": [
"缓存",
"Redis",
"分布式锁",
"限流"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
3,
6,
14
],
"order": null,
"path": "topics/backend/redis/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "backend.redis.interview",
"title": "Redis 面试题",
"type": "interview",
"domain": "backend",
"stack": [
"redis"
],
"tags": [
"Redis",
"缓存",
"分布式锁",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"backend.redis.data-structures",
"backend.redis.cache-patterns",
"backend.redis.lock-ratelimit"
],
"est_hours": null,
"week": [
3,
14,
16
],
"order": null,
"path": "topics/backend/redis/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 4,
"场景题": 3
}
},
{
"id": "backend.redis.lock-ratelimit",
"title": "分布式锁和限流:SET NX、Lua、令牌释放、固定窗口与滑动窗口",
"type": "lesson",
"domain": "backend",
"stack": [
"redis"
],
"tags": [
"分布式锁",
"Lua",
"限流",
"滑动窗口",
"令牌桶"
],
"level": "intermediate",
"prerequisites": [
"backend.redis.data-structures"
],
"related": [
"backend.redis.scenario.stock-reservation",
"backend.redis.interview",
"backend.gin.middleware-auth"
],
"est_hours": 3,
"week": [
3,
14
],
"order": 3,
"path": "topics/backend/redis/03-lock-ratelimit.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.redis.scenario.stock-reservation",
"title": "抢购库存预扣:Lua 原子扣减、防重复下单、异步落库",
"type": "scenario",
"domain": "backend",
"stack": [
"redis",
"mq",
"mysql"
],
"tags": [
"秒杀",
"库存",
"Lua",
"防超卖",
"削峰"
],
"level": "advanced",
"prerequisites": [
"backend.redis.lock-ratelimit"
],
"related": [
"backend.redis.lock-ratelimit",
"backend.mq.reliability",
"backend.redis.interview"
],
"est_hours": 3,
"week": [
14
],
"order": null,
"path": "topics/backend/redis/scenarios/stock-reservation.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "cs.algorithms.index",
"title": "数据结构与算法(面试)",
"type": "index",
"domain": "cs",
"stack": [
"algorithms"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
16
],
"order": null,
"path": "topics/cs/algorithms/index.md",
"sections": []
},
{
"id": "cs.network-os.index",
"title": "网络与操作系统基础",
"type": "index",
"domain": "cs",
"stack": [
"network-os"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
14,
16
],
"order": null,
"path": "topics/cs/network-os/index.md",
"sections": []
},
{
"id": "cs.web-security.index",
"title": "Web 安全",
"type": "index",
"domain": "cs",
"stack": [
"web-security"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7,
14,
16
],
"order": null,
"path": "topics/cs/web-security/index.md",
"sections": []
},
{
"id": "devops.cicd.index",
"title": "CI/CD",
"type": "index",
"domain": "devops",
"stack": [
"cicd"
],
"tags": [
"CI/CD",
"持续集成",
"持续部署",
"流水线",
"发布"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
3,
7,
14
],
"order": null,
"path": "topics/devops/cicd/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "devops.cicd.interview",
"title": "CI/CD 面试题",
"type": "interview",
"domain": "devops",
"stack": [
"cicd"
],
"tags": [
"CI/CD",
"发布",
"回滚",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"devops.cicd.pipeline",
"devops.cicd.release-rollback"
],
"est_hours": null,
"week": [
14,
16
],
"order": null,
"path": "topics/devops/cicd/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 3
}
},
{
"id": "devops.cicd.pipeline",
"title": "流水线设计:触发、阶段、缓存、服务容器、密钥",
"type": "lesson",
"domain": "devops",
"stack": [
"cicd"
],
"tags": [
"流水线",
"GitHub Actions",
"缓存",
"服务容器",
"密钥管理"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.cicd.release-rollback",
"devops.cicd.interview",
"devops.git.index"
],
"est_hours": 2,
"week": [
3,
7
],
"order": 1,
"path": "topics/devops/cicd/01-pipeline.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.cicd.release-rollback",
"title": "发布与回滚:镜像标签、环境、滚动 / 蓝绿 / 金丝雀、数据库迁移",
"type": "lesson",
"domain": "devops",
"stack": [
"cicd"
],
"tags": [
"发布策略",
"回滚",
"蓝绿发布",
"金丝雀",
"数据库迁移",
"特性开关"
],
"level": "intermediate",
"prerequisites": [
"devops.cicd.pipeline"
],
"related": [
"devops.cicd.scenario.multi-lang-pipeline",
"devops.nginx.https-stream-limit",
"devops.cicd.interview"
],
"est_hours": 3,
"week": [
14
],
"order": 2,
"path": "topics/devops/cicd/02-release-rollback.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.cicd.scenario.multi-lang-pipeline",
"title": "多语言仓库的流水线:Go + Python + 前端,按改动构建、自动部署和回滚",
"type": "scenario",
"domain": "devops",
"stack": [
"cicd",
"docker",
"go",
"python",
"vue"
],
"tags": [
"Monorepo",
"流水线",
"路径过滤",
"自动部署",
"回滚"
],
"level": "intermediate",
"prerequisites": [
"devops.cicd.pipeline"
],
"related": [
"devops.cicd.release-rollback",
"devops.cicd.interview",
"devops.docker.scenario.compose-dev-env"
],
"est_hours": 2,
"week": [
14,
15
],
"order": null,
"path": "topics/devops/cicd/scenarios/multi-lang-pipeline.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "devops.docker.compose-network-volume",
"title": "Compose、网络和数据卷:多服务编排、健康检查、环境变量",
"type": "lesson",
"domain": "devops",
"stack": [
"docker"
],
"tags": [
"Compose",
"网络",
"数据卷",
"健康检查",
"环境变量"
],
"level": "basic",
"prerequisites": [
"devops.docker.image-dockerfile"
],
"related": [
"devops.docker.scenario.compose-dev-env",
"devops.docker.interview"
],
"est_hours": 2,
"week": [
3,
6,
13
],
"order": 2,
"path": "topics/devops/docker/02-compose-network-volume.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.docker.image-dockerfile",
"title": "镜像和 Dockerfile:分层缓存、多阶段构建、非 root、信号处理",
"type": "lesson",
"domain": "devops",
"stack": [
"docker"
],
"tags": [
"Dockerfile",
"多阶段构建",
"镜像分层",
"构建缓存",
"distroless"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.docker.compose-network-volume",
"devops.docker.interview"
],
"est_hours": 3,
"week": [
3,
6
],
"order": 1,
"path": "topics/devops/docker/01-image-dockerfile.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.docker.index",
"title": "Docker 与 Compose",
"type": "index",
"domain": "devops",
"stack": [
"docker"
],
"tags": [
"Docker",
"容器",
"Compose",
"镜像"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
3,
6,
13,
14
],
"order": null,
"path": "topics/devops/docker/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "devops.docker.interview",
"title": "Docker 面试题",
"type": "interview",
"domain": "devops",
"stack": [
"docker"
],
"tags": [
"Docker",
"容器",
"Compose",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.docker.image-dockerfile",
"devops.docker.compose-network-volume"
],
"est_hours": null,
"week": [
3,
14,
16
],
"order": null,
"path": "topics/devops/docker/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
}
},
{
"id": "devops.docker.scenario.compose-dev-env",
"title": "一条命令拉起开发环境:Go API + Python AI 服务 + PostgreSQL + Redis",
"type": "scenario",
"domain": "devops",
"stack": [
"docker",
"go",
"fastapi",
"postgresql",
"redis"
],
"tags": [
"Compose",
"开发环境",
"多语言",
"健康检查",
"配置管理"
],
"level": "intermediate",
"prerequisites": [
"devops.docker.compose-network-volume"
],
"related": [
"devops.docker.interview",
"devops.nginx.index"
],
"est_hours": 2,
"week": [
3,
13,
14
],
"order": null,
"path": "topics/devops/docker/scenarios/compose-dev-env.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "devops.git.branch-commit",
"title": "分支模型和提交规范:主干开发、Git Flow、Conventional Commits、代码评审",
"type": "lesson",
"domain": "devops",
"stack": [
"git"
],
"tags": [
"分支模型",
"Git Flow",
"主干开发",
"提交规范",
"Code Review"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.git.merge-rebase-recovery",
"devops.cicd.pipeline",
"devops.git.interview"
],
"est_hours": 1.5,
"week": [
1,
8
],
"order": 1,
"path": "topics/devops/git/01-branch-commit.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.git.index",
"title": "Git",
"type": "index",
"domain": "devops",
"stack": [
"git"
],
"tags": [
"Git",
"版本控制",
"分支",
"协作"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
1,
8,
15
],
"order": null,
"path": "topics/devops/git/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "devops.git.interview",
"title": "Git 面试题",
"type": "interview",
"domain": "devops",
"stack": [
"git"
],
"tags": [
"Git",
"分支",
"撤销",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.git.branch-commit",
"devops.git.merge-rebase-recovery"
],
"est_hours": null,
"week": [
15,
16
],
"order": null,
"path": "topics/devops/git/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
}
},
{
"id": "devops.git.merge-rebase-recovery",
"title": "合并、变基和撤销:merge / rebase / cherry-pick、revert / reset、reflog 找回",
"type": "lesson",
"domain": "devops",
"stack": [
"git"
],
"tags": [
"merge",
"rebase",
"cherry-pick",
"revert",
"reset",
"reflog",
"stash"
],
"level": "intermediate",
"prerequisites": [
"devops.git.branch-commit"
],
"related": [
"devops.git.scenario.hotfix-and-leaked-secret",
"devops.git.interview"
],
"est_hours": 2,
"week": [
8,
15
],
"order": 2,
"path": "topics/devops/git/02-merge-rebase-recovery.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.git.scenario.hotfix-and-leaked-secret",
"title": "线上紧急修复和密钥误提交:热修复分支、cherry-pick、清理历史和轮换密钥",
"type": "scenario",
"domain": "devops",
"stack": [
"git",
"cicd"
],
"tags": [
"热修复",
"cherry-pick",
"密钥泄露",
"历史清理",
"安全"
],
"level": "intermediate",
"prerequisites": [
"devops.git.merge-rebase-recovery"
],
"related": [
"devops.git.interview",
"devops.cicd.pipeline"
],
"est_hours": 1.5,
"week": [
8,
15
],
"order": null,
"path": "topics/devops/git/scenarios/hotfix-and-leaked-secret.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "devops.k8s.index",
"title": "Kubernetes 基础",
"type": "index",
"domain": "devops",
"stack": [
"k8s"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
14
],
"order": null,
"path": "topics/devops/k8s/index.md",
"sections": []
},
{
"id": "devops.linux.commands",
"title": "常用命令:文件、文本处理、进程、端口、权限、systemd",
"type": "lesson",
"domain": "devops",
"stack": [
"linux"
],
"tags": [
"grep",
"awk",
"ps",
"ss",
"chmod",
"systemd",
"journalctl"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.linux.troubleshooting",
"devops.linux.interview"
],
"est_hours": 3,
"week": [
14
],
"order": 1,
"path": "topics/devops/linux/01-commands.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.linux.index",
"title": "Linux 运维基础",
"type": "index",
"domain": "devops",
"stack": [
"linux"
],
"tags": [
"Linux",
"命令行",
"运维",
"线上排查"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
14
],
"order": null,
"path": "topics/devops/linux/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "devops.linux.interview",
"title": "Linux 面试题",
"type": "interview",
"domain": "devops",
"stack": [
"linux"
],
"tags": [
"Linux",
"命令",
"排查",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.linux.commands",
"devops.linux.troubleshooting"
],
"est_hours": null,
"week": [
14,
16
],
"order": null,
"path": "topics/devops/linux/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
}
},
{
"id": "devops.linux.scenario.incident-troubleshooting",
"title": "线上故障排查:接口变慢、磁盘写满、进程被 OOM 杀掉",
"type": "scenario",
"domain": "devops",
"stack": [
"linux",
"go",
"nginx"
],
"tags": [
"故障排查",
"OOM",
"磁盘满",
"pprof",
"复盘"
],
"level": "intermediate",
"prerequisites": [
"devops.linux.troubleshooting"
],
"related": [
"devops.linux.interview",
"devops.nginx.interview"
],
"est_hours": 2,
"week": [
14
],
"order": null,
"path": "topics/devops/linux/scenarios/incident-troubleshooting.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "devops.linux.troubleshooting",
"title": "线上排查:CPU、内存、磁盘、网络、日志的定位思路",
"type": "lesson",
"domain": "devops",
"stack": [
"linux"
],
"tags": [
"排查",
"top",
"负载",
"OOM",
"磁盘",
"TIME_WAIT",
"pprof"
],
"level": "intermediate",
"prerequisites": [
"devops.linux.commands"
],
"related": [
"devops.linux.scenario.incident-troubleshooting",
"devops.linux.interview"
],
"est_hours": 3,
"week": [
14
],
"order": 2,
"path": "topics/devops/linux/02-troubleshooting.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.nginx.https-stream-limit",
"title": "HTTPS、SSE / WebSocket、限流和灰度",
"type": "lesson",
"domain": "devops",
"stack": [
"nginx"
],
"tags": [
"HTTPS",
"TLS",
"SSE",
"WebSocket",
"limit_req",
"灰度发布"
],
"level": "intermediate",
"prerequisites": [
"devops.nginx.proxy-static"
],
"related": [
"devops.nginx.scenario.ai-gateway-sse-canary",
"devops.nginx.interview"
],
"est_hours": 3,
"week": [
7,
14
],
"order": 2,
"path": "topics/devops/nginx/02-https-stream-limit.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.nginx.index",
"title": "Nginx",
"type": "index",
"domain": "devops",
"stack": [
"nginx"
],
"tags": [
"Nginx",
"反向代理",
"HTTPS",
"负载均衡",
"SSE"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
3,
7,
14
],
"order": null,
"path": "topics/devops/nginx/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "devops.nginx.interview",
"title": "Nginx 面试题",
"type": "interview",
"domain": "devops",
"stack": [
"nginx"
],
"tags": [
"Nginx",
"反向代理",
"负载均衡",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.nginx.proxy-static",
"devops.nginx.https-stream-limit"
],
"est_hours": null,
"week": [
7,
14,
16
],
"order": null,
"path": "topics/devops/nginx/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
}
},
{
"id": "devops.nginx.proxy-static",
"title": "反向代理、负载均衡和静态资源:location 匹配、proxy_pass、SPA 回退",
"type": "lesson",
"domain": "devops",
"stack": [
"nginx"
],
"tags": [
"反向代理",
"location",
"proxy_pass",
"upstream",
"try_files",
"gzip"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.nginx.https-stream-limit",
"devops.nginx.interview"
],
"est_hours": 2,
"week": [
3,
7
],
"order": 1,
"path": "topics/devops/nginx/01-proxy-static.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.nginx.scenario.ai-gateway-sse-canary",
"title": "AI 应用网关:流式输出不卡顿、按用户灰度新版本",
"type": "scenario",
"domain": "devops",
"stack": [
"nginx",
"fastapi"
],
"tags": [
"SSE",
"流式输出",
"灰度发布",
"限流",
"网关"
],
"level": "intermediate",
"prerequisites": [
"devops.nginx.https-stream-limit"
],
"related": [
"devops.nginx.interview",
"devops.docker.scenario.compose-dev-env"
],
"est_hours": 2,
"week": [
7,
13,
14
],
"order": null,
"path": "topics/devops/nginx/scenarios/ai-gateway-sse-canary.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "frontend.fe-testing-perf.index",
"title": "前端测试与性能",
"type": "index",
"domain": "frontend",
"stack": [
"fe-testing-perf"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/fe-testing-perf/index.md",
"sections": []
},
{
"id": "frontend.react.index",
"title": "React",
"type": "index",
"domain": "frontend",
"stack": [
"react"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/react/index.md",
"sections": []
},
{
"id": "frontend.ssr.index",
"title": "SSR(Nuxt / Next.js)",
"type": "index",
"domain": "frontend",
"stack": [
"ssr"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/ssr/index.md",
"sections": []
},
{
"id": "frontend.typescript.index",
"title": "TypeScript",
"type": "index",
"domain": "frontend",
"stack": [
"typescript"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/typescript/index.md",
"sections": []
},
{
"id": "frontend.vite.index",
"title": "Vite",
"type": "index",
"domain": "frontend",
"stack": [
"vite"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/vite/index.md",
"sections": []
},
{
"id": "frontend.vue.index",
"title": "Vue 3 + Pinia + Router",
"type": "index",
"domain": "frontend",
"stack": [
"vue"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/vue/index.md",
"sections": []
},
{
"id": "frontend.webpack.index",
"title": "Webpack",
"type": "index",
"domain": "frontend",
"stack": [
"webpack"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/webpack/index.md",
"sections": []
},
{
"id": "plan.index",
"title": "转岗计划总纲",
"type": "index",
"domain": "plan",
"stack": [],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [],
"order": null,
"path": "plan/README.md",
"sections": [
"1. 背景、起点和目标",
"2. 技术栈(已确定)",
"3. 十六周总路线",
"4. 岗位要求对照",
"5. 学习原则和每周文件的写法",
"6. 时间不够怎么砍",
"7. 阶段 0~4 和五个学习重点",
"8. 案例卡模板(直接复制)",
"9. 每周节奏和戒律",
"10. 脱敏和保密",
"11. 简历和投递建议",
"12. 仓库结构、文件清单和换设备",
"13. 进度记录",
"14. 终点验收清单(全部勾选才算完结)"
]
},
{
"id": "plan.week01",
"title": "第 1 周:Go 基础 + Gin 写 REST 接口",
"type": "week",
"domain": "plan",
"stack": [
"go",
"gin",
"git"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
1
],
"order": 1,
"path": "plan/week01-go-gin.md",
"sections": [
"本周最终目录",
"第 1 天:环境、变量、函数和错误返回",
"第 2 天:切片、map、结构体、方法、接口",
"第 3 天:错误包装、并发、单元测试",
"第 4 天:从 net/http 到 Gin",
"第 5 天:分层:model / store / handler",
"第 6 天:中间件和接口测试",
"第 7 天:配置、优雅关机、接前端",
"本周自查清单"
]
},
{
"id": "plan.week02",
"title": "第 2 周:数据库(PostgreSQL 为主,兼顾 MySQL)+ 注册登录与 JWT",
"type": "week",
"domain": "plan",
"stack": [
"go",
"gin",
"postgresql",
"mysql"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
2
],
"order": 2,
"path": "plan/week02-db-auth.md",
"sections": [
"本周最终目录(在上周 `todo-api/backend` 基础上新增)",
"第 1 天:用 Docker 跑 PostgreSQL,写基础 SQL 和表设计",
"第 2 天:多表查询、索引、EXPLAIN",
"第 3 天:迁移和 Go 访问数据库(pgx)",
"第 4 天:事务、隔离级别、幂等写入",
"第 5 天:密码哈希和 JWT",
"第 6 天:注册、登录、鉴权中间件",
"第 7 天:配置切换、接口测试、集成测试、收尾",
"本周自查清单"
]
},
{
"id": "plan.week03",
"title": "第 3 周:项目一“团队任务看板”:权限 + Redis + 消息队列 + Docker 部署",
"type": "week",
"domain": "plan",
"stack": [
"go",
"gin",
"postgresql",
"redis",
"mq",
"docker",
"nginx",
"cicd"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
3
],
"order": 3,
"path": "plan/week03-project1.md",
"sections": [
"本周最终目录",
"第 1 天:看板建模和权限",
"第 2 天:看板和任务接口、拖动排序的事务",
"第 3 天:Redis 基础和缓存",
"第 4 天:限流和分布式锁",
"第 5 天:消息队列入门(Redis Streams),了解 RabbitMQ / Kafka",
"第 6 天:Docker、Compose、Nginx",
"第 7 天:部署到服务器 + CI + 收尾",
"本周自查清单"
]
},
{
"id": "plan.week04",
"title": "第 4 周:Python 速成(给 JS 开发者)+ FastAPI 基础",
"type": "week",
"domain": "plan",
"stack": [
"python",
"asyncio",
"fastapi"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
4
],
"order": 4,
"path": "plan/week04-python.md",
"sections": [
"本周最终目录",
"第 1 天:包管理和基础语法",
"第 2 天:类型标注、dataclass、Protocol、pytest",
"第 3 天:异常、上下文管理器、文件和日志",
"第 4 天:asyncio(本周最重要)",
"第 5 天:pydantic 和配置",
"第 6 天:httpx 异步请求、重试、测试替身",
"第 7 天:FastAPI(Uvicorn、依赖注入、中间件、鉴权、生命周期、SSE)",
"本周自查清单"
]
},
{
"id": "plan.week05",
"title": "第 5 周:RAG 知识库问答(上)——手写主流程",
"type": "week",
"domain": "plan",
"stack": [
"asyncio",
"fastapi",
"rag",
"vector-db",
"prompt-engineering"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
5
],
"order": 5,
"path": "plan/week05-rag-1.md",
"sections": [
"项目二总览",
"第 1 天:RAG 概念、项目初始化、模型客户端",
"第 2 天:加载和切分",
"第 3 天:向量库和幂等入库",
"第 4 天:检索、提示词、带引用的生成",
"第 5 天:FastAPI 接口和流式输出",
"第 6 天:命令行、接入真实模型、人工试验",
"第 7 天:整理、README、复盘",
"本周自查清单"
]
},
{
"id": "plan.week06",
"title": "第 6 周:RAG 知识库问答(下)——评测、混合检索、重排、记忆、缓存、LangChain、部署",
"type": "week",
"domain": "plan",
"stack": [
"postgresql",
"redis",
"docker",
"rag",
"vector-db",
"langchain"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
6
],
"order": 6,
"path": "plan/week06-rag-2.md",
"sections": [
"第 1 天:评测集和指标",
"第 2 天:BM25 关键词检索 + RRF 混合检索",
"第 3 天:重排(Rerank)",
"第 4 天:多轮追问——问题改写 + 会话短期记忆(Redis)",
"第 5 天:缓存、配置组装、多轮对话接口",
"第 6 天:LangChain 对照实现 + Milvus / pgvector",
"第 7 天:Docker Compose 部署 + 复盘",
"本周自查清单"
]
},
{
"id": "plan.week07",
"title": "第 7 周:前端工程化查漏补缺 + 两个项目的界面",
"type": "week",
"domain": "plan",
"stack": [
"nginx",
"cicd",
"vue",
"react",
"typescript",
"vite",
"webpack",
"ssr",
"fe-testing-perf"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
7
],
"order": 7,
"path": "plan/week07-frontend.md",
"sections": [
"本周最终目录",
"第 1 天:pnpm monorepo、TS 严格配置、ESLint + Prettier、共享请求封装",
"第 2 天:SSE 流式解析(fetch + ReadableStream)",
"第 3 天:Vue 3 应用——项目一的任务看板",
"第 4 天:React 应用——项目二的知识库问答界面",
"第 5 天:构建工具和性能优化",
"第 6 天:SSR 基础(Nuxt / Next.js)",
"第 7 天:前端 CI、构建产物部署、复盘",
"本周自查清单(对照招聘“熟悉 Vue / React”的延伸要求)"
]
},
{
"id": "plan.week08",
"title": "第 8 周:阶段 0 盘点 + 阶段 1 读通与画图",
"type": "week",
"domain": "plan",
"stack": [
"git"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
8
],
"order": 8,
"path": "plan/week08-inventory-architecture.md",
"sections": [
"第 1 天:阶段 0——盘点",
"第 2 天:脱敏机制——提交前自动检查",
"第 3 天:阶段 1——怎么读一个大项目",
"第 4 天:画架构图,标出断点",
"第 5 天:接口职责表",
"第 6 天:把流程画成状态机,并用代码验证思路",
"第 7 天:阶段 1 验收 + 口述初稿",
"本周自查清单"
]
},
{
"id": "plan.week09",
"title": "第 9 周:阶段 2——五个重点 A~E 深挖 + 案例卡",
"type": "week",
"domain": "plan",
"stack": [],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
9
],
"order": 9,
"path": "plan/week09-case-cards.md",
"sections": [
"第 1 天:A 多 Agent 编排",
"第 2 天:C 流式与长任务",
"第 3 天:B 状态与权威源",
"第 4 天:D 人机协作",
"第 5 天:E 与业务系统集成",
"第 6 天:补写和打磨案例卡",
"第 7 天:汇总设计输入",
"本周自查清单"
]
},
{
"id": "plan.week10",
"title": "第 10 周:项目三 M1——手写工具调用循环 + 手写多 Agent 循环 + MCP 服务",
"type": "week",
"domain": "plan",
"stack": [
"mcp",
"function-calling"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
10
],
"order": 10,
"path": "plan/week10-agent-m1-tools-mcp.md",
"sections": [
"项目三总览",
"第 1 天:初始化 + 支持工具调用的最小模型客户端",
"第 2 天:手写工具调用循环",
"第 3 天:手写多 Agent 循环",
"第 4 天:MCP 概念 + 写一个 MCP 服务",
"第 5 天:在 Cursor 和自己的 Agent 里用 MCP",
"第 6 天:真实模型试跑 + 对照文档(上半)",
"第 7 天:M1 验收"
]
},
{
"id": "plan.week11",
"title": "第 11 周:项目三 M2——用 LangGraph 实现多 Agent 编排",
"type": "week",
"domain": "plan",
"stack": [
"langchain",
"langgraph",
"mcp",
"prompt-engineering"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
11
],
"order": 11,
"path": "plan/week11-agent-m2-langgraph.md",
"sections": [
"第 1 天:LangGraph 基础",
"第 2 天:State、结构化决定、路由规则",
"第 3 天:模型、工具、提示词、节点",
"第 4 天:组装图 + 测试",
"第 5 天:MCP 工具接入 LangGraph + 命令行",
"第 6 天:真实模型试跑和调提示词",
"第 7 天:对照文档 + M2 验收"
]
},
{
"id": "plan.week12",
"title": "第 12 周:项目三 M3——检查点续跑、人机协作、后台作业、SSE、长期记忆",
"type": "week",
"domain": "plan",
"stack": [
"asyncio",
"fastapi",
"langgraph",
"agent-ops"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
12
],
"order": 12,
"path": "plan/week12-agent-m3-persistence.md",
"sections": [
"核心设计:两层状态",
"第 1 天:检查点和续跑",
"第 2 天:长期记忆(Store)",
"第 3 天:业务表和租约",
"第 4 天:后台运行器(RunManager)和报告",
"第 5 天:FastAPI 接口和 SSE",
"第 6 天:页面 + 崩溃恢复演示",
"第 7 天:走查 + M3 验收"
]
},
{
"id": "plan.week13",
"title": "第 13 周:项目三 M4——评测集、可观测性、文档、Docker + Dify / Coze 体验",
"type": "week",
"domain": "plan",
"stack": [
"docker",
"prompt-engineering",
"agent-ops",
"lowcode"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
13
],
"order": 13,
"path": "plan/week13-agent-m4-eval-lowcode.md",
"sections": [
"第 1 天:评测集和规则检查",
"第 2 天:评测脚本、回归测试、用评测驱动改进",
"第 3 天:可观测性(回调、LangSmith / Langfuse)",
"第 4 天:文档(架构、设计取舍、映射表)",
"第 5 天:README、Docker、从零验证、讲解稿",
"第 6~7 天:Dify / Coze 体验(低代码平台)"
]
},
{
"id": "plan.week14",
"title": "第 14 周:后端补强——消息队列、gRPC、Redis / MySQL 专题、全部项目部署、CI/CD",
"type": "week",
"domain": "plan",
"stack": [
"go",
"mysql",
"redis",
"mq",
"grpc-microservices",
"docker",
"nginx",
"linux",
"cicd"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
14
],
"order": 14,
"path": "plan/week14-backend-extend-deploy.md",
"sections": [
"本周最终目录",
"第 1 天:消息队列——RabbitMQ 动手 + Kafka 概念",
"第 2 天:微服务概念 + gRPC",
"第 3 天:Redis 面试专题——锁、缓存三大问题、限流",
"第 4 天:MySQL 面试专题——索引、EXPLAIN、事务和隔离级别",
"第 5 天:把三个项目部署到一台服务器",
"第 6 天:CI/CD——测试、构建镜像、自动部署",
"第 7 天(可选):用 Go 写一个鉴权网关",
"本周验收"
]
},
{
"id": "plan.week15",
"title": "第 15 周:阶段 4(上)——作品集、简历、STAR 经历、口述稿",
"type": "week",
"domain": "plan",
"stack": [
"git"
],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
15
],
"order": 15,
"path": "plan/week15-package-resume.md",
"sections": [
"本周最终目录",
"第 1 天:整理作品集(3 个公开仓库)",
"第 2 天:简历结构、学历和技能栏",
"第 3 天:项目经历怎么写",
"第 4 天:工作经历——3 条 STAR",
"第 5 天:针对岗位调整简历(关键词对照)",
"第 6 天:口述稿和演示视频",
"第 7 天:自查、请人审阅、阶段 4(上)验收"
]
},
{
"id": "plan.week16",
"title": "第 16 周:阶段 4(下)——面试准备、终点验收、投递",
"type": "week",
"domain": "plan",
"stack": [],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": 12,
"week": [
16
],
"order": 16,
"path": "plan/week16-interview.md",
"sections": [
"本周最终目录",
"第 1 天:面试笔记(上)——Python 和 FastAPI",
"第 2 天:面试笔记(中)——RAG 和 Agent",
"第 3 天:面试笔记(下)——后端、前端、Go",
"第 4 天:项目深挖和系统设计",
"第 5 天:模拟面试和抽题练习",
"第 6 天:终点验收",
"第 7 天:开始投递,建立复盘循环"
]
},
{
"id": "python.asyncio.concurrency-control",
"title": "并发控制:gather / TaskGroup、Semaphore、超时、取消、阻塞调用",
"type": "lesson",
"domain": "python",
"stack": [
"asyncio"
],
"tags": [
"TaskGroup",
"Semaphore",
"timeout",
"取消",
"to_thread",
"背压"
],
"level": "intermediate",
"prerequisites": [
"python.asyncio.coroutines-tasks"
],
"related": [
"python.asyncio.scenario.concurrent-llm-calls",
"python.asyncio.interview",
"backend.go.errors-concurrency"
],
"est_hours": 3,
"week": [
4,
5,
12
],
"order": 2,
"path": "topics/python/asyncio/02-concurrency-control.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "python.asyncio.coroutines-tasks",
"title": "协程、任务和事件循环:和 JS Promise 对照",
"type": "lesson",
"domain": "python",
"stack": [
"asyncio"
],
"tags": [
"协程",
"事件循环",
"Task",
"await",
"async for"
],
"level": "basic",
"prerequisites": [
"python.python.syntax-for-js"
],
"related": [
"python.asyncio.concurrency-control",
"python.asyncio.interview"
],
"est_hours": 2,
"week": [
4
],
"order": 1,
"path": "topics/python/asyncio/01-coroutines-tasks.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "python.asyncio.index",
"title": "asyncio 异步编程",
"type": "index",
"domain": "python",
"stack": [
"asyncio"
],
"tags": [
"asyncio",
"协程",
"并发",
"超时"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
4,
5,
12
],
"order": null,
"path": "topics/python/asyncio/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "python.asyncio.interview",
"title": "asyncio 面试题",
"type": "interview",
"domain": "python",
"stack": [
"asyncio"
],
"tags": [
"asyncio",
"协程",
"并发",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"python.asyncio.coroutines-tasks",
"python.asyncio.concurrency-control"
],
"est_hours": null,
"week": [
4,
16
],
"order": null,
"path": "topics/python/asyncio/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
}
},
{
"id": "python.asyncio.scenario.concurrent-llm-calls",
"title": "并发调用多个模型和外部接口:限并发、超时、重试、部分失败",
"type": "scenario",
"domain": "python",
"stack": [
"asyncio",
"fastapi"
],
"tags": [
"并发",
"大模型调用",
"超时",
"重试",
"限流",
"部分失败"
],
"level": "intermediate",
"prerequisites": [
"python.asyncio.concurrency-control"
],
"related": [
"python.asyncio.interview",
"backend.go.scenario.batch-third-party-calls"
],
"est_hours": 2,
"week": [
5,
12
],
"order": null,
"path": "topics/python/asyncio/scenarios/concurrent-llm-calls.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "python.fastapi.deps-auth-errors",
"title": "依赖注入、鉴权、中间件和统一错误处理",
"type": "lesson",
"domain": "python",
"stack": [
"fastapi"
],
"tags": [
"Depends",
"鉴权",
"JWT",
"中间件",
"异常处理器",
"多租户"
],
"level": "intermediate",
"prerequisites": [
"python.fastapi.routing-validation"
],
"related": [
"python.fastapi.streaming-testing",
"backend.gin.middleware-auth",
"python.fastapi.interview"
],
"est_hours": 3,
"week": [
4,
5
],
"order": 2,
"path": "topics/python/fastapi/02-deps-auth-errors.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "python.fastapi.index",
"title": "FastAPI",
"type": "index",
"domain": "python",
"stack": [
"fastapi"
],
"tags": [
"FastAPI",
"Web 框架",
"pydantic",
"SSE"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
4,
5,
12
],
"order": null,
"path": "topics/python/fastapi/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "python.fastapi.interview",
"title": "FastAPI 面试题",
"type": "interview",
"domain": "python",
"stack": [
"fastapi"
],
"tags": [
"FastAPI",
"pydantic",
"依赖注入",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"python.fastapi.routing-validation",
"python.fastapi.deps-auth-errors",
"python.fastapi.streaming-testing"
],
"est_hours": null,
"week": [
4,
5,
16
],
"order": null,
"path": "topics/python/fastapi/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 4,
"进阶": 3,
"场景题": 3
}
},
{
"id": "python.fastapi.routing-validation",
"title": "路由和参数校验:路径 / 查询 / 请求体、pydantic 模型、响应模型",
"type": "lesson",
"domain": "python",
"stack": [
"fastapi"
],
"tags": [
"路由",
"pydantic",
"参数校验",
"响应模型",
"OpenAPI"
],
"level": "basic",
"prerequisites": [
"python.python.typing-errors-testing"
],
"related": [
"python.fastapi.deps-auth-errors",
"backend.gin.routing-binding",
"python.fastapi.interview"
],
"est_hours": 2,
"week": [
4
],
"order": 1,
"path": "topics/python/fastapi/01-routing-validation.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "python.fastapi.scenario.streaming-chat-api",
"title": "大模型对话 API:鉴权、统一错误、SSE 流式、客户端断开即停止",
"type": "scenario",
"domain": "python",
"stack": [
"fastapi",
"asyncio",
"nginx"
],
"tags": [
"对话 API",
"SSE",
"鉴权",
"错误处理",
"可测试性"
],
"level": "intermediate",
"prerequisites": [
"python.fastapi.streaming-testing"
],
"related": [
"python.fastapi.interview",
"devops.nginx.scenario.ai-gateway-sse-canary"
],
"est_hours": 2,
"week": [
5,
12
],
"order": null,
"path": "topics/python/fastapi/scenarios/streaming-chat-api.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "python.fastapi.streaming-testing",
"title": "流式输出(SSE)、生命周期、测试和部署",
"type": "lesson",
"domain": "python",
"stack": [
"fastapi"
],
"tags": [
"SSE",
"StreamingResponse",
"lifespan",
"TestClient",
"pytest",
"uvicorn"
],
"level": "intermediate",
"prerequisites": [
"python.fastapi.deps-auth-errors"
],
"related": [
"python.fastapi.scenario.streaming-chat-api",
"devops.nginx.https-stream-limit",
"python.fastapi.interview"
],
"est_hours": 3,
"week": [
5,
12
],
"order": 3,
"path": "topics/python/fastapi/03-streaming-testing.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "python.python.index",
"title": "Python 语言",
"type": "index",
"domain": "python",
"stack": [
"python"
],
"tags": [
"Python",
"语法",
"类型标注",
"pytest"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
4
],
"order": null,
"path": "topics/python/python/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "python.python.interview",
"title": "Python 面试题",
"type": "interview",
"domain": "python",
"stack": [
"python"
],
"tags": [
"Python",
"基础",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"python.python.syntax-for-js",
"python.python.typing-errors-testing",
"python.python.project-packaging"
],
"est_hours": null,
"week": [
4,
16
],
"order": null,
"path": "topics/python/python/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 5,
"进阶": 4,
"场景题": 3
}
},
{
"id": "python.python.project-packaging",
"title": "工程化:虚拟环境、uv / pip、项目结构、导入、日志和配置",
"type": "lesson",
"domain": "python",
"stack": [
"python"
],
"tags": [
"虚拟环境",
"uv",
"pip",
"pyproject.toml",
"导入",
"logging",
"配置"
],
"level": "basic",
"prerequisites": [
"python.python.syntax-for-js"
],
"related": [
"python.fastapi.routing-validation",
"python.python.interview"
],
"est_hours": 2,
"week": [
4
],
"order": 3,
"path": "topics/python/python/03-project-packaging.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "python.python.scenario.order-reconciliation",
"title": "订单对账脚本:从“能跑的脚本”到可测试、可维护的工具",
"type": "scenario",
"domain": "python",
"stack": [
"python"
],
"tags": [
"对账",
"CSV",
"Decimal",
"数据处理",
"测试"
],
"level": "basic",
"prerequisites": [
"python.python.typing-errors-testing"
],
"related": [
"python.python.interview",
"backend.mq.reliability"
],
"est_hours": 2,
"week": [
4
],
"order": null,
"path": "topics/python/python/scenarios/order-reconciliation.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "python.python.syntax-for-js",
"title": "给 JS 开发者的 Python:语法、数据结构、推导式、函数、类",
"type": "lesson",
"domain": "python",
"stack": [
"python"
],
"tags": [
"语法",
"list",
"dict",
"推导式",
"解包",
"类"
],
"level": "basic",
"prerequisites": [],
"related": [
"python.python.typing-errors-testing",
"python.python.interview"
],
"est_hours": 3,
"week": [
4
],
"order": 1,
"path": "topics/python/python/01-syntax-for-js.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "python.python.typing-errors-testing",
"title": "类型标注、dataclass、异常和上下文管理器、pytest",
"type": "lesson",
"domain": "python",
"stack": [
"python"
],
"tags": [
"类型标注",
"dataclass",
"Protocol",
"异常",
"with",
"生成器",
"pytest"
],
"level": "basic",
"prerequisites": [
"python.python.syntax-for-js"
],
"related": [
"python.python.scenario.order-reconciliation",
"python.asyncio.coroutines-tasks",
"python.python.interview"
],
"est_hours": 3,
"week": [
4
],
"order": 2,
"path": "topics/python/python/02-typing-errors-testing.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "research.boss-2026-10-23",
"title": "BOSS直聘北京岗位调研(2026-10-23)",
"type": "research",
"domain": "plan",
"stack": [],
"tags": [
"岗位调研",
"BOSS直聘",
"北京",
"AI 应用",
"Agent",
"全栈"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [],
"order": null,
"path": "research/boss-2026-10-23.md",
"sections": [
"原始记录:BOSS直聘 北京岗位调研(2026-10-23,登录后只读)",
"技术出现次数(约数)",
"反复出现、计划里要补强的要求",
"代表岗位(职位 | 公司 | 经验 | URL 前缀 https://www.zhipin.com)"
]
},
{
"id": "research.index",
"title": "岗位调研记录",
"type": "index",
"domain": "plan",
"stack": [],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [],
"order": null,
"path": "research/index.md",
"sections": []
},
{
"id": "scenarios.index",
"title": "跨技术栈企业服务场景",
"type": "index",
"domain": "cross",
"stack": [],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [],
"order": null,
"path": "scenarios/index.md",
"sections": []
},
{
"id": "topics.index",
"title": "专项学习总目录",
"type": "index",
"domain": "plan",
"stack": [],
"tags": [],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [],
"order": null,
"path": "topics/index.md",
"sections": [
"后端(`backend`)",
"运维与工程(`devops`)",
"Python(`python`)",
"AI 应用(`ai`)",
"前端(`frontend`)",
"计算机基础(`cs`)"
]
}
]
}