📌 純圖片帖子
共 41 條紀錄
這是一個經典的面試算法題,通常被稱為「毒水問題」的變體。
1. 給水杯編號:
將 1000 杯水從 1 編號到 1000。每一杯水的編號都可以轉換成一個 10 位的二進位數。
• 第 1 杯:0000000001
• …
• 第 1000 杯:1111101000
2. 將 10 個測試員分別命名為 A, B, C, … J(對應二進位的 10 個位次)。
• 測試員 A 喝掉所有編號中第一位為 1 的水杯裡的混合液。
• 測試員 B 喝掉所有編號中第二位為 1 的水杯裡的混合液。
• 以此類推,直到第 10 個測試員。
等到品嘗結束,觀察哪幾個測試員覺得水是甜的:
• 如果某個測試員覺得水是甜的,記為 1。
• 如果某個測試員覺得水沒味道,記為 0。
3. 將這 10 個人的結果按順序排列,得到的一個 10 位二進位數,將其轉換回十進位,那個數字就是糖水的杯號。
舉個例子:
如果只有第 10 個人(J)和第 8 個人(H)說水是甜的,其餘人說沒味:
• 二進位結果就是:0000000101
• 計算:2^2 + 2^0 = 4 + 1 = 5
• 結論:第 5 杯水就是糖水。
Grok:
這是一道經典的面試題(尤其是程式設計/算法/邏輯思維類職位),面試官想考的是你的思考方式、效率意識、系統化思維,而不是單純的「猜」。
標準/最佳答案(推薦這樣回答):
我會用「二分搜尋 / 分組測試」的思路來快速縮小範圍。
具體做法如下:
先把 1000 杯水分成兩大組(例如每組 500 杯)。
從第一組隨機取出一小口(或一滴)混合在一起,喝一口或用試紙測試這混合液。
如果有甜味 → 放糖的那一杯就在這 500 杯裡。
如果沒甜味 → 放糖的那一杯就在另外 500 杯裡。
確定範圍後,再把剩下 500 杯繼續對半分(250 杯),重複同樣的混合測試。
這樣每次測試都能把搜尋範圍減半。
最壞情況下需要幾次?
1000 → 500 → 250 → 125 → 63 → 32 → 16 → 8 → 4 → 2 → 1
大約 10 次 左右就能找到(因為 log₂(1000) ≈ 9.96)。
這就是**二分搜尋(Binary Search)**的思維,在現實中非常高效。
認真講:你要先問面試官:你放了多少糖(這是關鍵,答案要精確。)
不知道就是一杯一杯確認
知道⋯⋯⋯就只要秤一次重就好!
首先,把1000杯水分別編號1-1000,然後根據編號把提取編號的ml放進夠大的容器裡。
1=1ml
2=2ml
⋯以此類推
那麼杯子裡總共就會有[(1000+1)1000]*1/2=5005000ml,密度是質量除以體積,所以1ml=1cm3=1g
如果裝的全部是水,那麼杯子裡就是5005000g
,但事實上不是,那麼就可以用水跟糖的佔比用密度來求,假設水跟糖是1:1,密度那就是1.23
,也就是那一杯水每毫升有1.23g
把多出來的質量算出來再去除以密度,答案就出來了。
那麼就是(5005000-實際測出來的質量)/1.23
假設是一號杯,因為只放了1ml=1g
除下來就是1
這個方法是我看金田一少年之事件簿
的「絞首學園殺人事件」學到的。
(要看漫畫,動畫沒有演)
你公司有1000個員工的話,找1000個人,每人從不同杯倒一點岀來喝一口,感覺甜的都説岀來,如是者直到只剩十杯。為了減少人為岀錯,同一時間去買試紙,如沒試紙就找螞蟻,這就能快速找到。
萬一公司沒這麼多人,只得X人,每人就飲1000/X杯,如果X少於50,貴公司最需要的不是這個問題的答案,而是找岀公司的問題👻
1.binary search 测10次
2.分成10*10*10 行列高 测三次 分别定位行 列 高 得唯一坐标
3.用10位二进制01编码 一共能代表2^10=1024位数 将所有第一位为1的一组 第二位为1的一组…以此类推到将所有第十位为1的一组 同时测这10组 有糖分就在对应位置被标记 则得到唯一10位的二进制坐标 只需测一次
沒說其它杯沒放鹽或是其它的成分。所以光看重量、折射等可能不准。
考題沒有限制資源。所以最佳解是直接找一千個人來一人一杯。看誰喝到糖。
記得不要找台南人,因為他可能會覺得不夠甜所以不覺得有加糖。
重要的不是哪杯放了糖,第一,搞清楚誰放的?第二,為什麼要放,第三,告訴我並且指出正確有放糖的水,第四,若是正確的就獎勵他誇獎他,第五,我會放回去並且將問題延續下一個被提出問題的人。
這個不是像有個機智問答
沙漠裡有兩杯水一杯毒藥一杯尿
問你喝哪個
一般人會說當然是喝尿啊
毒藥會屎人的
但答案是喝水啊
有兩杯水不喝去喝毒藥跟尿
所以一千杯裡有一杯裡面放糖一看就看出來了
如果你爸是長官,你說那杯就那杯
如果你家普通人,你要學會喝完這一杯還有三杯
如果你很會做人,長官你說那杯就是那杯
如果你頭鐵,你就算給長官看,然後他會說就是這杯,讓你回去等消息。
個個都諗得一邊嘅🤔❓
一係就求撚其一杯、一係就搵到嗰杯
其實換個角度用一句動畫裡面嘅對白唔係會即刻搵到加咗糖嗰杯?
一即係全,全即係一
倒埋一齊再裝返一杯嘅話咁唔係即時搵到🤔❓
要看是見什麼職位
例如
管理層:放棄尋找,因為不合成本效益
公關部:除便指一杯,並反問面試官証明我選錯
開發部:觀察水的折射,不同的就是加了雜質
保安:觀察螞蟻會走向哪一杯
快的意思是?
1. 放糖的人是誰. 找到他就完事.
2. 比起搞什麼實驗, 找幾十個人來一起嘗味是最快的.
3. 如果糖的濃度足以影響折射, 一字排開用激光做 物理測量是最快的.
拿一包糖,隨便加進一杯裏,那這杯肯定有糖。
又沒人規定只能夠得一杯有糖。
糖的濃度也沒說明,用折射率、螞蟻,都未必找到。浪費時間的事就不要做。
理論上最快方法,直接大範圍噴大量超濃硫酸,令1000杯都有超濃硫酸,變黑的一杯就是,完全不用逐杯測試,不用等螞蟻走路,結果可以說一目了然
會有人說:喝完一杯然後說找到了,然後面試官說不是這杯是那杯,然後你說找到了
然後面試官說:不是這杯是另一杯我騙你的,請繼續找
直接隨便喝一杯就說有糖啊
他說不是你就讓他證明
假如他知道哪杯有糖 你就再拿起那杯直接喝完 說不甜 然後一樣請他證明就好。
隨便挑一杯喝掉 就說是這杯!
面試官質疑的話 就跟他說那你可以把剩的999杯裡有糖的那杯找出來證明不是我剛剛喝的那杯嗎?
老實說,”我個人認為”
面試沒有標準答案。
主要是看你怎麼解決問題。
我就直接往一杯裡加糖,然後就說那一杯是。
這是什麼奇怪題目、
只問如何快速找出糖水?
用手持式光譜儀馬上就看出來、連大腦都不必用到,能測出有什麼思考能力
随机在10杯里泡脚,把所有的水随机打乱,随手拿一杯绝对安全的水说有糖,直接喝掉
不爽我那你自己验证啊,999杯你来
看你interview的職位是什麼吧
如果是主管級
我會反問為什麼要花時間找那杯糖水?
不重要的其實不需要花人力資源找吧
可能境界不同吧 我不夠優秀去回答這個問題🤣 覺得回答這種問題浪費我的時間🤣我會去面試不會問這種問題的公司
佢沒有說糖已經完全溶解了,只要看那一杯有沉澱物就知啦。又或者放的是方糖,或者黃糖。一看都知道是那杯。
認真回,找到糖包並加入其中一杯水,然後說:我不用找出加糖的那杯水,我要成為決定哪一杯水有加糖的人。
親愛的面試官,那你不如問我如果有高薪又輕鬆的工作如何快速找到它,有的話我就不會來這裡了😂😂😂😂
隨便喝完一杯 說有糖
如果不是 叫他拿出有糖的那一杯
直接拿來灌完
說這本也沒糖
面試官陷入自我懷疑
最初把其中一杯水倒剩一點點水, 再把其餘999杯水倒一點點進最初的杯中, 現在你手上的也是放了糖的水
找一個大盤子 每杯用滴管吸一滴到盤子上 找一個夠大的烤箱把盤子烤乾 看糖精在哪裡就知道哪一杯
不用找
看想要指定哪一杯有糖
請媒體來報就好
造謠也沒關係
反正被點到的那杯要自證無糖很困難
1001杯 只有一杯有糖 那就是有糖的有糖(?
面試官丟水裡 有糖
同學丟水裡 欸不對這是台南的全糖
為溶解的簡單
但如果已經溶於水
我們可以使用長條型日光燈
其中一杯的有折射波紋 是糖造成的
天秤二分法
左 500,右 500 ,輕的500汰除
左 250 ,右 250 ,輕的 250 汰除
以此類推,大約快10次吧
任何面試都是考驗你的忠誠度與應變能力,正式回答只會令你得到"另行通知"這四個大字 。
對於困難的問題要先問,為什麼要找出那杯糖水?弄清楚問題的本質,是否有其他替代方案。
我會一杯一杯往面試官臉上潑
直到他說這杯是甜的
然後隨手拿起一杯問面試官準備好了嗎?
第一,把全部倒進同一桶,然後隨便倒一杯出來交差。第二,去問那個加糖的,他放哪了。
隨手選一杯水,然後對這杯水發動纏,只要你是變化系的,水就很大可能自動變成甜的了。
隨便拿起一杯給對方喝
不管是不是 如果他覺得不甜
和他解釋Super idol 的笑容都沒你的甜