面试必备之费米问题
编辑导语:在面试的时候,很多人都会遇到费米问题,那么什么是费米问题,又该如何解决呢?本文作者详细介绍了面试中的费米问题及其解决措施,我们一起来看看吧。
最近在准备面试,之前挺怕遇到费米问题的,总觉得这类问题拿着就是一脸懵圈,但是现在涉及到这方面的面试越来越多了,所以这次简单研究了下,发现其实还挺有意思的。
其实关于费米问题,挺多人的回答都很清晰了,这篇文章只是从我个人角度简单说明下。
首先说结论:费米问题实际上是通过将复杂问题不断拆分为较容易获得数据的子问题,再通过获得子问题的数据从而得到看似毫无头绪的主问题的结论。
从最经典的调音师问题开始:
一、估算芝加哥有多少调音师(N)
1. 经典解法(费米当年的解法)
Key:基于供需关系做拆分,拆分逻辑如下:
PS:其实具体当时费米的预估数值和方法度娘上有好几个版本,我这个版本来自知乎这位同学的回答:
https://www.zhihu.com/question/304174916/answer/1943302644。
但是那个工作日实际工作时间知乎答案用的是0.6*24,这个地方的数据估算略有问题,一天实际调音14.4个小时的调音师感觉和现实偏差较大,所以改成了0.8*8,考虑到调音都是在雇主家里,所以有路程时耗,乘了个0.8的系数。
解析:其实就是看总的需求量是多少,再分析对应单个供应个体产量,由此得到结论。
再分别对供需双方进行拆解,最终得到比较容易获得数据的子项,再对子项预估数据进行计算。
这样拆分的链路不算长,每个颜色代表依次拆分,其实也就四个层级,因为这个问题本身不算个很复杂的问题,但是最终拆解的子项也有7个,你需要逐一对七个数据进行估算,再进行简单计算就能得到这个看似摸不着头脑的问题的答案了。
说个题外话,这个地方其实有一个很有意思的点:
从概率学角度来讲,假如你每个子项预估数据的准确率为80%(哪怕最终的子项相对容易获取数据,但80%也已经是很高的准确率了),那么最终七个数据都准确的概率是0.2,正确概率如此小的一组数据的组合结果答案居然是跟实际情况差不多,这其实是运用了平均律理论。
这个理论蛮有意思的,简单来说就是A指标预估高了点,B指标预估低了点,最后通过一系列神奇的反应,误差大概率会被抵消很多(当然,这是基于你预估的数据不要太离谱的情况下)。
一般来说,最终得到的答案不会有超过一个量级的误差,感兴趣的小伙伴可以自己去看看。
2. 野生解法(自己想的)
Key :基于求解目标来源拆分,拆分逻辑如下:
解析:因为是自己灵光一闪想到的解法,所以每个指标都详细解释下。
其实想法很简单,不一定看供需,只看供应方,也就是调音师从哪些渠道来,再看每个渠道的产量,最终就得到了答案。
芝加哥音乐学院数量:这个问题渠道我只拆分了一个,就是音乐学院,因为哪怕我对调音师这个行业不是很了解,但是偶尔也听说过这个对专业的要求奇高,所以姑且认为调音师都接受过正规的音乐学院的教育,一般而言,一个城市的单个专业学院不会很多,1~5是个合适的区间,所以取个中间值3。
音乐学院每届人数:一般来说,单个专业的人数都会比较少吧,10个太少了,100个有点多,所以根据我大学专业人数,估计了个40。
每届调音师占比:据说调音师本身就是百里挑一,但是1%好像真的有点低,比如学钢琴的人数若是50%,相当于100个人从音乐学院毕业,其中1个调音师要服务50人,好像略微有点忙不过来的样子,所以估计了个2%,1个人服务25人,虽然也高,但是本身调音频率应该不算频繁,还能接受。
调音师平均工作年限:并不是每一届音乐学院毕业的调音师都会一直工作,总还是会退休的,也有半路跑路的,所以本来预估的是30年,但是同时考虑到别的城市的调音师没准儿也会跑来芝加哥(毕竟是个大城市),所以预估的工作年限调整到了35年。
最终得到了结果:84,据说当年实际结果是81,是不是这样一看,我这个野生解法还更合理……
才怪,毕竟我上帝视角,提前已经知道答案了,所以在给预估值的时候会下意识地往准确值上靠,知道了答案再给过程大部分时候还是比较容易的。
但是一开始我预估数据的时候每届调音师占比我考虑过1%,平均工作年限我也考虑过30年,这样算出来的误差其实就比较大了。
本身这类问题如果真的在面试中碰到了也是看思路而已,并不是很关注你最终给出来的结果数据。
我一直的习惯都是并不喜欢将问题太复杂化,一般而言,怎么简单怎么来,我给的思路其实数据相对容易获取到,但是可能确实有思路遗漏,只是刚好拼凑到了相对合理的数据,得到了一个相对准确的答案而已,但是不可否认,我这个也是一种拆分方向。
两种解法,分别对应了完全不同的子项,其实想了想这两种解法还挺有意思的,得到了三个结论:
(1)再宏大的事情最终都与细微的个体有关
看似很庞大的难以被撼动的问题,逐步拆分,一定会拆分到可执行的最小单元,而这个最小单元,往往是我们轻而易举能影响到的。比如气候问题,看似是国家层面的问题,但是最后拆解一定是每个个体,每个企业需要为此努力(好吧,其实我这篇文章是讲公益的~)
(2)看似毫不相关的个体之间是有微妙的联系的
因为每个问题解法并不是唯一的,这表明往往拆解的最细粒度的子项也会不同,但是不同拆分维度下的子项变更其实都会影响最后的结果,再继续推一下,也会影响到别的维度的子项(因为不可能以A思路拆分的子项变更导致最终结果变了,但是以B思路拆分的子项数据仍然和原来保持一致)。
比如调音师这个问题里面的调音师每年平均工作天数和芝加哥音乐学院的数量。这样看事物之间的关联性真有意思,所以有时候你要找的问题的答案没准儿来源于你未曾考虑过的领域。
(3)没有真正简单的解法
调音师问题我这儿展示了两种解法,第一种看起来似乎要略微复杂点,因为需要进行的拆分层级更多,需要获取的子项数据更多。
但是由于平均律理论,在无法准确预估的情况下,这样的拆分思路更容易获得与实际结果更为接近的答案。
而第二种看似简单,层级少,预估的数据少,但是就像我上面讲过的,一个数据的预估错误其实会导致与真实结果差异较大。
第一种解法更为稳妥,找到了受单个子项影响较小的解法,但是路径确实更长;而第二种解法很激进,但是在确保你所获得的数据是准确的情况下其实更为便捷,路径更短。
如今的互联网,在我看来更多的是在走第二种路子吧,看似简单却更有风险,两种方法并无好坏之分,只要你确定自己了解到的‘子项’足够正确。
二、拓展
看到一个类似的问题,估算中国有多少个加油站(N),提供一个我的思路&之前在知乎看到另一种解法:https://www.zhihu.com/question/304174916/answer/1943302644。
有别的想法的小伙伴可以在评论区多多交流呀(其实我更好奇调音师问题别的拆分维度)。
最后说一句,数学家真是全天底下最有意思的生物之一了!而且数学又是诸多问题解法的灵感源泉,真是一个伟大的学科!!!
本文由@重九 原创发布于人人都是产品经理,未经许可,禁止转载。
题图来自Unsplash, 基于CC0协议
太有意思了,最后一个我估计的是10万左右。
没看答案前,我是这么算的,15亿人,大概5人一辆车。每个车20天左右加一次油。单车加油一次5分钟。按经验算加油站一天集中工作时间也就2小时左右,同时一个站按6个枪算。最后就是10万。
这个方向比我的精简很多诶
5人一辆是谁告诉你的,20天加一次又是谁说的,大城市和小城市一样吗?