Facebook Data Scientist Analytics 电面

奉上今天热乎乎的Facebook Data Scientist,[analytics]电面面经,回报地里,希望要面的小伙伴们加油,也给自己攒个人品!

面试分三部分:

  1. interviewer先介绍自己组的情况,然后大概了解了一下我的工作经历
  2. analytical part(只给我面了一道题。。。没有产品,没有A/B testing, 不知道是不是我答得太慢的缘故 心凉凉 -_-)
  3. Q&A

详细说说analytical part,就是survey question那道题,地里有。facebook问卷库有很多questions, 每次随机发给用户,用户看到题目可以选择回答,跳过但不退出,或者不高兴答了直接退出。提供以下table,q_num是question的sequence number , 记录题目出现顺序。
Survey table
user_id|q_id|action {imp, ans, skip}|ts|q_num

(1)How do you evaluate which question is best answered?
就是求回答率最高的那道题吧,写完code, 我就主动提出concern,如果某些问题impression次数太少,对rate计算可能有影响,你想设置什么threshold for impression frequency吗?他说good question, 然后给我两个case, 数字是我刚编的,具体不记得了, 大概就是answer rate一样,但是分母很不一样, 你怎么判断这两种rate相同还是不同。。。我就说two sample proportion test, 让写公式。
q1, ans1 = 1, imps1 = 10
q2, ans2 = 10, imps2 = 100

(2)If one user answered, say question #30, how would you decide which question comes next?
我就按conditional probability答的,说找相似users who also answered question #30, find the question with highest answer rate, 写了code,找他confirm。 他说你这里只考虑了其他所有非#30的questions,没有考虑sequence,我反应过来原来是要找所有答了#30的人下一题答题率最高的那道题。。。这里耗了好多时间。。。code写的不利索哎

(3)Given different algorithms of ordering survey questions, how do you evaluate which one is better? What metrics do you use?
我就说这个survey的objective应该是get more people engage and answer more questions. 可选的metrics可以有: average # of questions answers before exit, porportion of users answered all questions/completed the survey. 他又问以上两种方法, 你觉得哪种更能达到global optimal? 问到这里,心里很虚的说了第二种好。。。因为第二种updating with prior information而第一种只是randomizing没有prior information(欢迎讨论,难道是让要我做A/B testing了???我刚刚反应过来。。。当时想着这还是coding,不是product,就没想往experiment上说,后悔啊)。。。然后他又说,第二种只是在optimize下一道题的答题率,然而并不知道后面的答题情况,如果你想优化the length of questions answered (根据我前面说的metric),就没法达到不是么。。。深深感觉自己给自己挖了个坑然后毫不犹豫得跳了下去。。。他说okay,forget about the previous two methods, can you think of a way to optimize your metric? 行吧,我说那咱就看length, 取答题最多的那些人的答题sequence, 准备写code来着,他说不用写code了只是了解一下思路。

然后就没有然后了,此时已经过去35分钟。。。直接进入QA环节。。。说好的product题呢?大概是因为这题答太慢了吧。

总体感觉题目不难,但是反应要快,要答得在点,这些还要多加练习。心累,明儿还要上班,要是想到别的再来补充吧。

补充内容 (2018-7-13 08:08):
UPDATE: 今天recruiter通知onsite了,让我给时间ideally within next 10 business days. 我这刚跟我老板请过假,马上又请也不太好,想跟recruiter商量往后推一两周,怎么说比较好呢?求小伙伴支招~~

楼主当时用的是R, 平时SQL用的不多。之前也是很纠结,后来还是决定用平时用得顺手的了。

请问楼主code使用SQL吗

哈哈那还挺好,我平时不用SQL 之前有面试写了半天R, 我问,does this make sense …? 面试姐姐说他不会R,不知道 TAT

讨论下第三问,感觉是在考product design metric…感觉楼主说的 average # of questions answers before exit 和面试官说的length挺像的。 或许去掉average,直接 # of questions answers before exit呗,然后可以AB test,就变成了两组数比大小了,t test…? (好久没复习统计了直接的ttest了。。)

2018-7-22

看到是R突然觉得放心了很多……正在申FB的工作,楼主是experienced吧,不知道new grad会不会出这么难的题目

谢谢lz!顺便问一下case study应该怎么准备呢?岗位是DS的话机器学习和深度学习会问到吗?

我后来也觉得是想考A/B testing, 不过面试官手下留情还是给了onsite :)

加油加油!多看看地里的面经,再自己多练练,楼主自己也在努力准备下一轮

多看看地里面经会很有帮助,我也是从大家的经验里学习了不少,下面是某大神的总结,我自身觉得受益匪浅,你也可以看看:)
http://www.1point3acres.com/bbs/thread-326201-1-1.html
http://www.1point3acres.com/bbs/thread-330947-1-1.html

在看,楼下那两个帖子也挺有用的,你也加油啊!
顺便,R是不是没啥能刷的题,我觉得DS得用Python刷?