提前批算法工程师面试之路

4,639 阅读11分钟

  • 作者:宝石
  • 校对&整理:lucifer

vivo(已拿offer)

技术面(30min)

  • 自我介绍
  • 讲实习
  • 讲比赛
  • 问了些大数据的问题
  • spark transform和action的区别
  • 手撕了个归并排序

hr面(30min,技术只有一面)

  • 自我介绍
  • 家庭情况
  • 讲一下实习亮点
  • 有女朋友么
  • 父母同意你去深圳么
  • 讲一下优缺点
  • 常规问题等等

昆仑万维(已拿offer)

一面(1h):

  • 上来自我介绍
  • 讲一下判断回文链表的思路,多方法
  • 用纸写一下反转链表
  • 说说python shuffle怎么实现的,O(N)时间,O(1)空间
  • 看你计算机专业,知道哈夫曼树吧,w2v有用,你能说说么(我就记得分层softmax了,实在是不会)
  • 说说传统机器学习你都了解哪些?推一下LR,说一下原理
  • 知道kmeans吧,说下迭代过程,簇心随机不好,怎么才能更稳定(类kmeans++)
  • 说说深度学习你都知道哪些模型?我说了LSTM RNN,还没等说推荐的模型。。。
  • 讲一下LSTM吧,门都是怎么迭代的
  • 各个激活函数的优缺点,sigmoid relu leaklyrelu tanh,又说了下梯度消失
  • Sigmoid求导是什么?
  • 了解推荐么,说说都知道啥,嘴贱说了个CF
  • 讲一下Item-CF,怎么计算相似度(用交并,也就是Jaccard距离,速度比cos快),用什么优化呢(倒排索引)
  • 讲讲数据倾斜怎么处理吧?(用key+随机前后缀)
  • 聊一下你这个项目里LDA吧?我直接说这个我用过没细研究(他也认同,说数学原理很复杂)
  • 聊一下你这个项目query title统计特征都提了啥,跟他聊了一下,他和我说了一下他的业务理解
  • 反问
  • 做什么的(啥都做,业务很广。。。)
  • 用哪些技术(啥都用,技术栈很广。。。)

昆仑万维二面(就是确认时间 不算面试)

  • 和一面面试官聊的如何
  • 知道他们部门做什么的么
  • 接下来约一下boss面,确认时间
  • 结束

昆仑万维三面(不到二十分钟,压力面):

  • 上来就问比赛,两个比赛都问了,和第一差距在哪
  • 下面问题都是快问快答,都没深问,问题可能记不全了:
  • 说下你实习吧,没说几句。。
  • 你怎么解决样本不均衡的
  • kmeans适用于什么情况
  • python dict怎么用
  • 为什么会产生哈希冲突
  • python set dict list啥场景用
  • 过拟合有哪些解决方法
  • 牛顿法和拟牛顿法
  • 200w不重复单词一口气放内存中,怎么放最省内存(不会)
  • 你除了学习之外还做什么项目
  • 平常刷算法题么,刷多少了
  • 另一个面试官的问题不是压力测试
  • 你希望做什么种类的工作(大概就是这个意思)
  • 没得反问

京东

一面(40min)

很好的年轻女面试官

  • 自我介绍
  • 跟我聊了一下,然后说看你挺直率,我就直接说了,你想找推荐,我们是机器学习+组合优化,偏向运筹学,考虑么,(我说只要不是cvnlp,我全要)
  • 考虑那就开始问些问题吧:
  • 你讲讲你的实习,最亮点,给他分析了一波我采样策略。
  • 你知道gbdt和xgboost吧,给我讲讲(疯狂吹逼xgboost)
  • 你知道最大似然估计和最大后验概率估计么,或者挑一个你熟悉的说下(闭着眼睛推LR,啥伯努利分布,似然函数,疯狂扯)
  • 来做个题吧,1000w个数,数范围[-1000, 1000],写个排序(闭着眼睛桶排)
  • 你能提前来实习么
  • 反问(京东零售部的,技术栈balabala)
  • 复试待安排

二面(30min)

  • 自我介绍
  • 找个比赛说说创新点,你主要做了哪些创新,最后模型为什么用CNN系不用RNN系
  • 由于上面我说我工作有训练词向量了,让我讲word2vec的架构,和一些细节问题
  • 为什么w2v向量在语义空间内有很好的数学性质,比如相加减
  • 数学问题:M个样本有放回采样N次,问某条样本一次没被采中概率
  • 给你均值方差,让你利用正态分布随机生成1000个点(不能用库,说的不是很好)
  • 反问:哪个部门哪个组(零售-技术中台下)
  • 为什么选择京东,京东有什么核心竞争力(疯狂扯,我说我不太看好那些不能落地的,因为jd是电商,整个算法流程系统化工程化一定很健全,也有实际落地,带来实际效益,面试官非常赞同)
  • 最后手里有啥offer啊
  • 没了

hr面(20min)

  • 小姐姐人很好,迟到了四分钟,上来道歉一波
  • 自我介绍
  • 遇到压力大的时候,比如在实习问题解决不了了,你会怎么办
  • 与mentor产生意见分歧要怎么做
  • 未来如果入职京东,对领导有什么要求呢
  • 你平常有什么学习习惯么
  • 你平常会定期做总结么
  • 反问
    • 当时问应届生入职需要做出啥改变,给小姐姐问懵了,我又补充说比如思想啥的需要有啥改变么,她给我讲了五六分钟,说的很直白,没啥官腔,说在学校如何如何,你来公司了又会如何如何
    • 啥时候有结果:她也不知道,她拿到的是乱序的面试名单,可能后面会统一安排通知

一点资讯

一面(不到40min)

  • 自我介绍
  • 讲你的论文,这块一直问,问得特别细节,也问了好久,估计面试官比较清楚这块东西。
  • 讲实习,都怎么做的,遇到啥问题,怎么解决。
  • 讲一下FM,DeepFM这一系列(我从LR,POLY2,FM,FFM,Wide&Deep,DeepFm说了个遍)
  • 做了个算法题,A了
  • 反问:
  • 部门:算法部信息流,和我微博实习的比较类似
  • 技术:做推荐 Java和Scala用的多一些
  • 个人感觉像不招人。。。

大华

一面 - 大数据工程师(数据挖掘)(不到40min)

  • 面试官很有礼貌
  • 自我介绍
  • 着重问了好久实习
  • 着重问了好久比赛
  • linux查指定文件前缀有哪些命令
  • 讲一下hive和hadoop关系
  • hadoop mapreduce 执行流程
  • java 类和对象关系

百度

一面(1h)

  • 自我介绍
  • 介绍实习,然后疯狂挖实习,问的很深
  • 问如果模型区分不开一些样本,要怎么采样?业界有哪些常用采样策略。我真是懵了。。
  • 问了一堆fm,比如表达式,复杂度,改进复杂度的推导
  • 了解深度学习么,从wide&deep出发疯狂问,有的是真不会,要再复习一下
  • 面试官说了个DCN(深度交叉网络),我还以为深度卷积神经网络。。。,结果深度交叉网络的细节也给忘了
  • 我主动给介绍了下阿里的DIN和DIEN,他问这模型可以用在新闻推荐场景么(答不可以,因为新闻类实时性比较强balabala。。。不知道对不对)
  • 如果想让你加入一个用户短期兴趣,比如刚发布的新闻打分低,要怎么改,(我记得在YouTube有个说了关于这个,我说加了个时间维度特征,或者时间衰减)
  • 让我讲BN,为什么提出BN(好久没看nn的东西了,直说了个表象,容易收敛,面试官说为了解决输入分布不一致,bn可以拉回来分布,我把这个忘了)
  • 从LR出发问了我sgd,如何改进,说了个momentum,再怎么改进,我说我了解个FTRL
  • 说一下boosting bagging ,lgb为什么并行化效率高(答单边梯度抽样+直方图计算+互斥特征捆绑)
  • 怎么分析并解过拟合问题的
  • 算法题:三数之和
  • 反问
    • 部门是推荐策略部
    • 主要场景是百度直播和贴吧推荐
    • 用Python和C++,不用Java

触宝

一面(1h)

  • 自我介绍

  • 数据结构基础

    • 数组和链表区别,应用场景
    • 疯狂问排序算法,最优最坏平均复杂度,稳定排序有哪些(好长时间没复习这个了,答得比较差)
    • 一个剪枝题,口述算法过程,分析时空复杂度
    • 说说面向过程、对象、切片编程的区别(我。。。。。。)
  • 机器学习基础

    • 讲一下你了解哪些分类模型
    • 说说SVM
    • 讲讲id3和c4.5
    • 讲讲xgboost和gbdt
    • 讲讲怎么判断kmeans的k,聚类效果的好坏
      • k可以用肘部法则SSE(误差平方和)和轮廓系数
    • 讲讲分类,回归,推荐,搜索的评价指标
    • 讲讲lr 和 fm,fm的后续(ffm)
    • 讲讲你知道的各种损失函数
    • 讲讲l1 l2正则,各自的特点
  • 深度学习基础

    • 说说deepfm,说说fm在nn中还有哪些(FNN,NFM,AFM)
    • 说说类似l1,l2正则化降低模型过拟合,还有什么别的方法
    • 说一下sgd→adam的过程(下面是面试后简单复盘,本身答的一般)
      • sgd
      • momentum 利用了历史信息,意味着参数更新方向不仅由当前的梯度决定,也与此前累积的下降方向有关。这使得参数中那些梯度方向变化不大的维度可以加速更新,并减少梯度方向变化较大的维度上的更新幅度。由此产生了加速收敛和减小震荡的效果。
      • rmsprop 在 Adagrad 中, 问题是学习率逐渐递减至 0,可能导致训练过程提前结束。为了改进这一缺点,可以考虑在计算二阶动量时不累积全部历史梯度,而只关注最近某一时间窗口内的下降梯度。根据此思想有了 RMSprop,采用的指数移动平均公式计算
      • adam 可以认为是 RMSprop 和 Momentum结合并加了偏差校正,因为初始化是0,有一个向初值的偏移(过多的偏向了 0)。因此,可以对一阶和二阶动量做偏置校正 (bias correction),
    • 介绍下梯度消失和梯度爆炸
    • 都有哪些方法解决这两个问题
    • 你了解多目标优化,迁移学习么(不知道)
  • 场景问题

    • 让你加一个兴趣类型特征 你要怎么做
    • 如何处理年龄类特征
    • 你了解相似向量快速计算的方法吗(就记得个啥哈希分桶,没做过)
      • 局部哈希计算,高维相近的点低维也相近,但是高维较远的点低维可能也相近,将embedding应设成1维,若担心把远的也算进来可以多设置几个hash函数等等。
    • 如何判断你模型上线的好坏
    • 给你个nn模型,如何调参,如何修改架构
    • 如何解决冷启动问题 用户侧,物品侧
    • 推荐系统的整体架构
    • 线上推断这部分再具体点怎么实现的
  • 反问

    • 触宝内容推荐(小说)
    • 主要用python
    • 等后续hr通知吧

二面(45min)

面试官人很好,和善可亲

  • 自我介绍
  • 讲下实习做了哪些优化,问了些问题(我都没介绍实习,面试官已经直接点破我每一点实际都在做什么)
  • 讨论了一下抽样,作为一个算法工程师如何将抽样导致的得分分布变化给拉回来?
  • 因为实习模型是FM,详细讲了下FM,讨论了下FM的泛化性
  • 用的什么优化算法,顺便介绍下sgd后续的优化,sgd→momentun→rmsprop→adam,一面问过的,复盘过
  • 实习有没有除错过导致线上有点问题(还真有。。。)
  • hadoop shuffle干啥的,为啥key相同的要放在一起
  • python深拷贝和浅拷贝的区别
  • linux 替换文件中所有的a,我说的awk或者tr
  • 算法题:给两个字符串S和T,计算S的子序列中T出现的次数(dfs A了)
  • 反问:竟然和一面面试官不是一个部门。。。二面面试官给我介绍了算法在他们公司都有哪些应用。。。
  • 总之要有工程师顶层思维,不能局限于模型优化啥的。

大家可以访问我的LeetCode题解仓库:https://github.com/azl397985856/leetcode 。 目前已经35K star啦。

关注公众号力扣加加,努力用清晰直白的语言还原解题思路,并且有大量图解,手把手教你识别套路,高效刷题。