腾讯自然语言处理实习岗面经

来源:互联网 发布:sql select like语句 编辑:程序博客网 时间:2024/06/13 02:18

人生第一次被BAT虐,所以记录一下,为明年找工作赞经验,毕竟网上都没有自然语言处理相关的面经。

先来点干货!
面试流程
1. 自我介绍
2. 谈谈项目
3. 上黑板写代码

按照上述流程分为三块,如下。

简单的自我介绍了一下


我:我做的项目是自然语言生成相关,具体是做广告生成。。。。(面试官听到我做的广告生成的时候,似乎特别感兴趣,一直问我怎么做的,我巴拉说了一堆,然后对我的方法不是很感冒。。。)

面试官1:为什么不用生成式的方法来做呢?

我:我尝试了char-rnn和seq2seq的方法,。。。。

面试官1:rnn是怎么运行的你能说一下吗?

我:巴拉巴拉。。。(可能第一次面试太激动,开始跟NNLM记混了,面试官还提醒我了一下,我翻了一下笔记本才想起来,感觉这种行为很不被看好,尴尬)

面试官1:什么是char-rnn,你能画一下rnn的结构图吗?

我:OK,(开始画画画,画完解释了一通)

面试官2:那如果是seq2seq的结构是什么样的你能画一下吗?

我:OK,(继续画,此时我给自己挖了一个坑)这是不加attention的seq2seq,加上attention后encoder后的编码向量就不是固定的了(此刻的我觉得自己回答的还蛮好)。

面试官1:那你能画一下attention的结构吗?是怎么做的?

我:我有点忘记了,能翻下笔记本吗?(思考了一下,大脑一片空白,想想前两周每天都在研究attention啊,年纪大了记性不好,出来翻了下笔记,这么熟悉的attention啊,那一刻怎么就不记得了!!!)

面试官1:没事,那来道代码题吧。


面试官2出题,一个struct含有start,end属性,现在有一个这样结构的数据集,统计这个数据集中具有相同start和end的数据有多少个?
简化一下就是统计{[0,2),[0,2),[2,4)。。。。}中[0,2)、[2,4)。。。分别有多少个。 我将输入定义为了list,{0
2,2
4,。。。},每次取start和end的时候就是split一下list中的元素,然后new一个map1存了key:starti,value:{end1,end2,....},再取出map1中每个key
对应的value值{end1,end2,....},然后再new一个map2后遍历一遍这个list,将endj存为key,value为endj出现个数,遍历完list后就得出来了以starti 为start,endj 为end的数据的个数的map2。将结果整理一下得到resultmap。

然后就结束了。
但是隐约感觉我直接将输入存为list不是很让面试官满意,他们想让我存为struct类型。。。。。。。的吧,当时听到来道代码题的时候,我的内心是奔溃的,没有刷LeetCode!!!
不过真的很感谢面试官2号小哥哥,开始一直没想法,在他的引导下,才想出来怎么做,感谢~~~

基于本次面试,未来需要做的准备:
1)准备一个完美的自我介绍
2)刷LeetCode
3)熟记主流框架公式
4)项目滚瓜烂熟

原创粉丝点击