社招一年:滴滴算法面经(定价策略算法)
滴滴定价策略面经
校招时候就面过滴滴,整体感觉滴滴是面试体验最好的,面试官是以一种平等的态度来交流技术,即使有时候卡壳也会慢慢提醒(两次都拿了offer)
安利一下 牛客题霸
https://www.nowcoder.com/activity/oj
最近各大厂的视频面试都用牛客平台,要求编译运行,难度比白板写提升了,多写写练练手帮助很大,面试时候写个bug free的代码,拿到offer的概率大大提升
1面
- 项目,针对项目中的细节询问比较多,比如怎么抽象问题,损失函数怎么定的,为什么要选这个损失函数,正负样本怎么来的,怎么验证结果
- 算法题:求树深 时间复杂度(LeetCode easy,时间复杂度是O(N),因为要扫一遍所有的节点)
- 算法题:矩阵,只能向右或向下,求最大路径 时间空间复杂度(LeetCode easy 入门级的动态规划,时间复杂度O(M*N),空间复杂度O(N))
- linux基础:awk实现left join(算法工程师少不了的基本功,awk sed建议学一下,实际工作中也是很有用的)
- 机器学习基础:boosting和bagging的区别 (bagging就是投票策略,会降低方差,减小过拟合风险,boosting是降低偏差的策略,可以描述一下 Adaboost和gradient boost的区别)
- 梯度下降的更新公式,和梯度提升的区别 (这里可以继续结合boosting来说,梯度提升是在函数空间的,而梯度下降是在参数空间的)
2面
- 机器学习基础:xgb和gbdt区别(基本是必考题目,从主要的优化点说起,xgb是二阶泰勒展开,gbdt是一阶,可以类比牛顿法和梯度下降法的区别,牛顿法收敛更快,但是由于更快逼近目标,会增大过拟合风险,因此在目标函数里有一个显示的惩罚项,与叶子节点数和叶子节点的权重有关,来控制模型复杂度;另外还有分裂节点的选择,xgb怎么选取最优分裂节点,有哪些加速的优化之类的知识)
- 算法题:给一个字符串和一个k,要求找到不超过k个不同字符的最长子串的长度,on时间(LeetCode上的medium或者是偏简单的hard题目,用划窗的思路做)
- 概率题:2人抛硬币,正面赢,反面让另一个人抛,求先抛的人获胜的概率
- 深度学习基础:cnn和全连接的区别(参数共享,降低运算量)
- lstm有什么新的改进,替代(针对rnn来说 通过门电路把连乘转换成了连加,一定程度上缓解了梯度消失问题,梯度爆炸可以直接clip不需要考虑,另外就是广度了,lstm的应用和改进)
3面
- 预测一个城市不同区域一天的发单量,和滴滴业务相关,设计一些调度策略
- 预测一个城市不用区域的降水量(这个可以作为前一道题的特征)
- 判断用户感知是否顺路,给出思路(怎么获取训练数据,怎么去判断用户的感知到底顺不顺路,找一些简单的规则)
- 概率,抛硬币,连续两次正面向上为止,求次数期望