今天去面的是作业帮的算法工程师实习生,做的是广告相关的推荐算法,公司地址在西二旗那边的软件园,不能地铁直达,先骑小黄车去了五道口,然后从五道口坐了两站的地铁到了西二旗,然后又是近两公里的小黄车,但实际直线距离并不是很长,坐公交其实很直接,直接十几站就到了。
首先是一个很温柔的面试官,下面是面试官的问题:
朴素贝叶斯的原理,如果一个词没有出现过,怎么办(拉普拉斯平滑)
手推 SVM,(这个掌握的还阔以)
问了三道算法题:
一个数组,给定k,查找和为k的两个数的下标:给出了O(N)复杂度的算法,类似于桶排序那种,面试官让优化的时候,用哈希,但是没用过,要多学了
手写反转链表,包括边界条件的处理,这是最基础的,答的还可以
给定链表,查找倒数第k个节点的值,(面试官告诉我的只用遍历一遍的方法):
用两个指针,一个移动k个,然后一起移动。
二面:
一个看起来技术很高的人,也很友好,很温柔的给我讲解。上来先问了上一个面试官问了我几道算法题,我说三道,然后他说这么多的嘛,一般不是一道就够了嘛,emmm,可能是看我太菜了吧,不过问的都不是特别的难和复杂。
首先问了项目上的一些问题,给他简单讲了Unet的网络结构。
问LR,写逻辑回归的梯度下降,这时我说了逻辑回归的梯度下降与线性回归的类似。只是决策函数变成了逻辑函数。
问了SGD中的学习率怎么选的问题(答了两种,1/t e^-t),面试官说常用的是1/根号t
然后面试官开始给我讲随机梯度下降的各种变种,从学习率上进行改变的有:adagrad等,从梯度方向上进行改变的有动量法。
问了GBDT,工业上很常用的,我只说了用负梯度来拟合残差,用负梯度来拟合残差,是为了消除异常点的对loss的很大的影响。(面试官说是为了消除正负样本差别大的影响)
三面是这个部门的老大面的,非常精干,没有问技术的问题,进来就聊了一下实习时间,这个部门是主要做什么的,让等通知。
首先能参与推荐算法的实际的项目,是一定会有很大的进步的,这个部门刚成立不久,如果我进去的话,一定也会成长很快。