编者按:本文来自微信公众号“唐韧”(ID:RyanTang007),作者:唐韧,36氪经授权发布。
最近有几个星球内的同学私信我问产品面试题解答思路,我觉得挺有意思的,这里也分享一下。
选了两个人的问题,他们分别面试了腾讯和字节跳动,工作经验都在 1 年到 2 年的样子。
先看面试腾讯的这位小姐姐遇到的面试题,面试官让她估算一下北京有多少辆出租车。
这种估算类问题我相信很多人在面试中或许都遇到过,大概在 15 年的时候,我和朋友也讨论过这个问题。
对于这个问题,遇到问题的第一直觉,你认为面试官考察的是什么?
是一个准确的数据吗?
肯定不是。
这种估算题,面试官不在乎具体数字是否正确,他们关心的是你定义问题、分析问题以及解决问题的过程。
说白了,就算你回答的数字和正确答案相差很大,也没事儿。
回到上面那个问题,估算一下北京有多少辆出租车?
首先,定义问题。
出租车大致分为两种状态,行驶中的和停运的,这里我们把问题定义为「北京有多少辆行驶中的出租车」。
如果再加上一个时间维度,那就可以定义为「在普通工作日,北京有多少辆行驶中的出租车」。
别忽略这个过程,定义问题实际上也是给问题划定边界,这样解决方案也会更有针对性,就像需求一定要有边界一样。
问题定义好了,第二步就是分析问题。
因为不要求绝对精确数字,所以我们要给出的是一套估算的计算过程和逻辑依据。
为了得出这个问题的估算答案,我们可以把大公式定义成「工作日乘坐出租车的总人数」/「每辆出租车服务的总人数」。
假设工作日打的士的总人数是 100 万,每年车每天服务总人数 20 人,那估算的出租车数量就是 5 万辆。
但这种结论性的估算没有意义,还是需要一个有逻辑支撑的过程。
接下来,再分析上述公式中的分子和分母如何得出。
对于分子,按北京 2000 万常住人口计算,通过出租车出行的人口比例假设是 5%(估算值),那就是 100 万人。
对于分母,我们需要进一步再拆解一下问题,因为出租车是分出行高峰期和平峰期的,这部分需要分开计算。
先看高峰期,北京的高峰期基本是在早上 7 点到 9 点,以及下午的 5 点到 7 点,总共 4 个小时。
在这 4 个小时里,出租车的乘坐率是比平峰期更高的,但也不是时时刻刻都满载,所以假设是 80% 的满载率,所以高峰期 4 小时里会有 3.2 小时是满载的,其余时间空驶。
而高峰期乘客的平均乘坐时长,我们拍脑袋按照单程 40 分钟计算,如果考虑高峰期堵车情况,可能到 1 个小时左右。
所以,在高峰期每辆出租车能服务的乘客数量就是 3.2 * 60 / 40,也就是 4.8 人。
如果按照平均单程 1 小时算,那就是 3.2 人。
好了,得出了高峰期的平均服务人数大概是在 3.2~4.8 人之间,我们取平均值, 4 人。
接下来就是平峰期的乘坐人数。
如果按照出租车司机早上 6 点出车到晚上 10 点收车总共 16 小时且两个师傅两班倒的方式计算,除去高峰期的 4 小时和吃饭、上厕所、换班时间,我们按平峰期总共 10 小时计算。
平峰期的载客率肯定不如高峰期,索性按 50% 计算,即一般时间有乘客,一半时间空驶。
此外,平峰期不堵车,单个乘客平均乘车时长估算半小时,也就是 30 分钟。
那平峰期单台出租车服务的平均人数就是 10 * 60 / 30,即 20 人。
按照前面定义问题的解决公式「工作日乘坐出租车的总人数」/「每辆出租车服务的总人数」计算。
在普通工作日,北京行驶中的出租车数量是 100 万 /(4 + 20),也就是 4.2 万辆。
这个数据不一定绝对准确,原因是其中的一些变量的数值或者百分比是估算,但基本思路和分析过程是能解决问题的。
有了这个逻辑框架,如果要得出准确数字,只需要通过查阅相关数据的方式进行参数调整就可以了。
上述过程,相当于搭建了一个解决问题的模型,参数可以自由调整,也是过程性的体现。
所以,在定义问题、分析问题过后,还得思考一下,要解决的问题到底是什么?
比如,得出工作日内北京行驶中的出租车数量的目的是什么?
是要做出行市场的规模预估,并做出业务规划或者产品调整策略,还是要对出租车未满足需求的那部分用户做渗透。
搞明白要解决的问题是什么,再看解决方案,就会更具备可落地性。
对于这道面试题,在回答时不要急于作答,可以向面试官争取多一点的思考时间,最好用纸笔做一个简单的思路分析和计算。
这类估算题,重点不在于精确的结果,而是分析的过程。同类的估算题,其实都可以用类似的思路回答。
比如再问你,北京有多少个在册的出租车司机?
还是那个思路,人家不是关注你能给出一个多么精确的答案数字,更多是看你的思考和分析过程。
第二个小哥哥面试的是字节跳动,他的问题就没那么复杂了。
面试官问了一个问题,当需求增多且研发资源有限的情况下,你会怎么处理?
对于这个问题,其实只需要抓住一个三角关系就可以了,时间、质量、资源,这三者是相互制约的。且它们三者共同决定了需求的实施范围。
需求增多,意味着实施范围增大,对应的,要么时间延长、要么增加资源。如果时间不变且资源恒定,那质量就得降低。
不过降低质量也不是大家期待的结果,所以,通常情况下会做需求拆分。在不影响核心主干体验的情况下,分阶段上线需求,实际上就是对范围进行了拆分。
可能有人会说了,资源都是恒定的,时间也不能变,老板还要加需求,怎么破?
这种情况下,要么提高已有资源的产出效率,要么延长资源使用时间,说白了,加班呗。
当然,面试时不方便这么说,但围绕上面三个制约因素做对应的平衡调整的方式,准没错。
如果你也遇到了一些有意思的产品面试题,欢迎留言区留言。