触宝算法一二三四面面经
更新: 9.19收到了意向书。
更新:约了9.14的五面。。。人傻了要,然而问了hr,是邮件发错了。
更新:9.11 hr面
触宝四面(hr 半小时左右)
- 聊实习,从实习学到了什么
- 为什么不考虑去其他公司继续实习
- 期望的工作是什么样的
- 对未来城市的要求
- 周围人怎么看你
- 手里有什么offer
- bat等一线互联网投了么
- 对触宝的了解和期待
- 期望薪资(一直想问我offer的薪资是多少,emm)
- 等等常规问题
更新:
8.31 三面(vp面,临时改成电话面了)---------------------------------------------------------
问的都是一些比较宽泛的问题,比如实习怎么衡量优化的效果,对触宝的认识,对未来公司的期待,最近的挑战等等。
触宝一面 算法(1h)
-
自我介绍
-
数据结构基础
- 数组和链表区别,应用场景
- 疯狂问排序算法,最优最坏平均复杂度,稳定排序有哪些(好长时间没复习这个了,答得比较差)
- 一个剪枝题,口述算法过程,分析时空复杂度
- 说说面向过程、对象、切片编程的区别(我。。。。。。)
-
机器学习基础
- 讲一下你了解哪些分类模型
- 说说SVM
- 讲讲id3和c4.5
- 讲讲xgboost和gbdt
- 讲讲怎么判断kmeans的k,聚类效果的好坏
- k可以用肘部法则SSE(误差平方和)和轮廓系数
- 讲讲分类,回归,推荐,搜索的评价指标
- 讲讲lr 和 fm,fm的后续(ffm)
- 讲讲你知道的各种损失函数
- 讲讲l1 l2正则,各自的特点
-
深度学习基础
- 说说deepfm,说说fm在nn中还有哪些(FNN,NFM,AFM)
- 说说类似l1,l2正则化降低模型过拟合,还有什么别的方法
- 说一下sgd→adam的过程(下面是面试后简单复盘,本身答的一般)
- sgd
- momentum 利用了历史信息,意味着参数更新方向不仅由当前的梯度决定,也与此前累积的下降方向有关。这使得参数中那些梯度方向变化不大的维度可以加速更新,并减少梯度方向变化较大的维度上的更新幅度。由此产生了加速收敛和减小震荡的效果。
- rmsprop 在 Adagrad 中, 问题是学习率逐渐递减至 0,可能导致训练过程提前结束。为了改进这一缺点,可以考虑在计算二阶动量时不累积全部历史梯度,而只关注最近某一时间窗口内的下降梯度。根据此思想有了 RMSprop,采用的指数移动平均公式计算
- adam 可以认为是 RMSprop 和 Momentum结合并加了偏差校正,因为初始化是0,有一个向初值的偏移(过多的偏向了 0)。因此,可以对一阶和二阶动量做偏置校正 (bias correction),
- 介绍下梯度消失和梯度爆炸
- 都有哪些方法解决这两个问题
- 你了解多目标优化,迁移学习么(不知道)
-
场景问题
- 让你加一个兴趣类型特征 你要怎么做
- 如何处理年龄类特征
- 你了解相似向量快速计算的方法吗(就记得个啥哈希分桶,没做过)
- 局部哈希计算,高维相近的点低维也相近,但是高维较远的点低维可能也相近,将embedding应设成1维,若担心把远的也算进来可以多设置几个hash函数等等。
- 如何判断你模型上线的好坏
- 给你个nn模型,如何调参,如何修改架构
- 如何解决冷启动问题 用户侧,物品侧
- 推荐系统的整体架构
- 线上推断这部分再具体点怎么实现的
-
反问
- 触宝内容推荐(小说)
- 主要用python
- 等后续hr通知吧
触宝二面(45min,面试官人很好,和善憨厚)
- 自我介绍
- 讲下实习做了哪些优化,问了些问题(我都没介绍实习,面试官已经直接点破我每一点实际都在做什么)
- 讨论了一下抽样,作为一个算法工程师如何将抽样导致的得分分布变化给拉回来?
- 因为实习模型是FM,详细讲了下FM,讨论了下FM的泛化性
- 用的什么优化算法,顺便介绍下sgd后续的优化,sgd→momentun→rmsprop→adam,一面问过的,复盘过
- 实习有没有除错过导致线上有点问题(还真有。。。)
- hadoop shuffle干啥的,为啥key相同的要放在一起
- python深拷贝和浅拷贝的区别
- linux 替换文件中所有的a,我说的awk或者tr
- 算法题:给两个字符串S和T,计算S的子序列中T出现的次数(dfs A了)
- 反问:竟然和一面面试官不是一个部门。。。二面面试官给我介绍了算法在他们公司都有哪些应用。。。
- 总之要有工程师顶层思维,不能局限于模型优化啥的。