zoukankan      html  css  js  c++  java
  • 百度实习面试总结——百度大搜,机器学习实习生

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

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

    过了几天,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不足的问题,你要来就只能四月之后来。

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

    于是达成共识。

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

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

  • 相关阅读:
    npm ci命令比npm installer命令快2至10倍
    Liferay 7.1发布啦
    2016/07/05 zend optimizer
    2016/06/16 phpexcel
    2016/06/13 phpexcel 未完待续
    2016/06/10 日历插件 Datepicker
    2016/06/09 ThinkPHP3.2.3使用分页
    2016/06/02 网摘记录 svn 服务器端 客户端 安装使用
    2016/05/27 php上传文件常见问题总结
    2016/05/25 抽象类与API(接口)差别
  • 原文地址:https://www.cnblogs.com/qscqesze/p/6509450.html
Copyright © 2011-2022 走看看