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

原创 2007年09月26日 12:26:00
 
       
       由微软/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的时候,都会插入这么段小故事,目的就是让大家明白。对于选择结构而言,最重要的就是,要清楚的了解条件是什么。只有知道了条件,其他的都会水到渠成。
 
 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

IBM,MBA,微软面试题集

  • 2008-06-03 20:44
  • 38KB
  • 下载

微软笔试题 跳台阶问题

题目  : 一个台阶有n个台阶。每次可以上一个台阶,也可以上两个台阶。有多少种不同的上法? 可以这么递归的来考虑,第一次跳一个台阶,这种情况的跳法总数是后面的跳法总数f(n-1);第一次跳两个台阶,这...

用回溯法(backtracking)解决平衡集合问题(一道微软公司面试题)

(原题出自微软公司面试题)问题如下: 有两个序列a,b,大小都为n,序列元素的值任意整数,无序; 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。 例如:...

java面试题集一些问题

  • 2008-12-25 19:58
  • 15KB
  • 下载

java面试题总汇 问题 答案

  • 2009-05-19 16:53
  • 2.79MB
  • 下载

微软、google、雅虎、百度等各大著名公司的经典面试题!保证搞晕你!!

微软十五道面试题 1、有一个整数数组,请求出两两之差绝对值最小的值, 记住,只要得出最小值即可,不需要求出是哪两个数。 2、写一个函数,检查字符是否是整数,如果是,返回其整数值。 (或者:怎样...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)