【面经】研二上 - 算法实习 - 面经汇总

汇总贴:

北邮读研期间的打怪升级

10月份找实习的感想

之前在一个小公司待了半年,通过做项目以及读论文学了些东西,感觉自己NLP入门了,有了一些自信,于是想面面大厂,换个地方体验下。
9月份提了离职,不过还没走,其间刷题准备,以及处理一些琐事又耽搁了一段时间,国庆节后正式离职的。
笔试面试了大概一周左右,然后10月中旬去了微博,待了一周多,感觉做的事没啥意思,也做不出成果,其间百度又给了offer,于是11月就去了百度。
百度技术氛围不错,学习资源丰富,mentor人也很好,于是在百度一直实习到了现在。

面经汇总

因为快冬天了,天冷不想走太远,而且穿羽绒服挤地铁也比较难受,所以主要投了西二旗附近的几家公司。女友也在这边上班,早上一块儿骑电动车就能到。
投递是通过拉勾网和BOSS直聘,投了一些小公司,以及百度、微博这两家大公司,其他的几家要么没有岗位,要么岗位内容不感兴趣,也没有投。
小公司只有海天瑞声约了笔试,其他公司均未联系,可能是年底关了HC。

1. 海天瑞声 -- NLP算法实习生 -- 笔试 -- 通过

题目很简单,而且很多开放性的题目,很友好。
笔试通过了。不过当时已经有大厂offer了,所以没有继续面试。

1、分词、词性标注
(1) 列举常用的分词、词性标注算法
(2) 列举您了解的词性标注集
(3) 您了解、或使用过的分词、词性标注的开源工具有哪些?(或者您自己实现的程序,请简单描述)

2、语言模型
(1)给定训练语料:
“John read Moby Dick”,
“Mary read a different book”,
“She read a book by Cher”
根据二元文法求句子“John read a book”的概率。
(2)您了解的语言模型在哪些应用中使用。

3、NLP 应用
简单描述下,您了解的 NLP 相关的系统(如信息检索、问答、机器翻译等等),原理、实现技术及存在的困难。

4、编程
(1) 有数据文件如下所示,三列,每列中间 Tab(\t)分隔,

请将数据,按照第二列数值从小到大排列,并获取排列后的数据第一列,保存到output.txt 中(请使用 shell 命令)。
(2)有一个 100 万词条的专有名词词表(人名、地名等,不重复),100 万句话,如何在100 万句话中,将含有的词条中词标出来。请写出关键代码,语言不限(Python、Perl、C/C++、Java 等均可。)

5、如下两个题目,请选择其中一个进行解答。
(1)选择一个您参与的 NLP 相关的项目,或者系统中,您认为最满意的,简单描述原理、使用技术。
(2)描述下您了解的某个 NLP 或者机器学习相关的新技术。

2. 新浪微博 -- NLP算法实习生 -- 一面 -- offer

mentor面,总共70分钟。
写了三道简单题,大概40分钟。
1- 括号匹配题,入栈出栈
2- 有序序列的二分查找
3- [7,8,9,1,2,3], 旋转序列的二分查找

然后问了sql和shell,题目略,直接附解答,一看便知题意。
不过这两个都不是最好的写法,面试官不太满意,不过勉强算对,也没细究。
sql: select * from A, B where A.mid = B.mid
shell: cat input.txt | head 50 | tail 28 >> output.txt

问问题:
都是简单问题。
1- 激活函数的作用,
2- BERT的两个基本任务,
3- BERT的激活函数是啥,
4- textCNN的网络结构,
5- 其中池化层的作用,
6- 简历项目中的fine-tune数据的类别构成,
7- 然后问了点非技术问题,比如能实习多久之类的。

3. 百度

总共面了两个部门,NLP和KG,都是策略算法,NLP一面挂,KG三面offer。

NLP部门一面

四十多分钟写了两道题,一道hard,一道中等。

hard是一道链表题,K个一组翻转链表。
1 2 3 4 5 6 7 8
..>
2 1 4 3 6 5 8 7

这道题其实是个常见题,我同学后来面阿里也一面刚的这道,也跪的很惨。

还有一道大数相乘,也就是字符串相乘题。

两道题思路都不难,说的思路面试官也认可,但代码写起来挺费劲,而且平时刷题也不够,能力欠缺,两道题都没能写对。

之后十几分钟问了下简历上做的东西的原理。

问LSTM的三个门分别啥作用,不太记得,没说明白,其他都还行。

然后面试官问,这些东西都是你做的吗,不太相信,然后一面就挂了。

其实小公司没几个人,接一个项目,每个人都负责很大一块,做的多做的杂很正常。
我简历上自然语言处理还有语音识别的东西写了很多,做的东西确实不少,但是都不精,经不住深入地问,工作量多反而成了缺点,这是在小公司工作的一大弊端。

KG部门一面(mentor面)

前20分钟问问题,后30分钟写了道题。
问了一点点简历上的东西,然后数据结构方面的知识问了特别多,虽然有点忘,不过毕竟学过,所以答得还可以。
然后写了一道查找列表中和为k的两个元素的题,先排序,然后双指针即可。面试官指定用快排,不过我快排写乱了,最后调了半天没弄出来,不过也不碍事,最后暴力解也算过了。

KG部门二面(技术leader面)

没有问简历,就是做题,半个多小时。
题目:从左上角到右下角遍历矩阵。
刚开始想复杂了,变量写得有点乱,然后面试官提示了下,斜线上元素的x和y坐标和是一样的,然后一分钟左右秒了。
之后问了一道大数据的题目,数据流采样。
问题:在一个无限的整数数据流,如何从里面等概率随机抽取 k 个整数出来?
题目很简单,证明也很简单。这道题答得不错,比较加分。
解法:
K = 1 时抽样方法:

  • 当第一个整数到达时,保存该整数
  • 当第二个整数到达时,以 \(\frac{1}{2}\) 的概率使用该整数替换第一个整数,以 \(\frac{1}{2}\) 的概率丢弃该整数
  • 当第 i 个整数到达时,以 \(\frac{1}{i}\) 的概率使用第 i 个整数替换被选中的整数, 以 \(1-\frac{1}{i}\) 的概率丢弃 第i个整数

证明:

  • n = 1 时, 被选中的概率为 100%, 成立
  • 设 n = m , \(m \ge 1\) 时,命题成立,即前 m 个数,每一个被选中的概率为 \(\frac{1}{m}\)
  • 当 n = m + 1 时, 第 m + 1 个数被选中的概率为\(\frac{1}{m+1}\), 前 m 个数被选中的概率为 \(\frac{1}{m} * (1-\frac{1}{m+1}) = \frac{1}{m+1}\) , 成立。

K > 1 时的抽样方法

  • 前 k 个整数到达时,全部保留
  • 第 i 个整数到达时, 以 \(\frac{k}{i}\) 的概率替换 k 个数中的某一个,以 \(1-\frac{k}{i}\) 丢弃

证明:

  • \(n \le k\) 时, 被选中的概率为100%, 成立
  • 假设 n = m, m > k 时, 你命题成立, 即前m 个数, 每一个被选中的概率为 \(\frac{1}{m}\)
  • 当 n = m + 1 时, 第 m+1 个数被选中的概率为 \(\frac{k}{m+1}\), 前 m 个数被选中的概率为:
    \(\frac{1}{m} * [ \frac{k}{m+1} * (1 - \frac{1}{k}) + 1 - \frac{k}{m+1}] = \frac{1}{m+1}\)

KG部门三面(经理面):

三面应该是性格方面的考察,聊了半个小时天,没有问技术。
问的问题太多了,很多都不记得了。
之前你们项目是怎么管理的,
遇到的最有挑战的事情,
如果和上级意见不一致怎么处理,
遇到技术难题要怎么办,
百度这边会加班可以接受否等。

posted @ 2021-02-06 21:19  Yanqiang  阅读(782)  评论(2编辑  收藏  举报