经过4个月的投递,面试。。。,自己第二份工作基本确定,在这4个月里,自己收获颇多,不仅仅是工作上,更是自己的心得体会和对工作学习的态度,趁着自己对面试过程还有些记忆,写一下总结,以让以后的自己自勉。
面试前准备
面试之前自己主要准备了三个内容:简历,项目和算法知识。下面我一一介绍自己的准备情况。
简历
简历是新工作的敲门砖,只有你的简历足够优秀,吸引人,才能有面试的机会,能够进一步表现自己。所以对于自己简历的充分准备是成功的第一步。基本信息,教育经历,工作经历,这些不用说,要保证信息的准确性,联系方式最好能保持24小时畅通,我就吃过不少亏。最考验人的应该是自己的项目经历。那些该写?那些不该写?写到什么程度等等。下面我介绍一下我的情况。
我面试的是推荐算法工程师。虽然负责过几个项目,但也有前后次序,一般按照时间线,从近到远,重要程度从核心一般排序,到也方便你在自我介绍时能逻辑清晰,面试官也能跟上你的思路。
还有就是项目内容,一般是(1)要解决什么问题,(2)解决思路和创新点,(3)带来多大收益,这3点作为项目介绍内容,也是项目的一个完整过程,从发现问题,到解决问题,最终带来收益,这样才能看到你的工作的价值。
在这里我以介绍自己正在做的rank模型为例,我们现在面临的问题是对用户行为数据的应用,解决方法是使用attention模型,最终得到的收益是提高了模型的auc和线上点击率。当然在简历上你可以大致写一下项目内容,但也要准备一些细节和考虑面试官针对的内容要问到的问题。
由于我在工作中也做过一些CV算法的工作,所以这些不是针对求职岗位的工作就放到了最后,但也要看你的简历篇幅,一般2页内容也就够了。自己2年工作5~8个项目感觉还是合适的。
专业技能的话,看个人掌握程度,但一旦写上去就要保证被问到是能够顺利答上来,如果不太熟悉反倒不如不写。
如果有发表的论文和专利也可以加上,都是加分项。
当然,自己写完后,最后找同学朋友检查一下,提一些建议,这里要感谢我这些靠谱的兄弟们的帮助,让我的简历增色不少。
项目
准备项目的话,只要是你简历提到的都要好好准备,因为你不知道面试官要问那个。从立项原因,要解决的问题,你们通过什么调研方式,有哪些解决方式,如何在自己的场景中应用,达到什么效果收益,目前有哪些缺点,以后的改进方向是什么等等,这些是你自我介绍和面试中常问到的。
还有项目细节就需要你重温一遍代码,了解一下,比如对数据如何处理,是分桶、编码、加权还是Embedding操作,你的训练数据是什么?正负样本的定义,有多少特征?模型更新频率,线上模型是怎么用的?以及你们设计模型的出发点是什么,带来哪些收益等等一条完整的链条。
算法
由于应聘的是推荐算法岗位,所以重点准备推荐算法和深度学习相关方面的知识。
推荐算法总结:
FM系列内容,包括FM,deepFM,FFM,DFM等,
协同过滤:基于用户协同过滤,基于项目协同过滤,基于模型协同过滤
推荐算法评价标准:离线auc(包括auc原理,实现,以及改进指标GAUC),线上指标ctr,pv,uv,vv等
以前调研过word2vec和图卷积GCN,大致知道原理和算法结构,具体应用落地不太清楚。 还有常用GBDT和逻辑回归
自我介绍
面试前一定要准备一个2~3分钟的自我介绍,这个很大概率决定了面试官要问你什么,介绍内容主要包括目前职位,负责内容,负责项目,项目收益,最好能提前预演一下。
算法问题
推荐算法
1. 手写FM公式,FM的计算复杂度是多少?
2. wide&deep和deepFM有什么不同?
3. FM和MF之间有什么联系或相似之处?
4 .FM和NFM有什么不同?
5. deepFM的DNN部分有什么特点?
6. 解释AUC原理,以及GAUC原理?
深度学习问题
1. 如何解决过拟合问题?
2. dropout原理,在预测过程dropout如何使用?
3. BN在训练和预测中是如何计算的?
4. 交叉熵损失函数的特点?
5. 了解哪些优化器,各有什么特点?
6. minbatch的作用,如何设置batch大小?
7. word2vce有几种方式,是如何实现负采样的?
8. 如何解决样本不均衡问题,解释focal loss原理?
attention系列问题
1 简单介绍attention原理?
2.self-attention中除以的作用是什么?
3. 设输入序列是10,self-attention一共需要多少参数?
4. Transformer为何使用多头注意机制?
5. self-attention计算复杂度是多少?如果去掉softmax,计算复杂度变为多少?
项目问题
1.个性化PUSH一天有几次下发?
2. 个性化PUSH下发用户量是多少?
3. 个性化PUSH一天的物料是多少?来自那些平台?更新频率?
4. 个性化PUSH点击量是多少?点击率是多少?
5. 个性化PUSH推荐和FEED推荐有什么不同?
6. 个性化PUSH的PV,UV是多少?
7. 个性化PUSH的KPI是什么?如何计算?
8. 模型数据量是多少?增量更新还是全量更新?更新频率,正负样本比例?如何选择负样本?
9. 项目原理是什么,有什么改进方向?
编程汇总
下面我列一下在面试过程中遇到的编程题以及我自己找的相关衍生形式,希望以后会有帮助。
头条
1. 给一个二叉树,输出该二叉树的左视图
2. 解压字符串:输入字符串如(AA)2BC3,输出为AAAABCCC
3.
腾讯
1. 二叉树,输出它的层数(递归,非递归)
2. 10亿个数,找到最大的1000个数字,内存受到限制
3. 10亿int型数,机器只有1G内存,统计只出现一次的数
4. 一个定一个有序数据,找到目标数字在数组的位置(左右边界)
阿里
1. 有一个随机数生成器,输出0和1的概率各是0.5,使用该生成器组成一个输出0~5的随机数生成器,并且每个数字的概率相同。
2. 合并两个排好序的数组,其中数组A从小大排列,数组B从大到小排列,合并后的数组从小到大排列且没有重复元素。
3. 给定一个整数数组 nums
,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
快手
1. 行李箱四位密码锁,每一位都可以上转和下转。 给定:初始状态,解锁状态,有一些状态是不能触碰的1234,6666,最短几步可以开锁。
2. 一个定一个有序数据,找到目标数字在数组的位置(左右边界)
3. 找到数组中的最大K个值
4. 找到一个字符串中最长的回文子串。
5. 汉诺塔问题
百度
1. 有一个随机数生成器,输出0和1的概率各是0.5,使用该生成器组成一个输出0~2的随机数生成器,并且每个数字的概率相同。
2. 查找一个字符串最长的回文子串
京东
1. 实现单链表反转(递归和非递归方式)
2. 实现快排
美团
1. 股票买卖系列问题
2. 二维直方图盛水问题
拼多多
1. 实现一个简单MLP网络
心得体会
1. 编程题有时间就要刷,现在基本上每次面试都要考察编程问题;
2. 对于自己简历上的项目要十分熟悉,不仅仅是模型结构,数据形式,特征的选择,模型这样设计的目的,以及模型中涉及的深度学习知识,比如从损失函数谈到交叉熵的特点,从attention问到一系列attention的问题,需要准备好;
3. 对于一些业务数据如用户量,点击量,下发量这些以前没有过多关注,但在面试过程中也会问到,考察对业务熟悉程度;
4. 面试时候要心态端正,也不要太实在,问你缺点你就什么都说,以积极的态度对待岗位,给面试官一种很期望这个岗位的态度,三面之前要调研好岗位情况,职级,薪资待遇,工作内容等等,不要给人一种小白的感觉;
5. 感觉现场面试效果最好,所以能到现场还是要赶到现场。