您的位置:首页 > 职场人生

2016百度‘机器学习/数据挖掘岗位’面经,一面+二面+三面,9月25日

2016-09-28 09:39 399 查看
岗位:机器学习/数据挖掘

在线笔试时间:2016.9.20

面试通知时间:2016.9.22

面试时间:9.25 2:00 pm

一面&二面地点:海淀区上地十街百度大厦C座

三面时间:9.26 11:00 am

三面地点:百度科技园2号楼K2

0. 通知面试

  9月22号晚上10点多接到了面试通知(HR好辛苦,10点还没下班),因为学校在郑州,因此随后就订了北上的车票及酒店(挑了一家不是很远的如家酒店,看了网上的评价还可以,在联想大厦对面),坐地铁到西二旗步行15分钟即可。这里距离百度大厦也很近,步行20分左右,公交车10分钟。不过这里早餐很坑,18一位的自助餐而且还没啥好吃的东西,建议中/晚餐可以往东走一个路口,早餐向南1~2个路口。

1. 一面

  短信上通知的时间是2点,后来发现今天的面试人很多,从上午10点开始第一场,11点第二场,下午1点第三场,估计后面3点还有人。并且今天的面试一半的人都是来面机器学习岗位的,人真的是炒鸡多,压力好大。

  两点排队进去,是在百度大厦负一楼的食堂进行的一面/二面,进去之后满满的坐的都是人,好壮观。排到之后hr会将你带进去随机分配一个面试官,坐定后常规流程先进行自我介绍,随后简单说了两句研究生期间的工作(如果你提前对自己工作的准备比较充分,最好自我介绍以后直接往项目/工作上引导,面试官一般也会让你继续深入的介绍项目)。

项目,及项目中间的细节。

比如说,我的项目用到了RNN模型使用序列标注,面试官就问了为什么不用常见的CRF来做,RNN相对CRF的优势在哪里?

模型使用的数据有什么特点?项目中的创新点在哪?

算法题:假设高考满分为750分,现在有100万考生的成绩,求第100高的成绩值。只说思想。

在出题的时候面试官问我会c++吗?答:学过但没怎么用过。

我首先回答可以使用堆来解决,这样的算法复杂度为O(nlogn),面试官希望再优化一下。

我想了一分钟没啥思路,面试官提示说你了解c++的copy机制吗?(不了解)他又提示说可以用桶的思想。然后又过了一小会突然想起来了,可以开一个750大小的数组来存储出现过的分数值。这样时间复杂度就变成了O(n)。

决策树吗? 答:不会

机器学习的一般步骤是什么

答:1)数据分析:可视化,采样等

2)数据预处理,举了个例子

3)特征过程,随后解释了一下特征工程的重要性

4)模型选择,要根据数据的实际情况选择模型,比如样本数、特征维度balabala

5)调参,获得当前数据集上最优的参数(可以通过k折交叉进行模型评估

6)后处理(举例,为什么要后处理

7)模型评估

  最后面试官问有什么问题要问他的吗,我就问我表现的怎么样,他怎么评价的我记得不是很清了,只记得他最后说,后面就看你的造化了,我就知道一面过了。随后没有休息,hr带我继续去二面。

2. 二面

二面面试官挺严肃的,应该是做广告算法/推荐系统的。

介绍项目

这个面试官对项目的细节问的非常详细。因为项目介绍起来跟一面差不多,但是二面面试官问的细节问题要更详细,比如某个值是怎么计算的,我记得我把论文的公式写了一下并进行了解释。

系统设计:已经有10个广告主,每个广告主分别购买了若干个词,现在来了第11个广告主,也买了几个词,先要需要再推荐几个词给第11个广告主,怎么做?

针对这个问题我首先说了方法的思路,面试官仍然非常重视细节。我提到了计算distance,他就问具体怎么计算distance,以及都计算谁与谁的distance。这个方法介绍完以后,面试官问还有什么补充的吗?然后我就又说了一个新的思路。说完以后他又问还有什么补充的吗。。。。于是我又想了一种思路。。。然后终于结束了这个问题。

聚类算法吗? 答:没有研究过

平衡二叉树吗? 答:不是很了解

纸上写代码: 有一个数组,先递增后递减,返回峰值位置。(通过作差)

  最后一个问题依然是有什么要问我的,那我就继续问了我表现怎么样,面试官说觉得我做的项目深度不够,当时我就心凉了。随后他说,但是我还是会推荐你到三面的。然后就在表格上写了Y,然后就去找hr了。接下来就是漫长的等待3面,这个时候已经4点多了。

  差不多等到快6点,还有很多人没有三面,于是hr就建议大家没事的可以先回去,然后明天上午单独跟三面面试官约,这样第二天面试官跟面试者都不会很累,表现会好一些。于是就签了第二天上午的预约,回宾馆啦。

3. 三面

  第二天吃过早饭在宾馆等着,在9点50分左右,三面面试官打来电话,询问是电话面试还是现场面试,我说我住的挺近,现场面试吧,然后就约到了11点。于是立刻退房,打了uber到百度科技园2号楼,到了以后差不多才10点30多,在大厅联系了面试官,一会她下来接我上去,在一个小会议室里面进行的面试。这一面仍然是技术面。。。

项目

这个面试官问的工程上的东西比较多,比较在意我项目系统整体的设计方法,比如模块之间怎么通讯的,是不是用到了多线程,其中一个项目涉及到了数据库,她就问我用过什么数据库,我只用过mysql,,于是她提了一个需求,让我写个select语句,查询出一段日期内,满足某个条件的行数。

随后又提出,假如满足这个条件的行数非常多,那怎么优化?我的回答是在内存维护一个这个行数的记录,每次增删都要更新这个记录。

看到我简历写了linux,于是问linux查看程序运行状况用什么命令,我只知道ps,,,然后说了一下之前我为了kill一个进程先用ps查看的进程id。。

会不会堆排序?我只知道原理,伪代码不会写,然后就换了个折半查找在纸上写了递归形式的伪代码。

三面结束以后就让回去等通知了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息