facebook面经onsite-201302
来源:互联网 发布:宜信数据挖掘工程师 编辑:程序博客网 时间:2024/05/29 07:34
四轮,其中一轮是research:
第一轮:design,设计fb的newsfeed结构,如何储存数据,如何实现给每个用户显示不
同的内容,如何对newsfeed做ranking,如何训练ranking的model,基本上是讨论的形
式,以及讨论各种方式的优缺点。
第二轮:coding,应该都比较typical:(1)给n个2维的点,找出其中离原点最近的k
个。followup:如果n很大,如何做mapreduce;further followup:reduce的时候应该
怎么做最有效?(2)给n个positive int,计算他们两两之间hamming distance的和\
sum_{i<j}hamming(xi,xj)。hamming distance就是两个数不一样的bit的个数。follow=""
up:数列0到(2^n)-1,计算hamming distance的和(不编程,analytical solution)
;further follow up: 给一棵树,计算每两个节点之间的距离的和,距离定义为path
的长度。
回答:
(1)max heap(最开始说成了min heap,后来改了),复杂度O(nlogk)。mapreduce就
是每个mapper找k个最近的然后merge。reduce的时候可以用binary tree的结构reduce
,所以如果有m个chunk,就是O(logm)个reducer。
(2)从低到高计算每一个bit位,每一个bit位只需要计算有多少个1和多少个0即可。
复杂度是O(nm),m是最大数字的bit位数。第二个问题直接看前几个n的例子可以推算。
第三个问题我给了O(n^2):计算两两距离,然后取和;要了hint以后给了O(n):就是
tree的每条边上的flow的总和。
第三轮:research,面试官是mit phd,很tough。问了一个leetcode上的word ladder
,要求编程。解法不难,就是bfs search,不过我忘了c++下面hashset的interface,
面试官貌似不太高兴。
第四轮:继续coding。(1) 有一溜n个房子,每个房子里面的东西的value是给定的一个
正整数,小偷准备去偷东西来maximize gain,但是有一个条件是不能偷连续两幢房子
的东西,因为房主挨偷以后会告诉左右邻居。要求给出能偷到的最大value的值。
followup:怎么样给出具体偷的方案?(2) leetcode Search in Rotated Sorted
Array
回答:(1)dynamic programming,O(n) time complexity,最开始给了O(n) space
complexity, 然后improve到O(1)。写了code,followup解释了用back pointer,然后
面试官说不用再写这个了。(2) 基本上就是各种ifthen,然后面试官问了一些特殊情况
下怎么speed up,基本上就是再加两个ifthen,最后两人都晕了,“this is right
第一轮:design,设计fb的newsfeed结构,如何储存数据,如何实现给每个用户显示不
同的内容,如何对newsfeed做ranking,如何训练ranking的model,基本上是讨论的形
式,以及讨论各种方式的优缺点。
第二轮:coding,应该都比较typical:(1)给n个2维的点,找出其中离原点最近的k
个。followup:如果n很大,如何做mapreduce;further followup:reduce的时候应该
怎么做最有效?(2)给n个positive int,计算他们两两之间hamming distance的和\
sum_{i<j}hamming(xi,xj)。hamming distance就是两个数不一样的bit的个数。follow=""
up:数列0到(2^n)-1,计算hamming distance的和(不编程,analytical solution)
;further follow up: 给一棵树,计算每两个节点之间的距离的和,距离定义为path
的长度。
回答:
(1)max heap(最开始说成了min heap,后来改了),复杂度O(nlogk)。mapreduce就
是每个mapper找k个最近的然后merge。reduce的时候可以用binary tree的结构reduce
,所以如果有m个chunk,就是O(logm)个reducer。
(2)从低到高计算每一个bit位,每一个bit位只需要计算有多少个1和多少个0即可。
复杂度是O(nm),m是最大数字的bit位数。第二个问题直接看前几个n的例子可以推算。
第三个问题我给了O(n^2):计算两两距离,然后取和;要了hint以后给了O(n):就是
tree的每条边上的flow的总和。
第三轮:research,面试官是mit phd,很tough。问了一个leetcode上的word ladder
,要求编程。解法不难,就是bfs search,不过我忘了c++下面hashset的interface,
面试官貌似不太高兴。
第四轮:继续coding。(1) 有一溜n个房子,每个房子里面的东西的value是给定的一个
正整数,小偷准备去偷东西来maximize gain,但是有一个条件是不能偷连续两幢房子
的东西,因为房主挨偷以后会告诉左右邻居。要求给出能偷到的最大value的值。
followup:怎么样给出具体偷的方案?(2) leetcode Search in Rotated Sorted
Array
回答:(1)dynamic programming,O(n) time complexity,最开始给了O(n) space
complexity, 然后improve到O(1)。写了code,followup解释了用back pointer,然后
面试官说不用再写这个了。(2) 基本上就是各种ifthen,然后面试官问了一些特殊情况
下怎么speed up,基本上就是再加两个ifthen,最后两人都晕了,“this is right
right?”“Yeah I think it is right”,结束。
========= 我是分割线=============================================
上面是转载的面经, 最近在为面试facebook做准备, 看了这个面经之后多少是有了些信心了。
基本上除去第一轮不擅长外, 剩下的三轮算法面试的题目都是比较轻松的。或者是我看了题目后都能很快的得出算法并
code出来。 继续努力, 希望一切顺利, 英语啊~
- facebook面经onsite-201302
- Facebook SDE onsite面经
- Facebook SDE onsite面经
- Facebook SDE onsite面经
- Facebook SDE onsite面经
- Facebook SDE onsite面经
- Facebook SDE 电面+onsite 面经
- San Fransisco Onsite面经
- Snapchat 面经(电面+onsite)
- Snapchat SDE 电面+onsite面经
- TWITTER SDE 电面+ONSITE 面经
- 新鲜出炉,Amazon SDE 面经(电面+Onsite)
- 微软SDE面经(电面+onsite)
- 微软SDE面经(电面+onsite)
- 新鲜出炉,Amazon SDE 面经(电面+Onsite)
- 微软SDE面经(电面+onsite)
- 【面经】FaceBook
- #F面经#Facebook
- 梯度下降算法的python实现
- UTC时间
- 分享几个STM32开发板的光盘资料
- Apache配置优化
- AnsiString类
- facebook面经onsite-201302
- 使用 Python 获取 Linux 系统信息
- prev + next选择器
- 分析可变参数(C/C++)
- 方法
- 方法
- uva 592 Island of Logic (搜索)
- C++一些基本的内存释放模板
- IIS + ActivePerl + CGI 环境搭建