个人经历
- 博主之前是一个acm铜牌辣鸡,拿过几次铜首极其遗憾,于是决定去读个研究生找个地方再战。博主是那种又菜瘾又大的人,所以大四(2018年)没有秋招还在那打比赛(还打过一个铁),比赛打完春招发现算法岗没有硕士基本没戏于是只能去找个学校混日子。后来我一通申请去了某个你们想象不到的地方混硕士学历。期间春招还找过一个月工作,在这边特别感谢招银网络发给我人生中第一份offer,虽然没去,但是以后会多捧招商银行的场。
- 原本打算硕士再去做做acm,起码过把瘾,但是那个你们想象不到的地方居然有严格的年龄限制,博主超龄一个月遗憾退役。
- 硕士选了nlp方向。混硕士的日子比较简单,我由于之前刷了很多题,虽然脑力不是很行,但是码力比较行,所以过得不是很辛苦。期间运气好还拿了两个AI比赛的第一名(赚了很多钱,AI比赛真的给好多钱),还帮老师做了一个项目所以简历上也不是空空的,想来找工作应该不至于被hr刷太狠了。
笔试
算法工程师的笔试现在很多带厂基本就是全部算法题,由于之前本科竞赛天天刷题所以做这些都还好。有一些带厂喜欢来一些八股,这些东西都是背几成拿几分,我背了差不多半个月就能应付笔试了。
面试
首先面试的是字节跳动的算法组,当时据说我的简历不够格,但是是因为笔试成绩比较好才给我的机会。因为第一次面试也不知道面什么,所以准备的时候看了很多本不是我研究方向的nlp的内容,希望可以多扯一些。
- 当时是1面2面连着来的(据说是HR以为我比较强,然而并不是)。1面的面试内容和nlp相关性非常小,都是一些机器学习的数学基础。我印象比较深刻的问题是怎么解决鞍点,标准答案是用momentum类的优化器,我这些都没背过没答出来后来就没过。现在想想确实是挺菜的,这些东西背个两天基本也就知道了,当时优化器这块都没准备过。一个合格的nlp算法工程师确实应该知道这些基本的数学基础,当时挂掉就决定好好看一下这些。
- 2面人非常好,问了我的一个得了第一的竞赛做了什么东西,那个竞赛涉及到IR和NLP两个方面,但是面试官看起来对IR并没有什么接触,所以很多时间都是我在想办法解释这个东西是啥,BM25怎么整,RM3是什么原理,Lucene该怎么用这些东西。
- 最后结果是他们觉得我搞机器学习不太行,但是应该能做开发希望我转开发。很感谢他们肯给机会但是我觉得我应该还行就没转,数学基础我补上应该就好了。
之后投了平安保险的实习。
- 1面的面试都比较和nlp相关,背了一下lstm的公式,背了一下attention的原理,大概讲了一下pytorch写个模型要怎么搞pipeline,好像还有一些比较八股的为什么RNN会梯度消失啊,LSTM可以解决梯度消失这些问题。学校上课实现过rnn这些东西,所以这个并不是很难,轻松过掉了。最后写了两个算法题,写的也很快。
- 2面写了两个非常基础的算法题。聊了一些简单的NLP基础的问题。最后是启发式的问题,我答得非常尴尬。当时面试官问我像他们平安保险这样的保险公司能够用nlp技术做什么。我说我们应该要做生成式的智能客服和智能推销机器人,不能一直着眼于做模板问答,这种简单技术一定会被淘汰。结果面试官告诉我他们做的机器人是让客户一个个自己去选问题点下一步的那种最简单的模板问答,我顿时尬住了。其实回头想也有道理吧,先做这样的机器人才有产出,先做nlp技术也没有达到智能的地步,没有足够的投入确实不应该追求太复杂的东西。
- 面试官人都很好,最后我是过了,不过hr要求4500块在北京实习半年,我觉得亏大发就没去。
又是字节跳动。第一次挂掉后受acm队友的PUA转投了他隔壁组的研发(据说也能做nlp),这次一共三面。由于有了上次的教训我恶补一些数学,我这回没有在基础上被问住了。
- 一面面试官很像一个我的同学,看到他我一直想笑但是好在忍住了。一面面试官人很好,有时候我讲错了他会帮我补充正确,然后有的问题他听得出我会就不用我非常麻烦的讲完。具体问的都是一些NLP的基础问题,还有一题桶排序,我应该都答对了。
- 二面面试官非常重的广东普通发,过程和一面差不多,最后花了一点时间写个八皇后,我刚开始脑瘫了没想起来,最后好在在面试结束前把题写对了。
- 三面面试官应该是个部门大leader,问的问题都比较high level,还问了一些对linux的基本运用。最后给了我两个最简单的算法题,而且我二选一就可以。结果我居然在最简单的问题上脑子卡主了。不过好在最后是过了,我因为卡了一个简单算法题懊悔了半天。
后面等到了阿里巴巴。
- 一面是电话面试,那时候好像是7点半,我正在带女朋友打王者荣耀。当时接到电话问了我一些个人信息的问题,我还以为是hr,就一边打游戏一边回复他(夸一下华为手机,可以一边打游戏一边回电话)。答了一些基本信息之后他突然开始问我的项目,我当时一懵还觉得阿里的hr真的牛批还会技术问题。我游戏打了15分钟快结束了不想坑队友,就一边慢慢悠悠的讲项目一边打游戏。突然他开始问我里面的细节,我才发现这好像是技术面试不是hr。我后面双线操作了一小会回答了几个细节的问题,这个破游戏终于结束了。问完项目他开始问我一些基础的问题,c++的基础我背了一点点八股,却把虚函数怎么定义忘了卡了好久。不过面试官人很好放过我了。后面还有一些启发式的问题,面试的过程中感觉的出他是一个对算法也有热情的人,讲原理他语速会加快,而且我了解的他都知道(之前从没有这种感觉)。最后他给了我一个最简单的算法题topk,我由于太过膨胀没有准备过算法题记忆混乱,一直说这个玩意是单调队列,其实这个东西叫优先队列。而且我还暂时性失忆忘记这个东西怎么写了,扯了了一个n根号n的分块算法和一个桶排序的方法,最后勉强过关了。不过感觉他应该也是第一次电话面试吧,我第一次在电话中被要求推导SVM,我答了一半顶不住了要求换题了。
- 二面是正式视频面试,hr和技术一起来的。面试官没有再问我什么基础的问题,和我聊了一下我做的两个竞赛还有项目,第一次不用做题不用背书还不是很习惯。hr小姐姐人也很好,问了一些简单的hr问题就过了。我记得有个问题是问最想做到什么,我回答说以后我希望我妈用淘宝我告诉她这个东西是我做的,我会觉得我牛逼坏了。
- 三面是交叉面试,由于视频出了问题就电话面了。交叉面试只有30min,我讲完我刚写好硕士论文。面试官就叫我聊聊硕士论文写了啥。我就把我我那个看起来和shit一样的meta-learning结合nlp的东西讲了一遍,交流过程类似论文答辩,我记得我做的最大的努力就是用语言表达我这个东西是啥。交叉面试应该就是为了检查我是不是个nt,我那天不是个nt所以后来就过了。
后面等到了美团
- 美团是少有的没有内推简历就过了的,估计是我那两个竞赛的缘故。美团面试官当天生病了,所以问题好像减了难度可以早点结束。他问了一些nlp的简单基础,算法题是快排和LIS,都很简单。不过后来说要去北京工作就决定不继续聊下去了。
之后是小米
- 小米的面试体验极差,我觉得我脾气算是非常好的人,但是差点忍不住直接挂断。小米面试官连线之后我听着噪声非常大,基本听不清说什么。我检查了我的设备,发现没有问题。面试官说他刚面完一个,没说有问题,应该是我的问题。我再检查了一次,我觉得就是他的问题,但是没办法,他说是我的问题只能是我的问题,我只能忍耐一下。面试开始没有什么有价值的问题,听完我的介绍对我的项目和比赛看起来也没什么兴趣。提问开始之后先问了机器学习的问题,记忆中应该也是一些没什么意义的八股。后面开始问一些c++的基础,应该是小米的题库里面的八股,非常八股,有的我知道答案也懒得算。后面还做两个个算法题,第一题在一个有序的数组中寻找出现次数超过一半的那个数,我有基于概率的logn的做法,他说答案不能保证100%对,然后我写了一个o(n)的暴力。第二题题面是很大的stream里面随机出n个数。我觉得这个问题就等价于等概率生成n个数,所以需要知道一共有多少数。面试官一直纠结说我不知道要做什么,问我知不知道stream是什么,要是有一个100G的数据你怎么读到内存里面。我说这个题就等价于生成n个数当做下标,把这些数取出来。他说读不进内存,我觉得你一个个读也没事啊别存就行了,他说你这就是抬杠,我无语了。那天他的噪声特别大嗡嗡嗡忍了半个小时我终于不想干了,就道了个歉说我真的没有get到这题是啥意思抱歉。讲道理小米的面试明显就是面试官手上有个题库,在题库里面抽一些八股来背,我觉得没什么意思。或许我可能会被打一个F。
- 其实我是小米的老粉了,我手上还有第一代那2000台小米中的一个,面试这个样子我还是挺失望的,小米手机会继续买,小米公司应该不会再投了。
全部评论
(2) 回帖