暑期实习NLP算法岗面经总结
写在前面,从三月份开始找实习到现在正好两个月,这期间大大小小投了竹简智能、阿里、滴滴、美团、腾讯、京东、搜狗、百度、微软亚研几个公司,本着从小公司开始逐渐打怪升级的原则,不断积累面试经验,到现在也斩获了不少offer。这也是最近专栏停更的主要原因,写这篇文章主要是为了帮助那些跟我一样没有什么项目经验、没有顶会论文甚至实验室方向也不是深度学习与NLP的同学们,另外一方面就是让大家对各大公司在深度学习与NLP方向,甚至再细化一下,在对话系统方向的投入以及发展现状(这部分基本上是自己面试或者通过一些渠道了解到的,仅代表个人意见和看法,谨慎查收)。希望对关注这个领域的各位有所帮助~~
前期准备
这里只说一下临时抱佛脚性质的前期准备,要说深度学习和NLP整个领域应该如何学习和准备可以参考我之前的回答:呜呜哈:计算机专硕研一新生求教自然语言处理学习?那么那些是可以突击完成的呢?下面分成四个部分介绍:
- 简历,其实简历很重要,我有同学各种简历挂,连面试的机会都没有。所以要尽量把自己认为重要的东西都写在上面,突出自己想要在面试过程中展现出来的内容。主要就是项目/实习、论文、博客文章之类的。因为个人感觉我的博客还算可以,所以第一部分就写了自己的博客、知乎、github、国奖、论文(如果项目那块不够丰富的话可以把论文当做一个项目经验来写,因为我的论文比较水所以就在这里随便提了一下),所以还是推荐大家在平时学习的过程中写写博客做个记录;第二部分主要写了自己的项目和实习经历,因为正好研究生期间学过的东西可以分为文本分类、对话系统两个大的模块,再加上一个京东的实习,构成了项目部分,这里想说的是不一定非得是具体的项目才能写到这里,只要是你认为自己掌握的还算成体系的东西,在面试过程中可以讲出来的都可以写上去,唯一的缺点就是面试官会认为工程能力偏弱,但是当面试效果很好的时候这些东西是可以被弥补的。第三部分是额外加的,凸显了几个写的不错的文章和github上面的代码,这部分主要是为了过简历筛选,面试过程中很少有面试官会问到。最后就是要找一个还算不错的模板。
- 刷题,相比简历更重要的一环,基本上面试的时候如果一道编程题都做不出来的话跟挂了没什么区别。这部分没什么好说的,如果提前有准备的话,建议在研一或者研二开始就坚持刷LeetCode,我找工作的时候刷了200道左右。然后临时抱佛脚的话就是兼职offer了,这本书一定要多看几遍,很多面试过程中遇到的题目就是原题。这部分没什么好的方法,就是要增强自己的基本能力,不过面试的时候一道两道做不出来也没什么,不要着急,可以跟面试官交流一下,他一句话可能就会点醒你,千万不要一直憋着,交流之后写出来代码比憋了半天写不出代码给面试官留下的印象会好很多。而且很多时候代码不一定要写的很精确,大概一个思想正确就好,面试官一般不会抠细节。
- 深度学习与NLP基础,这部分怎么说呢,更是要靠平时的积累吧,临时突击无外乎是一些正则化、dropout、BN、LR推导、SVM推导、交叉熵损失函数、softmax求导、BP反向传播、过拟合、BPTT反向传播、梯度爆炸和梯度弥散、ReLu、激活函数、文本分类、对话系统评价指标、word2vec、attention、seq2seq、优化算法、GBDT、Bagging、Boosting等等等等,但是我感觉临时突击这些东西价值不大,主要还是看面试的一个整体效果,这些东西是要临时看看掌握一下,但绝对不是全部,更多的东西是在平时学习过程中积累下来的,而不是这些零散的点。要学会把他们连接起来,融会贯通(请允许装逼),更多可以看我之前写过得博客之类的。对了,还有面试官会让你现场写tf代码,不会很难,所以大家千万不要在github上面找个代码跑一下就算会了,一定要自己写,要懂。这部分我的感觉就是,平时积累很重要,但是在面试之前也一定要把这些基本概念再看一遍,像我一开始面试的时候就完全没有去准备这些知识点,有的时候就会卡壳,会给面试官留下不好的印象。
- 面试,这个基本上是按照简历部分进行准备,简历上一定不要写自己不是很懂得东西,不然真的会很尴尬。个人看法要在面试之前按照简历上面的内容自己能够讲一个小故事。3主要体现自己的深度学习的基础知识,这一部分要结合项目经验进行拔高,让面试官看到你的能力和特点。这里要做到面试官不打断的情况下每个项目自己可以说10分钟以上,一充斥整个面试,特别是当你掌握的不是很扎实的时候,把大部分时间留给自己。另外就是学会把面试官引到自己擅长的问题上面,在自己讲的过程中特意流出几个面试官可以问的问题,不要讲得太满,不然面试官问的很可能就是你不会的了。这里就要自己把握了,按照自己的经历,讲一个让面试官满意的故事。
上面就是我暂时能想到的一些点,也是自己在面试的过程中不断碰壁遇到的一些问题,然后整理下来的。对于基础知识这一块,可能会有很多同学问机器学习和深度学习之间如何权衡,其实我想说的是看你自己想找什么工作,我给自己的定位是深度学习与NLP,所以面试之前只看了SVM,然后在所有面试中也只有个别的面试官会问到机器学习的东西。怎么说呢,我的看法是,要学,要懂,但是次要,你只需要在整个面试过程中不断地展现自己在深度学习上的造诣,不给面试官留下时间去问机器学习就好。当然,如果你有足够的时间去准备,看看是最好的,毕竟你所有的准备都可能在面试中给自己增光添彩,按照自己的时间精力去分配就好。
面经&&跪经
这部分会按照面试时间的先后顺序大概说一下,先大体上说一下,拿到的offer有竹简智能-对话方向、阿里小蜜-对话方向、阿里新零售-NLP算法、滴滴AILab-对话方向、美团点评AI平台-对话方向、百度NLP部分-NLP算法、百度度秘事业部-对话方向、搜狗-机器翻译。跪了的有微信搜一搜看一看(面到了HR,现在还没给消息,暂时当他是跪了吧)、京东AILab-对话方向(跪的有点不知所措,虽然我也并不想去这里)。微软亚研(上周刚一面,就当是跪了吧,希望是一波毒奶)。怎么说呢,面的公司有点多,整个过程很累,但是由于offer的时间线原因,几个想要去的offer都是到最后才拿到,所以面了比较久。整体上感觉面试还算比较轻松,主要原因是找的实习大部分跟自己做的方向很match,所以整体上能够发挥出自己所学的东西,所以面试的结果也都还挺好的。下面就各自介绍一下:
一、2018.3.8 竹简智能 算法实习生
算法题:股票买卖获最大利润
一面:先简单介绍了一下Memory Network的相关知识,然后结合key-value MemNN模型介绍了一下自己做的基于KB知识库的问答系统,主要讲了以下其模型和工作原理。然后接下来聊了聊seq2seq模型,并主要介绍了一下attention机制,让写了下attention的公式,怎样计算得分和权重,说了下soft attention和hard attention的区别。然后聊了下tensorflow里面seq2seq的借口,吐了吐槽也介绍了自己实现的模型里面的一些细节和方法。
二面:主要针对我的京东实习和文本分类方面的问题进行提问,先问我都用过那些模型实现文本分类,当时卡克了只说出来了两个,尴尬==**(fasttext TextCNN RCNN HAN DMN EntityNetwork charCNN charRNN)。需要在总结一下各个模型的优缺点**。然后问了我觉得现在文本分类中还有哪些没有解决的问题,我想了会说样本不平衡问题(应该进行下采样来解决,他问我还有什么办法,我说这块没有尝试过只是在网上见到过一些介绍),和多类别分类问题(这里引入了知乎竞赛),多标签分类确实是一个很难的问题,面试官让我写损失函数,我当时由于紧张和时间久远也没有回答上来,算是整个面试过程中唯一回答的不好的问题吧。
三面:技术总监,到没有聊什么技术,拿着简历随便问了点项目和实习相关的东西,然后主要聊了公司的一些情况之类的,表达了对我很满意想让我留下来然后协调了一下实习时间之类的,算是发了口头offer。后面HR打电话问我的意向的时候拒了。
二、2018.3.13 阿里智能服务部–阿里小蜜 算法实习生
一面:面试官很亲和,上来主要是简历面,可以说是面面俱到,基本上简历上的东西都被问了个遍,而且还会眼神的考察一些基础知识,比如说介绍一下某些模型的细节、原理等等,稍微扩展了一下简历之外的东西看看知识的了解情况吧,比如说问了我句子相似度、传统方法做文本分类、SVM、word2vec等几个并没有出现在我简历中的知识点。然后也有几个开放性的问题,比如说我在京东的实习,如果让我采取方案的话我会使用什么方案,fasttext、CNN、RNN的优缺点各是什么等等,也都简单的聊了一下,感觉整体上来讲面试的效果还算可以,基本上问题的回答上来了。面试官也没有深究细节,点到为止。最后问了我关于实习地点在杭州是否可以,可是我还有别的选择吗==#
二面 2018.3.31 今天终于接到了二面的电话,记得是一个阳光明媚的中午^_^,面试大概持续了半个小时,先让我讲了一下attention的原理,接着讲了一下seq2seq的缺点,如何改进;如何实现再已知答案的情况下进行答案生成。然后问如何加速预测速度(其实这两个问题我也不是很清楚,只是很模糊的打了一下);接下来聊了一下京东的实习情况,为什么fasttext速度很快,然后问了下如果现在在做会采用什么样的方案;说一说RNN和LSTM的区别和原理;说一下自己的未来规划;感觉整个面试更偏向于理解,而不会是非在意细节,更不会具体到公式,但是还是会比较关注优模型化和性能方面。整体来讲,还不错??
三面 2018.4.7 一周后接到了三面电话,面试官应该很忙,毕竟清明节面试,而且感觉还有很多个人要面试的样子。面试大概持续了半个小时,上来让我讲一下最近做的对话系统的项目,我已开始说了一下模型的细节,面试官打断了我说相听一下具体的实现细节,不要讲论文的模型,然后我就把自己实现seq2seq时遇到的deepcopy和beam_search两个问题以及解决方案大概讲了一下,面试官到没有提什么问题,只是问了一下最后的真实效果,以及怎么评价之类的问题。然后就问了一下能不能去杭州实习,三面就结束了。
四面 2018.5.2 有过了快一个月才收到4面电话,直接是HR面,先是自我介绍,然后问了一下基本情况,发论文学习成绩之类的,然后问现在都有什么offer了,如何选择云云,20分钟左右让我等通知。
2018.5.3,今天有个小蜜部门的工程师加我微信,说我的面试通过了,口头发了offer,说后面会有后续的offer流程。
三、2018.3.30 阿里零售通 算法实习生
今天是阿里校招北邮行,貌似可以当场面试,所以就抱着试一试的心态去看看,本来想着去找智能服务部问一下自己简历的情况,结果智能服务部的人没去,却被零售通的人拉过去面试了一会。很轻松,负责人大概聊了一会就让我去二面,貌似是HR,也很随意,主要是他在讲他们部门,我基本上没说什么,然后他就说让他们部门总监给我三面,下午收到电话,面了50分钟左右。整体感觉上他们的算法部门应该是刚成立不久,挺缺人的,主要做推荐和物流这块,面试应该问题不大。但是我还是更想去智能服务部那边,毕竟方向更对口,所以跟他们说需要在考虑靠考虑。
4.3号又接到了零售通HR的电话,表示他们那边已经同意给我发offer,如果我也接受的话就把阿里小蜜的校招流程停掉转到他们那里去,在接受一轮交叉面试就可以了。我跟HR沟通了一下,说希望在考虑一下(因为我感觉阿里小蜜的人肯定会在清明节给我面试电话,所以想在等一下)。然后面试官就说那就等清明节结束之后让我给他一个回复。
2018.4.10 虽然小蜜那边的面试还没结束,offer也不一定能拿到,但一狠心还是把零售通的offer给拒了。
四、2018.3.15 滴滴AILab 自然语言处理实习生(对话方向)
整个面试过程只有一面,面试官把我接上来之后先让我介绍一下自己之前做过的一个项目,我就说了一下使用seq2seq实现对话系统的模型,接着讲了讲模型的缺点以及使用MMI的改进方案(这里自己当时没说好,感觉自己把自己绕进去了==),然后介绍完整个项目的细节之后,面试官提出了一个问题,说Attention机制的计算细节和公式是怎样的,然后我就介绍了一下公式的计算方法,然后说了一下改进的方案等。面试官就没有再问相关问题,感觉他好像也不是特别懂的样子,然后就说出一道算法题目做做吧。题目是有两个有序的集合,集合的每个元素都是一段范围,求其交集,例如集合{[4,8],[9,13]}和{[6,12]}的交集为{[6,8],[9,12]}。然后我就开始做,先写了个暴力解法,然后面试官让我想想有没有什么改进可以把时间复杂度改善。想了几分钟,说了一下自己的大致思路,其实并没有想到方案==不过交流的过程中得到一个很重要的信息就是这些范围是排序而且互相之间不会重合。所以这里也是给大家提个醒,一定要先把题目搞清楚再开始做题,不然很可能像我这样吧。然后搞清楚之后题目就很简单了,写一个循环就可以了,时间复杂度是O(N+M),然后就结束了,面试官让我问几个问题,然后又问了我关于实习时间的问题,就让我走了。整个面试时间持续了一个小时多一点,算法和编程差不多各占一半吧。
3.16号收到了offer,后来拒掉了
五、2018.3.16 腾讯搜一搜看一看 算法岗实习生
一面是个比较年轻的人,感觉挺厉害的,很关注算法效果、性能等方面,话语之间透露出一种刁刁的味道。上来看了看我的简历,让我讲一讲对话系统方面的工作。照常讲模型推公式,说完之后,面试官问了我关于MMI模型第一个改进目标函数中P(T)是如何计算的,我说每个词的联合概率分布乘积,当时他面露疑问,我还没反应过来是什么意思,到后面有说到这个问题才明白,原来他的意思是P(T)应该是单纯语言模型学习出来的结果,而按照我的说法,P(T)是在输入的基础上进行计算的,不得不说,面试官的水平很好,完全没接触过的东西竟然能一阵见血的指出我的纰漏,这个地方之前确实没怎么注意过,回来查了一下,计算P(T)的时候确实应该直接输入一个全零的初始化状态,这样才是一个语言模型学习到的概率。然后又接着问了文本分类的东西,我主要讲了一下TextCNN,TextRNN的模型,然后接下来讲了一下知乎竞赛的东西,感觉这块介绍的还算可以,然后又聊了下相关的一些问题。对了,这个面试官十分关注数据集的问题,比如我介绍到的movieQA数据集是一个什么形式,有多少QA对等等,还有知乎竞赛用到的数据集有大概多少个文本,数量是多大,但是平时有没有关注过这些问题,所以基本上没有答上来==接下来面试官出了一道K个有序链表的合并问题,手撕代码。
二面是个年纪比较大的程序员,整体感觉他不是很懂深度学习,机器学习应该是个高段位选手。主要问了我文本分类和论文方面的东西,到没有问出什么很有难度的问题。最后说让我讲一下底层优化方面的知识,我说是优化算法还是类似于tensorflow底层算法优化,他说前者,然后我就吧啦吧啦讲了一堆SGD,动量,AdaGrad,RMS,Adam之类的。然后问我会不会C++,我说不常用但是能读懂程序,他应该是想问我道算法题,但是他又不会java之类的??没搞懂,问了一句之后就说第一个面试官已经问完算法题了是吗,那我就不问了,然后就走了,说去找三面面试官,但是过了一会又说今天面试先结束,不知道是不是挂了还是大家已经下班了==
两面基本都是持续一个小时多一点,没有特别的压迫感和难度,基本都能答上来。但是我同学也是面的这个部门,说上来就给了5道算法题让做,然后全程面试官各种懂,问各种问题。我,也是一脸懵逼,同一个部门面试差别这么大的嘛,反正先等消息吧还是。
2018.3.21 二面,前两天收到了复试的通知,貌似是面试委员会面试,后面再有一个HR面试就结束了,然后开开心心去面试。到了之后发现短信和邮件中没有面试官联系方式(因为经过初面之后简历直接交给总部开始走校招流程,所以总部的电话也打不通,总之就是联系不上,也怪我一开始没有注意到联系方式这件事情了),连楼都进不去,无奈之下联系了初面的面试官,跟他说明了情况,最后又被他接到了一面的地方让我等一会他问一下情况,过了一会说要再加一轮技术面,我不知道具体的情况是什么,反正当时心态是崩了的,该参加的面试没参加还要临时再加一轮技术面试什么鬼。
然后面试官就来了,上来就让推导word2vec反向传播,讲实话我上周刚推完还给实验室的同学讲了一遍,奈何当时的情况下自己一紧张怎么推都感觉是错的,唉很尴尬,卡了很久最后算是勉强退了出来,不过面试官又让我写Embedding矩阵的梯度,这块之前也没在意过,只是知道更新当前单词对应的词向量即可,最后也没写上来其梯度公式,面试官让我回来再想想。然后开始问简历,他可能没接触过问答和对话系统,也没问我相关经历,一直针对文本分类这块再问,虽然也都算答上来了,但总感觉少点什么,一种说不上来的感觉。最后问我要是现在在做京东实习的工作我会怎么做,感觉也答得不是很好,然后问我FastText,CNN,RNN的区别,我感觉说的还不错,但是面试官好像还不是很满意==,最后送我出去的时候说还是要好好把基础打扎实。
等了很久吧,我一度以为已经挂了,结果4月18号收到了一次面试,貌似是因为之前提前批已经结束了,而我的面试流程也随之终止,所以一直拖到校招才又开始面。先电话面了一轮,很水,基本上就是问简历,然后第二天去HR面,这个过程自己表现得有点嚣张了貌似,具体不详说,反正估计是把HR惹到了,然后应该也是挂了~~
六、2018.3.20 美团点评 AI平台 算法实习生面试
一面面试官应该是搞后台开发的吧,深度学习一点不懂,上来就开始专业歧视,问我通信工程的会不会编程==,然后让我自己介绍,我说要讲模型的细节吗,他说不用,我看是讲了你也不懂吧,然后又说,你会数据结构吗,你们通信工程应该不学吧,你补这方面知识了吗?我++,你是猴子派来的逗比吧,然而我已经对他失望了,并不想理他。然后他貌似也不知道问什么了,开始看我的简历,又用电脑看我的专栏文章,说你对这个领域还挺了解的是吗,我说是啊,然后他就问我如果给你一个新的领域你该怎么上手,当时心里就想这个面试官真是没话找话,于是我啪啪啪又是一顿吹比。然后他竟然问,Redis你懂吗,让你学你怎么学,当时我就觉得聊不下去了。随便说了两句,然后他有看了看电脑我以为要出道编程题,结果他就直接走了,走了,了。
二面是部门老大,基本上不能算是面试吧,大概聊了一下,也没有算法题什么的,然后就互相问了几个问题,然后就结束了,面试官表达了想要我的意愿,说之后应该会有HR联系我之类的。这个人貌似挺厉害的,MSRA+Facebook的工作经历,今年刚回国开始成立美团的这个部门,直接给CEO汇报。
整个面试刨去等待应该不到40分钟吧,这可能是我面过的最水的一次面试了,可能是因为部门刚成立,二面人也说了,一切都是刚起步。回来之后就接到了offer,但是对这边并无好感,所以就拒了,后来那个leader又给我打电话表达了想让我过去的意愿,顺带diss了一下我面试的其他公司,虽然感觉他很有诚意,我去了之后应该也会被重视,但还是拒绝了,因为实习还是想找一个比较稳定成熟的部门多学点东西。
七、2018.4.17 百度自然语言处理部算法实习生
这个是在官网投的简历,到了那才发现自己好像投递错了,投成了校招==捞我简历的组是做query理解的,怎么说呢,整体感觉这个任务比较简单,基本用不上什么深度学习的技术,甚至面试过程中面试官一直在劝退我学深度学习,还是简单说一下面试过程吧。
一面,日常介绍了一下自己以前的工作,面试官更关注于文本分类这部分的工作,简单问了一下。然后就开始劝退了,说你是遇到什么任务都会使用深度学习模型吗,我说也用过机器学习的方法,比如VSM向量空间模型,但是比对结果发现深度学习的效果更好。然后就问我如果现在让我负责一个项目,主要是判断一个句子是否为问句,让我设计一套方案,并且给出所需要的时间,准确度要达到95%以上。然后我就扯了一堆,分词,词性标注,训练模型之类的。他说你怎么保证95%的准确率呢,我说二分类很简单,稍微调下参数应该就可以。考虑到面试官对深度学习的厌恶,我又补充说也可以使用机器学习的方法去做,比如说句法解析等技术,甚至网上应该已经有现成的问句识别的方案可以使用之类的。然后面试官就说,其实是一个比较简单的任务,用很简单的技术就可以达到95%,没必要上深度学习模型之类的。然后又说深度学习的缺点,什么端到端不可控,在很多任务里面有些特例是解决不了的,我说可以加bad case,他说有些情况加不完,比如机器翻译里面balabala,然后我就说,据我所知很多大公司的机器翻译用的完全是深度学习模型,他一时语塞,我也并不想给他面子。然后就说那你设计一个框架吧,会有很多任务,每次回调用其中的一个或几个,然后返回结果。其实没太高明白他想问什么,我随便说了下,什么传参啊,并行化啊之类的。然后他就说需要考虑可扩展性,比如说方便的新增模型之类的,后来闹了半天才知道他是想问继承和接口方面的问题,自己也没有打的很好。然后出了一个字符串反转的编程题。
二面,应该是他们小组的leader,上来还是一波自我介绍和聊项目,然后又进入了一波日常劝退,我心里就想你们这个组是有毒吧,说让我好好了解一下NLP原本的东西,这个倒是有些道理,可奈何时间精力有限啊。然后接下来就可以说是很逗了,感觉是一波深度学习基础知识点考查,dropout、正则化、过拟合、CNN、bagging和boosting的区别、优化算法通通问了一遍。然后出了一道二叉搜索树删除一个节点的编程题。接下来问问题,这个过程里面给我的感受就是,他们本身query这个任务偏简单,所以用一些简单的工程上的手段就可以解决,不需要上深度学习模型,然后就是搜索需要的时间反应很短,深度学习速度往往跟不上,所以就,嗯,怎么说呢,跟自己方向不太搭吧。
三面,应该不是他们组而是整个自然语言处理部的领导,但万万没想到是个小女生,我本以为他是HR。还是范范的聊了一下项目,然后他告诉我说他们整个部门是在做对话,我当时真的是听得一脸懵逼,怎么就直接从query理解跳到了对话了,然后说了一堆,我其实还是主要关注我去了之后干什么,但是他全程不给我明确的回复,一直在回避,然后我就直接问,我来了是不是跟前两面的面试官在同一个组,做同样的事情,然后他还是在回避,说这个会根据每个组的实际需求安排。然后面试就结束了
2018.4.23 今天收到了三面面试官的电话通知,拿到了他们部门的offer。后来考虑了两天还是拒掉了。
八、2018.4.23 百度度秘部门 对话系统算法实习生
前两天因为对NLP部门的岗位不是很满意所以又投了度秘,今天面试了一下,总共面了四面,四个半小时,可以说是很吐血了,全程问了很多开放性问题,我也尽量的回忆一下,复个盘==
一面,上来写了一道判断树B是否为树A的子树,一个坑是树不一定是二叉树,需要自己定义树的结构,其实就是剑指offer上题目的变种。写完之后开始问项目,主要关注于seq2seq做对话这个项目,我讲了一下attention、怎么做多轮、怎么解决类似于“I don't know”等等几个问题,然后面试官就开始问一些开放性的问题,比如他们在做任务型的多轮对话,让我去设计这样一个系统,应该包含哪些模块,内各模块的功能,如何判断一句话是否跟上一句话处在同一个场景下,如何消歧等等,自己也是胡乱的说,有的没的都在扯。最后又问了下LR、SVM、极大似然估计等相关的一些问题。
二面,面试官好像主要是看到我之前做过知乎的看山杯竞赛,好像他也做过,然后比较感兴趣就过来聊了一下,我就把当时用过的一些模型还有两个主要的创新点介绍了一下,他闻了一下目标函数怎么选、多标签分类的特点、CNN如何做Padding、dropout具体的实现方法等问题。
三面,面试官是我将来的leader,感觉面试官很注重对损失函数的理解,整个面试过程中就一直在问各种损失函数。这个面试官主要针对我简历中京东的实习开始,但是又完全跟京东实习没有关系,而是单纯地提了一个问题,让我去建模,如何设计目标函数,并且把一些商家的信息添加到目标函数中进行惩罚。这个地方还是自己的短板吧,感觉自己想了很久最后在面试官的提示下也算是做出来了,然后面试官又问我SVM和LR的损失函数分别是什么,让我用tensorflow实现一个SVM,我想了一会感觉不会,他说那你实现一个LR吧,我大概写了一下。然后面试官又提出了一个问题,有一堆半监督的样本,即50%有类别ABC等,50%的样本没有类别,现在要使用tensorflow实现一个模型,去实现两个任务,第一个是首先要区分该样本是否为标记样本,可以理解为一个二分类,然后如果是有标注的样本的话在求出其类别。然后自己也是硬着头皮瞎写了一堆。最后应该就是写到算法题,一个无序数组找到其最大值和最小值,我卡了很久,因为不可能直接遍历一遍,这样太简单了,但是有想不到O(logn)的解决方法,也不可能使用排序,然后问了下面试官,他说先两两比较,然后我说这样仍然是O(N)啊,他说那肯定啊,但是总的比较次数降低了。
四面,四面面试官是临时拉过来帮忙面试的,好像之前的面试官有事,然后他全程就各种开放性问题,感觉更偏底层的NLP处理的技术一点,有很多小问题自己也没答到点子上。然后就是三道编程题,第一道是100亿个数中寻找最大的10000个,剑指offer原题,借助堆排序进行做,分析了一下时间复杂度。然后是对100亿个数做排序,但是内存只有4G,这道题没思路,面试官说是外排序,没接触过就过了,最后一个是字符串转整型,自己实现一下。
第二天收到了offer,如果不出意外应该回去度秘实习吧先。
总结
总结一下这个找工作的过程,因为自己平时积累的比较多,所以整个面试还相对来说比较轻松。然后就是想说一下对话系统这个方向,各大公司都有再发力,个人也认为这将是未来一段时间内深度学习在NLP领域的一个爆发点,而且很多创业公司已经在吃这块蛋糕,李纪为大神也拿到了风投建立了自己的公司。但不得不说,这里面还是有很多待解决的问题,如何做到理解是很重要的一块。深度学习在当前对话系统中也只是占一部分,端到端更是还没有到应用的程度,特别是在多轮对话和任务导向的对话系统中。单说公司的话,百度的度秘、阿里的小蜜、微软的小冰应该算是做得比较不错的,度秘侧重于智能家居,旨在做一个操作系统,小蜜主要在智能客服领域发力,在电商领域有着很大的应用场景,小冰现在不是很清楚,只知道技术应该挺吊的;接下来向京东、美团、滴滴,也都有在做,不断地投入很多精力搞这一块,但整体的效果应该比不上前面两个;再就是小的创业公司,都会找一个自己的着力点,比如个人助手等,但如何生存下去、如何盈利还是一个问题。(以上均为个人看法==不喜勿喷)。
最后,还是希望通过实习多多积累,学习,为将来找工作打下坚实的基础。也希望大家都可以找到如意的offer~~
发布于 2018-05-03暑假实习深度学习(Deep Learning)对话系统赞同 48871 条评论分享收藏