3道有意思的逻辑思维面试题

3道有意思的逻辑思维面试题,第1张

从小到大做了无数道智力题,工作之后接触到程序员逻辑思维面试题,也曾经饶有兴致的研究过。这些智力题,表面上是考智力水平,实际上是考察逻辑思维能力,而从更一般的意义而言,是在考察解决问题的能力。

一个人学习、研究、工作,其实无时无刻不是在训练或使用解决问题的能力。解决问题的能力,在我看来,有很多方面,其中很重要的一方面就是逻辑思维能力。很多人对于逻辑思维的理解是存在误区的,总以为逻辑思维只是理科生和工程师用的东西,与文科生甚至普通人没有什么关系。而实际上, 逻辑思维所涉及的范围远远不止以数学为基础的理工科,而是一种涵盖各种学科、各种工作的通识能力 。

比如说,大学学文科专业的罗振宇,几年前开了一个节目叫“罗辑思维”,强调用逻辑思维来理解世界,节目的内容涉及社会、历史、经济、人文、理工等各方面,俘获了几百万乃至上千万的粉丝。后来罗打造得到APP成为最知名的知识付费应用,就是以罗辑思维这个品牌栏目为底子做的。

最近看了一些大的科技公司(比如谷歌、微软等)等招聘员工的面试题,很有意思,在这里与大家分享,并共同探讨。

这是微软非常知名的一道面试题,曾经难倒无数学霸才子:不是说好的考程序题或者智力题吗,怎么来了一个社会基础建设问题?

为什么是圆的?方的不行吗?圆的究竟优势在哪里?

这就是在考察面试者的逻辑思维了。其实认真思考之后,不难得出“标准答案”:

如果面试者能够这样回答,说明他的逻辑思维不错,或者至少生活经验比较丰富。

那么这是唯一的正确答案吗?没有这么简单。我从一些优秀者的回答中,还发现了其它也很有道理的答案:

如果面试者能够在所谓“标准答案”的基础上,多给出几个原因,那么说明不仅逻辑思维很好,工程思维也非常棒,善于运用生活中的知识。这道题基本上给考官的印象应该是满分了。

但是,关于这道题的讨论并非到此为止。 下水道井盖一定是圆的吗?有没有可能是方的或者其它形状的?

传说有一位面试者,在被问到该问题的时候,坚持说也可以用方的井盖,并给出了合理的理由,最终成功说服了考官。下面是传说的面试过程:

这位面试者不仅逻辑思维和工程经验丰富,说服人的能力也非常强,让考官觉得他是不可多得的人才,被推荐到更需要综合技能的销售部门工作。

其实,像这样的逻辑思维面试题并没有所谓的标准答案,考官的真实目的是 考察面试者的逻辑思维能力 ,更一般的讲,是 解决问题的能力 。下水道盖也可以是方的,只要你能给出合理的理由,自圆其说。

这是Google的一道面试题:

有一栋100层高的大楼,给你两个完全相同的玻璃球。假设从某一层开始,丢下玻璃球会摔碎。那么怎么利用手中的两个球,用什么最优策略知道这个临界的层是第几层?

最笨的办法谁都能想到:

可是这个办法,最坏的情况下要试99次,平均意义上要试49次。而且只用了一个球,另一个球没利用上。显然不是最优的策略。

计算机专业的学生很容易想到更高级的办法——二分法。具体是:

用这种方法,需要log100,也就是大约7次,能够找到答案。

面试者如果能这样回答,说明对计算机专业基本算法是有了解的。但是,仔细想想,这个方法对吗?

这个方法显然是有毛病的。比如说我举一个反例,第10层是临界层的情况。按照二分法来执行,第一次试验第50层将摔碎,第二次试验第25层又将摔碎,此时两个玻璃球都摔碎了,将没有办法继续进行试验!

注意最多有两个球,也就是最多可以摔碎两次。尽管上述二分法不可行,我们是否可以借鉴其思路,先大致确定一个小的范围,然后逐个试验呢?根据这样的思路,可以提出下面的方法:

这种方法最坏的情况出现在临界层为100时,将需要试验10+10=20次;最好的情况出现在临界层为2时,只需要试验2次。而平均意义上大约需要试验10次。怎么样,是不是有效的利用了两个球呢?

按照吴军老师的说法,这种解题方法其实体现了 一种典型的工程思维:粗调和精调 。其中第一个球用于粗调,确定一个大致的范围;第二个球用于精调,在大致的范围内确定精确的值。

其实,粗调和精调的工程思维在生活和工程中都很常见:

从这几个例子,我们可以对粗调和精调的优点及注意事项进行简单的总结:

了解了粗调和精调的概念之后,我们回过头来,再次考察这道玻璃球题目。如果有3个玻璃球呢,是否有更好的方法?

当然是有的,标准的答案是采取三步试验:

细心的读者会发现,这三步试验分别把答案的可能范围缩小了4、4、5倍,最终确定了答案。

为什么是这几个数呢?而且,回过头来想想,为什么两个小球的情况下,两步试验缩小的范围分别是10、10呢?

这几个数的选择,当然绝非巧合。实际上,2个和3个玻璃球的情况下,缩小倍数分别是按照根号下100(也就是10)、3次根号下100(大约是5)来选择的。 推广到n个玻璃球的情况下,每步试验的范围缩小倍数应该是n次根号下100。 具体证明,我们在这里不做讨论。

这绝不仅仅是一个小小的逻辑题, 考官想考察的是面试者的逻辑思维,包括工程思想、分析能力以及举一反三的归纳概括能力 。知道标准答案不算什么,吃透这道题并弄清背后的深刻原理,才是本事。

这道题相对前两道来说要简单一些。据说Google过去面试产品经理的时候会问到这个问题。什么数据都不给,直接就这么问。

有些中国面试者可能不乐意了:你又不告诉我高尔夫球多大,也不告诉我这个房间的尺寸,什么数据都没有,我怎么算啊?

但是这个题没错,考官考察的就是不给数据你怎么计算!要不然小学生都能算出来了。

有些人一看没给数据,可能就会胡猜:一间普通办公室,又不是很大,高尔夫球直径大概几厘米,直观感觉应该能装几千个或者几万个吧?

然而答案恰恰违反我们的直觉:至少能装几十万个,甚至能装上百万个。

我们来算算:

一个房间竟然能装这么多高尔夫球?是不是大的出乎我们的意料呢?

有人可能会怀疑,这道题如此简单,小学生都能做,侮辱人智商吗?然而这道题实际考察的,是我们解决问题的方式。Google对产品经理的要求是:

有的面试者在没给数据的情况下可能会根据直觉乱猜,这是做事的大忌,因为很多东西其实是反直觉的,乱猜可能导致完全错误的结论,这是很危险的。最准确的做法是拿工具量一下会议室的长宽高以及高尔夫球的直径,然后进行计算。不过,在没有准确数据的情况下,合理的估算也是可行的,甚至也是必要的,估算能够帮助我们大致知道答案的范围,这在很多情况下已经足够支持决策!

大家在面试的时候,难免会遇到让人摸不着头脑的逻辑题,这类题目让同学们往往连答案应该回答些什么都摸不清楚,只能和面试官四目相对,非常尴尬。

其实,很多面试的考官,都是从题库随机挑选逻辑题来考验同学们,面试官有时候自己也未必完全摸透这类题目,所以面试的时候不必过于紧张,就算答不出来啊也非常正常。

在我的理解中,这类题目主要还是考大家的思路,至于答案标准与否,其实不是特别重要。

本文总结了面试中我自己面试中遇到的几道非常常见的逻辑题,大家可以作为面试前的突击复习材料。

一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其它人帽子的颜色,却看不到自己的。主持人先让大家看看别人头上戴的是什么帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子?

三个人

若是两个人,设A、B是黑帽子,第二次关灯就会有人打耳光。原因是A看到B第一次没打耳光,就知道B也一定看到了有带黑帽子的人,可A除了知道B带黑帽子外,其他人都是白帽子,就可推出他自己是带黑帽子的人!同理B也是这么想的,这样第二次熄灯会有两个耳光的声音。

如果是三个人,A,B,C。A第一次没打耳光,因为他看到B,C都是带黑帽子的;而且假设自己带的是白帽子,这样只有BC戴的是黑帽子;按照只有两个人带黑帽子的推论,第二次应该有人打耳光;可第二次却没有...于是他知道B和C一定看到了除BC之外的其他人带了黑帽子,于是他知道BC看到的那个人一定是他,所以第三次有三个人打了自己一个耳光

N个人是黑帽子,就会在第N天,有N个人打自己一个耳光。

一个是两种药片,每种有两个,一个人需要早上吃两种药片各一个,现在这四个药片混在一起了这个人什么方法吃。

把所有的4颗药丸都切开成相等的两半,然后早上和晚上,分别吃掉每颗药丸的一半

一个5L,一个6L的瓶子,要得到3L的水,问什么方法

6-5=1 1L水放在5L那个瓶里面,然后再装6L水,往5L(里面已经有1L)里面倒,这样就会剩下2L水在6L里面,再把2L水放在5L里面,再装一次,不就可以6L那里到处3L水到5L里面,自己就剩下3L了

一共1000瓶酒,其中一瓶有毒。如果一只老鼠喝了有毒的酒,会在一天之后死亡,那么如果给你一天时间,然你判定哪瓶酒有毒,至少需要几只老鼠?

答案是10只。这个需要使用二进制编码来解决,1000瓶酒至少需要10位二进制数来进行编码。然后取十只杯子分别代表这是个二进制数的十个位,分别将1000瓶酒倒入其编码为1的对应的杯子中。取十个老鼠分别喝十个杯子中的酒,一天之后,就可以根据喝哪些杯子的老鼠死掉来确定出有毒的那瓶酒的编码,从而确定哪瓶酒有毒。其根据就是只有有毒酒的编码对应的毒死老鼠的杯子位置。这个题目就是利用了二进制编码的一些特性。

还有一些其他的题目也使用这些特性,比如使用特殊的位运算,一般使用比较多的位运算就是与、或和异或。

这样,就可以对应到现实生活中的一些为题,比如一个类似的问题原本我们想需要用900多台服务器来解决,经过这样分析后就可以使用10台服务器来解决,大大节约了成本。

再比如,国王有10000桶酒,已知一桶酒有毒,喝了之后一定会在23-24小时内死亡(例如0点喝,会在23-第二天0点这个时间段死亡)。现在国王要在48小时后举办一个宴会,需要用罪犯实验,请问最少几个罪犯。(可以混合酒)

如果是常规利用二进制解题的话,那就需要14个犯人,2^14=16384>10000,但是这样一来死亡时间这个条件就用不到,也不是最优解。

应该利用酒死的时间是固定的,一个罪犯像上面那样可以表示成25种状态,三个罪犯就可以表示25 x 25 x25种状态,超过10000了,所以只需要三个罪犯。

有8个小球,其中七个的重量是相同的,有一个较轻。给你一个天平,问秤几次能找出那个较轻的小球,若天平只能秤两次,又该怎么秤

第一次两边各放随机三个,如果平了,则另外一个是轻的,若不平,还有第二次,拿出那三个轻的,在两边随机放一个,就能测出哪个最轻了。

本体图解参考:

https://blog.csdn.net/hinyunsin/article/details/6632062

已知: 每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有单独的加油机),一箱油可供一架飞机绕地球飞半圈

问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场)

分为3架飞机5架次和3架飞机6架次

1. 3架飞机6架次

(上图)ABC 3架同时起飞

(上图)1/8处,C给AB加满油,C返航。此时飞机的油量分别是:A: 3/4, B: 3/4, C: 3/4。此时C分别给A和B加满油,三架飞机当前油量分别是:A: 1, B: 1, C: 1/4。C返回机场。A、B继续向前飞行。

(上图)1/4处,B给A加满油,B返航,A到达1/2处,此时C已经返回机场,三家飞机此时油量分别是:A: 3/4, B: 3/4, C: 0。此时B给A加满油,C加满油,此时三架飞机的油量分别是:A: 1, B: 1/2, C: 1。然后B返回机场,A继续向前飞行。

(上图)当A飞行至半圈位置时,B已经返回机场并且加满了油(假设加油时间为0),此时,B和C沿逆时针方向飞行,三架飞机当前油量分别是:A: 1/2, B: 1, C: 1。A继续向前飞行。

(上图)当A飞行至另外半圈的1/4位置时,三架飞机剩余油量分别是:A: 1/4, B: 3/4, C: 3/4。此时,C给B加满油。此时三架飞机油量分别是:A: 1/4, B: 1, C: 1/2。C返回机场,B和A继续向前飞行。

当A飞行至另外半圈的1/2位置时,C已经返回机场,A和B相遇,此时三架飞机剩余油量分别是:A: 0, B: 3/4, C: 0。B给A加1/4的油,三架飞机剩余油量:A: 1/4, B: 1/2, C: 1。C加满油从机场逆时针飞出,B返回机场,A继续向前飞行。

(上图)当A飞行至另外半圈的3/4位置时,A和C相遇。此时三架飞机的油量分别是:A: 0, B: 1/4, C: 3/4。C给A加1/4的油,此时三架飞机的油量分别是:A: 1/4, B: 1/4, C: 1/2。C掉头返回机场,A和B继续向前飞行。

(上图)三架飞机顺利回到机场!

2. 3飞机5架次

(1)3 架飞机同时从机场出发,飞行八分之一周(A点),各耗油四分之一。此时某架飞机给其余两架补满油,自己返回基地;

(2)另一架飞机和目标机结伴,飞至四分之一周(B点),给目标机补满油,自己返回;

(3)目标机独自飞行半周(C点);

(4)与从基地反向出发的一架飞机相遇,2 机将油平分,飞至最后八分之一处(D点);

(5)与从基地反向出发的另一机相遇,各分四分之一油,返回。

75道程序员面试逻辑题和答案

https://blog.csdn.net/qq_38361726/article/details/79824632


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11010944.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存