百度实习面试总结——百度大搜,机器学习实习生

百度实习面试总结——百度大搜,机器学习实习生

简历是内推的,找到了川大的一位学姐,然后内推了简历。

过了几天,HR的电话打过来协商面试时间。一开始说的是下午两点,我想了想,好像有一节选修课,于是想调整再晚一点,于是调到了四点,不过这时间不还是在上课吗……

于是果断上课上到一半,然后翘了出来,溜回寝室。在室友玩守望先锋的背景音乐下,进行了一面(微笑脸

一面

其实这时候,我并不知道我面的是什么岗位的……

一面和小米一样,都是在一个代码分享平台上面写,就是面试官看得见你写的代码,你也看得见面试官写的是啥。

先让我自我介绍,然后我blablabla。

然后进入正题:

第一题:给你n个数,要求找到所有的三元集<i,j,k>,满足a[i]+a[j]+a[k]=S,要求复杂度n^2

我做这道题的时候,一开始给了一堆乱七八糟的方法。(FFT什么的其实都想说出来,但是忍住了……

然后面试官提示了一下两个数的情况,发现好像可以直接O(n)的Two pointers就好了。

然后我脑补了一下,于是给了个和two pointers毫无关系的n^2方法(暴力枚举+hash)……

然后在面试官的提示下,做出了n^2的two pointers。

这时候感觉好像要go die了……

第二题:给25匹马,你有五个赛道,问你最少需要比赛多少场,才能得到前三的马。

我一开始没啥想法,于是答了个上限,(25-3)/2=11场,因为每场比赛可以淘汰两只马。

然后面试官提示了一下杨氏矩阵,然后看我好像还是不太懂的样子,就给我讲了正解:

你建一个5*5矩阵,每一行,从左到右,从大到小排序。第一列,从大到小排序。

那么说构成我要求的这个矩阵,就需要6次比赛。

然后就可以淘汰掉第四列和第五列,第四行和第五行。

第一排只会剩下3匹马,第二排只会剩下2匹马,第三排只会剩下1匹马。

由于第一行第一列的马儿必须选,所以剩下五匹马比赛选出前二就完了。

所以最少比赛七次。

这时候,感觉自己已经go die了。

第三题:给你一堆二维点,让你找到一个点,使得其他点到这个点的距离和最小。

这道题我终于会了,于是在面试官说完之前 ,就完成了抢答。

这道题是某年的校赛初赛题,把X轴和Y轴分开之后,分别取中点就完了。

第四题:

问:如何检测两篇新闻是一样的呀?

答:把新闻拿出来字符串匹配就好了嘛。

问:但是其中可能存在个别字符不一样,其他的都一样的情况怎么办呀?

答:那就把新闻拆分成句子,抠下来,然后进行匹配吧。

问:有些句子,实际上是代表着这个网站的特征的句子,如何把这些句子分辩出来呢?

答:翻一下之前这个网站的新闻,机器学习一下,看看那些句子出现的频次高。

问:哦,你会机器学习吗?

答:了解过,我知道K近邻。

问:解释一下。

答:KNN就是把一些作为样本,然后拿现在要检测的和那些样本做距离,取距离最小的那几个,然后里面啥最多,那么检测的这个就是啥。我之前做过那个数字识别,就是用这个搞的。

问:你说的好像不太清楚,我忘了,我回去查一查。

GG。

然后一面就说,你准备一下,赶紧面对二面吧。

这时,我室友正在欢乐的在守望先锋1600分鱼塘挣扎中。

二面

开头还是让我自我介绍,然后我把一面的自我介绍重复了一遍(x

然后进入正题:

第一题:

问:给你一个前缀,再给你一堆字符串,问你有多少个字符串包括这个前缀。

答:hash。

问:假设要求动态的多次询问是否存在这个前缀呢?

答:把所有的字符串拿去建字典树,然后每次有前缀的时候,爬一爬就好了。

问:如果不是前缀呢,是问你是否存在这个子串呢?

答:hash?

问:这个好像不太行呀,你可以有充分的预处理时间哦?

答:那就把所有的字符串抠出来,比如把abc变成abc,bc,c三个字符串,然后做字典树?

问:好像可以?

答:恩,好像可以。

第二题:给你一个矩阵,从左导右是递增的,从上到下是递增的,让你找到里面是否存在一个k。

曾经曾某拿这道题考过我,然后我被他羞辱过,然后我就记住了这道题……

我诚实的答了我曾经做过这道题,然后证明了一下结论的正确性。

正解就是从右上角开始跑,如果k大于当前格子的数,就往下走,否则往左走,证明略。

第三题:

问:给你一个二叉树,求从根开始的最长路径。

答:好像dfs一下就好了?顺便记录一下路径长度。

问:要求输出路径。

答:第二次再dfs一下,如果到叶子节点的时候,是最长的话,就输出?

问:只用一次dfs。

答:好像不遍历完整棵树,是无法确定最长路的?我感觉得两次呀。

问:你能不能开个数组记录一下路径,然后更新呢?

答:好像可以呀。

GG

第四题:

问:给你一个随机数生成器,有p的概率输出0,(1-p)的概率输出1,p未知。要求用这个随机生成器做成50%输出0,50%输出1的生成器。

答:我在纸上画了画,好像让这个随机数生成器一开始正常输出,然后第二个周期1-rand()输出,这样就是一个平均的了。

问:你这个假设周期是1,那么输出了两个数,如果我只取第一个数,那么第一个数是否是50%概率输出的呢?

答:好像从两个数的角度来看,这两个数输出1的期望和输出0的期望个数相同,我觉得好像是一样的。如果只看第一个数的话,他就不是。我感觉这好像是个逻辑问题,我觉得我逻辑好像不太好……

问:我想让你实现一个函数,然后这个函数的功能是50%概率输出0和1,你再想一想。

抠了一下脑袋,然后想了10min……

答:输出四个数做,01和10的概率不一样,01+10不等于11+00。00和11都是p(1-p),01是pp 10是(1-p)(1-p),然后00x11=01x10,根据这一,我们可以乘法找对称关系。一共十六对,都能找到。

问:我懂了你的意思,你这样太麻烦了,假设你可以跳过一些东西呢?没必要全部用。

答:那就11输出1,00输出0?01和10都跳过?

问:对。

然后面试官让我准备三面了。

三面

让我自我介绍一下,于是我又重复了一遍( x

你有什么优点?

blablabla

你有什么缺点?

blablabla

你知道我们干什么的吗?

不知道。

你知道你要干什么吗?

不知道。

那我给你讲一下,我们是干blablabla……

而你会做blablablabla……

我觉得你这种一张白纸的竞赛选手,还是比较适合这里的。

然后三面就结束了。

后续

然后我就以实习生的身份,混进百度之星出题组了。(x

我一定会好好出题的!大家记得去参加百度之星呀!

至于offer这边,就杳无音讯了,我以为我被拒绝了,但是!

过了十几天,三面面试官打电话给我说了下百度现在HC不足的问题,你要来就只能四月之后来。

而我正好有校赛要去打,本来就打算最早也只能四月份之后过去。

于是达成共识。

于是愉快的就决定了四月份再去思考这件事儿去了。

于是我又开始在学校躺尸,过着给小朋友教书的快乐日子。

posted @ 2017-03-06 12:52  qscqesze  阅读(6577)  评论(8编辑  收藏  举报