Skip to content

面试速答(先看这里)

**一句话结论:**1000瓶药水,1瓶有毒药,服用后一小时毒发,毒药可以无限稀释,那么一小时内最少用几只小白鼠一定能够找出毒药?

60秒标准回答:

1000瓶药水,1瓶有毒药,服用后一小时毒发,毒药可以无限稀释,那么一小时内最少用几只小白鼠一定能够找出毒药?

这个是一道典型的考察程序员对二进制理解的题目,我们简化一下,假如现在我们有4瓶药水。把瓶子标上号,1、2、3、4

然后把1、3混合在一起喂给老鼠A吃,把23混合在一起,喂给老鼠B吃,如果A挂了,那么就是1有毒;如果B挂了,那么就是2有毒,如果A、B都挂了,那就是3有毒。如果AB都没死,那就是4有毒

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**这个是一道典型的考察程序员对二进制理解的题目,我们简化一下,假如现在我们有4瓶药水。
  • **要点2:**然后把1、3混合在一起喂给老鼠A吃,把23混合在一起,喂给老鼠B吃,如果A挂了,那么就是1有毒;
  • **要点3:**为啥要把13混在一起,23混在一起呢?
  • **要点4:**所以,如果8瓶药水,那么就是需要3只老鼠即可,因为2^3 = 8,如果是 16瓶药水,就需要4只老鼠。

**记忆锚点:**1000瓶药水

加分表达:

  • 然后把1、3混合在一起喂给老鼠A吃,把23混合在一起,喂给老鼠B吃,如果A挂了,那么就是1有毒;
  • 如果B挂了,那么就是2有毒,如果A、B都挂了,那就是3有毒。
  • 所以,如果8瓶药水,那么就是需要3只老鼠即可,因为2^3 = 8,如果是 16瓶药水,就需要4只老鼠。

追问准备:

  • 1000瓶药水,1瓶有毒药,服用后一小时毒发,毒药可以无限稀释,那么一小时内最少用几只小白鼠一定能够找出毒药?
  • 为啥要把13混在一起,23混在一起呢?

典型回答 ​

1000瓶药水,1瓶有毒药,服用后一小时毒发,毒药可以无限稀释,那么一小时内最少用几只小白鼠一定能够找出毒药?

这个是一道典型的考察程序员对二进制理解的题目,我们简化一下,假如现在我们有4瓶药水。把瓶子标上号,1、2、3、4。

然后把1、3混合在一起喂给老鼠A吃,把23混合在一起,喂给老鼠B吃,如果A挂了,那么就是1有毒;如果B挂了,那么就是2有毒,如果A、B都挂了,那就是3有毒。如果AB都没死,那就是4有毒。

为啥要把13混在一起,23混在一起呢?其实就是二进制,2只老鼠,可以有以下四种组合:

0 0 ——> 0

0 1 ——> 1

1 0 ——> 2

1 1 ——> 3

所以,你懂了吧。。。

所以,如果8瓶药水,那么就是需要3只老鼠即可,因为2^3 = 8,如果是 16瓶药水,就需要4只老鼠。

所以,1000瓶药水,就需要

那么计算出来的结果就是9-10之间,所以需要10只老鼠可以检测出来。