欢迎直接到我的博客查看最近文章:www.pkudodo.com。更新会比较快,评论回复我也能比较快看见,排版也会更好一点。
原始blog链接: http://www.pkudodo.com/2019/03/10/1-9/
前段时间感觉自己的学习速度已经有了明显的放缓,自己也分析了很久,感觉主要是有这么些个原因:
基本的工具已经学会了,心里面不太满足于只是去学工具,还是很想看一看实际的工业场景中NLP是怎么被使用的。
NLP方向很多,兼顾到面就不能兼顾深度,其实很多方向自己都很喜欢,但是总要有侧重学习的地方。这次走出去也是想提前能够接触到一些实际场景,实习期间做什么,以后打算就做什么,把深度挖下去。反正都是我喜欢的东西,提前让我知道我未来的方向,对我的职业生涯也有好处。
最后用了差不多半个月的时间,去微软、头条、滴滴、爱奇艺参加了面试,拿到了微软、头条和滴滴的offer(滴滴最后因为hc锁了并没有实际发出offer),最后还是选择了微软。网上面试题有很多,所以我也不太想讲都问了我什么问题,毕竟面试官都是根据每个人的实际情况去选择问的方向的,好好准备就是了。这篇博客还是想讲一些关于面试中得到的一些感想吧。
按照面试的顺序,首先从滴滴说起。
前段时间互联网不太景气,都经历了裁员,hc也锁了,我作为一个实习生这个时候去找工作确实很不明智,学长跟我说可以不用这么着急,一般在八九月份会有很多的坑,那个时候找工作会比较方便一点,另外也帮我看了一些公司,大部分hc都锁了。
但是当时真的是心里比较坚定,就是决心要走出学校,我觉得按照目前的状态,只有进入实际的工业场景才能让我的学习速度不会放缓下来。后来学长把我推荐到了滴滴的nlp部,因为他们还招人,同时部门的leader技术也很厉害,学长说我进去以后能学到很多东西。
因为是第一次面试,心里是很紧张的,去的地铁上还一直在努力看笔记,约了10点半,当时10点就到了大楼下,一直等到了10点20才进去面试(担心进去太早他们可能手头还有别的事)。从整场面试的感觉来看,leader更倾向考察我对NLP及统计学的理解,主要是下面这几项让我感受到的:
简历上有写对《统计学习方法》模型的实现,我感觉leader还是挺感兴趣的,问了很多问题。大部分问题在我写博客的过程中都有思考到,如果我没有去写这些博客,可能那些疑惑也就随之而去了。(所以建议大家也可以写一些博客,写写心得和感想)
在NLP方面的考察中,leader没有直接抛问题了,直接问我对NLP的理解,再从我说的话中去选择问题的切入点。我认为技术都是一条发展的路线,任何发展都是基于当时时代的困境和解决手段来获得的,所以当时是从NLP的发展路线开始谈的,从rnn的问题解决到rnn的缺陷,再引入lstm去解决rnn的缺陷......以此路线。
当然了,还涉及到了很多细枝末节的东西,但这篇博客本来就是打算写点感想,让大家知道该往什么方向准备,所以我也不打算细说了,那类博客真是太多了。
我个人感觉学长在推荐的时候还是夸了一下我的,所以滴滴的leader并没有从很多基础的问题问起,除了问题以外,后面手写了两道算法题。第一题我没有思考就给出了思路,leader说是不是做过?我说对,做过。leader于是又在这个基础上提高了难度....其实刷题大家都会刷,我觉得老老实实回答就好了,真诚一点,人家也会感受到你的诚意。
出来以后过了大概一两个小时,leader加了我微信,跟我说本来打算给我offer,但是很遗憾才发现hc锁了,没有办法入职。
滴滴的面试总结下来,主要还是多写写博客,在学习的时候就逼自己去思考,加深理解。此外github也可以好好经营,leader送我出门时很感兴趣地说希望我把NLP练手项目路线这个github一直写下去。(很惭愧,太懒了)
微软面试:
虽然在北京读书,但正儿八经踏入中关村,这还是第一次。下了地铁一路高德步行过去,心里又是憧憬又是紧张。从小用着微软的系统,这次竟然要去微软面试,感觉自己真是太牛逼了,有种触碰到童年梦想的感觉。
微软的面试怎么说呢,除了紧张还是紧张。我的mentor当时应该是有事,接待我以后让另一个组的同事面的我。他们的面试风格和滴滴又截然不同,问了一连串问题我几乎没答上来几个,当时心里真的是开始觉得这次应该是凉了,但是我觉着我还能继续挣扎挣扎,为下次来微软积累面试经验。
怎么说呢,微软当时的面试风格类似这种样子:让我去提出一种方法解决某种问题,比如说我说可以用seq2seq解决,那么他们就会问用seq2seq你能猜测到会有什么缺陷吗?当我想半天说出几种缺陷以后,他们会说,那这种缺陷你觉得该怎么解决,于是我继续提出解决方法,他们继续问这样会不会产生什么缺陷.....陷入死循环。
另外在算法题的阶段中,给出题目后,我说思路的时候说可以用递归做,刚要开始讲细节就被leader打断,说既然你觉得可以用递归做,那你能不能写出递推公式?
我的老天鹅,我发誓那一刻我是愣住的,后来的3秒内我都陷入了没有好好听算法课的后悔中。但是好歹算法课的作业我多少做了,也求过递归公式,所以开始推导。后来推到一半的时候感觉希望渺茫,但是还是在尝试推,leader看出来以后,就下一话题了。(后来回到学校突然想到了该怎么推....)
这是一面的过程,二面是mentor面的,也因为第二次见面比较熟了,所以也就开门见山先来两道算法题,一道是leetcode的常规题,一道是手写一个模型的训练过程,有惊无险后同样问了我一个实际场景中需要被解决的问题,我给出了几种解决方案。回到学校后当天晚上就收到了口头offer。
微软的面试总结下来:需要对NLP实际场景中可能遇到的问题需要有所了解,此外也要知道都有什么解决方案,不过最主要的是有自己的理解,毕竟问题只是问题,在不同的场景下问题会转换成不同的方向,对于解决方案也要有适当的修改。(在投递简历时应当知道你投递的组目前在做什么,由此来推测可能会需要什么问题,我也是没什么经验,这次去微软完全就是蛮干,靠着脑子里的东西也没准备什么,这样会很手忙脚乱)
爱奇艺面试:
爱奇艺从给我打电话到我实际去面试中间隔了大概有小一个礼拜,我感觉对方在中间可能已经找到了需要的人选。因为面试一开始我就感觉对方的兴致不是太高,但是对于我来说,成功了就是个offer,失败了就是一次面试经验,所以也乐呵呵地参加完整个面试。
当时面试我的leader也是从实际场景去抛出问题,但是爱奇艺是个视频软件,所以抛出问题的角度又不太一样,主要是检索方向。检索大家也都知道,主要还是语义的内容,大部分内容归根结底还是如何去做好视频搜索这个问题。我就结合语义的相似度以及之前多少也顺带看了一些的推荐系统这些角度来回答的问题。
最后好聚好散吧,面试完以后感觉人家应该现在已经不差人了,所以互相道别以后就直接准备另外的面试了。到现在爱奇艺也没有再联系我,应该是去得太晚了。
爱奇艺面试总结下来:首先还是和上一条一样,去面试前应该先了解对方的工业场景,去做相应了解。其次就是对方跟你约时间的时候,越早越好,最好今天打电话过来,你说明天就要去面试那种,毕竟人家也不只你一个候选人,看到合适的人家也就直接挑中了。
今日头条面试:
刚走进字节跳动的大楼里,让人有种说不出来的感觉,总感觉这个公司是很朝气蓬勃,让人感觉这个公司未来的成就远不止于此。我觉得现在网上说的字节跳动也应该纳入BAT的这种声音也不是没有道理。
字节跳动是第一家对我简历上的kaggle感兴趣的,因为去年年底参加了kaggle,拿了TOP 3%,所以一面的时候就让我详细介绍了kaggle,由于里面用到了xgboost,所以又让我推了公式,此外包括二面侧重点也差不多,两轮面试都很看重对公式的推导,各种推公式。一般公式推得都很随性,说到什么技术了,就让我推一下公式,如果时间不够了,就让我说后面的推导思路。算法题也一样,说到什么技术,就让我写一下它的代码。比如说谈到一个问题说起了哈夫曼树,当时就让我写构造哈夫曼树的代码。
后来第二天地铁上接到了电话,进行了hr面,第三天就被通知准备发offer。
字节跳动面试总结下来:首先是在学习过程中遇到的各种公式都应该能推导(写博客的过程真的帮助很大),另外对于简历上提到的所有技术点,也应该能熟练掌握推导。我觉得字节跳动的面试官应该是默认你学过的东西,那就应该是理解了原理、熟练掌握的。
这就是四场面试下来的体会,面试博客很多,面试题也很多,用应试的心态去准备面试是不可行的。如果你也在学习人工智能,如果你短时间内并不打算找工作,那么我觉得你完全可以按照我的面试总结中说的去准备,在学习的过程中就刻意地加强各方面的素质,我相信最后你的offer一定会拿到手软的。