
刚面完OpenAI,说实话现在脑子还有点懵。之前刷了好几周题,经典系统设计也都背得滚瓜烂熟,去面试之前感觉还挺有底的,结果面试完全考的和普通的code和系统设计不同,分享下 Openai 系统设计 + Code 面经。
Openai Coding
面试官是个白人姐姐,简单自我介绍后,揪着简历考打了十几分钟,然后就是coding,考了四个植物病害感染相关coding,人都麻完了,幸亏面前mock过,学生配合也是很默契,最后全部顺利拿下,简单整理分享一下这一轮
题1:植物病害感染模拟
M×N网格,初始有感染X和健康(.)。每天,若健康植物的感染邻居数 ≥ T,则次日被感染。求状态不再变化所需天数。
思路:逐天模拟,每天遍历网格统计感染邻居数,标记新感染者,次日统一更新。当天无新感染则结束,返回天数
题2:网格模拟植物感染
Part 1 格子为健康(.)或感染X;Part 2 增加免疫格子。每天,健康格子若感染邻居数 ≥ T 则次日感染。求稳定所需天数。
思路:BFS 模拟。初始感染入队,记录感染时间。遍历邻居,健康格子累计感染数,达标则入队并标记感染时间。免疫格子忽略。最终返回最大感染天数
题3:在 Part 2 基础上,增加感染时长机制
每株植物感染满 D 天后变为免疫不再感染且不会被感染。模拟直到没有感染植物为止,返回所需天数。
思路:逐日模拟每天已感染天数 ≥ D 的植物变为免疫,统计健康植物周围感染邻居数,若 ≥ T 则标记为次日感染,更新感染植物的已感染天数,若无感染植物则结束
题4:在 Part 3 基础上增加死亡机制
感染植物若周围感染邻居数 > K,则直接死亡标记为#,不再变为免疫。最终返回两个值:直到没有感染植物的天数,以及死亡植物总数。
思路:逐日模拟每天统计每个格子周围感染邻居数,健康格子若感染邻居 ≥ T 则次日感染,感染格子若感染邻居 > K 则标记死亡#,否则感染天数+1,满 D 天变免疫,记录死亡数量,更新网格状态,无感染植物时结束,返回天数和死亡数
Openai 系统设计
你在一家 2 万人规模的企业负责搭建 Enterprise GPT:员工可以用自然语言询问内部文档(Confluence、Google Docs、PDF、Slack 公告、工单知识库、PRD 等)。
系统必须:
准确回答,并提供可追溯引用(引用到具体文档段落/版本)
权限正确(ACL:员工只能看到有权限的内容)
低延迟:P95 < 2 秒(不含大模型推理可另算/可做 streaming)
覆盖多语言(英/中至少)
持续学习:上线后用日志/反馈迭代,离线指标能稳定提升,线上投诉率下降
总体思路
Confluence / Google Docs / PDF / Slack / 工单 / PRD
↓
Connector 数据接入与增量同步
↓
文档解析、清洗、版本管理、ACL同步
↓
结构化切分、Embedding、关键词索引
↓
Elasticsearch + Vector DB + Metadata
↓
用户请求 → 认证鉴权 → 查询理解 → 混合检索
↓
ACL过滤 → Rerank → 上下文构建
↓
LLM生成 → 引用校验 → Streaming返回
↓
日志、反馈、离线评测、A/B测试
一点感想
面试完,和朋友聊了聊之后,我琢磨出来几个点:
- 光刷题真不够了。至少对这些前沿AI公司来说不够。他们想看你怎么思考开放性问题,不是简单地套模板。
- 表达能力跟技术一样重要,得多练练怎么把复杂的东西说明白。
我有朋友跟着那种真正做过面试官的导师准备,命中率明显高很多。道理很简单——你能拿到内部视角,知道他们真正在意什么,而不是瞎准备一通。
为了求稳,我在 VO 前夕通过朋友联系到了 Interview Aid。他们深耕北美科技大厂求职 10 年,从 OA 辅助、VO 实战助攻到全流程的代面试兜底,有着极其成熟的保障方案。祝大家都能稳稳接住属于自己的 Offer!