转发: FB 2019 DS Summer Intern 首轮电面新鲜面经

美国东部两天前晚上刚面完第一轮技术电面,感觉比较mix吧,面试官很nice,斯坦福毕业生,在DS组刚做完1年。

楼主是美本数学专业毕业,现在在fordham data analytics研究生一年级在读,由于本科同学比较厉害,很容易要到了FB DS的refer,然后就是常规的HR发quesionaire,回答完之后等了5天就来了面试。

HR轮没什么好说的,非常常规,就是Why Data Science? Describe a data project you did before. 和一些high level sql (Left outter join, count distinct…), 注意FB 的DS是一个analytics的职位,不要说你想做machine learning之类的,重点体现你做过什么analytics 的project。

HR当天给了回复安排首轮电面,时间要在3周以内,还发了邮件告诉我怎么准备(其实考的内容和她发的邮件有非常大的出入,后面接着谈),首轮是SQL+product,因为midterm的关系就安排在了三周内的最后一天。

楼主虽然说没指望能有什么结果,毕竟面试经验也不多,老实说HR给了我面试我已经是欢天喜地了,但楼主还是花了很大的心力准备,准备材料有:
SQL:刷完了Hackerrank所有SQL题,总结了地理和glassdoor上所有的SQL题
Product:看完了Lean Analytics中的重要相关章节,看地里的面经和总结,刷完了udacity上A/B test的课,对于没有任何product经验的楼主来说提高可是相当大。

然后就到了面试当晚,面试官是一个白人小哥长得还不错,并没有感觉很紧张,首先也是双方自我介绍,然后要我描述了一个data project,这个部分算是驾轻就熟了,感觉ok然后就进入了case的考核:

不像地里以及glassdoor上的面经里的经典的metrics,new feature, A/B test, Health of feature之类的问题,第一个问题可以说是非常细节并且问的是instagram,可以说是新题了,题目如下:

  • Instagram为了使用户方便launch了可以迅速切换账号的button,以前想要切换必须退出当前账号再登陆,现在简化了这个步骤,点屏幕右下方就可直接切换,请问如何判断这些账户来自同一个user?

我的回答有:device number,ip address,geographic data,demographic data,很快就被面试官抓住了漏洞,他就问我怎么用demographic 区分,我想了一想发现不好区分,因为使用这个功能的用户往往想获取不同的内容,大概率想在另一个账户上be anonymous,我直接表达了我的意思,他接着问有没有人不想be anonmous的?(楼主这个时候已经是抓耳挠腮了,原本以为这个面试更偏向考logic,没想到问的这么细节)

对于这个follow-up我给的回答是:有一些人会为了给某个post点赞去创建很多账号,这样他们的目的就并不是获取内容,而是做popularity contest了。。

接下来又有follow-up:你怎么判断哪些账户属于该类?

我:可以根据点赞的时间间隔,往往这种点赞的时间间隔会更加evenly distributed,因为用户想一次性点完所有赞就会连续的切换账号。

(说完这个我就陷入了沉思,好在面试官给了一个提示,说我们有user name,follower,following的data)

然后我就上道了,说我们可以通过following和follower的intersection来判断这些账户可能来自于同一个账户,还可以通过取user_name 的pattern

接下来又有follow-up:follower会有什么intersection?

我:因为是水军账户所以follower不会有什么real people,可能就是一些广告,推销或者色情的账户

(这part就过了,又问了下一个问题,下一个问题还在预料之中,是一个counter-metric的问题)

*我们做完了test后,发布了这个feature,但是只看到了用户增长,没看到time spent的增长,为什么?

我:data是否correct?test有没有错,有没有population selection bias?

(很快被打断了,他说test啥的都没问题,直接说原因)

我:novelty effect,在一个可能这个数据是短期的,我们可以等一等,看看以后time spent会不会因为network effect增长。(他好像没大听懂我说的network effect,不过我也没有过多解释了,直接就下一个问题了)

  • 不做test直接就roll out 给所有用户好不好?

我:不好,太risky,可能有用户会抵制,从而导致用户流失。

接着follow-up:哪些用户会抵制?哪些用户会不喜欢这个feature?

我:(叹了口气,感觉完全被自己带进沟里了,然后面试官也笑了,想了很久)就说了父母会抵制,会在生活中制止刷子女花很多时间刷ins

(接着就是陷入沉思,想想还有没有别的可能,想了很久没想到,这里欢迎大家补充)

我:(反问面试官)你觉得还有谁不喜欢?

他:people who don’'t like changes。。。

(我都想掀桌了,这么显而易见的答案我居然没有先说出来)

接着最后一个问题:如何判断time spent的增长不是因为这个new feature?

我:cohort analysis去filter out用这个feature的用户,然后dive further to see what’'s going on.

SQL 部分:(记不大清了,大概说一下)
表:只有一个表,有一栏content_type, content_id, target_id(如果是comment,target就是content_id)
1)一个count,一个group by,贼简单
2)求某一个content的comment的distribution:(这题楼主没写完,我发现我可能写不下去了我就直接跟面试官说了思路,他说那你不用写了就口述吧,我说要self join,要用left join, 然后说了join condition,最后group by 一下
,他说对,it will lead u there)

然后就是提问环节:
我就问了FB DS最大的challenge是什么,他说new perspective,然后我就明白了为什么case部分要问的那么细节,所以地理的朋友们准备的时候一定要多想想面对某一个问题,导致这个问题的可能的所有原因,越细越好,越creative越好,最好是不是别人能想到的。

我说我只有这一个问题,他说真的吗,我们还有两分钟时间呢,然后在他的逼迫下我就又问了FB的dress style的问题,他居然说这是个好问题,然后跟我扯了一些公司文化的东西,说都是个人意愿,就像有的DS用python,r,有的用sql一样的,很free。

其实我感觉整个过程还比较chill,沟通也很smooth,但是能不能过只能看天了,能走到这步我已经很知足了。。

希望大家多给我,谢谢!!

请问内推之后多久收到questionnaire啊?

我就写了一句话,这题不会有坑的,就大概写了innovation,dynamic working environment以及equal opportunity

请问楼主这个岗是rolling招人的吗?现在还可申请或者内推吗?