—— Launch or not
问题定义及常见考题
这类问题比较直接,其实就是希望考察candidate对于A/B实验的理解,而且会把问题放置在一个真实的case中。常见的问题比如:
(1)如何设置实验来了解 Instagram story中的某个功能变化?
(2)如果特定人群中的参与度下降而其他所有人都增加,如何决定是否启动一项功能?
(3)如果PM说他希望提高feed中广告的数量,怎么验证这是不是一个可行的想法?News Feed中的广告数量增加一倍,您如何判断这是否是个好主意?
(4)怎么向PM解释p_value?
(5)如果一个预期14天的实验,在第7天的时候实验组已经statistically significant,是否可以为了加快产品上线速度所以关闭实验?
解题框架
其实这类问题的解题框架,比较通用,基本是A/B实验的完整流程。当然,面对不同的问题,可能需要我们从流程中抽取出几个小环节来分别进行回答。但是在这里,我就帮助大家完整梳理一下A/B实验流程,来帮助大家对它有更完整的理解
- 明确目标
不论是什么样的功能改动,一定要明确,为什么要这样改,希望改善的东西是什么,相应的,你就能找到你需要在这个改动中关注的指标
- 设计实验
- 明确control group和treatment group
- 确定实验/分组对象,比如是用户uv,还是访问pv
- 计算实验样本量,同时计算实验持续时间
- 拿到实验结果,总结结论
对p_value与bencmark做基本的判断,然后给出你的建议——launch or not。但是给出结论并不代表你完成了对这个问题的解读,尤其需要注意的是,很多实验可能会存在“坑”,比如novel effect、multiple test、interactions between different groups。通常遇到这种问题,比如novel effect,就需要面试者意识到,可能要预留一个长期的反转实验来监测长期影响;对于multiple test,在计算benchmark的时候,就不能直接选择比较通用的5%,可能需要用5%/实验组数,来确定新的benchmark。
而通常,面试官都会很倾向于追问这些比较细节的东西。因为大的流程,其实非常容易阐述,也无法对我们的能力进行区分。面试官更在意的,一定是你在了解全部流程的基础上,是否了解A/B实验的各类细节,能否在未来真实的工作中,避免问题的发生。
而对于A/B实验的学习,非常推荐大家学习udacity上的A/B testing的课,并且一定要完成最后的project(偷偷告诉你,这个project可以在公开渠道搜集到很多人做过的github,大家可以多学习)