面灵AI→

小鹏计算平台开发二面(Data 向):数据平台、调度选型与 Agent 算力

轮次
二面
时间
2026-09
来源
牛客网

《面试题目》

  1. 请做一下自我介绍。
  2. 你在 Shopee 的 Data Infra 实习过,详细介绍一下这个部门:数据血缘是怎样的,大数据任务的发起与结果处理分别由谁负责,每日任务量和数据量大概多少,有多少台机器?有没有观察过公司的 K8s 集群情况?
  3. 平台做 Agent 的时候,Agent 的算力或者性能是谁提供的?如果由平台本身提供资源,会不会挤占平台自己的主业性能?
  4. 数据引擎侧有 Agent 吗?
  5. 虾皮内部自研的一些模型,它们的训练数据也是你们在处理吗,还是只处理业务数据?
  6. 如果训练数据也要你们处理,你认为和业务数据的处理会有什么不同?
  7. 你在新能源汽车数据闭环也实习过,聊聊这个部门,跟 Shopee 的一样按血缘、任务量和机器规模描述。
  8. 你说你做过问题管理平台,那分析一下为什么不能直接用 Jira,而是要自己二次开发一个新平台?
  9. 有接触过路试数据吗?路试数据谁在处理?
  10. Shopee 说做的是调度平台,它是基于什么做的?为什么不选择 DolphinScheduler 或者 Airflow?
  11. 爱奇艺的实习也是自己开发平台吗?爱奇艺那边有多少台机器?
  12. 手撕:升序旋转数组的二分查找。如果旋转数组的元素可能重复,单纯使用二分查找还有用吗?
  13. 反问环节。

《参考解析》

讲实习部门要给出「血缘 + 链路 + 规模」三件套

这题的失分点不是技术,而是说不清自己待过的地方长什么样。可复用的框架:数据从哪来(业务库、埋点、日志、第三方),怎么进(实时 binlog 还是离线同步,谁负责接入),怎么算(调度平台、任务类型、依赖层级 ODS/DWD/DWS/ADS),结果去哪(数仓、特征平台、报表、下游服务),谁负责哪一段(DE、DA、平台、算法)。规模一定要有量级:每日任务数、日增数据量、集群机器数与存储规模、核心链路的 SLA 和延迟要求。这些数字不需要精确到个位,但必须能自洽、经得起追问,比如说了几万台机器就要能解释任务分布与高峰时段。如果确实没看过 K8s 集群,如实说「我的工作集中在调度与任务侧,集群运维由 SRE 负责,我了解的是资源队列与 Pod 规格」,比编一个数字安全得多。

Agent 的算力从哪来、会不会挤占主业

在线业务与智能负载共用一套资源池时,风险是真实存在的:推理请求突发会抢占批处理任务的 CPU/GPU 与内存带宽,反过来离线大任务也会把在线服务的延迟顶上去。工程上的标准答案分三层。第一层是隔离:按业务划分资源组/命名空间,在线与离线分池或用 K8s 的 QoS 等级(Guaranteed / Burstable / BestEffort)区分,关键服务给资源 request=limit 的独占配额。第二层是配额与优先级:设 CPU/GPU 配额上限、给在线任务更高优先级与抢占权,离线任务用可中断的抢占式实例或低优先级队列填补空闲。第三层是容量与观测:GPU 做池化与共享(时分复用、显存切分、批处理聚合)提高利用率,同时用排队时长、GPU 利用率、P99 延迟这些指标做准入与告警,容量不够时先扩容或降级,而不是让两类负载互相踩。面试官往往追一句「配额给谁定、怎么调」,这就要提到容量评估与成本账:按业务价值给配额,用历史峰值加增长系数定期复评。

为什么自研平台而不是用 Jira、DolphinScheduler、Airflow

选型题要给判据,而不是只讲「我们做了个平台」。拿 Jira 这类通用工单系统来说,不自研的常见理由是:流程模型不匹配(需要多级审批、与发布单/告警/变更联动、字段与状态机是行业特有的),跨系统打通成本高(要和内部权限、CMDB、监控双向同步),以及数据主权与合规要求。但更成熟的答法是先说清什么情况下应该直接用 Jira——流程标准、量不大、只要看板和提醒,自研纯属浪费——再说清什么情况下自研划算:工单是研发流程的中枢、要沉淀结构化数据、要与自有系统强耦合。调度平台同理:Airflow 的优势是生态与 DAG 表达力,短板在调度器吞吐与大规模任务下的数据库压力、以及与内部元数据/权限/血缘体系的集成;DolphinScheduler 提供了可视化与多租户,但与公司已有的发布、权限、监控体系仍要二次开发。自研能换来的是与内部体系的无缝集成、特殊的调度语义(回填、依赖触发、混部优先级)和可控的扩展性,代价是持续的研发与运维投入,这个取舍必须自己说出来。

训练数据与业务数据处理的差异

训练数据的诉求和报表类业务数据很不一样:一是规模与形态,训练要的是宽表或分片样本,单次读取量极大、对顺序和随机读都敏感;二是版本与可复现,同一份样本要能按数据版本回溯,业务数据更在意口径与及时性;三是质量要求,训练数据要处理样本不均衡、去重、去噪、标注一致性,脏数据的代价是模型效果而不是报表数字;四是合规,训练数据的采集范围、脱敏、留存期限通常有更严的约束,用户可撤回的要求也要能传导到样本层;五是链路形态,训练数据管道更多是离线批处理加特征回填,业务数据管道更强调准实时与 SLA。回答时把这几点讲清楚,再补一句「实际落地里我们是怎么满足的」,就能避免回答停留在概念层。

旋转数组二分查找与含重复元素的退化

升序数组旋转后,任意切一刀,至少有一半是有序的:比较 nums[mid] 与 nums[left](或 nums[right])就能判断哪一半有序,再看 target 是否落在有序半区的值域内,落进去就收缩到那一半,否则去另一半,复杂度 O(log n)。元素可能重复时,二分仍然可用但不再保证对数复杂度:当 nums[left] == nums[mid] == nums[right] 时无法判断哪一侧有序,最坏情况(例如全为同一个值)会退化到 O(n)。工程上的处理是在三值相等时同时把左右边界各缩一格再继续二分,平均仍有对数性能、最坏保底线性;如果数组确定要频繁做这类查询,更好的做法是先做一次去重或直接构建哈希索引。这题面试官通常会追问边界:left <= right 还是 <、mid 取整方向、以及循环退出时返回什么,写代码时把这些一次性说清最稳妥。