跪拜 Guibai
← Back to the summary

10 Mice, 1000 Bottles, and the Binary Trick That Exposes CRUD-Only Backend Engineers

A few days ago, a buddy went to a big tech company for an interview and came back to complain to me: "Fox, ByteDance's second round completely stumped me! Among 1000 bottles of wine, one is mixed with poison. You use mice to test for the poison, and a mouse dies 1 hour after drinking the poison. What's the minimum number of mice needed to find the poisoned bottle? My mind went blank and I blurted out 20. The interviewer just smiled, said nothing, and directly told me to go home and wait for a notification..."

Actually, the correct answer to this question is: 10.

Many people, upon hearing this number, react with: That's impossible! How can 10 mice possibly enumerate the states of 1000 bottles of wine? If you are still stuck in the traditional thinking of "one mouse drinks one bottle," then in front of this classic interview question about high concurrency and high compression, you can only be "dimensionally struck" by the interviewer. Today, Fox will take everyone through the programmer's underlying logic (binary and bitwise operations) to thoroughly and clearly understand this question!

Core Pain Point: Why is it so hard to think of 10?

Most people get stuck on this question because they fall into "assembly-line thinking"—always wanting to let mice try one after another, or to use the mice's lives to fill the gap.

But what the big tech interviewer is testing is not a brain teaser at all, but the essence of Information Theory and computer's underlying storage:

Isn't this just natural binary?

One mouse can express 2 states (0 or 1), two mice can express 2×2=4 states. So, how many states can a combination of 10 mice express?

1024 is greater than 1000! This means that the combination of life-and-death states from 10 mice can completely cover all the numbers of the 1000 bottles of wine!

Dimensional Strike: The "Distributed High-Concurrency" Drinking Method for 10 Mice

Understanding the principle, how do you actually operate it? Do you just make the mice drink a mixture of hundreds of bottles? The mice would die of alcohol poisoning before the poison gets them.

The truly hardcore operation is: "Micro-sampling + Labeled Parallel Testing"!

Image

Step 1: Label the Wine with Binary Tags

We number the 1000 bottles of wine from 1 to 1000 and convert them into 10-digit binary numbers:

Step 2: Prepare 10 "Dedicated Test Pools"

We prepare 10 test pools, corresponding to the 1st to 10th bits of the binary number.

The rule is very simple: Look at the wine's binary number. If the nth bit is 1, take a drop from this bottle and put it into the nth test pool!

After the distribution is complete, each pool contains a mixture of micro-samples from hundreds of bottles of wine, but they are isolated from each other.

Step 3: High-Concurrency Parallel Poison Testing

We bring out 10 mouse tool-men and line them up. Let mouse n drink from the corresponding test pool n!

Mouse10 (drinks Pool 10) ... Mouse3 (drinks Pool 3) Mouse2 (drinks Pool 2) Mouse1 (drinks Pool 1)

Since the 10 mice drink from their respective pools simultaneously (high concurrency), one round of testing handles everything!

The Final Blow: Check the Mice's Fate to Pinpoint the Poison

After drinking, wait quietly for the poison to take effect (assuming the poison has a fixed incubation period). Next is the moment to witness a miracle.

After the results are out, we record a dead mouse as 1 and a live mouse as 0. Arrange the states of the 10 mice in order to form a binary number:

See that? The death combination of the mice is the absolute address (pointer) of the poison! No extra mice are needed; the life-and-death states of 10 mice perfectly map to every corner of the 1000 bottles of wine.

Fox's Technical Summary: What Are Big Tech Companies Really Testing?

This question seems like a logic brain teaser on the surface, but in the eyes of an architect, it maps to extremely core backend technical ideas:

  1. Bitmap and Bloom Filter: Using extremely small space (10 bits) to express the state of massive data. In massive data deduplication and Redis cache penetration defense, Bloom filters use this "many-to-one mapping" bitwise operation idea.
  2. Space for Time vs. Time for Space: If you use 1 mouse to poll and drink 1000 times, that's trading time for space, which big tech companies can't afford to wait for; the interviewer wants efficiency, 10 mice solve it in one go, which is the ultimate compression of state space.
  3. The Underlying Power of Binary: Many so-called backend experts who have worked for 5 or 6 years are stuck in business CRUD day after day and can't even figure out bitwise operations like &, |, ^, <<. This question is a touchstone that instantly reveals your sensitivity to the analysis of underlying computer principles.

Next time you go to a big tech company for an interview and encounter this kind of problem, don't panic and start counting. Remember, in the world of computers, everything can be binary!

Welcome to follow 'Fox loves to share', using the most hardcore technology to help you dimensionally strike every interview! Like, Wow, and Forward, brothers, get on it!

Article first published at

Comments

Top 8 of 18 from juejin.cn, machine-translated. The original thread is authoritative.

辞去归来兮 5 likes hot

Don't get it. One mouse is clearly enough. Just have one mouse keep testing the poison. It'll die when it drinks the poisoned one. There's only one poisoned bottle, so once it hits it, you've eliminated it. Kind of like asking a PhD student whether rain falling from 10,000 meters would kill someone? A bunch of PhDs doing all sorts of calculations, but they're no match for a cleaning lady asking: 'Haven't you ever been caught in the rain?'

辞去归来兮

Don't ask me if the efficiency would be super low, because I feel sorry for the mouse [innocent dumbfounded]

你说是那就是  → 辞去归来兮

Haha, this kind of problem should also have time and attempt limits, otherwise the question is meaningless.

王珩280 8 likes hot

Without any other constraints, I think one mouse is enough. Just let this mouse drink. If it doesn't die, switch to the next bottle. If it dies, you've found the poisoned wine. [grin]

hinotoyk

hahahahahahahahahahahahahahahahahahahahahaha

WavesMan 1 likes

What if it gets alcohol poisoning from drinking two bottles (just kidding)

省委书记沙瑞金

Hahaha, holy crap

林魉魉 1 likes

2^10=1024. Isn't the algorithm just a simple binary search? Why make it so convoluted?

刺骨呆子

It's possible that a micro-sample isn't enough to reach a lethal dose [daze]

用户30662118362

I thought you had to drink a whole bottle to reach the lethal dose.

伊人欧巴

It's clearly copied from somewhere else. Why do you have to make it up as your brother's interview question? Has the Zhihu sob-story style blown over to Juejin now? [awkward]

用户63230336312

Awesome