今天从一道google的面试题,谈一谈知识之外的个人素质问题。

有一道面试题是这样的:
给你两个一模一样的玻璃球这两个球,如果从一定高度掉到地上就会摔碎,当然,如果在这个高度以下往下扔,怎么都不会碎,超过这个高度肯定就一次摔碎了。
现在已知这个恰巧摔碎的高度范围,在一层楼到100层楼之间,如何用最少的实验次数,用这两个玻璃球测出玻璃球恰好摔碎的楼高?
为了方便你理解这道题,这里可以给出两个具体的策略。
策略一:从第一层楼开始,一层一层往上实验,你拿着球跑到第一层,一摔,没有碎,接下来你又跑到第二层楼,也没有摔碎。你一层层试下去,比如说到了第59层摔碎了,那么你就知道它摔碎的高度是59层。
这个策略,能保证你获得成功,但显然不是很有效。
策略二:先预测,然后试一试。你跑到30层楼,没有碎,再跑到80层楼,碎了。虽然你把摔碎高度的范围从1到100减小到30到80,但接下来你就犯难了,因为你就剩一个球了,再这样凭感觉做实验,可能两个球都摔碎了,也测不出想知道的高度。
那最优的解决方法到底是什么呢?这道面试题背后他想考察的具体又是什么呢?
从表面上看,这道题和计算机技术完全无关,和产品设计或者市场推广似乎也没有关系,那为什么Google要考这道题呢?其实有两个目的,一是为了找到聪明人,二是为了判断这个候选人的工程素养。
世界上顶级的公司在招人的时候,更多强调一个人未来的可塑性,其中的一条就是要足够聪明便于培养,因此会考一些看似智力题的问题。
那为什么可塑性比过去的精力重要呢?因为大部分公司招人是做未来的事情,而不是重复过去的事情,像很多大学刚毕业的年轻人,过去在大学几年学的知识和后来一辈子要不断学习的东西相比,其实少的可怜。
所以,一个资质平庸学习能力不强的学生,即便他在大学时多学了一些专业知识,但是比起那些聪明好学、少学一两门专业知识的人来说,前者的后劲是不足的。
那这道题是怎么考察工程素养的呢?
答案是粗调和精调。
所以,这个题的最好的方法是,两个球,一个球,用来做粗调,一个球,用来做精调。具体的方法如下:
首先拿第一个球到10层楼去试,如果没有摔碎,就去20层楼,每次增加10层楼,如果在某个10层摔碎了,比如60层,就知道摔碎的高度在51到60层之间,接下来从51层开始一层层的试验,这样可以保证不出20次,一定能试出恰巧摔碎玻璃球的高度。
网友评论