微软/IBM面试题之帽子问题、死狗问题

 
       
       由微软/IBM面试题所想到的——
                                   —浅谈C语言选择结构 条件语句
           测试空间旗下大头针出品
   人生要面临各种各样的选择,应该说选择是无处不在的。我们上街买衣服会多跑几家商场,我们找个女朋友,也会对比多个。选择的时候一般的原则是货比三家。无论用什么样的方法,最终我们还是将衣服买了下来,将属于自己的女朋友领会了家。结果是我们拥有了新的衣服或者新的女朋友。而我们通过买衣服或者选女朋友这些事情,得出一个朴素的道理,当我们选择的时候要货比三家。其实如果我们再仔细想象,我们为什么会买这件衣服蓝色的T shirt,不买那件那件蓝色的T shirt。因为这件蓝色的衣服,是刘德华代言的,而且是圆领的T shirt。哦,突然间恍然大悟,当我们选择一样东西的时候,最重要的是清楚的知道我们选择的条件。条件清楚了我们就知道该买什么了。
  日常生活是这样的,当我们做程序的时候也是同理。因为程序就是要解决日常生活中的问题,是对日常生活的抽象。
  当你学到选择结构的时候我们要学习if语句,而对与if语句来说最重要的就是,if语句的条件。
 例如:
 
一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其他人帽子的颜色,却看不到自己的。主持人先让大家看看别人头上戴的是什么帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子?
面对这样的推理,我们可以用if--else来表示:
但你首先碰到一个难题,就是我们如何推理,用什么样的方法,才能把这个问题解决。
其实这个可以利用我们从买衣服那里得到的道理:找出我们的条件,这是最重要的。
思前想后,终于想出了我假设的条件:
if(舞会中黑帽子==1) //如果舞会中只有一顶黑帽子
   带黑帽子的人看到都是白帽子,肯定就知道自己是黑帽子,
   预期结果:应该给自己一耳光
   实际结果:没有听见声音,(呵呵,发现一bug)所以这种情况是不成立的
else if(舞会中黑帽子==2)//如果舞会中只有两顶黑帽子。
     带黑帽子的人应该看到别人带了一顶黑帽子,因为舞会只有两顶黑帽子,所以
     自己肯定是带黑帽子的人。
     预期结果:应该听见两声耳光
     实际结果:没有听见耳光.
else if(舞会中黑帽子==3)//如果舞会中只有三顶黑帽子
     带黑帽子的人应该看到两顶黑帽子,和一堆白帽子。因为舞会只有三顶黑帽
     子,所以自己肯定是带黑帽子的人。
     预期结果:应该听见耳光声
     实际结果:听见耳光声。(呵呵,符合情况,bug已修复)
上面的这道题,据说是微软/IBM考察软件测试工程师面试题。当然还有一个死狗问题,跟这个差不多。就不祥谈了。为啥考这样的题目,经过一分析应该知道了。考察的是1.你有没有逻辑思维。2.有没有测试思维。
我每次讲到C的时候,都会插入这么段小故事,目的就是让大家明白。对于选择结构而言,最重要的就是,要清楚的了解条件是什么。只有知道了条件,其他的都会水到渠成。
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值