联想:2022 秋招 算法工程师 一二面
联想:2022 秋招 算法工程师 面试
一面
- 项目 
- 是否了解 GDBT 等推荐算法 
- 分类问题的交叉熵、是否可以用MSE - 不可以。主要原因如下: - 物理意义上,MSE 衡量的是几何空间的欧氏距离,而分类问题中每个类别的标签是离散的 - 和 - ,本身不具备几何空间的意义; - 信息学中,交叉熵衡量的是两个分布之间的差异,可用于衡量模型预测的概率分布和真实标签的类别分布是否相似。 
- 计算上,分类模型输出的概率一般会经过 softmax 归一化,归一化后的值使用 MSE 会导致不符合预期的梯度,而使用交叉熵则无此问题。 - 如三分类问题中,标签为 - ,模型输出为 - ,此时的损失值为: - 可以看到,MSE 会考虑各个类别的概率,其最小化的目标除了让正确类别的概率最大化外,还会让错误类别的概率平均(这一步是不必要的,可能会导致梯度不符合预期,这也是其优化函数非凸的难以优化的直接表现); - 而交叉熵则只针对正确的类别进行计算,就没存在 MSE 中的问题。 
 
- 推荐系统中,相比于余弦相似度,是否可以用欧几里得距离判断相似度 - 不可以。 - 计算上,余弦相似度的值域区间是 [-1, 1] 而欧几里得距离的值域区间为 ,在考虑物品的推荐优先度时欧几里得距离需要全局的视野才能比较出某一个物品大致的优先程度,而余弦相似度不需要。 
- 物理意义上,余弦相似度计算的是一个向量在另一个向量上投影的长度,具有天然意义上“相似度”、“重合度”的性质,而欧几里得距离衡量的是两个向量值的差距,表示两个物品差别多大。
 
- 计算上,余弦相似度的值域区间是 [-1, 1] 而欧几里得距离的值域区间为 
- 过拟合怎么处理 - Dropout、正则化、数据增强、残差连接等。 
- L1、L2 正则化的效果、区别、原理 
- Dropout 的原理、在训练和测试时的区别 - 有两类不同的处理,其目标都是保证训练和测试时特征分布相同: - 训练时按照概率 丢弃(特征置 )、测试时所有特征 ; 
- 训练时按照概率 丢弃一部分,剩下一部分特征 、测试时不做丢弃等处理。 
 
- 训练时按照概率 
- SGD、Adam、动量优化的 SGD 
- Adam 和动量优化的 SGD 效率上是否有区别 - 相比于 SGD 的一阶动量优化,Adam 额外考虑了二阶动量,因此有着更快的收敛速度,学习的效率更高。 
- 显存不足怎么处理 - 数据并行、模型并行、降低精度、降低 Batch Size 和特征维度。 
- 多卡训练的细节 - 梯度平均等。 
- 推荐系统中,如何进行负采样 - 可以优先考虑此前推荐过但是用户没有点击过的物品作为负样本。 
- 快排思想 - 分治。 - 每次在区间中选择一个元素作为“哨兵”,通过并依据“哨兵”进行初步位置调整使得区间内所有数相对“哨兵”有序(如比“哨兵”大的在“哨兵”右边,小的在其左边),再对“哨兵”左右区间递归分治。 
- SQL 中,对 A、B 两个字段有高频的查询需求,如何优化 - 比较 A、B 的字段的不同数据量并建立索引,将数据量少的建立为第一索引,另一个为第二索引。 
- 有A、B、C三个矩阵,A 和 C 为 - 的单列矩阵、B为 - 的单行矩阵, - 的矩阵计算如何优化 - 。先计算 - 得到 - 的矩阵,再和 - 的 A 相乘,复杂度是 - ;若先计算 - 得到是 - 的矩阵,再和 C 相乘时,复杂度是 - 。 
- 是否了解使用 Flask 部署模型 
- 项目中的困难、成就感 
- 意向城市 
二面
- 项目
- 职业规划
- 对联想与其他互联网企业的看法
- 对996的看法
 查看4道真题和解析
查看4道真题和解析