phase 5 part 3: mongodb, elasticsearch hybrid search, data-pipeline, nodejs BFF topics with verified examples
This commit is contained in:
1 parent
9eeb10aede
commit
075872e31e
27 files changed
+2405
-52
No files matched your search
+590
-36
@@ -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",
|
||||
|
||||
Reference in new issue
Block a user