feat: add 180 questions (90 sc + 90 fb) for networking subtopics
Deploy Examination / deploy (push) Successful in 31s
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:
@@ -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": []
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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": []
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user