面灵AI→

荣耀推荐算法一二面:SID、生成式推荐与推理加速

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

《面试题目》

一面(30 分钟)

  1. 讲一下 SID 和 item ID 的区别。
  2. 分别讲一下你的两个项目。
  3. 生成式推荐里,输出一对多、没有匹配上 item ID、提升检索效率分别怎么做的?
  4. 用户序列怎么构建?长度多长?怎么解决历史长短不一致?
  5. 离线和线上不一致、特征变换怎么解决?用到哪些指标?
  6. 手撕:{1,1,1,2,2,3} 按元素出现次数从小到大输出 (1,3)(2,2)(3,1),时间复杂度 O(n log n),先讲思路。

二面(20 分钟)

  1. 讲一下 Transformer 的模型架构。
  2. 多头注意力是怎么做的?
  3. MoE 是什么?
  4. AWQ 有什么特别?
  5. 推理加速有哪些方式?
  6. 专业相关问题。
  7. 实习相关(包括下班时间)。
  8. 你对荣耀的了解?

《参考解析》

SID 是语义 ID,item ID 是物品的唯一标识。item ID 是人为分配的、没有语义的离散符号,新物品冷启动没有任何信息;SID 由内容或行为学出来(比如用向量量化把 embedding 聚成码本),相似物品共享前缀,模型能借相似物品的知识做泛化和冷启动。生成式推荐用 SID 是因为它把「推荐」变成「按词表生成序列」,词表规模也远小于 item 数。

生成式推荐的两个难点:一是「一对多」——同一个用户可能喜欢多个物品,训练时要用列表级目标或采样负例,推理时用 beam search 生成多个候选;二是「生成出不存在或已下架的 ID」,需要约束解码到合法集合,或在后处理里过滤并回退。检索效率靠 SID 前缀树或向量索引。

用户序列按时间取最近 N 个行为,长序列用截断 + 分桶 + 注意力池化;长度不一用 padding + mask 或按分位数截断。离线在线不一致的根本原因是特征口径和时间旅行,解决靠特征平台统一口径、训练时用和线上一致的快照,并监控特征分布漂移。

AWQ 是「激活感知的权重量化」:不是所有权重同等重要,它根据激活值的幅度找出显著通道,对这些通道保留更高精度(按通道缩放),其余量化到 4bit,从而在低比特下保持精度且不需要反向传播。

推理加速分模型侧和系统侧:量化(INT8/INT4、AWQ/GPTQ)、剪枝与蒸馏、KV Cache 与 PagedAttention、FlashAttention、投机解码、连续批处理(continuous batching)、算子融合和更好的 kernel。回答时按「精度损失、实现成本、适用场景」对比。