计算机网络 面试题
共 104 道 计算机网络 面试题。答案默认折叠,便于先自行作答。 1. 说说流式输出的原理及其应用场景 难度:3 · 类型:QA 题目要点 流式输出的本质是将结果按时间拆分为连续数据流,实现边生成、边传输、边消费;它通过降低首字节时间和提升反馈及时性来改善用户体验;常见于大模型推理、长耗时任务、实时数据和媒体传输等场景;但同时也带来更高的工程复杂度,需要在体验收益与系统成本之间进行权衡。 参考答案 流式输出并不是一种新的计算模型,而是一种结果传递与消费方式的改变:从“一次性生成、一次性返回”,变为“边生成、边传输、边消费”。理解它的关键,不在于某个具体 API,而在于数据生产方、传输层和消费方三者如何协同工作。 一、流式输出的基本原理 1. 传统非流式模式 在非流式模式下,系统的执行流程是严格串行的: 服务端完整计算结果 将结果一次性写入响应 客户端在接收完全部数据后再进行处理或渲染 这种模式的特点是实现简单,但首字节时间(TTFB)和用户感知延迟较高,尤其当计算过程本身很慢时,用户在很长一段时间内得不到任何反馈。 2. 流式输出模式 流式输出的核心变化在于:结果不再作为一个整体返回,而是被拆分为多个连续的数据块。 典型流程是: 服务端在计算过程中,阶段性地产生部分结果 每当有新数据可用,就立刻写入响应流并 flush 客户端持续读取数据流,并逐步消费、渲染或处理 在传输层,这通常依赖于长连接 + 分块传输,例如 HTTP chunked encoding、Server-Sent Events 或 WebSocket。 3. 从系统视角看流式输出 从系统设计角度,流式输出具备以下特征: 数据是按时间顺序增量产生的 消费方不需要等待生产方完全结束 生产与消费之间形成一种弱同步关系 这使得系统整体从“请求-响应”模型,转变为一种更接近“发布-订阅”的交互方式。 二、前端视角下的实现机制 在前端,流式输出通常体现在如何读取并渲染增量数据。 以 HTTP 流为例: 浏览器通过 Fetch API 获取一个 ReadableStream 通过 getReader() 持续读取字节块 将字节解码为文本或结构化数据 逐步更新 UI,而不是等全部完成 这种方式要求前端具备更细粒度的状态管理能力,例如处理中间态、取消、错误恢复等问题。 三、典型应用场景 1. 大模型推理与对话系统 这是当前最典型的应用场景之一。 模型在生成文本时是逐 token 产生的,流式输出可以让用户几乎立即看到内容开始出现,显著降低等待焦虑,同时也便于中途打断和重试。 ...