一面
之前准备的一直都是后端的东西,实际上自己做的是很算法很理论的方向,在找工作的过程中也发现了可能如果找后端的工作我是真的没有任何优势。在师兄撺掇我投了字节的算法迅速挂掉后,投字节的客户端因为实习没过也迅速地挂掉了,萌生了要不干脆就投算法的想法。百度是投算法的第一个公司,萌生了这个想法之后 7 月 20 号投递的百度,7 月 21 号下午两点半就打电话和我约面试,约在了 7 月 22 号下午三点钟。以下记录面试的整个过程,因为没有安装如流,面试官改约的电话面试。
首先上来进入一个链接,让我直接写一个快速排序,当时有点紧张,差点就手抖写堆排序了。写完后,给了一道题,找一个数组的中位数,实际上还是考察排序的知识点。因此我就和面试官说这道题可以先用之前写好的快速排序直接排序后根据索引找到中位数,也可以构建一个 (n+1)/2 大小的堆用堆排序做。由于之前已经写了快排了,现在我用堆排序来实现这个问题。写完后问我堆是怎么构建的以及堆排序的时间复杂度。
接着让我介绍我的项目,项目特别理论,其实在没法手推演示的情况下还挺难表述的。讲述的时候可能面试官有点没听懂,回去还是要想想怎么用通俗易懂的语言将其表达出来。在这个过程中,没办法,甚至用给的写代码的链接,用latex手打了模型公式给面试官看
然后简单地考察了算法的八股,问什么时候用交叉熵损失和什么时候用 mse,虽然很简单,但是第一次面算法,之前准备的比较仓促,说的时候有点磕磕绊绊。然后问我正则化的知识,我说了 L1 正则和 L2 正则。又问我这两个正则项的区别,我秒答使用 L1 正则项会导致解的稀疏,一面就结束了,合计一小时
本来感觉项目表达的也不好,后面回答问题一开始也有点紧张有点磕磕绊绊,应该没戏,终于 7/26 打电话约的 7/27 二面
二面
二面的面试官同样很 nice!
首先上来让我先写了一个最小栈的题目,迅速写完后面试官看了没问题手撕这一part就过去了。然后开始问项目,因为对我研究的那个模型不太熟悉,让我介绍一下我的研究对象。由于上次感觉项目介绍的不好,面试前特地准备了一下,通过口述和公式结合对研究内容进行解释,这次面试官应该是听明白了。
然后开始结合场景问八股。问如果在研究的时候,用对数几率回归训练了一个模型,这时候另一个同事帮忙再做一个double check,但是比较粗心,将其中的一个特征多复制了一次,会对结果造成什么影响。听到的时候确实挺懵的,一个是对对数几率回归不是特别了解,第二个是不知道该怎么说。开始瞎说说由于该特征被复制了一次,那个特征的权重应该会被平分掉。面试官问说权重和等于原来的权重这有什么数学依据吗?看我有点懵,引导我说对数几率回归模型是一个凸模型吗?我说是的,就反应过来了,凸模型的最优解是唯一的。如果说它的权重和改变的话那说明原来得到的就不是最优解了。然后尤文说权重被平分有什么依据吗?看我说不上来就说,确实没什么依据…然后又问那这种行为对最后的auc有影响吗?我只能边思考分析给他听。auc是roc曲线下的面积,而roc曲线表示的是将每个样本的置信度作为阈值时的真正例率和假正例率的比例。而冗余的特征对整个模型的贡献是不变的,所以应该是不会有什么改变。面试官肯定了我的思路,说确实不会有什么影响。然后面试官又问那是不是意味着这种操作是可以被允许的。我说那肯定是不能被允许的。一个是这么粗心的话确实是不应该的,这也就是在这个模型中没有造成大的影响。其次是考虑比较极端的情况吧,特征被复制了很多次,特征维度的提高可能求解会变慢(瞎说的)。面试官问还有吗?我说那肯定在存储上会占用更多的存储资源。但是面试官说从结果解释性上呢?恍然大悟,原来面试官想听的是这个…确实由于特征的提高,明明是相同的特征,但是他们各自有个权重,而且这是被发现了,如果是没被发现的话很难分析特征的作用去得到我们想要的结果以及进一步优化。
场景题差不多结束了,面试官又问对正则化手段有了解吗?我简单地说了一下 L1 正则和 L2 正则。面试官问什么时候用 L1 正则什么时候用 L2 正则呢?我说 L1 正则主要是会导致解的稀疏。如果是需要进行特征筛选,对解的稀疏性有要求的时候使用 L1 正则。另外像在神经网络等模型中由于使用SGD,其实使用 L1 正则也不能得到精确的稀疏解,所以一般都是使用 L2 正则。又问我 L2 正则会对模型造成什么影响。不知道该怎么答,就说 L2 正则能够在模型过大的时候对其进行惩罚,会减小权重但不会减小到零。最后面试官又问了问有什么别的模型的调参经验吗?我说在数据挖掘比赛中可能用过一些树模型,问我lightgbm一般调啥参。我说一般是调一下树的最大深度,叶子结点的最大样本数等,去做一个预剪枝。又问我有没有nn的调参经验,我说没。最后就是反问环节了。8.1 打电话约8.2三面
三面
三面比较考察业务了。一上来就让我说一个自己做的关于实际应用方面的项目。但是基本都是看论文,推公式,实际的算法项目真没有啊,只能说了一下前面参加 Fintech 的项目。大概就是从特征筛选讲到最后模型融合以及最终的表现。说完之后她说和他们做的广告策略也挺像的,让分析一下如何根据他们的数据去分析客户是否会流失。第一次答类似的题目也答不好吧,就挺懵逼的,也不知道他们的数据有哪些属性。她说我可以自己想,她告诉我有没有…磕磕绊绊、断断续续地聊了一个多小时吧加起来,确实是没有算法相关的实操经历,还停留在理论方面。后来官网的流程就变成共享中,还是挂了