一晃接近三个月过去了,秋招也到了尾声,之前一直忙于写毕业论文,现在在这里想总结一些自己求职互联网大厂算法岗的面经和心得,希望帮助后来的学弟学妹们收获自己心仪的offer。
今年的算法岗求职较往年竞争也更加激烈,可以预见以后进大厂的算法岗会变得越来越难,难度提高了一倍,加之疫情的影响,我认识的很多手握顶会的本科学弟们以及海外的同学们也加入到了找工作的大军中,因此今年算法岗的竞争堪称史上巅峰,真的是八仙过海,各显神通。不过,找工作不仅需要实力,运气和方法也缺一不可,下面我就谈谈我自己的心路历程。

背景

本人Top2硕士在读,计算机科班,在整个秋招的过程中参加了8场面试,阿里、百度、京东、美团、拼多多、快手、小红书、平安。最后侥幸获得了7家公司的offer,其中6家ssp,1家sp,薪资待遇 40+W-70+W不等。
可能很多人会觉得我应该有多家大厂的实习,但其实我并没有,由于父母的工作受到了疫情的影响,导致我今年从疫情开始到7月初一直都在家里帮父母的忙,看到周围的同学都拿到了大厂实习的offer,当时的我只感觉自己的秋招应该和互联网无缘了。每个人的秋招只有一次,如果不奋力一搏,又怎会知道最终的结果。抱着这个念头,我在7月初就赶紧放下了父母的工作,全身心的备战秋招。在这里,我就要讲一讲我的方法了,大部分互联网公司算法岗基本是三轮技术面+一轮HR面,技术面每轮的面试时间大致是一个小时,主要考察coding能力、基础知识和项目。由于时间的不足,我就靠Leetcode刷题笔记,Java核心知识手册和面试题等知识来弥补我的不足,现在就先来看一下我的面试经历~

完整面经

以下面经均为各个公司的正式批。 

京东

一面:

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、强化学习在推荐中的应用及探讨。

快手

一面:

1、详细介绍论文和项目。
2、两个均匀分布相加是什么分布。
3、代码题:Leetcode377:组合总和IV;Leetcode315:计算右侧小于当前元素的个数。

二面:

1、介绍论文和项目,很细。
2、激活函数有哪些?ReLU是为了解决什么问题设计的?
3、决策树是怎么样进行划分的,决策树的损失函数。
4、朴素贝叶斯公式是怎么得到的,推导一下。
5、FM如何降低时间复杂度,以及与FFM的区别?
6、代码题:Leetcode394:字符串解码。

三面:

1、自我介绍,项目和论文。
2、工业界常用的推荐系统模型有哪些?
3、推荐系统中特征的Embedding的表示方法有哪些?
4、解释一下你的模型为什么会有效果,模型的可解释性?
5、聊天+反问。

小红书

一面:

1、介绍论文和项目。
2、代码题:Leetcode435:无重叠区间。
3、介绍Adaboost,Adaboost的权值和RF比较。
4、线性回归为什么用均方差。
5、介绍KMeans,K值的选择和初始点。

二面:

1、介绍论文和项目,很细。
2、GCN公式推导一遍。
3、GBDT和XGboost区别(具体点),为什么GBDT用负梯度当做残差,详述Xgboost原理及其公式。
4、牛顿法原理及其公式,与拟牛顿法的区别。
5、代码题:Leetcode477:汉明距离总和。

接下来就是我在备战这次面试中帮助我最大复习笔记(技术点的总结+面试宝典,内容有很多,我在这边就简单的给大家展示一下)

Leetcode刷题笔记

如果您需要获取到这份文档进行学习的话,可以关注我转发文章之后扫描小编的二维码即可免费获取到

数据结构系列

高频面试系列

 

Java核心笔记

这份Java狠心笔记文档包含了JVM、JAVA集合、JAVA多线程并发、JAVA基础、Spring原理、微服务、Netty与RPC、网络、日志、Kafka、RabbitMQ、Hbase、MongoDB、Cassandra、设计模式、负载均衡、数据库、一致性算法、JAVA算法、数据结构、加密算法、分布式缓存、Hadoop、Spark、Storm、YARN、机器学习、云计算。

 

 

JVM

 

JAVA基础

 

JAVA集合

 

Spring Cloud Alibaba全面解析

总结

首先,每个人只有一次秋招的机会,我们应该拿出当年高考时候的状态,哪怕只有一丝机会,我们都要拼尽自己的全力,你永远不知道自己的极限在哪里,所以即使还没有拿到心仪的offer也请不要放弃​,我们也可以在来年的春招奋力一搏,还是那句话,千万不要放弃,因为你很有可能放弃的是本该属于自己的机会!

最后,想要获取上方我为这次秋招所整理的复习资料只需要转发+关注后扫描小编二维码即可免费获取!!