Files
zhuangang/catalog.json
T

9675 lines
216 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": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/backend/data-pipeline/examples/incremental-sync"
]
},
{
"stack": "elasticsearch",
"domain": "backend",
"title": "Elasticsearch",
"index": "topics/backend/elasticsearch/index.md",
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/backend/elasticsearch/examples/hybrid-search"
]
},
{
"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": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/backend/java-spring/examples/java-basics"
]
},
{
"stack": "mongodb",
"domain": "backend",
"title": "MongoDB",
"index": "topics/backend/mongodb/index.md",
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/backend/mongodb/examples/conversations"
]
},
{
"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(了解级)",
"index": "topics/backend/nodejs/index.md",
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/backend/nodejs/examples/express-bff"
]
},
{
"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": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/cs/algorithms/examples/patterns"
]
},
{
"stack": "network-os",
"domain": "cs",
"title": "网络与操作系统基础",
"index": "topics/cs/network-os/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/cs/network-os/examples/tcp-basics"
]
},
{
"stack": "web-security",
"domain": "cs",
"title": "Web 安全基础",
"index": "topics/cs/web-security/index.md",
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/cs/web-security/examples/secure-api"
]
},
{
"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": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/devops/k8s/examples/agent-api"
]
},
{
"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": 2,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/frontend/fe-testing-perf/examples/search-box"
]
},
{
"stack": "react",
"domain": "frontend",
"title": "React",
"index": "topics/frontend/react/index.md",
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/frontend/react/examples/task-panel"
]
},
{
"stack": "ssr",
"domain": "frontend",
"title": "SSR(Nuxt / Next.js)",
"index": "topics/frontend/ssr/index.md",
"lessons": 2,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/frontend/ssr/examples/next-ai-chat"
]
},
{
"stack": "typescript",
"domain": "frontend",
"title": "TypeScript",
"index": "topics/frontend/typescript/index.md",
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/frontend/typescript/examples/api-client"
]
},
{
"stack": "vite",
"domain": "frontend",
"title": "Vite",
"index": "topics/frontend/vite/index.md",
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/frontend/vite/examples/vite-config"
]
},
{
"stack": "vue",
"domain": "frontend",
"title": "Vue 3",
"index": "topics/frontend/vue/index.md",
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/frontend/vue/examples/ai-chat-stream"
]
},
{
"stack": "webpack",
"domain": "frontend",
"title": "webpack",
"index": "topics/frontend/webpack/index.md",
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": [
"topics/frontend/webpack/examples/webpack-config"
]
},
{
"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": [
"ETL",
"增量同步",
"幂等",
"数据质量"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
14
],
"order": null,
"path": "topics/backend/data-pipeline/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中"
]
},
{
"id": "backend.data-pipeline.interview",
"title": "数据管道面试题",
"type": "interview",
"domain": "backend",
"stack": [
"data-pipeline"
],
"tags": [
"数据同步",
"幂等",
"重试",
"数据质量",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"backend.data-pipeline.reliability"
],
"est_hours": null,
"week": [
14,
16
],
"order": null,
"path": "topics/backend/data-pipeline/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "backend.data-pipeline.reliability",
"title": "数据管道基础:批处理与流处理、增量同步、限流重试、幂等、数据质量和告警",
"type": "lesson",
"domain": "backend",
"stack": [
"data-pipeline"
],
"tags": [
"ETL",
"批处理",
"流处理",
"增量同步",
"水位线",
"限流",
"重试",
"幂等",
"死信",
"数据质量",
"告警"
],
"level": "intermediate",
"prerequisites": [
"backend.postgresql.index-tx-mvcc",
"backend.mq.reliability"
],
"related": [
"backend.data-pipeline.scenario.third-party-sync",
"backend.data-pipeline.interview",
"backend.elasticsearch.scenario.kb-search-sync"
],
"est_hours": 3,
"week": [
14
],
"order": 1,
"path": "topics/backend/data-pipeline/01-batch-stream-reliability.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.data-pipeline.scenario.third-party-sync",
"title": "第三方平台订单同步:限流、断点续跑、迟到数据、对账和告警",
"type": "scenario",
"domain": "backend",
"stack": [
"data-pipeline",
"postgresql",
"redis",
"mq"
],
"tags": [
"第三方对接",
"增量同步",
"限流",
"对账",
"迟到数据",
"告警"
],
"level": "intermediate",
"prerequisites": [
"backend.data-pipeline.reliability"
],
"related": [
"backend.data-pipeline.interview",
"backend.redis.lock-ratelimit"
],
"est_hours": 2.5,
"week": [
14
],
"order": null,
"path": "topics/backend/data-pipeline/scenarios/third-party-sync.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "backend.elasticsearch.index",
"title": "Elasticsearch",
"type": "index",
"domain": "backend",
"stack": [
"elasticsearch"
],
"tags": [
"Elasticsearch",
"全文检索",
"混合检索",
"向量检索"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
6,
14
],
"order": null,
"path": "topics/backend/elasticsearch/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "backend.elasticsearch.interview",
"title": "Elasticsearch 面试题",
"type": "interview",
"domain": "backend",
"stack": [
"elasticsearch"
],
"tags": [
"Elasticsearch",
"倒排索引",
"混合检索",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"backend.elasticsearch.search-hybrid"
],
"est_hours": null,
"week": [
14,
16
],
"order": null,
"path": "topics/backend/elasticsearch/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "backend.elasticsearch.scenario.kb-search-sync",
"title": "知识库混合检索:数据库到 ES 的同步、权限过滤、分词词典和检索效果评估",
"type": "scenario",
"domain": "backend",
"stack": [
"elasticsearch",
"postgresql",
"mq",
"rag"
],
"tags": [
"混合检索",
"数据同步",
"CDC",
"outbox",
"权限过滤",
"IK 词典",
"召回率"
],
"level": "intermediate",
"prerequisites": [
"backend.elasticsearch.search-hybrid",
"ai.rag.hybrid-rerank"
],
"related": [
"backend.elasticsearch.interview",
"ai.rag.scenario.permission-aware-kb",
"backend.mq.reliability"
],
"est_hours": 2.5,
"week": [
6,
14
],
"order": null,
"path": "topics/backend/elasticsearch/scenarios/kb-search-sync.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "backend.elasticsearch.search-hybrid",
"title": "Elasticsearch:倒排索引、映射与中文分词、BM25、kNN 向量检索、混合检索和别名重建",
"type": "lesson",
"domain": "backend",
"stack": [
"elasticsearch"
],
"tags": [
"Elasticsearch",
"倒排索引",
"BM25",
"IK 分词",
"cjk",
"dense_vector",
"kNN",
"RRF",
"混合检索",
"别名",
"reindex"
],
"level": "intermediate",
"prerequisites": [
"ai.rag.hybrid-rerank"
],
"related": [
"backend.elasticsearch.scenario.kb-search-sync",
"ai.rag.index",
"backend.elasticsearch.interview"
],
"est_hours": 3,
"week": [
6,
14
],
"order": 1,
"path": "topics/backend/elasticsearch/01-search-basics-hybrid.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.awareness",
"title": "Java / Spring Boot(了解级):读懂项目结构、IoC 与依赖注入、分层、事务注解和与 Go / Python 的对照",
"type": "lesson",
"domain": "backend",
"stack": [
"java-spring"
],
"tags": [
"Java",
"Spring Boot",
"IoC",
"依赖注入",
"注解",
"事务",
"JPA",
"MyBatis",
"虚拟线程"
],
"level": "basic",
"prerequisites": [
"backend.go.index"
],
"related": [
"backend.java-spring.scenario.call-java-service",
"backend.java-spring.interview"
],
"est_hours": 2,
"week": [
14
],
"order": 1,
"path": "topics/backend/java-spring/01-java-spring-awareness.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.java-spring.index",
"title": "Java / Spring Boot(了解级)",
"type": "index",
"domain": "backend",
"stack": [
"java-spring"
],
"tags": [
"Java",
"Spring Boot",
"了解级"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
14
],
"order": null,
"path": "topics/backend/java-spring/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中"
]
},
{
"id": "backend.java-spring.interview",
"title": "Java / Spring Boot(了解级)面试题",
"type": "interview",
"domain": "backend",
"stack": [
"java-spring"
],
"tags": [
"Java",
"Spring Boot",
"IoC",
"事务",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"backend.java-spring.awareness"
],
"est_hours": null,
"week": [
14,
16
],
"order": null,
"path": "topics/backend/java-spring/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "backend.java-spring.scenario.call-java-service",
"title": "Python Agent 调用公司已有的 Java 业务系统:读接口、封装工具、错误映射和联调",
"type": "scenario",
"domain": "backend",
"stack": [
"java-spring",
"function-calling",
"fastapi"
],
"tags": [
"系统对接",
"工具封装",
"错误码映射",
"OpenAPI",
"联调",
"幂等"
],
"level": "intermediate",
"prerequisites": [
"backend.java-spring.awareness",
"ai.function-calling.tool-loop"
],
"related": [
"backend.java-spring.interview",
"ai.function-calling.scenario.safe-business-tools"
],
"est_hours": 2,
"week": [
14
],
"order": null,
"path": "topics/backend/java-spring/scenarios/call-java-service.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "backend.mongodb.document-model",
"title": "MongoDB 基础:文档建模(嵌入还是引用)、索引与 ESR、聚合、事务和变更流",
"type": "lesson",
"domain": "backend",
"stack": [
"mongodb"
],
"tags": [
"MongoDB",
"文档模型",
"嵌入",
"引用",
"复合索引",
"ESR",
"聚合管道",
"事务",
"变更流",
"副本集"
],
"level": "basic",
"prerequisites": [
"backend.postgresql.index"
],
"related": [
"backend.mongodb.scenario.conversation-store",
"backend.elasticsearch.index",
"backend.mongodb.interview"
],
"est_hours": 3,
"week": [
14
],
"order": 1,
"path": "topics/backend/mongodb/01-document-model.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.mongodb.index",
"title": "MongoDB",
"type": "index",
"domain": "backend",
"stack": [
"mongodb"
],
"tags": [
"MongoDB",
"文档数据库",
"NoSQL"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
14
],
"order": null,
"path": "topics/backend/mongodb/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "backend.mongodb.interview",
"title": "MongoDB 面试题",
"type": "interview",
"domain": "backend",
"stack": [
"mongodb"
],
"tags": [
"MongoDB",
"文档模型",
"索引",
"事务",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"backend.mongodb.document-model"
],
"est_hours": null,
"week": [
14,
16
],
"order": null,
"path": "topics/backend/mongodb/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "backend.mongodb.scenario.conversation-store",
"title": "AI 客服会话存储:海量对话记录的建模、查询、归档和同步",
"type": "scenario",
"domain": "backend",
"stack": [
"mongodb",
"postgresql",
"elasticsearch"
],
"tags": [
"对话记录",
"文档建模",
"TTL",
"归档",
"变更流",
"多租户"
],
"level": "intermediate",
"prerequisites": [
"backend.mongodb.document-model"
],
"related": [
"backend.mongodb.interview",
"scenario.data-sync",
"scenario.customer-service-kb"
],
"est_hours": 2,
"week": [
14
],
"order": null,
"path": "topics/backend/mongodb/scenarios/conversation-store.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.express-nest",
"title": "Node.js 后端(了解级):事件循环、Express 5 中间件与错误处理、NestJS 的模块化思路、做 BFF",
"type": "lesson",
"domain": "backend",
"stack": [
"nodejs"
],
"tags": [
"Node.js",
"事件循环",
"Express 5",
"中间件",
"错误处理",
"NestJS",
"依赖注入",
"BFF",
"SSE"
],
"level": "basic",
"prerequisites": [
"frontend.typescript.type-system"
],
"related": [
"frontend.ssr.nextjs-app-router",
"backend.nodejs.scenario.ai-bff",
"backend.nodejs.interview"
],
"est_hours": 2.5,
"week": [
7,
14
],
"order": 1,
"path": "topics/backend/nodejs/01-express-nest-basics.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "backend.nodejs.index",
"title": "Node.js(了解级)",
"type": "index",
"domain": "backend",
"stack": [
"nodejs"
],
"tags": [
"Node.js",
"Express",
"NestJS",
"BFF"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7,
14
],
"order": null,
"path": "topics/backend/nodejs/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中"
]
},
{
"id": "backend.nodejs.interview",
"title": "Node.js 面试题",
"type": "interview",
"domain": "backend",
"stack": [
"nodejs"
],
"tags": [
"Node.js",
"事件循环",
"Express",
"NestJS",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"backend.nodejs.express-nest"
],
"est_hours": null,
"week": [
14,
16
],
"order": null,
"path": "topics/backend/nodejs/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "backend.nodejs.scenario.ai-bff",
"title": "用 Node.js 给 AI 应用做 BFF:鉴权、限流、流式转发、超时和断开处理",
"type": "scenario",
"domain": "backend",
"stack": [
"nodejs",
"redis",
"nginx",
"fastapi"
],
"tags": [
"BFF",
"SSE",
"流式转发",
"限流",
"超时",
"request id"
],
"level": "intermediate",
"prerequisites": [
"backend.nodejs.express-nest"
],
"related": [
"backend.nodejs.interview",
"frontend.ssr.scenario.help-center"
],
"est_hours": 2,
"week": [
14
],
"order": null,
"path": "topics/backend/nodejs/scenarios/ai-bff.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.complexity-patterns",
"title": "复杂度分析和九个高频模式:哈希、滑动窗口、二分、堆、BFS、拓扑排序、动态规划、LRU、区间合并",
"type": "lesson",
"domain": "cs",
"stack": [
"algorithms"
],
"tags": [
"时间复杂度",
"哈希表",
"滑动窗口",
"二分查找",
"堆",
"Top K",
"BFS",
"DFS",
"拓扑排序",
"动态规划",
"LRU"
],
"level": "basic",
"prerequisites": [
"python.python.index"
],
"related": [
"cs.algorithms.scenario.business-algorithms",
"cs.algorithms.interview"
],
"est_hours": 6,
"week": [
16
],
"order": 1,
"path": "topics/cs/algorithms/01-complexity-patterns.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": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中"
]
},
{
"id": "cs.algorithms.interview",
"title": "数据结构与算法面试题",
"type": "interview",
"domain": "cs",
"stack": [
"algorithms"
],
"tags": [
"算法",
"数据结构",
"手写代码",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"cs.algorithms.complexity-patterns"
],
"est_hours": null,
"week": [
16
],
"order": null,
"path": "topics/cs/algorithms/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "cs.algorithms.scenario.business-algorithms",
"title": "业务中的算法:热门问题 Top K、任务依赖排序、相似问题去重和缓存淘汰",
"type": "scenario",
"domain": "cs",
"stack": [
"algorithms",
"redis",
"langgraph"
],
"tags": [
"Top K",
"拓扑排序",
"编辑距离",
"LRU",
"去重",
"复杂度"
],
"level": "intermediate",
"prerequisites": [
"cs.algorithms.complexity-patterns"
],
"related": [
"cs.algorithms.interview"
],
"est_hours": 1.5,
"week": [
16
],
"order": null,
"path": "topics/cs/algorithms/scenarios/business-algorithms.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "cs.network-os.http-tcp",
"title": "网络基础:从输入 URL 到页面展示、TCP 握手挥手与粘包、HTTP/1.1 / 2 / 3、HTTPS、长连接与 SSE",
"type": "lesson",
"domain": "cs",
"stack": [
"network-os"
],
"tags": [
"TCP",
"三次握手",
"四次挥手",
"TIME_WAIT",
"粘包",
"HTTP/2",
"HTTP/3",
"HTTPS",
"TLS",
"DNS",
"keep-alive",
"SSE",
"WebSocket"
],
"level": "basic",
"prerequisites": [],
"related": [
"cs.network-os.os-basics",
"cs.network-os.scenario.connection-troubleshooting",
"devops.nginx.https-stream-limit"
],
"est_hours": 3,
"week": [
14,
16
],
"order": 1,
"path": "topics/cs/network-os/01-http-tcp.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "cs.network-os.index",
"title": "网络与操作系统基础",
"type": "index",
"domain": "cs",
"stack": [
"network-os"
],
"tags": [
"TCP",
"HTTP",
"HTTPS",
"进程线程",
"I/O 多路复用"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
14,
16
],
"order": null,
"path": "topics/cs/network-os/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中"
]
},
{
"id": "cs.network-os.interview",
"title": "网络与操作系统面试题",
"type": "interview",
"domain": "cs",
"stack": [
"network-os"
],
"tags": [
"TCP",
"HTTP",
"HTTPS",
"进程线程",
"I/O 多路复用",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"cs.network-os.http-tcp",
"cs.network-os.os-basics"
],
"est_hours": null,
"week": [
14,
16
],
"order": null,
"path": "topics/cs/network-os/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "cs.network-os.os-basics",
"title": "操作系统基础:进程线程协程、I/O 模型与多路复用、内存与虚拟内存、文件描述符、死锁",
"type": "lesson",
"domain": "cs",
"stack": [
"network-os"
],
"tags": [
"进程",
"线程",
"协程",
"GIL",
"I/O 多路复用",
"epoll",
"虚拟内存",
"OOM",
"文件描述符",
"死锁"
],
"level": "basic",
"prerequisites": [
"cs.network-os.http-tcp"
],
"related": [
"python.asyncio.index",
"devops.linux.troubleshooting",
"cs.network-os.interview"
],
"est_hours": 3,
"week": [
14,
16
],
"order": 2,
"path": "topics/cs/network-os/02-os-basics.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "cs.network-os.scenario.connection-troubleshooting",
"title": "线上连接问题排查:大量 TIME_WAIT、连接池耗尽、fd 用尽和事件循环阻塞",
"type": "scenario",
"domain": "cs",
"stack": [
"network-os",
"linux",
"fastapi"
],
"tags": [
"TIME_WAIT",
"连接池",
"文件描述符",
"事件循环阻塞",
"超时",
"排查"
],
"level": "intermediate",
"prerequisites": [
"cs.network-os.http-tcp",
"cs.network-os.os-basics"
],
"related": [
"cs.network-os.interview",
"devops.linux.scenario.incident-troubleshooting"
],
"est_hours": 2,
"week": [
14,
16
],
"order": null,
"path": "topics/cs/network-os/scenarios/connection-troubleshooting.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "cs.web-security.common-attacks",
"title": "Web 安全基础:XSS、CSRF、SQL 注入、CORS、SSRF 的原理、防御和在 AI 应用中的新形态",
"type": "lesson",
"domain": "cs",
"stack": [
"web-security"
],
"tags": [
"XSS",
"CSRF",
"SQL 注入",
"CORS",
"SSRF",
"CSP",
"SameSite",
"参数化查询",
"OWASP"
],
"level": "basic",
"prerequisites": [
"cs.network-os.http-tcp"
],
"related": [
"cs.web-security.scenario.ai-app-security",
"ai.prompt-engineering.scenario.injection-defense",
"cs.web-security.interview"
],
"est_hours": 3,
"week": [
7,
14,
16
],
"order": 1,
"path": "topics/cs/web-security/01-xss-csrf-sqli-cors-ssrf.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "cs.web-security.index",
"title": "Web 安全基础",
"type": "index",
"domain": "cs",
"stack": [
"web-security"
],
"tags": [
"XSS",
"CSRF",
"SQL 注入",
"CORS",
"SSRF",
"OWASP"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7,
14,
16
],
"order": null,
"path": "topics/cs/web-security/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"参考"
]
},
{
"id": "cs.web-security.interview",
"title": "Web 安全面试题",
"type": "interview",
"domain": "cs",
"stack": [
"web-security"
],
"tags": [
"XSS",
"CSRF",
"SQL 注入",
"CORS",
"SSRF",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"cs.web-security.common-attacks"
],
"est_hours": null,
"week": [
7,
14,
16
],
"order": null,
"path": "topics/cs/web-security/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "cs.web-security.scenario.ai-app-security",
"title": "AI 客服上线前的安全评审:回答渲染 XSS、抓取工具 SSRF、Text-to-SQL 注入和跨域配置",
"type": "scenario",
"domain": "cs",
"stack": [
"web-security",
"fastapi",
"vue",
"function-calling"
],
"tags": [
"安全评审",
"XSS",
"SSRF",
"Text-to-SQL",
"CORS",
"CSP",
"最小权限"
],
"level": "intermediate",
"prerequisites": [
"cs.web-security.common-attacks"
],
"related": [
"cs.web-security.interview",
"ai.function-calling.scenario.safe-business-tools",
"ai.prompt-engineering.scenario.injection-defense"
],
"est_hours": 2.5,
"week": [
14,
16
],
"order": null,
"path": "topics/cs/web-security/scenarios/ai-app-security.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.core-objects",
"title": "Kubernetes 基础:Pod / Deployment / Service / Ingress、配置与密钥、探针、滚动更新和扩缩容",
"type": "lesson",
"domain": "devops",
"stack": [
"k8s"
],
"tags": [
"Kubernetes",
"Pod",
"Deployment",
"Service",
"Ingress",
"ConfigMap",
"Secret",
"探针",
"滚动更新",
"HPA",
"PDB",
"kubectl"
],
"level": "basic",
"prerequisites": [
"devops.docker.image-dockerfile"
],
"related": [
"devops.k8s.scenario.agent-rollout",
"devops.nginx.scenario.ai-gateway-sse-canary",
"devops.k8s.interview"
],
"est_hours": 3,
"week": [
14
],
"order": 1,
"path": "topics/devops/k8s/01-core-objects.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "devops.k8s.index",
"title": "Kubernetes 基础",
"type": "index",
"domain": "devops",
"stack": [
"k8s"
],
"tags": [
"Kubernetes",
"部署",
"探针",
"滚动更新"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
14
],
"order": null,
"path": "topics/devops/k8s/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "devops.k8s.interview",
"title": "Kubernetes 基础面试题",
"type": "interview",
"domain": "devops",
"stack": [
"k8s"
],
"tags": [
"Kubernetes",
"探针",
"滚动更新",
"排查",
"面试"
],
"level": "basic",
"prerequisites": [],
"related": [
"devops.k8s.core-objects"
],
"est_hours": null,
"week": [
14,
16
],
"order": null,
"path": "topics/devops/k8s/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "devops.k8s.scenario.agent-rollout",
"title": "AI Agent 服务上 K8s:发布时流式回答不中断、慢启动、密钥管理和按负载扩容",
"type": "scenario",
"domain": "devops",
"stack": [
"k8s",
"docker",
"nginx",
"cicd"
],
"tags": [
"滚动更新",
"优雅退出",
"SSE",
"探针",
"HPA",
"Secret",
"回滚"
],
"level": "intermediate",
"prerequisites": [
"devops.k8s.core-objects",
"devops.docker.image-dockerfile"
],
"related": [
"devops.k8s.interview",
"devops.cicd.release-rollback"
],
"est_hours": 2.5,
"week": [
14
],
"order": null,
"path": "topics/devops/k8s/scenarios/agent-rollout.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": [
"Vitest",
"Testing Library",
"Playwright",
"Web Vitals",
"性能优化"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/fe-testing-perf/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "frontend.fe-testing-perf.interview",
"title": "前端测试与性能面试题",
"type": "interview",
"domain": "frontend",
"stack": [
"fe-testing-perf"
],
"tags": [
"测试",
"性能优化",
"Web Vitals",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"frontend.fe-testing-perf.testing",
"frontend.fe-testing-perf.web-vitals"
],
"est_hours": null,
"week": [
7,
16
],
"order": null,
"path": "topics/frontend/fe-testing-perf/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "frontend.fe-testing-perf.scenario.perf-regression",
"title": "性能治理:真实用户监控、定位慢页面、CI 性能预算和测试防回归",
"type": "scenario",
"domain": "frontend",
"stack": [
"fe-testing-perf",
"cicd"
],
"tags": [
"性能监控",
"RUM",
"Lighthouse CI",
"性能预算",
"回归测试",
"INP"
],
"level": "intermediate",
"prerequisites": [
"frontend.fe-testing-perf.web-vitals",
"frontend.fe-testing-perf.testing"
],
"related": [
"frontend.fe-testing-perf.interview",
"frontend.webpack.scenario.build-speed"
],
"est_hours": 2.5,
"week": [
7
],
"order": null,
"path": "topics/frontend/fe-testing-perf/scenarios/perf-regression.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "frontend.fe-testing-perf.testing",
"title": "前端测试:Vitest 单元测试、Testing Library 组件测试、Playwright 端到端测试",
"type": "lesson",
"domain": "frontend",
"stack": [
"fe-testing-perf"
],
"tags": [
"Vitest",
"Testing Library",
"Playwright",
"假定时器",
"Mock",
"竞态",
"测试金字塔"
],
"level": "intermediate",
"prerequisites": [
"frontend.react.hooks-rendering"
],
"related": [
"frontend.fe-testing-perf.web-vitals",
"frontend.fe-testing-perf.interview",
"ai.ai-coding.verify-evidence"
],
"est_hours": 2.5,
"week": [
7
],
"order": 1,
"path": "topics/frontend/fe-testing-perf/01-testing-pyramid.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "frontend.fe-testing-perf.web-vitals",
"title": "前端性能:Core Web Vitals(LCP / INP / CLS)、长任务和优化清单",
"type": "lesson",
"domain": "frontend",
"stack": [
"fe-testing-perf"
],
"tags": [
"性能优化",
"Core Web Vitals",
"LCP",
"INP",
"CLS",
"长任务",
"监控"
],
"level": "intermediate",
"prerequisites": [
"frontend.ssr.rendering-modes"
],
"related": [
"frontend.fe-testing-perf.scenario.perf-regression",
"frontend.webpack.scenario.build-speed"
],
"est_hours": 2.5,
"week": [
7
],
"order": 2,
"path": "topics/frontend/fe-testing-perf/02-web-vitals.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "frontend.react.hooks-rendering",
"title": "React 渲染机制、Hooks 规则、状态管理和 React 19 新特性",
"type": "lesson",
"domain": "frontend",
"stack": [
"react"
],
"tags": [
"React",
"Hooks",
"useEffect",
"useReducer",
"渲染",
"memo",
"并发特性",
"React 19",
"React Compiler"
],
"level": "intermediate",
"prerequisites": [
"frontend.typescript.type-system"
],
"related": [
"frontend.react.scenario.long-task-ui",
"frontend.ssr.nextjs-app-router",
"frontend.react.interview"
],
"est_hours": 3,
"week": [
7
],
"order": 1,
"path": "topics/frontend/react/01-hooks-rendering.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "frontend.react.index",
"title": "React",
"type": "index",
"domain": "frontend",
"stack": [
"react"
],
"tags": [
"React",
"Hooks",
"状态管理",
"React 19"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/react/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "frontend.react.interview",
"title": "React 面试题",
"type": "interview",
"domain": "frontend",
"stack": [
"react"
],
"tags": [
"React",
"Hooks",
"渲染",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"frontend.react.hooks-rendering"
],
"est_hours": null,
"week": [
7,
16
],
"order": null,
"path": "topics/frontend/react/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "frontend.react.scenario.long-task-ui",
"title": "长任务界面:Agent 任务的状态机、事件去重、乐观更新和恢复",
"type": "scenario",
"domain": "frontend",
"stack": [
"react",
"typescript",
"fastapi"
],
"tags": [
"任务状态",
"状态机",
"useReducer",
"SSE",
"幂等",
"乐观更新",
"异常恢复"
],
"level": "advanced",
"prerequisites": [
"frontend.react.hooks-rendering"
],
"related": [
"frontend.react.interview",
"ai.langgraph.scenario.refund-approval",
"frontend.vue.scenario.ai-chat-stream"
],
"est_hours": 2.5,
"week": [
7,
12
],
"order": null,
"path": "topics/frontend/react/scenarios/long-task-ui.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "frontend.ssr.index",
"title": "SSR(Nuxt / Next.js)",
"type": "index",
"domain": "frontend",
"stack": [
"ssr"
],
"tags": [
"SSR",
"SSG",
"水合",
"Next.js",
"Nuxt"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/ssr/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "frontend.ssr.interview",
"title": "SSR 与 Next.js 面试题",
"type": "interview",
"domain": "frontend",
"stack": [
"ssr"
],
"tags": [
"SSR",
"Next.js",
"Nuxt",
"水合",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"frontend.ssr.rendering-modes",
"frontend.ssr.nextjs-app-router"
],
"est_hours": null,
"week": [
7,
16
],
"order": null,
"path": "topics/frontend/ssr/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "frontend.ssr.nextjs-app-router",
"title": "Next.js App Router:服务端组件、客户端组件、路由处理器做 AI 流式接口、缓存",
"type": "lesson",
"domain": "frontend",
"stack": [
"ssr",
"react"
],
"tags": [
"Next.js",
"App Router",
"Server Components",
"use client",
"Route Handlers",
"Server Actions",
"流式响应",
"Turbopack"
],
"level": "intermediate",
"prerequisites": [
"frontend.react.hooks-rendering",
"frontend.ssr.rendering-modes"
],
"related": [
"frontend.ssr.scenario.help-center",
"backend.nodejs.index",
"frontend.ssr.interview"
],
"est_hours": 3,
"week": [
7
],
"order": 2,
"path": "topics/frontend/ssr/02-nextjs-app-router.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "frontend.ssr.rendering-modes",
"title": "渲染模式:CSR / SSR / SSG / ISR、水合、流式渲染和 Nuxt 基础",
"type": "lesson",
"domain": "frontend",
"stack": [
"ssr"
],
"tags": [
"CSR",
"SSR",
"SSG",
"ISR",
"水合",
"Hydration",
"流式渲染",
"Nuxt",
"SEO"
],
"level": "intermediate",
"prerequisites": [
"frontend.vue.reactivity-composition"
],
"related": [
"frontend.ssr.nextjs-app-router",
"frontend.fe-testing-perf.index",
"frontend.ssr.interview"
],
"est_hours": 2.5,
"week": [
7
],
"order": 1,
"path": "topics/frontend/ssr/01-rendering-modes.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "frontend.ssr.scenario.help-center",
"title": "帮助中心 + 智能客服:SEO、渲染模式组合和 BFF 设计",
"type": "scenario",
"domain": "frontend",
"stack": [
"ssr",
"react",
"nginx",
"fastapi"
],
"tags": [
"SEO",
"SSG",
"ISR",
"BFF",
"流式接口",
"鉴权",
"CDN 缓存"
],
"level": "intermediate",
"prerequisites": [
"frontend.ssr.nextjs-app-router"
],
"related": [
"frontend.ssr.interview",
"devops.nginx.scenario.ai-gateway-sse-canary"
],
"est_hours": 2.5,
"week": [
7
],
"order": null,
"path": "topics/frontend/ssr/scenarios/help-center.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "frontend.typescript.index",
"title": "TypeScript",
"type": "index",
"domain": "frontend",
"stack": [
"typescript"
],
"tags": [
"TypeScript",
"类型系统",
"运行时校验",
"接口契约"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/typescript/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "frontend.typescript.interview",
"title": "TypeScript 面试题",
"type": "interview",
"domain": "frontend",
"stack": [
"typescript"
],
"tags": [
"TypeScript",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"frontend.typescript.type-system"
],
"est_hours": null,
"week": [
7,
16
],
"order": null,
"path": "topics/frontend/typescript/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "frontend.typescript.scenario.api-contract",
"title": "前后端类型契约:OpenAPI 生成类型、运行时校验和接口变更管理",
"type": "scenario",
"domain": "frontend",
"stack": [
"typescript",
"fastapi",
"gin"
],
"tags": [
"OpenAPI",
"类型生成",
"运行时校验",
"zod",
"接口变更",
"契约测试"
],
"level": "intermediate",
"prerequisites": [
"frontend.typescript.type-system"
],
"related": [
"frontend.typescript.interview",
"python.fastapi.index",
"backend.gin.scenario.unified-api-response"
],
"est_hours": 2.5,
"week": [
7
],
"order": null,
"path": "topics/frontend/typescript/scenarios/api-contract.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "frontend.typescript.type-system",
"title": "TypeScript 类型系统进阶:泛型、条件类型、类型收窄、satisfies 和严格配置",
"type": "lesson",
"domain": "frontend",
"stack": [
"typescript"
],
"tags": [
"TypeScript",
"泛型",
"条件类型",
"infer",
"映射类型",
"可辨识联合",
"satisfies",
"tsconfig"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"frontend.typescript.scenario.api-contract",
"frontend.vue.index",
"frontend.typescript.interview"
],
"est_hours": 3,
"week": [
7
],
"order": 1,
"path": "topics/frontend/typescript/01-type-system.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "frontend.vite.dev-build-config",
"title": "Vite 8:开发服务器原理、Rolldown 构建、环境变量、代理(含 SSE)、插件和拆包",
"type": "lesson",
"domain": "frontend",
"stack": [
"vite"
],
"tags": [
"Vite",
"Rolldown",
"ESM",
"HMR",
"环境变量",
"代理",
"插件",
"虚拟模块",
"拆包"
],
"level": "intermediate",
"prerequisites": [
"frontend.typescript.type-system"
],
"related": [
"frontend.webpack.build-optimization",
"frontend.vite.scenario.webpack-to-vite",
"frontend.vite.interview"
],
"est_hours": 2.5,
"week": [
7
],
"order": 1,
"path": "topics/frontend/vite/01-dev-build-config.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "frontend.vite.index",
"title": "Vite",
"type": "index",
"domain": "frontend",
"stack": [
"vite"
],
"tags": [
"Vite",
"Rolldown",
"构建工具"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/vite/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "frontend.vite.interview",
"title": "Vite 面试题",
"type": "interview",
"domain": "frontend",
"stack": [
"vite"
],
"tags": [
"Vite",
"Rolldown",
"HMR",
"插件",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"frontend.vite.dev-build-config",
"frontend.webpack.interview"
],
"est_hours": null,
"week": [
7,
16
],
"order": null,
"path": "topics/frontend/vite/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "frontend.vite.scenario.webpack-to-vite",
"title": "老项目从 webpack 迁移到 Vite:评估、步骤、风险和回滚",
"type": "scenario",
"domain": "frontend",
"stack": [
"vite",
"webpack"
],
"tags": [
"迁移",
"构建工具",
"CommonJS",
"环境变量",
"灰度"
],
"level": "intermediate",
"prerequisites": [
"frontend.vite.dev-build-config",
"frontend.webpack.build-optimization"
],
"related": [
"frontend.vite.interview",
"frontend.webpack.interview"
],
"est_hours": 2,
"week": [
7
],
"order": null,
"path": "topics/frontend/vite/scenarios/webpack-to-vite.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "frontend.vue.index",
"title": "Vue 3",
"type": "index",
"domain": "frontend",
"stack": [
"vue"
],
"tags": [
"Vue 3",
"响应式",
"组合式函数",
"Pinia",
"AI 对话界面"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/vue/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "frontend.vue.interview",
"title": "Vue 面试题",
"type": "interview",
"domain": "frontend",
"stack": [
"vue"
],
"tags": [
"Vue 3",
"响应式",
"Pinia",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"frontend.vue.reactivity-composition"
],
"est_hours": null,
"week": [
7,
16
],
"order": null,
"path": "topics/frontend/vue/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "frontend.vue.reactivity-composition",
"title": "Vue 3 响应式原理、组合式函数、Pinia 和性能优化",
"type": "lesson",
"domain": "frontend",
"stack": [
"vue"
],
"tags": [
"Vue 3",
"响应式",
"Proxy",
"ref",
"reactive",
"computed",
"watch",
"组合式函数",
"Pinia",
"性能"
],
"level": "intermediate",
"prerequisites": [
"frontend.typescript.type-system"
],
"related": [
"frontend.vue.scenario.ai-chat-stream",
"frontend.react.index",
"frontend.vue.interview"
],
"est_hours": 3,
"week": [
7
],
"order": 1,
"path": "topics/frontend/vue/01-reactivity-composition.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "frontend.vue.scenario.ai-chat-stream",
"title": "AI 对话界面:流式渲染、任务状态、停止生成和断线续传",
"type": "scenario",
"domain": "frontend",
"stack": [
"vue",
"typescript",
"fastapi",
"nginx"
],
"tags": [
"流式输出",
"SSE",
"任务状态",
"断线重连",
"Last-Event-ID",
"结构化输出",
"AI 原生前端"
],
"level": "advanced",
"prerequisites": [
"frontend.vue.reactivity-composition"
],
"related": [
"frontend.vue.interview",
"python.fastapi.scenario.streaming-chat-api",
"devops.nginx.scenario.ai-gateway-sse-canary"
],
"est_hours": 3,
"week": [
7,
12
],
"order": null,
"path": "topics/frontend/vue/scenarios/ai-chat-stream.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "frontend.webpack.build-optimization",
"title": "webpack 5:loader 与 plugin、splitChunks、tree shaking、缓存、模块联邦",
"type": "lesson",
"domain": "frontend",
"stack": [
"webpack"
],
"tags": [
"webpack",
"loader",
"plugin",
"splitChunks",
"tree shaking",
"contenthash",
"持久化缓存",
"Module Federation"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"frontend.vite.dev-build-config",
"frontend.webpack.scenario.build-speed",
"frontend.webpack.interview"
],
"est_hours": 2.5,
"week": [
7
],
"order": 1,
"path": "topics/frontend/webpack/01-build-optimization.md",
"sections": [
"解释说明",
"案例",
"代码示例",
"易错点",
"面试常问"
]
},
{
"id": "frontend.webpack.index",
"title": "webpack",
"type": "index",
"domain": "frontend",
"stack": [
"webpack"
],
"tags": [
"webpack",
"构建工具",
"性能优化"
],
"level": null,
"prerequisites": [],
"related": [],
"est_hours": null,
"week": [
7
],
"order": null,
"path": "topics/frontend/webpack/index.md",
"sections": [
"学习路线",
"企业场景",
"面试题",
"示例代码",
"在 16 周计划中",
"官方资料"
]
},
{
"id": "frontend.webpack.interview",
"title": "webpack 面试题",
"type": "interview",
"domain": "frontend",
"stack": [
"webpack"
],
"tags": [
"webpack",
"loader",
"plugin",
"tree shaking",
"面试"
],
"level": "intermediate",
"prerequisites": [],
"related": [
"frontend.webpack.build-optimization",
"frontend.vite.interview"
],
"est_hours": null,
"week": [
7,
16
],
"order": null,
"path": "topics/frontend/webpack/interview.md",
"sections": [
"基础",
"进阶",
"场景题"
],
"questions": {
"基础": 3,
"进阶": 3,
"场景题": 2
}
},
{
"id": "frontend.webpack.scenario.build-speed",
"title": "大型项目构建慢、包体积大:度量、优化和防退化",
"type": "scenario",
"domain": "frontend",
"stack": [
"webpack",
"fe-testing-perf",
"cicd"
],
"tags": [
"构建速度",
"包体积",
"splitChunks",
"持久化缓存",
"体积预算",
"CI"
],
"level": "intermediate",
"prerequisites": [
"frontend.webpack.build-optimization"
],
"related": [
"frontend.webpack.interview",
"frontend.vite.scenario.webpack-to-vite"
],
"est_hours": 2,
"week": [
7
],
"order": null,
"path": "topics/frontend/webpack/scenarios/build-speed.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",
"elasticsearch",
"mongodb",
"k8s",
"data-pipeline",
"nodejs",
"java-spring",
"network-os",
"web-security"
],
"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 写一个鉴权网关",
"本周相关专题",
"第 7 天(调整):了解级扩展——ES、MongoDB、K8s、数据管道、Node.js、Java、计算机基础",
"本周验收"
]
},
{
"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": "scenario.approval-human-in-loop",
"title": "审批流 + 人工介入的 Agent:高风险操作暂停审批、断点续跑、超时和幂等执行",
"type": "scenario",
"domain": "cross",
"stack": [
"langgraph",
"function-calling",
"postgresql",
"redis",
"fastapi",
"vue"
],
"tags": [
"人机协作",
"interrupt",
"检查点",
"审批",
"幂等",
"超时",
"审计"
],
"level": "advanced",
"prerequisites": [
"ai.langgraph.index",
"ai.function-calling.index"
],
"related": [
"ai.langgraph.scenario.refund-approval",
"ai.function-calling.scenario.safe-business-tools",
"ai.agent-design.index"
],
"est_hours": 3,
"week": [
11,
12
],
"order": null,
"path": "scenarios/approval-human-in-loop.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "scenario.content-moderation",
"title": "内容审核:规则 + 模型的分层审核、异步流水线、人工复审、申诉和效果度量",
"type": "scenario",
"domain": "cross",
"stack": [
"mq",
"redis",
"postgresql",
"prompt-engineering",
"agent-ops",
"fastapi",
"react"
],
"tags": [
"内容审核",
"分层过滤",
"敏感词",
"大模型审核",
"人工复审",
"异步",
"召回率",
"误杀率"
],
"level": "intermediate",
"prerequisites": [
"backend.mq.index",
"ai.prompt-engineering.index"
],
"related": [
"ai.prompt-engineering.scenario.injection-defense",
"ai.agent-ops.scenario.agent-quality-gate",
"backend.mq.reliability"
],
"est_hours": 2.5,
"week": [
13,
14
],
"order": null,
"path": "scenarios/content-moderation.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "scenario.customer-service-kb",
"title": "客服知识库问答:从文档接入到带引用的流式回答、权限、评测和转人工",
"type": "scenario",
"domain": "cross",
"stack": [
"rag",
"vector-db",
"elasticsearch",
"fastapi",
"vue",
"redis",
"data-pipeline",
"agent-ops"
],
"tags": [
"RAG",
"混合检索",
"权限",
"流式输出",
"评测",
"转人工",
"引用"
],
"level": "intermediate",
"prerequisites": [
"ai.rag.index",
"python.fastapi.index"
],
"related": [
"ai.rag.scenario.permission-aware-kb",
"backend.elasticsearch.scenario.kb-search-sync",
"frontend.vue.scenario.ai-chat-stream",
"ai.agent-ops.scenario.agent-quality-gate"
],
"est_hours": 3,
"week": [
5,
6,
13,
15
],
"order": null,
"path": "scenarios/customer-service-kb.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "scenario.data-sync",
"title": "数据同步:业务库到搜索引擎 / 向量库 / 报表库,outbox 与 CDC、幂等、顺序、对账和重建",
"type": "scenario",
"domain": "cross",
"stack": [
"data-pipeline",
"postgresql",
"mongodb",
"elasticsearch",
"vector-db",
"mq"
],
"tags": [
"数据同步",
"outbox",
"CDC",
"变更流",
"幂等",
"顺序",
"对账",
"全量重建"
],
"level": "advanced",
"prerequisites": [
"backend.data-pipeline.index",
"backend.mq.index"
],
"related": [
"backend.elasticsearch.scenario.kb-search-sync",
"backend.data-pipeline.scenario.third-party-sync",
"backend.mongodb.scenario.conversation-store",
"backend.mq.reliability"
],
"est_hours": 3,
"week": [
6,
14
],
"order": null,
"path": "scenarios/data-sync.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "scenario.flash-sale",
"title": "秒杀 / 高并发抢购:流量削峰、Redis 原子扣库存、异步下单、防超卖和防刷",
"type": "scenario",
"domain": "cross",
"stack": [
"redis",
"mq",
"postgresql",
"gin",
"nginx",
"vue"
],
"tags": [
"秒杀",
"高并发",
"库存",
"Lua",
"削峰",
"异步下单",
"幂等",
"限流",
"防刷"
],
"level": "advanced",
"prerequisites": [
"backend.redis.index",
"backend.mq.index"
],
"related": [
"backend.redis.scenario.stock-reservation",
"backend.mq.scenario.delayed-order-cancel",
"backend.redis.lock-ratelimit"
],
"est_hours": 3,
"week": [
3,
14,
16
],
"order": null,
"path": "scenarios/flash-sale.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "scenario.multi-tenant-saas",
"title": "多租户 SaaS:数据隔离方案、租户上下文、配额与限流、AI 成本分摊和租户级配置",
"type": "scenario",
"domain": "cross",
"stack": [
"postgresql",
"vector-db",
"redis",
"fastapi",
"gin",
"llm-serving",
"k8s"
],
"tags": [
"多租户",
"数据隔离",
"行级安全",
"租户上下文",
"配额",
"限流",
"成本分摊",
"噪声邻居"
],
"level": "advanced",
"prerequisites": [
"backend.postgresql.index",
"ai.vector-db.index"
],
"related": [
"ai.vector-db.scenario.multi-tenant-index",
"ai.rag.scenario.permission-aware-kb",
"ai.llm-serving.scenario.multi-provider-gateway"
],
"est_hours": 3,
"week": [
6,
13,
14
],
"order": null,
"path": "scenarios/multi-tenant-saas.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "scenario.report-agent",
"title": "报表生成 Agent:自然语言查数、安全的 Text-to-SQL、结果校验、图表和成本控制",
"type": "scenario",
"domain": "cross",
"stack": [
"agent-design",
"function-calling",
"postgresql",
"data-pipeline",
"web-security",
"react",
"agent-ops"
],
"tags": [
"Text-to-SQL",
"报表",
"只读账号",
"SQL 校验",
"语义层",
"行级安全",
"评测"
],
"level": "advanced",
"prerequisites": [
"ai.agent-design.index",
"backend.postgresql.index"
],
"related": [
"ai.agent-design.scenario.report-agent",
"cs.web-security.scenario.ai-app-security",
"backend.data-pipeline.scenario.third-party-sync"
],
"est_hours": 3,
"week": [
10,
13,
14
],
"order": null,
"path": "scenarios/report-agent.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "scenario.ticket-system",
"title": "工单系统:AI 自动分类与路由、状态机、SLA 超时升级和坐席协作",
"type": "scenario",
"domain": "cross",
"stack": [
"postgresql",
"mq",
"redis",
"langchain",
"gin",
"fastapi",
"react"
],
"tags": [
"工单",
"状态机",
"自动分类",
"路由",
"SLA",
"延迟队列",
"审计",
"乐观锁"
],
"level": "intermediate",
"prerequisites": [
"backend.postgresql.index",
"ai.langchain.index"
],
"related": [
"ai.langchain.scenario.ticket-triage",
"backend.postgresql.scenario.order-state-audit",
"backend.mq.scenario.delayed-order-cancel",
"frontend.react.scenario.long-task-ui"
],
"est_hours": 3,
"week": [
3,
11,
14
],
"order": null,
"path": "scenarios/ticket-system.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`)"
]
}
]
}