清华硕士眼中的2021届算法岗秋招

文 | 李金泽


一晃接近三个月过去了,秋招也到了尾声,之前一直忙于写毕业论文,现在在这里想总结一些自己求职互联网大厂算法岗的面经和心得,希望帮助后来的学弟学妹们收获自己心仪的offer。

今年的算法岗求职较往年竞争也更加激烈,可以预见以后进大厂的算法岗会变得越来越难,比如美团北斗去年的准入门槛是一篇CCF A,而今年直接提升到了两篇CCF A,难度提高了一倍,加之疫情的影响,我认识的很多手握顶会的本科学弟们以及海外的同学们也加入到了找工作的大军中,因此今年算法岗的竞争堪称史上巅峰,真的是八仙过海,各显神通。不过,找工作不仅需要实力,运气和方法也缺一不可,下面我就谈谈我自己的心路历程。

背景

本人Top2硕士在读,非计算机科班,两篇论文在投,投递岗位的方向主要为推荐/广告/机器学习,在整个秋招的过程中,共参加了8场面试,阿里、百度、京东、美团、拼多多、快手、小红书、平安。最后侥幸获得了7家公司的offer,其中6家ssp,1家sp,薪资待遇40+W-70+W不等。

可能很多人会觉得我应该有多家大厂的实习,但其实我并没有,由于父母的工作受到了疫情的影响,导致我今年从疫情开始到7月初一直都在家里帮父母的忙,从而错过了暑期实习,看到周围的同学都拿到了大厂实习的offer,当时的我只感觉自己的秋招应该和互联网无缘了。每个人的秋招只有一次,如果不奋力一搏,又怎会知道最终的结果。抱着这个念头,我在7月初就赶紧放下了父母的工作,全身心的备战秋招。在这里,我就要讲一讲我的方法了,大部分互联网公司算法岗基本是三轮技术面+一轮HR面,技术面每轮的面试时间大致是一个小时,主要考察coding能力、基础知识和项目/竞赛。由于时间的不足,在这三个方向上我做了时间的分配,我的复习顺序是基础知识->项目/竞赛->coding能力。

1.基础知识

除了极少数公司会在一上来就要求你做一道编程题以外,大部分互联网公司都会在你的自我介绍和论文之后开始进行基础知识的考察,因此它的重要性不言而喻。基础知识的复习有两种途径,一是看书,二是看视频,这取决于你对哪一种途径接受知识的速度更快。我选择的是看书,一是因为视频不一定讲得面面俱到,二是视频质量如果不过关,很有可能某些细节的讲述是错误的。以推荐/广告岗位为例,我主要看如下书籍。

  • 周志华的西瓜书 《机器学习》

  • 李航老师的 《统计机器学习》 第二版

  • DL圣经 《深度学习》,又名花书。

  • 《百面机器学习》

  • 《概率论与数理统计》《线性代数》《凸优化》

  • 推荐/广告:《深度学习推荐系统》《计算广告》 等

如果时间有限,可以直接去看第二本蓝皮书和第三本花书,这两本书一定要从头到尾仔仔细细的过一遍,因为基础知识的考察无外乎就是机器学习或深度学习里的知识。当这两本书过完一遍之后,再看西瓜书的效率就会快很多了。除此之外,第四本书可以留在你将要面试的那几天着重去学习,因为你有了前几本书的知识做铺垫,第四本书就可以当成八股文去背了。前提是一定要在你理解这些知识之后,因为单纯的死记硬背面试官其实很容易就会发现破绽,毕竟现在每个人都会背。对于本科学习过的线代和概率论,建议大家也复习一遍,因为在我的面试过程中就有面试官残忍的提问了,虽然概率不高。对于学有余力的同学,可以去看一些推荐/广告方向的工业界人士出版的书籍,这一块的知识考察往往会穿插在整个面试中,有的面试官会在最后当成开放题进行考察。

其次,基础知识的复习也很容易会遗忘,面对这个问题,我一般会将高频考点的知识写在ipad中,然后每晚会去复习一遍,这样一个月下来,基础知识应该就可以烂熟于心了,这一段的复习就可以告一段落了。

2.项目/竞赛

项目/竞赛一般会在基础知识之后进行考察,这些一定要提前准备好,写在简历里的项目一定是要自己亲自做过的,因为一旦面试官问到了项目中某一个部分的代码是如何实现而你又回答不上来的话,在他心里对你的印象就会非常减分,并且会怀疑候选人的诚信问题。所以,我的方法是将之前做过的项目重新再做一遍,包括代码部分。这一块看似会花费大量时间,实则并没有那么长。具体来说,我会先将做过的项目重新梳理一遍,画出整个项目的流程图,然后再逐行复习自己的代码。等代码复习完之后,再删掉重新写一遍,这一步骤因人而异,取决于你的记忆能力。

竞赛方面,常用的竞赛模型如GBDT、XGBoost、LightGBM、FFM、DeepFFM等一定要了解。最后,如果你的论文或项目与面试官所做的方向非常的match,你通过这一面的概率也将会大很多。

3.coding能力

代码能力是计算机专业学生的基础能力,求职技术方向的同学,无论是测试、开发或算法,互联网公司在这一块的考察都是重中之重。一般而言,大厂在每一轮的技术面中,至少会出一道编程题,多的会直接上三道编程题让你做(我就遇到了...),难度主要集中在easy和medium,少数丧心病狂(褒义词)的面试官会出hard题。而考察范围已是圈内公开的秘密,就在《剑指offer》和Leetcode上,因此刷题成为了大家求职路上必须要迈过的一道坎,这个坎没有人可以帮到你,只有靠你自己。我在硕士阶段也没有刻意的去刷过题,只有本科时刷过洛谷,下面是我Leetcode账号上提交次数的统计:

我是从8月初开始集中在Leetcode上刷题,一直刷到了10月份,《剑指offer》也是在Leetcode上刷的,平均每个月刷题数是300。可能很多人都觉得300道根本不可能完成,确实,如果你按照Leecode官方的题号顺序去刷根本不可能,但如果是按照题目类型(标签)去刷,每天刷10道,一个月也就完成了300道。一开始可能会很慢,但基本上每个类型的题目当你刷够20道以后,都可以总结出该类题目的代码模板,所以前期会慢一点,越往后则会发现刷题速度越来越快,可以理解为先苦后甜。而对于刷题的方法,可以分为三轮进行:

a.第一轮:优先效率。当一道题花了十五分钟去思考也没有思路时,则果断选择直接看答案。

b.第二轮:培养思路。你需要对以前做过的每一道题都要有一个大致的印象,并且知道解题的方法是什么。这一轮其实最难度过,因为人对事物的遗忘是有规律的,而我们需要想办法克服这个规律。在这里推荐一下我的方法。我在刷完每一道题之后,会在ipad上注明题号以及题目名称,然后将该题的解题思路写下来,最后还会重写一遍代码。这样,以天和周为单位不断地复习之前的题目,就可以做到以后遇见它们时可以迅速反映出是用什么方法解决这道题的。

c.第三轮:完善思路。当我们顺利度过了第二轮之后,第三轮则需要学习每道题目的多种解法,比如TopK问题可以用快排变形/堆/二叉查找树/计数排序四种方法解决。在我的面试过程中,有些面试官会在你AC一道题后还会要求写出最优解,这往往决定你的面评是否能达到较高级别,也就是能否拿到sp以上级别的offer,并且一道题如果学会了多种解法,也会让你加深对这道题的理解。因此,我建议大家要学会用多种解法解决一道题,并且要培养出能快速AC的能力。

PS:在这里,我要推荐一下自己免费加入的Leetcode每日打卡和竞赛群,圈内俗称残酷群。国服前一百位的选手在该群都有好几十人。规则很简单,每日完成题主发布的Leetcode题号以及每周在美服上打Leetcode周赛,但周赛排名靠后的小伙伴会要求发红包,这个机制也是为了督促大家快速成长。所以秋招不是刷题之路的终点,而仅仅只是开始。

面试投递

在完成了基础知识->项目/竞赛->coding能力的复习后,时间节点也移动到了八月中下旬,这时很多公司的秋招正式批即将开始。由于我错过了提前批的投递,而提前批往往都没有笔试,所以正式批只能先参加笔试再进行面试。经过血与泪的磨练后,在这里给大家的建议是,有提前批投提前批,无提前批投特殊计划,重要的事情说三百遍。原因有两点:1、提前批的竞争压力小,投的人少,先拿到offer的概率很大;2、正式批的笔试题一般有一定难度,且刷人主要看AC题目的数量,比较残酷。 而且据我身边同学的例子,有很多人笔试完之后公司就杳无音信了,要问就是在筛选,实际上你已经妥妥变成了备胎(有恋爱经验的人都懂),然后在公司的池子里欢快的游动。除此之外,若感觉自己还没有准备好,则可以等待几天再投递,但千万不要错过提前批的截止时间。

所以提前批的面试能把握的还是尽量要把握,哪怕你觉得自己只准备了60%,但万一成功了呢? 因为面试通过这个事情,实力与运气都需要, 在你的实力和别人差距不大的情况下,实力不够,也可以运气来凑不是吗。

部分面经

以下面经均为各个公司的正式批,由于时间有点久远,有些考点已经不记得了。

京东

一面:

1、介绍论文、项目,很详细。包括每一个环节是怎么实现的,损失函数是如何设计的,模型是如何训练的等等。

2、代码题:Leetcode 713:乘积小于k的子数组;Leetcode 297:二叉树的序列化和反序列化。

3、GBDT、XGBoost、LigthGBM的区别与联系。

4、送入LR前,如何处理数据(特征工程)。

二面:

1、介绍论文、项目,很详细。

2、Transformer中的Scaled Dot-Product Attention为什么要缩放(两点)。

3、Transformer中的Position Embedding是怎么实现的?为什么?

4、bagging和boosting与偏差和方差的关系以及原因。

5、如何解决数据不平衡的问题。

6、假设检验的两类错误。

7、MSE、MAE与贝叶斯估计的区别。

8、为什么快排比堆排快?

9、口述算法题:对一个商品的价格、数量、购买人数进行分次排序,不改变之前的排序结果。

三面:

由于一、二面表现好,三面直接过了。

美团:

一面:

1、介绍论文和项目,很详细。

2、代码题:面试题17.24:最大子矩阵;Leetcode 695:岛屿的最大面积。

3、介绍一下DSSM。

4、开放题:关于双塔模型的应用。

二面:

1、介绍论文和项目,以及论文中的涉及到的baseline模型。

2、代码题:面试题01.08:零矩阵,写出两种解法。

3、XGBoost 如果损失函数没有二阶导,该怎么办。

4、聊天+反问。

三面:

1、介绍论文和项目,非常详细。

2、介绍实习,说说实习印象中最深的点。

3、开放题:部门中的某个应用场景你会怎么解决。

4、职业规划,个人希望做的方向。

拼多多:

一面:

1、介绍论文和项目。

2、AUC是如何实现的,它对均匀正负样本采样是否敏感,并用代码实现。

3、BERT与ALBERT的区别。

4、介绍一下DKN模型。

二面:

1、介绍论文和项目。

2、过拟合如何解决+具体方法追问。

3、代码题:Leetcode 42:接雨水。

4、知识图谱表示学习有哪些模型。

5、聊天+反问。

阿里:

一面:

1、介绍论文和项目。

2、代码题:Leetcode 382:链表随机节点,并口述蓄水池采样算法的推导。

3、概率题:将一根木棍分成三段,求这三段构成三角形的概率。

4、开放题:一个超级大文件,每一行有一个 ip 地址,内存有限,如何找出其中重复次数最多的 ip 地址。

二面:

1、介绍论文和项目。

2、论文后续可能提升的点以及想法探讨。

3、说一说Graph Embedding和GNN的区别。

4、代码题:Leetcode 23:合并K个升序链表。

5、聊天+反问。

三面:

1、介绍论文和项目。

2、介绍一下最能体现自己工程能力的项目。

3、如何提高推荐线上的性能。

4、强化学习在推荐中的应用及探讨。

总结

最后,我想谈一谈自己对于面试的看法。无论是竞赛、论文还是大厂实习,这些都是为了方便你拿到面试的资格,哪怕你三者都没有,但只要公司愿意向你发起面试,你都应该好好努力。而最终是否能顺利拿到offer以及offer的等级,主要还是取决于你的面评,一个非常好的面评是帮助你拿下大厂sp以上offer至关重要的因素,因此切忌面试紧张,如果你紧张,可以心中默念欧米豆腐。

祝愿大家都能拿到自己心仪的offer!

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

有顶会审稿人、大厂研究员、知乎大V和妹纸

等你来撩哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479675.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 124. 二叉树中的最大路径和(DFS)

文章目录1. 题目信息2. 解题1. 题目信息 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1:输入: [1,2,3]1/ \2 …

Python的reshape的用法:reshape(1,-1)

Python的reshape的用法:reshape(1,-1)https://blog.csdn.net/qq_29831163/article/details/90112000 目录 numpy中reshape函数的三种常见相关用法 reshape(1,-1)转化成1行: reshape(2,-1)转换成两行: reshape(-1,1)转换成1列: …

阿里P8架构师谈:流量高峰时期的性能瓶颈有哪些、以及如何来解决

在高并发大量用户的场景,系统一般会面临如下三个挑战: 1. 日益增长的用户数量 2. 日渐复杂的业务 3. 急剧膨胀的数据 这些挑战对于性能优化而言表现为:在保持和降低系统TP95响应时间(指的是将一段时间内的请求响应时间从低到高…

详解凸优化、图神经网络、强化学习、贝叶斯方法等四大主题

加入AI行业拿到高薪仅仅是职业生涯的开始。现阶段AI人才结构在不断升级,对AI人才的要求也不断升高,如果对自己没有很高的要求,其实很容易被快速发展的趋势所淘汰。为了迎合时代的需求,我们去年推出了《机器学习高端训练营》班。这…

可扩展的TextView,ExpandableTextView与Scroller类的使用

转载时请注明出处,尊重他人的劳动成果,谢谢。 废话不多说,先上图演示下成果(图有些丑,别见怪): 最近一直在研究Scroller类的使用方法,看了很多遍别人的例子总是感觉不得要领,最后还是自己实践…

消息中间件系列(三):主流的消息队列中间件有哪些?

消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。 当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka&#…

谷歌40人发表59页长文:为何真实场景中ML模型表现不好?

文 | 白鹡鸰编 | 夕小瑶大家好哇,我是上周那篇《NLP太卷了,我去研究蛋白质了》的漫画作者白鹡鸰~前不久,在卖萌屋NLP群里默默潜水的白鹡鸰被群友提到的一篇Google几天前放出的59页超长论文炸得飞了起来。来,大家来感受一下气势浩大…

圆形进度条以及百分率指示器 Scroller类的练习

转载时请注明出处,尊重他人的劳动成果,谢谢。 先附上效果图: 这个控件是动态加载到75%的,主要我忘了怎么做动态图,就先放一个静态图在这里表示表示。旁边这个没有没有喜欢的?有想知道的 我可以告诉答案。…

阿里P8架构师谈:从单体架构、到SOA、再到微服务的架构设计详解

本文涉及的内容以及知识点如下: 1、单体架构 2、单体架构的拆分 3、SOA与微服务的区别 4、微服务的优缺点 5、微服务的消息 6、服务集成 7、数据的去中心化 单体架构 Web应用程序发展的早期,大部分web工程是将所有的功能模块(service…

我拿乐谱训了个语言模型!

文 | 花椒最近在刷EMNLP论文的时候发现一篇非常有趣的论文《Learning Music Helps You Read: Using Transfer to Study Linguistic Structure in Language Models》,来自斯坦福大学NLP组。论文有趣的发现是让语言模型先在乐谱上进行训练,再在自然语言上训…

LeetCode 146. LRU缓存机制(哈希链表)

文章目录1. 题目信息2. 解题2.1 手动实现list2.2 使用内置list1. 题目信息 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。 获取数据 get(key) - 如果密钥 (key) 存在于缓…

微服务系列:服务注册与发现的实现原理、及实现优劣势比较

服务注册与发现的来源 首先,服务注册与发现是来自于微服务架构的产物。 在传统的服务架构中,服务的规模处于运维人员的可控范围内。当部署服务的多个节点时,一般使用静态配置的方式实现服务信息的设定。而在微服务应用中,服务实例…

EMNLP 2020论文分析:知识图谱增强语言模型或是未来的发展趋势!

文 | Michael Galkin源 | AI科技评论在EMNLP 2020的论文投递中,知识图谱的研究热度不减,并成为继续推动NLP发展的重要动力之一。在EMNLP 2020中,知识图谱领域有了哪些最新研究进展呢?作者从中选出了30篇文章,对未来2-3…

如何通过反射来解决AlertDialog标题由于字数过多显示不全的问题

转载前请标明出处:http://blog.csdn.net/sahadev_ 先上一下示例图: 这是默认状态下:这是通过反射后修改的结果: 在解决这个问题之前首先需要了解一下AlertDialog的基本构造,所以先从源码看起: 想要知道为什么显示不…

LeetCode 292. Nim 游戏

文章目录1. 题目信息2. 解题1. 题目信息 你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人,每一步都是最优解。 编写一个函数…

配送A/B评估体系建设实践

2019年5月6日,美团点评正式推出新品牌“美团配送”,发布了美团配送新愿景:“每天完成一亿次值得信赖的配送服务,成为不可或缺的生活基础设施。”现在,美团配送已经服务于全国400多万商家和4亿多用户,覆盖28…

ListView原理简单介绍(着重介绍getView被调用的一系列过程)

今天出去面试,被面试官问到一个问题,说是如果使用 LayoutInflate.inflate(int resource, ViewGroup root, boolean attachToRoot);这个方法与AbsListView的实现类结合使用的话,会出现什么问题,先看简单的使用过程: Ove…

一人之力,刷爆三路榜单!信息抽取竞赛夺冠经验分享

文 | JayLou娄杰在现如今的NLP竞赛中,信息抽取(IE)任务已占据半壁江山。来,让我们看看今年的一些IE竞赛都有啥:看到如此众多的IE竞赛,心动的JayJay抽空参加了CHIP2020(中国健康信息处理大会&…

pkuseg:一个多领域中文分词工具包

pkuseg简单易用,支持细分领域分词,有效提升了分词准确度。 目录 主要亮点编译和安装各类分词工具包的性能对比使用方式相关论文作者常见问题及解答主要亮点 pkuseg具有如下几个特点: 多领域分词。不同于以往的通用中文分词工具,此…

积木Sketch Plugin:设计同学的贴心搭档

| A consistent experience is a better experience.——Mark Eberman | 一致的体验是更好的体验。——Mark Eberman 《摘自设计师的16句名言》 背景 1.UI一致性项目 积木(Tangram)Sketch插件源于美团外卖UI的一致性项目,该项目自2019年5月份…