推荐算法面试一般,共3轮面试
算法岗实习找的第一家公司。
- 很年轻,感觉刚毕业不久自我介绍
- 讲项目,问的比较简单,都回答上来了。面试之前一定要仔细看一下简历的细节,并且思考自己的项目经历和这个岗位的职责有什么联系。简单讲一下PSO算法的原理; PSO算法在推荐里有什么用; PID控制系统的原理; 如果用PSO和PID一起做推荐算法的优化,你打算怎么做; 你项目中强化学习的作用是什么。
- 最后是一道算法题,剑指offer的最后一道,二叉树两个节点的最低公共祖先,面试前刷了3遍剑指offer,所以顺利的编出来了。面试官还在说最后一句话的时候HR的电话就来了,通知一面已经通过,准备3天之后二面。
- 二面面试官2:
- 30岁左右,美国名校海归博士自我介绍
- 递进式的算法题:
Q:问:二叉树的序列化和反序列化如何实现?
Q:问:这种方法有什么缺点和局限性? 1条回答
- 答:不能含有值重复节点,必须得到完整的序列后才能进行反序列化。
Q:问:如果节点的值可以相同,怎么解决?
Q:问:如果每个节点是任意的字符串如何解决?
- 答:用字符串数组的每个元素存储节点,空指针对应空字符串。
Q:问:这个不太符合序列化的要求,需要最终变成一个string方便传输。 1条回答
Q:问:好的,那按照int型节点的思路写代码吧。
Q:问1:如果一个模型在测试集上效果不好,如何改进? 1条回答
Q:问2:BatchNorm的原理和作用
Q:问3:static关键字的作用面试官说40分钟后三面,让我先休息一下。1条回答
- 三面面试官3:
- 不到40岁吧,看起来很成熟稳重,感觉像是部门大佬。
- 自我介绍2. 递进式的算法题:
Q:问1:返回数组中任意一个最大值的索引
- 答1:遍历数组,不断更新最大值和其索引。(这个很简单,注意一些非法输入的判断即可)
Q:问2:如果要等概率地返回一个最大值的索引呢?
- 答2:返回值改成vector存下所有最大值的索引,然后随机抽取一个。
Q:问3:如果要求空间复杂度是O(1),怎么做? 1条回答
- 答3:遍历一遍数组,统计最大值的个数N,取1-N的随机数m,遍历第二遍数组,输出第m个最大值的索引。
Q:问4:如果要求数组只能遍历一次呢?
- 答4:(这个想了一会儿)在遍历数组的过程中统计目前遇到的最大值的个数N,每次遇到一个新的最大值以1/N的概率更新。
Q: 问5:如果数组中有5个最大值,用数学证明你的方法是等概率的。 1条回答
- 答5:输出第一个1/2×2/3×3/4×4/5;第二个1/3×3/4×4/5.....
Q:问6:如果有N个最大值呢? 1条回答
Q:问1:你用过Q学习对吗?如何用Q学习做推送场景下的训练? 1条回答
- 答1:状态:推送内容的不同类别;行动:发/不发;回报:用户看了推送/删掉推送/删除APP。
Q:问2:除了这样设计状态还可以怎样设计?
Q:问3:回报具体如何设计呢? 1条回答
- 答3:删除APP的回报-100,删掉推送-10,看了推送10+t(与用户看推送的时长有关)。
- 三面结束后不到一小时,HR打电话通知通过技术面试,准备两天后HR面(主要是关于职业规划方面的)。