|
5#
楼主 |
发表于 2015-10-1 09:59:20
|
只看该作者
网易互联网内推面经
百度转正面试过了大概两周后,经理hi上和我说:感谢你对XX(指导人)和团队的认可。比较遗憾,我综合我自己和各方意见,决定不发正式offer。吓得我赶紧上网买了本程序员面试宝典,开始苦逼求职之路。
我先是投了网易互联网的内推,后面也顺利进行到hr面了,但是后面就没消息,可能被备胎了。两轮技术面问的较一般吧,就记得两个问题。
M1:有500台机器,每台机器都保存海量的数据,怎么找出最大的top 10?
W:每台机子找出top 10,然后再在这5000里找出top 10。
M1:额,那每台机子怎么找出top 10?
W:哦,可以用一个10个节点的最小堆来做,先用前10个建一个最小堆,然后遍历剩下的数,如果数比堆顶的大,则更新最小堆,最后剩下的就是最大的top 10了。另外一种做法是,先随机的抽一部分数据,比如一共有一亿个数,先随机的抽10%的数据,也就是1千万个数,在这一千万里找top 10。然后用这top 10去过滤一遍数据,把所有小于这top 10里最小那个数的数都丢掉。如果数分布的足够随机的话,这样过滤下来,就只剩下100个数了,再在这100个数里快排,堆排一下,就能找出top 10了。
其实这题刚好在面试宝典里看过,所以忽悠的比较好。第二个面试官也问了一个比较有意思的题。
M2:我最开始有一份训练数据,有三个特征:f1,f2,f3。后面又来了一份新的训练数据,但是特征是f2,f3,f4。这两份数据的目标是一样的,也就是要预测的东西是一样的,就是特征不同。怎么用第二份数据来改善第一份数据的效果?
W:...恩,可以这样做,给第一份数据新增特征4,然后赋予特征4的平均值。给第二份数据新增特征1,然后赋特征1的平均值。这样两份数据的特征就一样了,就可以加在一起训练了。
M2:那平均值要怎么取?是取训练集的平均值,测试集的,还是所有的?
W:取训练集的。
后面我和大师妹,高冷师弟探讨这题,高冷弟说这不就是特征缺失问题吗?后面我想想确实是这样。 |
|