您的位置:首页 > 其它

百度 机器学习/数据挖掘 一面 被淘汰 记

2012-09-25 19:08 85 查看
百度2013校招,西安站,面试时间:2012年9月24日下午3点,地点:西安颐和宫大酒店。

面试官是一个很年轻很帅的GG,看起来比我大不了几岁,甚至和我一样大的样子,标准的学术牛、技术帅。

之前在网上搜过一些面经,一般会出一到三道算法(包括基本的排序、二叉树非递归遍历之类的,还有其他算法等),让写在纸上的。但是这次面试官根本没让写任何算法,很出乎我的意料。面试直接从我的简历说起。

1. 看着我的简历,问我研究生阶段做的东西。我说基因微阵列缺失点的重建,用到了矩阵填充、最小二乘法求系数等。然后他让我解释一下矩阵填充,我说是以矩阵的低秩为假设条件和优化目标的,他问为什么会低秩,这个我真不知道(其实微阵列数据并不符合低秩的假设,只是我做的工作以低秩为优化目标,效果比行均值填充好一些罢了),然后我扯了下这个是需要生物学方面的证明的.....他就没再问这个问题。接下来他问矩阵填充可以应用在哪些方面,我说可以用在推荐系统上,然后用netflix的电源推荐系统举了例子。然后就推荐系统,他又问了些问题,感觉像是开放类的问题,没有固定的答案,甚至像是产品类的面试了,跟技术没多大关系了。

2. 之后问我这个低秩的目标是怎么实现的,我说了两个方法,svt和ALM,都是写文章时看过的。但是时间长了,已经忘得差不多了,svt只是大概说了下求奇异值分解,然后解释alm的时候用拉格朗日乘子,让我把这个式子写出了,不记得了,这个问题就此作罢。

3. 接下来问我一个什么filter的问题,说这个推荐系统其实是和这个filter类似的,我根本没听说过,也没记住这个词,这个问题也就此作罢。

4. 然后我不知道怎么又突然想起来我做过的东西用过最小二乘法重建系数的,他很自然的就问起最小二乘法,让我跟他说最小二乘法是怎么回事,我就举例说明是让残差的平方和最小。然后他问这个系数是怎么求得的,这我又不知道,于是说我求系数就是用到了matlab中的pinv伪逆阵,至于为什么这样求,我也不知道了。(感觉我是明知山有虎,偏向虎山行)

5.问我做东西主要用什么语言,我说matlab、c++和c#,他就问了c++中的虚函数是干嘛的,我慌忙中竟然没想起来那个词叫什么,说了句“动态连接”,然后说什么编译的时候不决定执行那个函数,到执行的时候才决定运行指向的函数,后来想出来这不是“动态连接”,而是“动态绑定”(准备得确实非常不充分),马上更正了。

6. 突然问我信号量机制是怎么实现的,我只是结结巴巴的举了一个整形信号量的例子,就是signal-1,signal+1这样子,然后他问我这个signal表示什么,我慌忙中说代表互斥信号的个数.....(具体是不是,其实我也不知道)

7. 问我了解哪些聚类算法,我说k-means和层次聚类,他让我描述一下分别是怎么聚类的,我就说了一下。让后我没等他继续问,直接说k-means的缺点,就是初始中心点选得不好,会对聚类结果产生影响,然后可以把两个方法结合起来,用层次聚类得到的中心点作为k-means的中心点。他问那你为什么做完一次层次聚类还要再进行一次k-means,直接做层次聚类会怎么样?我一时半会没想出来,他说那这个问题你可以回去再想。(到这里我已经没什么信心了....)然后他问了一个很有意思的问题,就是一千万个高维数据,要进行k-means,要怎么操作。这貌似是大数据问题,我很自然地的想到了哈希表,然后就是用哈希表,把数据分成N块儿,再进行聚类。然后他问怎么哈希才能保证你分的每一类中心点都比较合适,我感觉这也不是哈希能解决的问题,于是就想到了先排序,再间隔得取几个点作为中心点,而海量数据的排序是可以用外部排序或哈希实现的。但是他提醒我这是高维数据,不方便排序,我想到了pca降维,但是立马意识到也不行,他也说比如100万维的数据,降到1万维,还是没办法排序,而降到1维的话,丢失的信息太多了。然后我就陷入了长时间的思考......很自然的,他说这个问题你回去再想......

8. 问我用过哪些分类算法,其实我还是真没用过,只是在笔试的时候见到了一道knn的分类题,然后之前用过一次libsvm对苹果的电信号进行分类,看哪些电信号对苹果的分类效果好,于是就举了svm的这个例子,但是因为这个电信号是当时导师直接发给我的,只是让我调用libsvm的交叉验证,判断分类效果,所以对于这个实验的具体流程,我不是很清楚,结结巴巴地把实验流程说完了。然后他问我分类的accuracy怎么评价,我说用true_detected和false_detected这个两个比例(臆测的,因为livsvm的交叉验证直接得到准确度,我没深究过它怎么得到的),然后他写了两串数字,一串代表真实值,一串代表预测值,让我分别算true_detected和false_detected,这应该是一道巨简单的题,但是我还给算错了(我把正例样本预测为正例,负例样本预测为负例都认为是true_detected,正例样本预测为负例,负例样本预测为正例都认为是false_detected),实际上我写出来后他给我举了“召回率(recall)”的例子(见http://baike.baidu.com/view/29947.htm),我才意识到应该考虑“召回率”和“精度”,而我那种的true_detected和false_detected的计算方法也不对。

9. 以上问题中夹杂着一些零碎的小问题,不太记了。然后他说我这里没什么问题了,你还有什么问题了没,我简单问了下,大致就是每个人用的研究工具不一样,怎么统一,他说员工自己搞研究可以用自己熟悉的工具,但是在系统里实现的时候,统一在公司的linux环境下用一样的工具。然后我说暂时也没问题了,面试结束。

10. 面试时长一个小时左右,但是感觉很快。果断被淘汰了,教训:1、自己做过的东西在面试前一定要好好看一遍,做到烂熟于心。2、从他的问题来看,没有一道是难的、偏的,而且是从你的简历出发,感觉很容易让面试者接受。但是对于某些问题,我还是没有刨根问底的精神,以至于只知道个大概,再往下问就三不知了。典型的一瓶不满半瓶慌,被淘汰很正常。3、笔试、面试前一定要做系统的准备和复习,我是收到通知后临时看了一个晚上和一个上午,这种现学现卖的伎俩,经受不住面试的考验,功夫还是在平时的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: