平凡之路 | 科班小硕的2020年面试小结

“作者为Pinkman,任京东算法工程师

本文由「海边的拾遗者」公众号编辑首发”

背景   

    作者是一名今年参加校招的应届生,本文写在校招结束后。

    经过了两个月的奋战,终于在9月末成功上岸。今年的算法岗真的可以说是 非常惨烈,到目前为止0 offer还有很多。希望通过这篇秋招总结帮助到学弟学妹,提前为以后的秋招做准备。先说一下我个人的情况,计算机专业本硕双非,打过几次比赛,成绩最好拿到第四名,后面是三段实习经历(创新工场、滴滴、京东),最后经过3个月在京东的实习,成功转正。因为在京东实习期间时间比较紧,所以整个秋招面的公司不是特别多,很多时候时间冲突只能推掉,最后拿到京东、滴滴、天眼查和3家小厂的offer,经过薪资和岗位的综合比较最终还是选择了京东。

    在这里也欢迎各位从事推荐及NLP的小伙伴加入我们,一起交流学习,一起进步。

    如下仅为部分面经,墙裂欢迎各互联网大佬来撩。

前言  

    对于秋招的准备,我是从去年9月份开始的,从去年秋招的情况来看,算法 的竞争就已经比较激烈了,再加上我双非学校比较拖后腿,所以准备相对早一 些,笨⻦先⻜吧,哈哈。

    我个人准备的情况,首先LeetCode无论对于算法还是研发都是必不可少 的,尤其是本科非cs出身的同学,这里不提前准备秋招的时候很容易吃亏。我刷了LeetCode前200题加上剑指offer的全部,加起来大概有270道题左右,如果熟 练掌握原理,应付面试以及笔试已经够用了(刷题的时候一定要一边刷一边自己 做题目分类和总结,而且要经常回顾已经做过的题,不然很难做到融会贯通)。

    然后是算法理论部分,手推lr和svm是必须的,常用的机器学习算法、深度 学习算法和优化算法也是基础中的基础,这里一定要熟练掌握,不能有任何死 ⻆,如果这部分基础知识答错或者答不上来,在面试官那里你就已经进入待定状态了。具体我找实习和秋招中遇到的问题我会在后面列出来,其实面试多了你会 发现基础知识都是反反复复那一点,从今年京东同事面试的反馈来看,现在基础 知识这部分已经没有什么区分度了,大家准备的都很充分,所以我前面也说了这里如果没法顺利答出来,你就自动降级了。

    最后我想说一下提前出来实习的重要性,我是研二中间出来实习的,提前达到实验室的毕业要求发了小论文,再加上老板比较好说话所以提前就跑出来了。像我这种双非的菜⻦,在今年这么激烈的算法岗竞争中能拿到大厂的面试机会主要也是看我实习的经历比较丰富吧,不然和985的大佬们比完全没有任何机会。实习分为暑期实习和日常实习两种,暑期实习一般都是可以看你表现情况留用的,日常实习就要看组内情况了,一般情况都是没有转正的。所以秋招想拿大厂offer的同学一定要争取暑期实习的机会,如果成功留用你在秋招的时候就不会特别被动。我来京东是以日常实习身份过来的(上一份滴滴实习上线的模型排期一拖再拖,想把自己做的模型上线再走,所以错过了找暑期实习的时机),好在面试的时候问了自己的mentor能不能有留用机会的时候,给的回复是表现好的话是有的,最后3级部⻔的leader在结合自己的成果进行转正审批的时候也没有再进行内部面试直接给了转正。我认为我个人是比较幸运的,实习的时候遇到了好的同事、mentor和leader,不然即使有转正机会也不会这么顺利。

实习面经分享

oppo

一面

    自我介绍。首先面试官让介绍一下所做的项目.

  • 由于面的nlp相关所以介绍了nlp方面的知识,从文本分类到生成式摘要。讲述 的过程中在处理过⻓文本想用摘要去解决的时候,面试官提出了一个方法可以解决过⻓文本问题(具体是什么方法不记得了)。然后在讨论生成式论文的时候对 于pointer network面试官提出了利用词表解决OOV的问题。然后问到rouge评测方法。

  • 选lstm,cnn,transformer,详细的讲一下,在将multi-head self-attention的时候提出最后8个头不concat而是相加,然后做一层线性变换(发论文的点), 还有attention换成n-gram效果会更好不。

  • 问熟悉什么语言,python底层是用什么写的,问了list是利用什么数据结构实现的,sort数据的时间复杂度是o(n),dict中set()时间复杂度o(1)。

  • 算法题:剑指offer原题数据流中的中位数。

二面

    自我介绍。

  • 介绍之前比赛用到什么模型,如何进行数据预处理。

  • 介绍上一份实习中的项目。

  • 算法题:两个排序算法归并排序和快速排序,说出时间复杂度以及是否稳定。

滴滴地图

一面

    自我介绍。

  • 介绍房租赛的整套方案,介绍模型融合的时候闻到xgb和lgb效果会有差异,是为什么?

  • 讲一下实习中做的东⻄,讲分类,讲和生成式摘要,从lstm讲到transformer,transformer讲到Encoder结束,没有讲完(似乎他也不懂,不感兴趣),这次是对比lstm讲的,下次对比部分讲完了,尝试问一下是否要继续讲后面的,省着做题。

  • 实验室地铁流量的项目。

  • 算法题:打印二叉树的路径。

二面

    自我介绍。

  • 针对cnn提问,卷积后的尺寸的变换由什么决定的(那个公式)。

  • 最主要是通过什么方式进行降维操作的,(pooling层)。

  • resnet与cnn最大的不同体现在哪里?

  • 画一个block的dense net。

  • dense net和 resnet相比有什么优化的地方(参数减少,反复学些,避免学习不充分)

滴滴简历推荐

一面

  • 算法题:在一个字符串中找到一个子串没有重复项。

  • 问了比赛相关的,介绍一下xgboost,决策树,问了bert相关的。

二面

  • 算法题:链表相加,将结果作为链表返回。

  • 详细的讲了比赛。

字节

一面

  • 与滴滴第一轮面的同一题。

  • 介绍项目。

  • python常用函数的时间复杂度。

二面

  • 介绍一下gbdt。

  • 说一下梯度(后面探讨了gbdt的梯度,求导为什么要对yi求导,而不是对别的求导)。

  • 什么是过拟合,如何解决过拟合。

腾讯

  自我介绍。

  • 处理不等⻓的文本除了用0 mask掉还有什么办法?

  • 如果用0 mask掉后双向lstm如何保证不学习到那些被pad的信息?

  • 在训练模型的时候调过什么超参数吗?(我只说了maxlen和batchsize,这俩貌似不是超参数)

  • 如何得知你训练的模型是过拟合还是欠拟合。如果过拟合了该怎么做,欠拟合了该怎么做?

  • 是否用过TensorFlow,训练lstm的时候是如何读取不同⻓度的字符的?

  • 做一道题,两个有序数组合并成一个有序数组。

  • python读取字符串的格式。

  • 对于一批数据,内存无法全部装入,如何读取并进行排序?

字节广告推荐

  自我介绍。

  • 介绍滴滴做的事情。

  • 介绍gbdt特征重要性如何得到?

  • xgboost如何处理缺失值?

  • 树模型捆绑特征为什么会提高指标?

  • 写反扒机制。

百度

一面

  • tf写全连接网络。

  • pooling层如何反向传播的、分为哪几类。

  • 快排的时间复杂度,给与证明。

  • rf为什么有效?多个模型。那是不是说明树越多越好?容易过拟合,随机选取数据选多少?(效果好应该从bagging降低模型方差来,并结合投票来讲)

二面

  • 介绍项目(难点如何解决)。

  • 介绍gbdt和xgb的区别。

  • 有什么gbdt的调参经验嘛?

  • 数据清洗做过哪些,特征工程做过哪些?

  • 连续特征离散化有什么好处(处理异常值,防止过拟合)?

  • 算法题:逆序对的题。

阿里

一面

  • 算法题:字母的全排列(递归+回溯),问了时间复杂度(阶乘)。

  • 算法题:逆序对。

  • 介绍滴滴项目。

  • Transformer模型结构。

  • resnet和densenet模型利用之前信息方式的区别。

  • auc的物理意义。

二面

  • 算法题:sqrt()。

  • 算法题:求第k大的数。

  • Transformer模型。

  • batch Normalization有什么作用,为什么会有作用,两个参数,以及公式,如何学习的?

  • 常用的优化算法有哪些,有什么使用技巧吗?

  • 如何得知是不是过拟合,解决过拟合的办法有哪些?

  • 说一下lstm rnn cnn的pooling层的作用。

三面

  • 介绍滴滴做的项目(面试官临时有会,提前结束了)。

京东

一面

  • gbdt和xgboost的区别。

  • 介绍transformer。

  • 画一下densenet一个block的结构图。

  • Transformer为什么有效(self attention)说一下Transformer的优势,哪一个部分的复杂度会别较高,全连接。

二面

  • 算法题:二叉树的路径。

  • 算法题:寻找旋转数组中的一个值。

  • 问了rnn结构。

秋招面经分享

天眼查nlp

一面

    自我介绍。

  • Transformer结构。

  • 高斯混合算法和kmeans的区别。

  • lightgbm和xgboost的区别。

  • 什么时候适合使用树模型?

  • attention和Self-Attention的区别。

  • rouge评测函数。

  • 其他都是项目的细节,需要细化一下文本分类的指标。

  • 算法题:统计相同的字符串的前缀。

二面

    自我介绍。

  • 算法题:一个有序数组,寻找所有两数之和等于target的组合,数只可以使用一次。后来又问无序怎么办,利用dic存储,然后遍历数组做差,差值是否在dic中,hashmap查找时间复杂的为什么是1。

  • 算法题:一个数组,连续最大累加和的切片,和dp那道题一样,但是需要输出个切片值。

  • 死锁的概念。

  • sql关联两个表。

  • 项目:jd输入输出,评价指标。

三面

  • 主管面,主要就是聊天,没有技术相关的东西。

熵简科技

一面

  • jd的项目。

  • 文本比赛的项目。

  • w2v为什么有效果:从词向量的⻆度,可以把相同语意的词映射到相同的语意空间内,可以提取前后信息的词。

  • w2v存在哪些壁垒:1.模型太浅了,无法提取深层次的语义信息 2.对于不同语境内的多义词无法区分 3.window的限制,太大无法得到准确的词,太小语义信息又不全面 4.oov的问题,训练好固定的词向量,存在不可覆盖的问题。

  • bert为什么有效果:从Transformer的self-Attention的⻆度来答。

  • bert存在哪些问题:模型太大,不够轻量;自编码的问题;无法对全文进行训练,利用Transformer-xl进行改进。

二面

    介绍项目。

三面

  • 主要就是聊天。

mx player

一面

  • lr 和svm 有什么区别。

  • 在线auc的计算。

  • 算法题:归并排序;选择⻓度最⻓的回文串(动态规划)。

二面&三面

  • 介绍项目。

  • 算法题:两个字符串的最大子串;字符串的全排列。

快手

  • 牛顿法有什么优点,落入鞍点会有什么样的特征(什么情况下容易陷入鞍点)。

  • 滴滴的项目。

  • 算法题:题目有效括号的匹配(回溯法)。

滴滴

一面

  • lstm和tranformer的区别。

  • gbdt和xgboost的区别。

  • 介绍优化算法。

  • mmoe模型结构,为什么会有效果?

  • bert效果为什么好?

  • 二叉树根节点到叶子节点的累加和。

  • 说一下lr的目标函数,为什么要使用对数似然?

  • svm基于什么分类的,距离是怎么计算的,和lr有什么区别,线性不可分怎么办?

二面

  • jd的项目,使用mmoe的动机是什么?

  • 概率题,黑球和白球,已知各50个,放入两个箱子,自己设置比例,如何在不知道每个箱子数量比例的情况下,摸到黑球的概率最大?

  • 员工的工资。

三面

  • 选择自己认为最具有挑战性的项目聊一聊。

新氧

    自我介绍。

  • xgboost和gbdt区别。

  • xgboost的并行是指什么并行。

  • 手推lr公式。

  • 介绍auc,auc是如何计算的?

  • 介绍mmoe。

  • 算法题:蓄水池的问题;如何估算圆周率。

  • 卷积神经网络中卷积核的参数是如何更新的?

总结

    上面这些问题是我在整个面试过程中的积累,其实总结一下会发现题目主要都是围绕几个点进行的。实习面试和秋招面试的侧重点会有一些不同,实习面试会更多涉及一下基础知识,秋招面试一般在第一轮会考察比较多的基础知识,后面基本都是发散性思维的题目以及聊项目居多,更加侧重考察面试者的潜力和综合素质。

    秋招因为实习比较忙,面试完没有⻢上记录,所以后期总结的时候可能会漏 掉一些题目,但是大体上就是这些。第一次写总结,可能会有一些点覆盖的不全 面,多多⻅谅。希望能对大家有所帮助。

最后祝大家校招完美收官,都能拿到自己想要的offer,一起加油!欢迎大家来交流~

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页