有趣面试题

这篇博客分享了包括微软、腾讯、ebay等公司在内的一些有趣的面试题,涉及到逻辑推理、数据结构、算法等方面。例如,通过小老鼠试毒药的问题介绍了如何用最少的小老鼠找出有毒的水,以及如何通过天平找出不同重量的球。此外,还涉及到了二叉树的恢复、不用除法进行数组计算、戴帽子问题、海量数据找中位数等挑战。这些问题考察了候选人的逻辑思维、问题解决和算法应用能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,【微软】小老鼠试毒药

题目:

有1000瓶水,其中1瓶是有毒的,小老鼠如果喝了有毒的水会在一个星期后死掉,问至少需要多少只小老鼠来做实验,才能够在一星期后选出有毒的一瓶水。

答案:

10只。

我来解释一下,并给出一个方案,时间不是问题,一星期内肯定可以找出有毒的那瓶。 
给1000个瓶分别标上如下标签(10位长度): 
0000000001 (第1瓶) 
0000000010 (第2瓶) 
0000000011 (第3瓶) 
...... 
1111101000 (第1000瓶) 
从编号最后1位是1的所有的瓶子里面取出1滴混在一起(比如从第一瓶,第三瓶,。。。里分别取出一滴混在一起)并标上记号为1。以此类推,从编号第一位是1的所有的瓶子里面取出1滴混在一起并标上记号为10。现在得到有10个编号的混合液,小白鼠排排站,分别标上10,9,。。。1号,并分别给它们灌上对应号码的混合液。一周过去了,过来验尸吧: 从左到右,死了的小白鼠贴上标签1,没死的贴上0,最后得到一个序号,把这个序号换成10进制的数字,就是有毒的那瓶水的编号。 

检验一下:假如第一瓶有毒,按照0000000001 (第1瓶),说明第1号混合液有毒,因此小白鼠的生死符为0000000001(编号为1的小白鼠挂了),0000000001二进制标签转换成十进制=1号瓶有毒;假如第三瓶有毒,0000000011 (第3瓶),第1号和第2号混合液有毒,因此小白鼠的生死符为00000011(编号为1,2的鼠兄弟挂了),0000000011二进制标签转换成十进制=3号瓶有毒。

支撑算法:Bloom Filter算法

题目2:11瓶酒,有一瓶有毒,找出这瓶酒

答案2:因为2^3=8<11<2^4=16,所以用4个位就可以表示,所以四只老鼠。

题目3:11瓶酒,有一瓶有毒,找出可以喝的9瓶酒

答案3:http://blog.youkuaiyun.com/hbjiaxiaoxue/article/details/12585643

2,【微软】N球称重量

题目:有N个球,其中只有一个是重量较轻的,用天平只称三次就能找到较轻的球,以下的N值哪个是可能的?

Given a set of N balls and one of which is defective(weighs less than others), you are allowed to weigh with a balance 3 times to find the defective. Which of the following are possible N?(A,B,C,D)
   A. 12
   B. 16
   C. 20
   D. 24
   E. 28
解答:12个,分成三组4,4,4,先拿出其中两组称量,若左边轻,则坏球在左边,若右边轻则坏球在右边,若平衡,则坏球在剩下的四个当中。这样一次称量就将球减少到4个。将4个分成两组2,2,若左边轻则坏球在左边,反之在右边。第二次称量将球减少到2个。剩下两个再称量一次显然就确定了。也有其他可行的分组方法。A正确。
16个,分成三组6,6,4,先称量两组6个球的,则坏球要么在4个当中,要么在两组6个当中的一组,4个的用两次可以确定坏球。6个的再分成2,2,2三组,同样可以用一次减少到两个球,最后确定坏球。也有其他可行的分组方法。B正确。
20个,分成6,6,8三组,若在6个当中,两次可以找出,若在8个当中,将其分成3,3,2三组,两次也可以确定。也有其他可行的分组方法。
24个,分成8,8,8。第一次称量减少到8个,剩下8个两次可以确定,也有其他可行的分组方法。
28个无法三次确定。
总之,3个球以内一次,可一次称量确定。4~9个球可两次称量确定。10~27个球可三次称量确定。对于三次称量,只要第一次分成的三组,每组不多于9个即可。


3,【微软】知道了二叉树的哪些排序序列后,可以确定一颗二叉树。

We can revocer the binary tree if given the output of
   A. Preorder traversal and inorder traversal
   B. Preorder traversal and postorder traversal
   C. Inorder traversal and postorder traversal
   D. Postorder traversal 
解答:

中序遍历和前序遍历
中序遍历和后序遍历
中序遍历和层次遍历

这3种都可以确定一颗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值