feat: add 180 questions (90 sc + 90 fb) for networking subtopics
Deploy Examination / deploy (push) Successful in 31s

Cover 9 subtopics from the computer networking documentation:
- http-handshake: TCP/TLS/HTTP2/HTTP3 handshakes
- http-connection-cost: connection resource overhead & million concurrency
- connection-pooling: pool reuse, HTTP/1.1 vs HTTP/2
- http-keepalive: Keep-Alive principle, head-of-line blocking
- keepalive-scenarios: when to enable/disable Keep-Alive
- domain-sharding: HTTP/1.1 hack, HTTP/2 obsolescence
- cdn: edge nodes, caching, DDoS protection
- cors: same-origin policy, preflight requests
- go-build-strip: -s -w flags, binary size optimization
This commit is contained in:
2026-09-02 21:33:09 +08:00
parent 0fbdefb626
commit df63692a18
28 changed files with 4143 additions and 1 deletions
+201
View File
@@ -0,0 +1,201 @@
{
"topic": "cdn",
"type": "fill_blank",
"schema_version": "1.0.0",
"generated": "2026-09-02T21:20:00+08:00",
"questions": [
{
"id": "fb-001",
"type": "fill_blank",
"question": "CDN 的 ____ 是部署在全球各地的缓存服务器,用户访问时会就近获取资源,大幅降低网络延迟。",
"answer": [
"边缘节点"
],
"answer_rule": "any",
"difficulty": 1,
"tags": [
"CDN",
"边缘节点",
"就近访问"
],
"explanation": "边缘节点(Edge Node)是 CDN 网络中最靠近用户的服务器节点,分布在全球各大城市的数据中心。当用户请求资源时,CDN 会将其引导至地理位置或网络距离最近的边缘节点,从该节点的缓存中直接返回资源,避免了跨地域长距离传输带来的延迟。",
"source": null,
"related": []
},
{
"id": "fb-002",
"type": "fill_blank",
"question": "当边缘节点的缓存中没有用户请求的资源时,会向 ____ 拉取源文件,这个过程称为回源。",
"answer": [
"源站",
"源服务器",
"源站服务器"
],
"answer_rule": "any",
"difficulty": 1,
"tags": [
"CDN",
"回源",
"源站"
],
"explanation": "回源(Origin Pull)是 CDN 的核心机制之一。当边缘节点缓存未命中(Cache Miss)时,节点会代替用户向源站(Origin Server)发起请求获取原始资源,获取后缓存到本地,再返回给用户。后续相同资源的请求就可以直接从边缘节点缓存返回,不再需要回源。",
"source": null,
"related": []
},
{
"id": "fb-003",
"type": "fill_blank",
"question": "CDN 使用 ____ 技术,根据用户的来源 IP 地址和地理位置信息,将请求解析到距离最近的边缘节点。",
"answer": [
"智能DNS",
"智能DNS解析",
"全局负载均衡"
],
"answer_rule": "any",
"difficulty": 2,
"tags": [
"CDN",
"智能DNS",
"地理位置解析"
],
"explanation": "智能 DNS 是 CDN 的流量调度核心。它不同于传统 DNS 只返回固定的 IP 地址,而是根据请求来源 IP 的地理位置、网络运营商、节点负载等多种因素,动态返回最优边缘节点的 IP 地址。这样用户就被引导到最近、最快的节点,实现就近访问。",
"source": null,
"related": []
},
{
"id": "fb-004",
"type": "fill_blank",
"question": "CDN 最典型的应用场景是 ____ 加速,即将图片、CSS、JS、视频等不经常变化的文件缓存到边缘节点。",
"answer": [
"静态资源"
],
"answer_rule": "any",
"difficulty": 1,
"tags": [
"CDN",
"静态资源",
"加速"
],
"explanation": "静态资源加速是 CDN 最基础也是最广泛的应用。图片、样式表、JavaScript 文件、字体、视频等静态资源具有可缓存、不随请求变化的特点,天然适合 CDN 缓存。通过将这些资源分发到全球边缘节点,用户可以从最近的节点获取,显著减少加载时间,提升页面性能。",
"source": null,
"related": []
},
{
"id": "fb-005",
"type": "fill_blank",
"question": "CDN 可以提供 ____ 防护能力,将攻击流量分散到全球多个边缘节点,避免源站被压垮。",
"answer": [
"DDoS"
],
"answer_rule": "any",
"difficulty": 2,
"tags": [
"CDN",
"DDoS防护",
"安全"
],
"explanation": "CDN 天然具有 DDoS 防护能力。由于 CDN 拥有全球分布的大量边缘节点和巨大的带宽容量,当遭受 DDoS 攻击时,攻击流量会被分散到全球各地的边缘节点上,而不是全部涌向源站。每个边缘节点只需承受一小部分攻击流量,加上专业的流量清洗机制,可以有效缓解 DDoS 攻击对源站的冲击。",
"source": null,
"related": []
},
{
"id": "fb-006",
"type": "fill_blank",
"question": "CDN 的 HTTPS 终止是指边缘节点负责处理与用户之间的 ____ 握手,而边缘节点到源站之间可以使用 HTTP 协议通信。",
"answer": [
"TLS",
"SSL"
],
"answer_rule": "any",
"difficulty": 3,
"tags": [
"CDN",
"HTTPS终止",
"TLS",
"安全"
],
"explanation": "HTTPS 终止(TLS Termination)是 CDN 的重要功能。用户与边缘节点之间建立 HTTPS/TLS 加密连接,边缘节点负责完成 TLS 握手和加解密工作。而边缘节点与源站之间可以使用 HTTP 通信,这样既保证了用户端的安全性,又减少了源站处理 TLS 的计算开销,提升了整体性能。",
"source": null,
"related": []
},
{
"id": "fb-007",
"type": "fill_blank",
"question": "CDN 缓存策略中,Cache-Control 的 max-age 指令控制资源在浏览器/节点缓存中的 ____ 时间,immutable 标记表示资源永不变形。",
"answer": [
"有效",
"存活",
"过期"
],
"answer_rule": "any",
"difficulty": 3,
"tags": [
"CDN",
"Cache-Control",
"缓存策略"
],
"explanation": "max-age 指令指定了资源在缓存中的有效期(秒数),在有效期内浏览器或 CDN 节点不会重新向服务器请求该资源。immutable 标记告诉浏览器该资源一旦部署就不会修改(通常配合版本号文件名使用),即使用户手动刷新也不会重新请求,进一步减少不必要的网络请求,提升加载速度。",
"source": null,
"related": []
},
{
"id": "fb-008",
"type": "fill_blank",
"question": "CDN 的缓存通常采用分层架构:用户请求先到达 ____ 节点,未命中则到区域节点,最后才回源站。",
"answer": [
"边缘"
],
"answer_rule": "any",
"difficulty": 3,
"tags": [
"CDN",
"缓存分层",
"边缘节点",
"区域节点"
],
"explanation": "CDN 采用三级缓存分层架构:①边缘节点(Edge)——最靠近用户,缓存热门资源的副本;②区域节点(Regional/Mid-Tier)——覆盖一个地理区域,缓存该区域内多个边缘节点的共享资源;③源站(Origin)——最终的数据源。请求从边缘到区域到源站逐层回溯,只有上层缓存未命中才会访问下层,有效降低了源站压力。",
"source": null,
"related": []
},
{
"id": "fb-009",
"type": "fill_blank",
"question": "CDN 保证缓存一致性的常见手段包括:文件名加版本号、主动调用 ____ API 清除缓存、以及设置较短的 max-age。",
"answer": [
"清除",
"刷新",
"purge"
],
"answer_rule": "any",
"difficulty": 3,
"tags": [
"CDN",
"缓存一致性",
"版本号",
"缓存清除"
],
"explanation": "CDN 缓存一致性是常见挑战,主要通过三种方式保证:①文件名加版本号或内容哈希(如 style.v2.css),新版本 URL 是新资源,天然绕过旧缓存;②主动调用 CDN 提供的 purge/invalidation API,强制清除指定 URL 或目录的缓存;③设置较短的 max-age,让缓存快速过期重新验证。实际项目中通常组合使用这些策略。",
"source": null,
"related": []
},
{
"id": "fb-010",
"type": "fill_blank",
"question": "CDN 的缓存命中率通常很高,100 万用户访问时,源站可能只需处理 ____ 次回源请求。",
"answer": [
"1万",
"10000"
],
"answer_rule": "any",
"difficulty": 2,
"tags": [
"CDN",
"缓存命中",
"回源比例"
],
"explanation": "CDN 的核心价值就是通过缓存大幅减少源站压力。假设 CDN 缓存命中率为 99%,那么 100 万次用户请求中只有 1% 需要回源,即源站只需处理约 1 万次请求。这意味着源站的负载降低了 99%,极大地保护了源站的可用性和性能,同时也能节省源站的带宽和计算资源成本。",
"source": null,
"related": []
}
]
}
+46
View File
@@ -0,0 +1,46 @@
{
"slug": "cdn",
"name": "Cdn",
"description": "",
"tags": [
"CDN",
"Cache-Control",
"DDoS防护",
"HTTPS终止",
"TLS",
"加速",
"区域节点",
"回源",
"回源比例",
"地理位置解析",
"安全",
"就近访问",
"智能DNS",
"源站",
"版本号",
"缓存一致性",
"缓存分层",
"缓存命中",
"缓存清除",
"缓存策略",
"边缘节点",
"静态资源"
],
"difficulty_range": [
1,
3
],
"schema_version": "1.0.0",
"updated": "2026-09-02",
"question_files": [
"single_choice",
"fill_blank"
],
"stats": {
"total": 20,
"by_type": {
"single_choice": 10,
"fill_blank": 10
}
}
}
+208
View File
@@ -0,0 +1,208 @@
{
"topic": "cdn",
"type": "single_choice",
"schema_version": "1.0.0",
"generated": "2026-09-02T21:20:00+08:00",
"questions": [
{
"id": "sc-001",
"type": "single_choice",
"difficulty": 2,
"tags": [
"CDN",
"边缘节点"
],
"question": "CDN 的核心思想是什么?",
"options": {
"A": "所有用户直接访问源站",
"B": "把资源复制到全球一堆服务器上,用户就近获取",
"C": "使用加密传输",
"D": "增加源站带宽"
},
"answer": "B",
"explanation": "CDN 的核心思想是把资源复制到全世界的边缘节点上,用户就近访问最近的边缘节点,减少延迟和源站压力。",
"source": null,
"related": []
},
{
"id": "sc-002",
"type": "single_choice",
"difficulty": 3,
"tags": [
"CDN",
"智能DNS"
],
"question": "CDN 的智能 DNS 根据什么决定返回哪个边缘节点的 IP?",
"options": {
"A": "用户浏览器版本",
"B": "请求来源 IP 的地理位置",
"C": "服务器负载",
"D": "随机选择"
},
"answer": "B",
"explanation": "CDN 的 DNS 服务器根据请求来源 IP 的地理位置(通过 IP 地理位置数据库)来决定返回哪个边缘节点的 IP,这个过程对用户完全透明。",
"source": null,
"related": []
},
{
"id": "sc-003",
"type": "single_choice",
"difficulty": 3,
"tags": [
"CDN",
"回源"
],
"question": "CDN 的回源是什么意思?",
"options": {
"A": "用户直接访问源站",
"B": "边缘节点缓存未命中时,去源站拉取文件",
"C": "源站主动推送文件",
"D": "DNS 解析失败"
},
"answer": "B",
"explanation": "回源是指边缘节点缓存未命中时,去源站拉取文件。第一次请求会慢一点(回源),之后就快了(缓存命中)。",
"source": null,
"related": []
},
{
"id": "sc-004",
"type": "single_choice",
"difficulty": 2,
"tags": [
"CDN",
"适合内容"
],
"question": "以下哪种内容最适合上 CDN?",
"options": {
"A": "用户个人数据",
"B": "实时交易数据",
"C": "图片、JS、CSS 等静态资源",
"D": "登录接口"
},
"answer": "C",
"explanation": "CDN 适合缓存内容不怎么变、所有人看到的一样、可以缓存的静态资源。用户个人数据、实时交易数据、登录接口等需要实时性的内容不适合。",
"source": null,
"related": []
},
{
"id": "sc-005",
"type": "single_choice",
"difficulty": 4,
"tags": [
"CDN",
"HTTPS终止"
],
"question": "CDN 的 HTTPS 终止是什么意思?",
"options": {
"A": "禁止 HTTPS 访问",
"B": "边缘节点处理 TLS 握手,到源站可以用 HTTP",
"C": "源站不支持 HTTPS",
"D": "CDN 自动升级到 HTTP/3"
},
"answer": "B",
"explanation": "HTTPS 终止是指边缘节点处理 TLS 握手,到源站可以用 HTTP(内网更快)。用户←HTTPS→CDN 边缘节点←HTTP→源站。",
"source": null,
"related": []
},
{
"id": "sc-006",
"type": "single_choice",
"difficulty": 3,
"tags": [
"CDN",
"DDoS"
],
"question": "CDN 如何防 DDoS?",
"options": {
"A": "直接丢弃流量",
"B": "攻击流量被分散到全球几百个边缘节点吸收",
"C": "使用防火墙",
"D": "关闭源站"
},
"answer": "B",
"explanation": "CDN 防 DDoS 的原理是攻击流量被分散到全球几百个边缘节点吸收,源站几乎无感。这是 CDN 的核心能力之一。",
"source": null,
"related": []
},
{
"id": "sc-007",
"type": "single_choice",
"difficulty": 3,
"tags": [
"CDN",
"缓存策略"
],
"question": "Cache-Control: max-age=31536000, immutable 表示什么?",
"options": {
"A": "缓存 1 天",
"B": "缓存 1 年,且不需要向源站发起条件请求",
"C": "不缓存",
"D": "缓存 5 分钟"
},
"answer": "B",
"explanation": "max-age=31536000 表示缓存 1 年,immutable 告诉浏览器这个资源永远不会改变,不需要向源站发起条件请求(If-Modified-Since/ETag 验证)。适用于文件名带版本号的静态资源。",
"source": null,
"related": []
},
{
"id": "sc-008",
"type": "single_choice",
"difficulty": 2,
"tags": [
"CDN",
"缓存分层"
],
"question": "CDN 的缓存分层顺序正确的是?",
"options": {
"A": "源站 → 区域节点 → 边缘节点 → 用户",
"B": "用户 → 边缘节点 → 区域节点 → 源站",
"C": "用户 → 源站 → 边缘节点",
"D": "边缘节点 → 用户 → 源站"
},
"answer": "B",
"explanation": "CDN 缓存分层:用户 → 边缘节点(缓存1)→ 区域节点(缓存2)→ 源站(原始文件)。请求从用户开始,逐层向上查找缓存。",
"source": null,
"related": []
},
{
"id": "sc-009",
"type": "single_choice",
"difficulty": 4,
"tags": [
"CDN",
"缓存一致性"
],
"question": "更新了 logo.png 但 CDN 还缓存旧的,应该怎么解决?",
"options": {
"A": "等自然过期",
"B": "文件名带版本号、调用 CDN API 强制清除缓存、或设置较短的 max-age",
"C": "重启 CDN 服务器",
"D": "删除源站文件"
},
"answer": "B",
"explanation": "缓存一致性问题的解决方案:(1)文件名带版本号 /logo.v2.png;(2)调用 CDN API 强制清除缓存;(3)设置较短的 max-age 等自然过期。",
"source": null,
"related": []
},
{
"id": "sc-010",
"type": "single_choice",
"difficulty": 3,
"tags": [
"CDN",
"源站压力"
],
"question": "100 万用户访问 CDN,源站大约处理多少次请求?",
"options": {
"A": "100 万次",
"B": "50 万次",
"C": "1 万次",
"D": "0 次"
},
"answer": "C",
"explanation": "CDN 可以消化 99% 的流量,100 万用户 → 99 万次命中边缘节点 → 源站只处理约 1 万次回源。这是 CDN 减轻源站压力的核心能力。",
"source": null,
"related": []
}
]
}