10.25 CVTE 应用软件开发一面:SSE、股票利润与 AI 输出保障
- 轮次
- 一面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 做一下自我介绍。
- 字节那段实习里的 Playwright 自动化是怎么设计的?
- 项目中 Agent 为什么使用 SSE?
- SSE 和 WebSocket 有什么区别?
- 算法题:买卖股票的最大利润;如果价格是递增、递减的,算法怎么改?如果不限制交易次数呢?
- 从 URL 到页面展示,网络层发生了什么?
- 如果接口响应特别慢,怎么排查?
- 怎么保障 AI 的输出符合 PRD?
- 最近用 AI 做了什么,怎么做的?
- 最近关注了哪些新技术发展?
- 平时怎么学习和关注技术?
- 反问。
《参考解析》
为什么用 SSE:Agent 的输出是「一次请求、持续下行」的单向流,SSE 基于普通 HTTP,服务端 text/event-stream 持续推送,天然支持断线重连(Last-Event-ID)、穿过大部分代理和网关、实现成本低。WebSocket 是全双工,需要协议升级和独立连接管理,适合双向高频交互(协同编辑、聊天、游戏)。如果只需要服务端推 token,SSE 更轻;如果要客户端随时打断并向同一连接发指令,WebSocket 更合适。
股票最大利润:一次交易用贪心,维护历史最低价,每天算「今天卖出的利润」取最大,O(n)。允许无限次交易就是把所有上涨区间加起来(后一天比前一天高就加),O(n)。如果限制最多 k 次,用动态规划:dp[j][0/1] 表示第 j 次交易持有/不持有的最大收益,或者用「买入卖出各 k 次」的状态机。面试官问递增/递减序列,本质是问「贪心在单调序列上的行为」:递增时一次交易就吃到全部涨幅,递减时利润为 0。
URL 到页面:DNS 解析(浏览器缓存→系统缓存→递归解析)→ 建立 TCP(三次握手,HTTPS 再加 TLS 握手)→ 发送 HTTP 请求(请求行、头、体)→ 服务端处理并返回响应 → 浏览器解析 HTML 构建 DOM、解析 CSS 构建 CSSOM、合并成渲染树、布局、绘制、合成 → 加载 JS 可能阻塞解析(defer/async)→ 首屏与后续资源加载。
接口慢的排查链路:先看是单请求慢还是整体慢(监控、P99);再看网络(DNS、TCP、TLS、RTT、丢包);再看服务端(线程池/连接池是否打满、GC、CPU、锁竞争、慢 SQL、下游依赖 RT);用 trace 定位是哪一段耗时;最后看是否缓存未命中、是否 N+1 查询、是否大对象序列化。回答时按「客户端→网络→网关→应用→存储→下游」分层,比罗列工具更有说服力。
AI 输出符合 PRD:三层保障——输入侧用结构化 prompt + 明确的字段约束和示例;输出侧用 JSON Schema / 函数调用做格式校验,不合法就重试或降级到模板;效果侧建评测集(覆盖典型场景、边界、对抗输入),用规则断言 + LLM judge + 人工抽检,发版前跑回归,线上采样监控并回流 badcase。