phase 5 part 3: mongodb, elasticsearch hybrid search, data-pipeline, nodejs BFF topics with verified examples

This commit is contained in:
Shikui Wang committed 2026-10-23 16:38:52 +08:00
1 parent 9eeb10aede
commit 075872e31e
27 files changed
+2405 -52

No files matched your search

+590 -36
View File
@@ -197,30 +197,34 @@
{
"stack": "data-pipeline",
"domain": "backend",
"title": "数据管道与第三方接口对接",
"title": "数据管道基础",
"index": "topics/backend/data-pipeline/index.md",
"lessons": 0,
"scenarios": 0,
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": []
"examples": [
"topics/backend/data-pipeline/examples/incremental-sync"
]
},
{
"stack": "elasticsearch",
"domain": "backend",
"title": "Elasticsearch",
"index": "topics/backend/elasticsearch/index.md",
"lessons": 0,
"scenarios": 0,
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": []
"examples": [
"topics/backend/elasticsearch/examples/hybrid-search"
]
},
{
"stack": "gin",
@@ -290,14 +294,16 @@
"domain": "backend",
"title": "MongoDB",
"index": "topics/backend/mongodb/index.md",
"lessons": 0,
"scenarios": 0,
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": []
"examples": [
"topics/backend/mongodb/examples/conversations"
]
},
{
"stack": "mq",
@@ -335,16 +341,18 @@
{
"stack": "nodejs",
"domain": "backend",
"title": "Node.js 后端(Express / NestJS)",
"title": "Node.js(了解级)",
"index": "topics/backend/nodejs/index.md",
"lessons": 0,
"scenarios": 0,
"lessons": 1,
"scenarios": 1,
"interview_questions": {
"基础": 0,
"进阶": 0,
"场景题": 0
"基础": 3,
"进阶": 3,
"场景题": 2
},
"examples": []
"examples": [
"topics/backend/nodejs/examples/express-bff"
]
},
{
"stack": "postgresql",
@@ -2872,13 +2880,18 @@
},
{
"id": "backend.data-pipeline.index",
"title": "数据管道与第三方接口对接",
"title": "数据管道基础",
"type": "index",
"domain": "backend",
"stack": [
"data-pipeline"
],
"tags": [],
"tags": [
"ETL",
"增量同步",
"幂等",
"数据质量"
],
"level": null,
"prerequisites": [],
"related": [],
@@ -2888,7 +2901,139 @@
],
"order": null,
"path": "topics/backend/data-pipeline/index.md",
"sections": []
"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",
@@ -2898,7 +3043,12 @@
"stack": [
"elasticsearch"
],
"tags": [],
"tags": [
"Elasticsearch",
"全文检索",
"混合检索",
"向量检索"
],
"level": null,
"prerequisites": [],
"related": [],
@@ -2909,7 +3059,143 @@
],
"order": null,
"path": "topics/backend/elasticsearch/index.md",
"sections": []
"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",
@@ -3534,6 +3820,49 @@
"path": "topics/backend/java-spring/index.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",
@@ -3542,7 +3871,11 @@
"stack": [
"mongodb"
],
"tags": [],
"tags": [
"MongoDB",
"文档数据库",
"NoSQL"
],
"level": null,
"prerequisites": [],
"related": [],
@@ -3552,7 +3885,93 @@
],
"order": null,
"path": "topics/backend/mongodb/index.md",
"sections": []
"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"
],
"est_hours": 2,
"week": [
14
],
"order": null,
"path": "topics/backend/mongodb/scenarios/conversation-store.md",
"sections": [
"业务背景与问题",
"约束",
"方案设计",
"关键代码",
"取舍",
"易错点",
"面试怎么讲"
]
},
{
"id": "backend.mq.index",
@@ -4017,15 +4436,63 @@
"面试常问"
]
},
{
"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 后端(Express / NestJS)",
"title": "Node.js(了解级)",
"type": "index",
"domain": "backend",
"stack": [
"nodejs"
],
"tags": [],
"tags": [
"Node.js",
"Express",
"NestJS",
"BFF"
],
"level": null,
"prerequisites": [],
"related": [],
@@ -4036,7 +4503,94 @@
],
"order": null,
"path": "topics/backend/nodejs/index.md",
"sections": []
"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",