{
  "type": "excalidraw",
  "version": 2,
  "source": "https://excalidraw.com",
  "elements": [
    {
      "id": "text-0001",
      "type": "text",
      "x": 80,
      "y": 42,
      "width": 1440,
      "height": 42,
      "angle": 0,
      "strokeColor": "#1e40af",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 1000,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "SGLang 与 vLLM 推理框架教程总览",
      "fontSize": 28,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "SGLang 与 vLLM 推理框架教程总览",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "text-0002",
      "type": "text",
      "x": 80,
      "y": 88,
      "width": 1440,
      "height": 30,
      "angle": 0,
      "strokeColor": "#64748b",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 1037,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "目标：核心机制 + 面试高频题 + 2026-05-25 前沿功能更新",
      "fontSize": 16,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "目标：核心机制 + 面试高频题 + 2026-05-25 前沿功能更新",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "arrow-0003",
      "type": "arrow",
      "x": 90,
      "y": 128,
      "width": 1420,
      "height": 0,
      "angle": 0,
      "strokeColor": "#94a3b8",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "dashed",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 1074,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "points": [
        [
          0,
          0
        ],
        [
          1420,
          0
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null,
      "startArrowhead": null,
      "endArrowhead": "arrow"
    },
    {
      "id": "rectangle-0004",
      "type": "rectangle",
      "x": 70,
      "y": 160,
      "width": 700,
      "height": 560,
      "angle": 0,
      "strokeColor": "#64748b",
      "backgroundColor": "#e2e8f0",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 25,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1111,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "rectangle-0005",
      "type": "rectangle",
      "x": 830,
      "y": 160,
      "width": 700,
      "height": 560,
      "angle": 0,
      "strokeColor": "#64748b",
      "backgroundColor": "#e2e8f0",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 25,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1148,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "text-0006",
      "type": "text",
      "x": 100,
      "y": 182,
      "width": 640,
      "height": 38,
      "angle": 0,
      "strokeColor": "#1e40af",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 1185,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "SGLang 教程",
      "fontSize": 24,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "SGLang 教程",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "text-0007",
      "type": "text",
      "x": 860,
      "y": 182,
      "width": 640,
      "height": 38,
      "angle": 0,
      "strokeColor": "#1e40af",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 1222,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "vLLM 教程",
      "fontSize": 24,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "vLLM 教程",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rectangle-0008",
      "type": "rectangle",
      "x": 115,
      "y": 250,
      "width": 610,
      "height": 88,
      "angle": 0,
      "strokeColor": "#2563eb",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1259,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "text-0009",
      "type": "text",
      "x": 127,
      "y": 260,
      "width": 586,
      "height": 68,
      "angle": 0,
      "strokeColor": "#374151",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 1296,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "定位\n结构化生成语言 + 高性能 runtime\n适合 agentic / RAG / 多轮共享前缀",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "定位\n结构化生成语言 + 高性能 runtime\n适合 agentic / RAG / 多轮共享前缀",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rectangle-0010",
      "type": "rectangle",
      "x": 115,
      "y": 362,
      "width": 610,
      "height": 88,
      "angle": 0,
      "strokeColor": "#2563eb",
      "backgroundColor": "#c3fae8",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1333,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "text-0011",
      "type": "text",
      "x": 127,
      "y": 372,
      "width": 586,
      "height": 68,
      "angle": 0,
      "strokeColor": "#374151",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 1370,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "核心机制\nRadixAttention 前缀树\n连续批处理 + cache-aware scheduling\n结构化输出与工具调用",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "核心机制\nRadixAttention 前缀树\n连续批处理 + cache-aware scheduling\n结构化输出与工具调用",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rectangle-0012",
      "type": "rectangle",
      "x": 115,
      "y": 474,
      "width": 610,
      "height": 88,
      "angle": 0,
      "strokeColor": "#2563eb",
      "backgroundColor": "#d0bfff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1407,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "text-0013",
      "type": "text",
      "x": 127,
      "y": 484,
      "width": 586,
      "height": 68,
      "angle": 0,
      "strokeColor": "#374151",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 1444,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "前沿重点\nSpec V2 overlap / DFLASH / adaptive spec\nPD disaggregation / decode-side radix cache\nCP/EP/MoE/FA3/FA4/Omni/RL",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "前沿重点\nSpec V2 overlap / DFLASH / adaptive spec\nPD disaggregation / decode-side radix cache\nCP/EP/MoE/FA3/FA4/Omni/RL",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rectangle-0014",
      "type": "rectangle",
      "x": 115,
      "y": 586,
      "width": 610,
      "height": 88,
      "angle": 0,
      "strokeColor": "#2563eb",
      "backgroundColor": "#b2f2bb",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1481,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "text-0015",
      "type": "text",
      "x": 127,
      "y": 596,
      "width": 586,
      "height": 68,
      "angle": 0,
      "strokeColor": "#374151",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 1518,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "面试抓手\n解释 prefix reuse 为什么能降 TTFT\n区分 prefill compute-bound 与 decode memory-bound\n会从指标定位瓶颈",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "面试抓手\n解释 prefix reuse 为什么能降 TTFT\n区分 prefill compute-bound 与 decode memory-bound\n会从指标定位瓶颈",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rectangle-0016",
      "type": "rectangle",
      "x": 875,
      "y": 250,
      "width": 610,
      "height": 88,
      "angle": 0,
      "strokeColor": "#2563eb",
      "backgroundColor": "#a5d8ff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1555,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "text-0017",
      "type": "text",
      "x": 887,
      "y": 260,
      "width": 586,
      "height": 68,
      "angle": 0,
      "strokeColor": "#374151",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 1592,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "定位\n生产级 LLM serving engine\nOpenAI API / offline batch / 多硬件生态",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "定位\n生产级 LLM serving engine\nOpenAI API / offline batch / 多硬件生态",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rectangle-0018",
      "type": "rectangle",
      "x": 875,
      "y": 362,
      "width": 610,
      "height": 88,
      "angle": 0,
      "strokeColor": "#2563eb",
      "backgroundColor": "#c3fae8",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1629,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "text-0019",
      "type": "text",
      "x": 887,
      "y": 372,
      "width": 586,
      "height": 68,
      "angle": 0,
      "strokeColor": "#374151",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 1666,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "核心机制\nPagedAttention KV block table\nV1 unified scheduler\nchunked prefill + prefix cache",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "核心机制\nPagedAttention KV block table\nV1 unified scheduler\nchunked prefill + prefix cache",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rectangle-0020",
      "type": "rectangle",
      "x": 875,
      "y": 474,
      "width": 610,
      "height": 88,
      "angle": 0,
      "strokeColor": "#2563eb",
      "backgroundColor": "#d0bfff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1703,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "text-0021",
      "type": "text",
      "x": 887,
      "y": 484,
      "width": 586,
      "height": 68,
      "angle": 0,
      "strokeColor": "#374151",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 1740,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "前沿重点\nv0.21 KV offload + HMA\nthinking budget spec decode\nBlackwell TOKENSPEED_MLA\nNIXL / Mooncake / disagg serving",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "前沿重点\nv0.21 KV offload + HMA\nthinking budget spec decode\nBlackwell TOKENSPEED_MLA\nNIXL / Mooncake / disagg serving",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rectangle-0022",
      "type": "rectangle",
      "x": 875,
      "y": 586,
      "width": 610,
      "height": 88,
      "angle": 0,
      "strokeColor": "#2563eb",
      "backgroundColor": "#b2f2bb",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1777,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "text-0023",
      "type": "text",
      "x": 887,
      "y": 596,
      "width": 586,
      "height": 68,
      "angle": 0,
      "strokeColor": "#374151",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 1814,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "面试抓手\n讲清 logical block 到 physical block 映射\n讲清 scheduler 如何平衡 TTFT 与吞吐\n会调 max tokens / KV dtype / cache hit",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "面试抓手\n讲清 logical block 到 physical block 映射\n讲清 scheduler 如何平衡 TTFT 与吞吐\n会调 max tokens / KV dtype / cache hit",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "rectangle-0024",
      "type": "rectangle",
      "x": 530,
      "y": 760,
      "width": 540,
      "height": 140,
      "angle": 0,
      "strokeColor": "#f59e0b",
      "backgroundColor": "#ffd8a8",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1851,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "text-0025",
      "type": "text",
      "x": 542,
      "y": 770,
      "width": 516,
      "height": 120,
      "angle": 0,
      "strokeColor": "#374151",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 1888,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "共同底层问题\n请求调度\nKV cache\nprefill/decode 分离\nspeculative decoding\n并行与通信\n观测指标",
      "fontSize": 20,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "共同底层问题\n请求调度\nKV cache\nprefill/decode 分离\nspeculative decoding\n并行与通信\n观测指标",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "arrow-0026",
      "type": "arrow",
      "x": 420,
      "y": 690,
      "width": 170,
      "height": 70,
      "angle": 0,
      "strokeColor": "#3b82f6",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 1925,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "points": [
        [
          0,
          0
        ],
        [
          170,
          70
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null,
      "startArrowhead": null,
      "endArrowhead": "arrow"
    },
    {
      "id": "arrow-0027",
      "type": "arrow",
      "x": 1180,
      "y": 690,
      "width": 170,
      "height": 70,
      "angle": 0,
      "strokeColor": "#3b82f6",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 1962,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "points": [
        [
          0,
          0
        ],
        [
          -170,
          70
        ]
      ],
      "lastCommittedPoint": null,
      "startBinding": null,
      "endBinding": null,
      "startArrowhead": null,
      "endArrowhead": "arrow"
    },
    {
      "id": "rectangle-0028",
      "type": "rectangle",
      "x": 260,
      "y": 940,
      "width": 1080,
      "height": 100,
      "angle": 0,
      "strokeColor": "#f59e0b",
      "backgroundColor": "#fff3bf",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "roundness": {
        "type": 3
      },
      "seed": 1999,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false
    },
    {
      "id": "text-0029",
      "type": "text",
      "x": 272,
      "y": 950,
      "width": 1056,
      "height": 80,
      "angle": 0,
      "strokeColor": "#374151",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 2036,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "学习顺序\n1 基础推理链路\n2 KV cache 与调度\n3 高级特性\n4 前沿 release\n5 面试题反推系统设计",
      "fontSize": 18,
      "fontFamily": 5,
      "textAlign": "center",
      "verticalAlign": "middle",
      "containerId": null,
      "originalText": "学习顺序\n1 基础推理链路\n2 KV cache 与调度\n3 高级特性\n4 前沿 release\n5 面试题反推系统设计",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "practice-interview-panel-00-overview-sglang-vllm-2026-bg",
      "type": "rectangle",
      "x": 80,
      "y": 1120.0,
      "width": 1450.0,
      "height": 300,
      "angle": 0,
      "strokeColor": "#64748b",
      "backgroundColor": "#e2e8f0",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 70,
      "groupIds": [],
      "seed": 93001,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "roundness": {
        "type": 3
      }
    },
    {
      "id": "practice-interview-panel-00-overview-sglang-vllm-2026-title",
      "type": "text",
      "x": 108,
      "y": 1142.0,
      "width": 1394.0,
      "height": 38,
      "angle": 0,
      "strokeColor": "#1e40af",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 91001,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "练习题与面试题补充：SGLang serving/runtime",
      "fontSize": 24,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "练习题与面试题补充：SGLang serving/runtime",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "practice-interview-panel-00-overview-sglang-vllm-2026-practice-box",
      "type": "rectangle",
      "x": 108,
      "y": 1198.0,
      "width": 683.0,
      "height": 190,
      "angle": 0,
      "strokeColor": "#2563eb",
      "backgroundColor": "#bfdbfe",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 93002,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "roundness": {
        "type": 3
      }
    },
    {
      "id": "practice-interview-panel-00-overview-sglang-vllm-2026-practice-text",
      "type": "text",
      "x": 130,
      "y": 1218.0,
      "width": 660.0,
      "height": 150,
      "angle": 0,
      "strokeColor": "#243042",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 91001,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "练习题\n1. 画出一次请求从 frontend 到 scheduler 到 KV cache 的路径\n2. 对比 RadixAttention 命中和不命中的 token 复用收益\n3. 列出一个生产部署需要监控的 8 个指标",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "练习题\n1. 画出一次请求从 frontend 到 scheduler 到 KV cache 的路径\n2. 对比 RadixAttention 命中和不命中的 token 复用收益\n3. 列出一个生产部署需要监控的 8 个指标",
      "autoResize": false,
      "lineHeight": 1.25
    },
    {
      "id": "practice-interview-panel-00-overview-sglang-vllm-2026-interview-box",
      "type": "rectangle",
      "x": 819.0,
      "y": 1198.0,
      "width": 683.0,
      "height": 190,
      "angle": 0,
      "strokeColor": "#7c3aed",
      "backgroundColor": "#ddd6fe",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 93003,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "roundness": {
        "type": 3
      }
    },
    {
      "id": "practice-interview-panel-00-overview-sglang-vllm-2026-interview-text",
      "type": "text",
      "x": 841.0,
      "y": 1218.0,
      "width": 660.0,
      "height": 150,
      "angle": 0,
      "strokeColor": "#243042",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 1,
      "opacity": 100,
      "groupIds": [],
      "seed": 91001,
      "version": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 1,
      "link": null,
      "locked": false,
      "text": "面试题\n1. SGLang 的 RadixAttention 解决什么服务端瓶颈\n2. prefill/decode 分离为什么能提升吞吐和隔离尾延迟\n3. 如何解释 structured output 对调度和缓存的影响",
      "fontSize": 17,
      "fontFamily": 5,
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "originalText": "面试题\n1. SGLang 的 RadixAttention 解决什么服务端瓶颈\n2. prefill/decode 分离为什么能提升吞吐和隔离尾延迟\n3. 如何解释 structured output 对调度和缓存的影响",
      "autoResize": false,
      "lineHeight": 1.25
    }
  ],
  "appState": {
    "gridSize": null,
    "viewBackgroundColor": "#ffffff"
  },
  "files": {}
}