小鹏计算平台开发二面(Data 向):数据平台、调度选型与 Agent 算力
- 轮次
- 二面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 请做一下自我介绍。
- 你在 Shopee 的 Data Infra 实习过,详细介绍一下这个部门:数据血缘是怎样的,大数据任务的发起与结果处理分别由谁负责,每日任务量和数据量大概多少,有多少台机器?有没有观察过公司的 K8s 集群情况?
- 平台做 Agent 的时候,Agent 的算力或者性能是谁提供的?如果由平台本身提供资源,会不会挤占平台自己的主业性能?
- 数据引擎侧有 Agent 吗?
- 虾皮内部自研的一些模型,它们的训练数据也是你们在处理吗,还是只处理业务数据?
- 如果训练数据也要你们处理,你认为和业务数据的处理会有什么不同?
- 你在新能源汽车数据闭环也实习过,聊聊这个部门,跟 Shopee 的一样按血缘、任务量和机器规模描述。
- 你说你做过问题管理平台,那分析一下为什么不能直接用 Jira,而是要自己二次开发一个新平台?
- 有接触过路试数据吗?路试数据谁在处理?
- Shopee 说做的是调度平台,它是基于什么做的?为什么不选择 DolphinScheduler 或者 Airflow?
- 爱奇艺的实习也是自己开发平台吗?爱奇艺那边有多少台机器?
- 手撕:升序旋转数组的二分查找。如果旋转数组的元素可能重复,单纯使用二分查找还有用吗?
- 反问环节。
《参考解析》
讲实习部门要给出「血缘 + 链路 + 规模」三件套
这题的失分点不是技术,而是说不清自己待过的地方长什么样。可复用的框架:数据从哪来(业务库、埋点、日志、第三方),怎么进(实时 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 取整方向、以及循环退出时返回什么,写代码时把这些一次性说清最稳妥。