首先说一下本人背景吧:本硕双非,找算法方向的工作,由于我刚读研的时候就决定走算法方向(实验室不搞算法深度学习啥的),因此早早给自己订制了学习计划。
我的计划大概是:先打好算法基础+努力竞赛做出成绩(本人可能偏向工程,因此科研能力不是很好,没有拿得出手的论文)->利用竞赛找日常实习(不找暑期实习是因为不想耽误秋招这一黄金时期)->利用竞赛和较长时间的日常实习来参加秋招,大概就是这样一个过程,仅供参考。
心理变化:本来我19年一整年做的竞赛都偏向于nlp,但实际机缘巧合找到的实习是推荐相关的,而且自己也了解,如果做cv/nlp没有核心竞争力(论文),还不如做偏向落地工程的推荐/搜索,因此转而边实习边学习推荐算法方向的专业知识。
说一下秋招经历吧:我从五月中下旬开始复习准备秋招,因为当时知道vivo六月早期就开提前批了,六七八月基本上就是各种疯狂投简历+复习,到九月份的时候复习节奏已经慢下来了,基本上就是查缺补漏,复盘面经(有些问题值得深入了解),投了几十家的简历,九月后也就没开始投,专心准备给面试的公司。
说一下刷题经历吧:本人从本科开始基于兴趣没事会做一些算法题,lc做了不少,来牛客之后,牛客也有一个oj题库也很不错,我也针对性的刷了很多题,大家也可以去试试:https://www.nowcoder.com/ta/job-code-high
一段不算恰饭的恰饭话:
为啥说不算恰饭:相信牛客有很多小伙伴都是跨考,对面试笔试出的算法题很是头疼,经过我片面的了解,如果面试你和你面试的岗位很match的时候,如果出了算法题,大部门面试官都不会为难你的,会出一些比较基础和常见的题,但是这种题我个人是极力不推荐背诵的,因为你实际还是不理解,题目稍微复杂变化一下就不能变通了,因此希望大家可以打好算法这一基础,而左神的课程应该是牛客上很nb的算法课程了,有兴趣的小伙伴可以了解一下。
为啥说是恰饭:因为大家可以通过我给的链接购买左神的课程,大家通过我的链接点就有一个不小数目的优惠(好像可以便宜好多,大家可以自己对比一下),而我也拿了一个分红,我觉得没啥遮遮掩掩的,直说就好。我参考了所有课程大纲,建议大家选择基础入门和提升课,只要把基础打好后面融会贯通多加练习就可以应付大部分面试题。
下面是链接,有兴趣的小伙伴可以点进去看看,有试听课程可以实际体验一下是否适合自己,不感兴趣的小伙伴就权当我说一乐儿~
我很感谢牛客这个平台,信息资源比较丰富,给了我很大的帮助,懒人必备。
下面是我整理的通过了的面经(按意向顺序排列,那些挂了的,刷kpi的也没啥参考价值了)
提前强调一下:本人并不是所谓的集邮爱好者,拿到的都是自己努力奋斗得到的,而且拿到的基本都是同一水平线上的公司,没有拿到大厂去集邮小厂的陋习,我也不太需要什么选offer的意见,因为我觉得这是自己的事情,我自己有决断。
再偷偷说一下:认识我的好兄弟们叫我宝石就好,不要带任何后缀!!!
vivo广告推荐算法工程师
一面技术面(30min)
- 自我介绍
- 讲实习,问了几个小问题
- 讲比赛,不知道面试官听懂没
- 问了些大数据的问题
- spark transform和action的区别
- 手撕了个归并排序
hr面(30min,只有一面技术。。。)
- 自我介绍
- 家庭情况
- 讲一下实习亮点
- 有女朋友么
- 父母同意你去深圳么
- 讲一下优缺点
- 能提前实习么
昆仑万维推荐算法工程师,个人觉得这个公司并不是太靠谱,牛客注册的也只有hr一个用户,因此早早拒绝
一面(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不重复单词一口气放内存中,怎么放最省内存(不会)
- 你除了学习之外还做什么项目
- 平常刷算法题么,刷多少了
- 另一个面试官的问题不是压力测试
- 你希望做什么种类的工作(大概就是这个意思)
- 没得反问
贝壳机器学习/数据挖掘工程师
一面(35min,感觉面试官有点紧张?)
- 自我介绍
- 详细讲一下实习内容以及创新部分
- 问了些实习的问题
- 讲fm
- 还了解啥其他排序模型,都讲一下,ffm,deep系列
- xgboost为啥用二阶泰勒展开
- 问过拟合的解决方案
- 你是怎么做特征工程的
- 讲一下hadoop shuffle做啥的
- 如何处理数据不均衡的
- 感觉问的很宽泛,没反问,也没深入问,谢谢面试,没了。
二面(35min,小哥人很好,不会的问题还给我按要点一条条讲)
- 自我介绍
- 讲实习
- gbdt,xgboost,lightgbm
- 推荐和搜索的区别和联系,问了好一会
- 推荐系统除了点击率指标还有啥评判体系
- 如何解决ctr预估因为采样漂移的问题(复盘)
- 修正: $q = \frac{p}{p + \frac{1 - p}{w}}$ 其中,q是修正后概率,w为负采样频率
- 在sigmoid函数做调整:$q = \frac{1}{1 + e^{(-logit + lnw)}}$,w为负采样频率,加上个lnw偏移量达到矫正的目的
- 调整样本权重
- 怎么解决冷启动问题的
- spark了解么,说下和hadoop区别,为啥用spark(我说了一部分,面试官从头到尾列了几点)
- cnn?感受野?为啥用多个小卷积核代替大的(我 emm,面试官给我讲的)
- 双向lstm优势
- awk提端口
- git merge rebase 区别(我只简单说了git,大多数用IDEA提交的也,面试官没为难我)
- 用python和java的版本
- 多媒体处理了解么,处理多媒体音视频用CNN系还是RNN系(我说CNN。。)
- 反问
hr面(25min,人很好的小姐姐)
- 自我介绍
- 实习这么久咋不转正,这块说了好一会
- 了解贝壳么
- 父母同意来么
- 近几个月的最大困难
- 近几个月的规划安排
- 最有成就感的竞赛,聊了一会
- 反问
- 新人培养
- 忘记问啥时候出结果了,不过看帖子说一周后要么oc要么感谢信。
触宝data scientist(说白了就是算法)
一面 算法(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了)
- 反问:竟然和一面面试官不是一个部门。。。二面面试官给我介绍了算法在他们公司都有哪些应用。。。
- 总之要有工程师顶层思维,不能局限于模型优化啥的。
三面(vp,电话)
- 问的都是一些比较宽泛的问题,比如实习怎么衡量优化的效果,对触宝的认识,对未来公司的期待,最近的挑战等等。
四面(hr 半小时左右)
- 聊实习,从实习学到了什么
- 为什么不考虑去其他公司继续实习
- 期望的工作是什么样的
- 对未来城市的要求
- 周围人怎么看你
- 手里有什么offer
- bat等一线互联网投了么
- 对触宝的了解和期待
- 期望薪资(一直想问我offer的薪资是多少,emm)
- 等等常规问题
网易互娱数据挖掘研究员
一面(1h+)
- 自我介绍
- 详细讲实习,很细,面试官没听懂的都又重新问我
- lr和xgboost
- 双塔和deepfm
- 都玩什么游戏(不怎么玩网易游戏,玩NS主机,最近一直在玩Tetris99,火焰纹章,马造2等)
- 设计一个阴阳师开学季礼包push(从群体,礼包内容,打折力度三方面说)
- 算法:生成所有合法括号组合
二面(45min,两个面试官)
- 自我介绍
- 挑一个你想讲的项目/实习
- 问了上面项目好多细节问题,问了好久(涉及到特征工程,机器学习/深度学习,线下验证等)
- 都玩什么游戏(不怎么玩网易游戏,玩NS主机,最近一直在玩Tetris99,火焰纹章,马造2等)
- 设计一个日常礼包push,优化指标是什么?如何衡量效果
- 道具打折的意义
- 没有算法题
顺丰,同城科技的人工智能(hc=2,emm),hr口头offer(稳不稳不太清楚)
一面(45min,女面试官,问的比较松, emm)
- 自我介绍
- 挑一个你想讲的项目或者实习具体讲(讲完了也基本没问,全是自己说)
- 树模型那一系列
- 如何做数据预处理
- 了解哪些激活函数,把他们都画出来
- 如何解决过拟合和欠拟合
- 等等,问完我说完就拉到了,没继续问下去都
- 算法题:旋转数组查找,如果允许重复元素呢(重复元素还不如直接遍历呢,😓)
- 反问
二面(45min,面试官挺好的,不会的都安慰我说应届生没接触过正常😂)
- 面试时候延迟有点高,好像面试官网络不是很好
- 自我介绍
- 具体讲实习,问了挺多问题
- 讲FM(这块说了一会,有个问题,关于隐向量有什么优势,没说全)
- 讲Map-Reduce,具体细节不是很了解(开始安慰我)
- 你了解哪些归一化方式(没说够)
- 零均值归一化是线性的么
- 如何做数据预处理的
- 连续特征分桶都有哪些方法(没说够)
- 半个小时了,说给15分钟做个算法题(字符串全排列)
- 由于上面题3分钟,没够45分钟,写完又问了俩问题
- 问个加分题:你是如何理解机器学习的,比如使用场景,有监督无监督等等。
- 时间还没够,又问了个FFM和FM的区别
- 估计一面面试官面晕了,说我是做cv的😂,听面试官意思后面还有好多人
- 反问
三面(35min,AI负责人)
- 自我介绍
- 讲实习中的主要贡献,让你作为负责人你要怎么构建整个流程
- 讲项目一,最大贡献是什么,有没有借鉴业界开源技术,现在让你去改进结果有什么方法
- 讲项目二,给三分钟思考时间,前两个讲了很多细节,逻辑性不是很好,这次要讲的有逻辑有条理。
- 你觉得到目前为止面试过程还有什么自身亮点没有说
- 没有算法题
- 反问:请介绍算法在顺丰领域具体的应用场景(说的挺多的)
全部评论
(50) 回帖