[转转转]面试常见逻辑推理题目及答案整理

程序员面试喜欢考察应聘者的逻辑思考能力,但是存在一个弊端就是由于题目有限有些应聘者之前接触过被考察的题目就可以很流畅的回答出来,而没接触过的应聘者即使有相同的逻辑推理能力也很难流畅的表达出来。这样显得这个环节不太公平,但是我们只能通过增强自身的经验来克服这种情况。下面是我收集整理的一些逻辑推理类型的题目:

经典面试智力题200+题和解答中有更多类似的逻辑推理题目,感兴趣的同学可以看一下,我这里只列举常见的逻辑题目。

题目列表

1. 1000个瓶子里有一瓶毒药,老鼠喝了毒药之后一天后死亡, 一次可以喝多瓶毒药,问检测出毒药最少需要多少只老鼠?

这个题是对bit位的应用,1000接近1024,所以需要10个bit位,对瓶子进行编号,从0到999,这样需要10只老鼠。

老鼠用 a ,b ,c ,d ,e ,f ,g ,h ,i , j ,表示

瓶子的编号分别为:

第0号瓶:00000,00000

第1号瓶:00000,00001 a

第2号瓶:00000,00010, b

第3号瓶:00000,00011 a b

第4号瓶:00000,00101 a c

第5号瓶:00000,00111 a b c

。。。。。。

第999号瓶:11111,00111 a b c - - f g h i j

同时给老鼠编号,从1,2,…10,从低位开始,让第n个老鼠喝下第n个bit位为1瓶子中的药水。24小时后,若所有的老鼠都没有发病,那么是第一个瓶子有毒,如果有一些老鼠发病,那么这些发病老鼠对应的位数置为1得到的数字最低位+1变成整数后,对应的数字即为有毒药水的编号。

比如:第四瓶有毒,全部生病的小鼠得到的(编号第三号)00000011 +1 =00000100 = 4 。第四瓶有毒(没有第0瓶,所以加1)

所以只要10只老鼠就能在 24小时后 排查出到底那瓶有毒。

2. 两个人抛硬币来决定谁吃这个苹果,先抛到正面者吃。问先抛者吃到苹果的概率是多少?

假设第一个人抛中概率为P,第一次第一个人未中为1/2 ,而此人第二次的时候抛说明第二个人仍然未中,此人后续抛中概率为(1/2) * (1/2) * P.

而此人此处抛中为 P = 1/2 + 1/4 P ===> P = 2/3

这里对于P有一个误解,就是为什么不继续考虑第三次第四次的情况,要说明一下P并不是一个常量,而是一个变量或者表达式,所以只在右侧出现一次就代表了递归求解其他的所有情况。

3. 已知23个硬币,10枚正面朝上,13枚反面朝上。你被蒙住眼睛,而你的手又摸不出硬币的正反。需要将硬币分成两堆,可以对硬币进行翻面,使两堆中的正面朝上的硬币数量相同。

分成10:13的堆。假设左边的堆中正面数量为n(n<=10),则反面数量为10-n。右边的堆中正面数量为(10-n)。将左边全部进行翻转,则左边堆中的正面数量为(10-n)。

4. 一个函数随机生成0-4的数字,如何通过这个函数得到0-7的随机数(概率相等)

0-4的随机数字生成器rand4可以随机生成等概率的五个数字,要想使用五个数字表示更大范围的数字可以用5进制来表示:

我们可以设计一个5进制的2位数,高位和低位均由rand4表示,这样得到的随机数在十进制的0-24等概率分布。而要想得到0-7的随机数则需要8个数字,因此需要对rand24取整后等分,可表示为rand7=(rand4*5+rand4)<=23?rand24/3:loop,即将rand24取前24个数等分为8份作为rand7的取值依据。

5. 有五个山洞,一字排开,一只狐狸住在某个洞,每天晚上会换住到相邻的洞中,一个猎人只能每天早上去一个洞抓狐狸,问猎人需要几天,每天进哪个洞?

尽量将狐狸向一个方向赶

所以可以采用234234的方案。

6. 砝码称重问题

Q1:有十组砝码,每组十个,其中九组每个砝码的重量为10g,另外一组每个砝码的重量为9g,问用一个能显示克数的秤,最少几次能找到这组9g的砝码?

A1:1次。

将砝码分为1~10组,从第1组拿一个砝码,第2组拿两个砝码,以此类推,第10组拿十个砝码,放到秤上称出克数y,则x=550g-y,x组即为砝码重量为9g的一组。

Q2:有一个天平,9个砝码,其中有1个比其他8个轻,问至少称几次能找到轻的那个砝码?

A2:至少2次。

将砝码分为3组,每组3个,拿其中两组到天平上称(第1次),如果一样重,则轻的为剩下那组,不一样重,则也能分辨出哪一组轻;
取轻的那一组的3个砝码,从中选出两个到天平上称(第2次),若一样重,则剩余的1个为轻,不一样重,则轻的也能轻易找到。

7. 罐子和水

Q1:现在有不限量的水,你有两个容量为5L和3L的罐子,请准确称出4L水。

A1:先把5L的罐子装满,然后将5L罐子里的水倒入3L罐内,直至倒满,此时5L罐子中剩2L水;将3L罐子内的水倒出,将5L罐内的2L水倒入3L罐内,此时3L罐内有2L水;将5L罐子中倒满水,后将5L罐子里的水倒入3L罐中,直至倒满,此时3L罐内2+1L水,已满,5L罐内便剩下(5-1)=4L水。

Q2:不好意思,还是有取之不尽用之

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丧心病狂の程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值