荣耀推荐算法一二面:SID、生成式推荐与推理加速
- 轮次
- 一二面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
一面(30 分钟)
- 讲一下 SID 和 item ID 的区别。
- 分别讲一下你的两个项目。
- 生成式推荐里,输出一对多、没有匹配上 item ID、提升检索效率分别怎么做的?
- 用户序列怎么构建?长度多长?怎么解决历史长短不一致?
- 离线和线上不一致、特征变换怎么解决?用到哪些指标?
- 手撕:
{1,1,1,2,2,3}按元素出现次数从小到大输出(1,3)(2,2)(3,1),时间复杂度 O(n log n),先讲思路。
二面(20 分钟)
- 讲一下 Transformer 的模型架构。
- 多头注意力是怎么做的?
- MoE 是什么?
- AWQ 有什么特别?
- 推理加速有哪些方式?
- 专业相关问题。
- 实习相关(包括下班时间)。
- 你对荣耀的了解?
《参考解析》
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。回答时按「精度损失、实现成本、适用场景」对比。