主题:【考验智商、算法能力】微软程序员测试题
群子
[专家分:30] 发布于 2004-08-12 22:15:00
测测您的能力:微软程序员测试题
一.最基本题型(说明:此类题型比较简单)
1.烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧
绳的方法来计时一个小时十五分钟呢?
2.你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少个就可
以确定你肯定有两个同一颜色的果冻?(5秒-1分钟)
3.如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅,两只提捅形状上下都不均匀,问你
如何才能准确称出4公升的水?(40秒-3分钟)
4.一个岔路口分别通向诚实国和说谎国。来了两个人,已知一个是诚实国的,另一个是说谎国的。
诚实国永远说实话,说谎国永远说谎话。现在你要去说谎国,但不知道应该走哪条路,需要问这两个
人。请问应该怎么问?(20秒-2分钟)
5.12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。13个
呢?(注意此题并未说明那个球的重量是轻是重,所以需要仔细考虑)(5分钟-1小时)
6.在9个点上画10条直线,要求每条直线上至少有三个点?(3分钟-20分钟)
7.在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时
间?你怎样算出来的?(5分钟-15分钟)
二.没有答案型(说明:这些题显然不是考你智力。而考的是你的反应能力。这种题大多数没有答
案,但是要看你的反应喽!)
1.为什么下水道的盖子是圆的?
2.中国有多少辆汽车?
3.将汽车钥匙插入车门,向哪个方向旋转就可以打开车锁?
4.如果你要去掉中国的34个省(含自治区、直辖市和港澳特区及台湾省)中的任何一个,你会去掉
哪一个,为什么?
5.多少个加油站才能满足中国的所有汽车?
6.想象你站在镜子前,请问,为什么镜子中的影象可以颠倒左右,却不能颠倒上下?
7.为什么在任何旅馆里,你打开热水,热水都会瞬间倾泻而出?
8.你怎样将Excel的用法解释给你的奶奶听?
9.你怎样重新改进和设计一个ATM银行自动取款机?
10.如果你不得不重新学习一种新的计算机语言,你打算怎样着手来开始?
11.如果你的生涯规划中打算在5年内受到奖励,那获取该项奖励的动机是什么?观众是谁?
12.如果微软告诉你,我们打算投资五百万美元来启动你的投资计划,你将开始什么样商业计划?
为什么?
13.如果你能够将全世界的电脑厂商集合在一个办公室里,然后告诉他们将被强迫做一件事,那件
事将是什么?
三.难题(说明:这类题有一定难度,如果得不到答案,也不能说明什么。如果你想到了解题思路
,那么答案马上就能出来。如果想不到思路,那么……就别想解出来了。)
1.你让工人为你工作7天,回报是一根金条,这个金条平分成相连的7段,你必须在每天结束的时候
给他们一段金条。如果只允许你两次把金条弄断,你如何给你的工人付费?
2.有一辆火车以每小时15公里的速度离开北京直奔广州,同时另一辆火车每小时20公里的速度从广
州开往北京。如果有一只鸟,以30公里每小时的速度和两辆火车同时启动,从北京出发,碰到另一辆
车后就向相反的方向返回去飞,就这样依次在两辆火车之间来回地飞,直到两辆火车相遇。请问,这
只鸟共飞行了多长的距离?
3.你有四个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的药丸的重量+1。
只称量一次,如何判断哪个罐子的药被污染了?
4.门外三个开关分别对应室内三盏灯,线路良好,在门外控制开关时候不能看到室内灯的情况,现
在只允许进门一次,确定开关和灯的对应关系?
5.人民币为什么只有1、2、5、10的面值?
6.你有两个罐子以及50个红色弹球和50个蓝色弹球,随机选出一个罐子, 随机选出一个弹球放入
罐子,怎么给出红色弹球最大的选中机会?在你的计划里,得到红球的几率是多少?
四.超难题(说明:如果你是第一次看到这种题,并且以前从来没有见过类似的题型,并且能够在
半个小时之内做出答案。只能说明你的智力超常……)
第一题 . 五个海盗抢到了100颗宝石,每一颗都一样大小和价值连城。他们决定这么分:
抽签决定自己的号码(1、2、3、4、5)
首先,由1号提出分配方案,然后大家表决,当且仅当超过半数的人同意时,按照他的方案进行分
配,否则将被扔进大海喂鲨鱼
如果1号死后,再由2号提出分配方案,然后剩下的4人进行表决,当且仅当超过半数的人同意时,
按照他的方案进行分配,否则将被扔入大海喂鲨鱼
依此类推
条件: 每个海盗都是很聪明的人,都能很理智地做出判断,从而做出选择。
问题: 第一个海盗提出怎样的分配方案才能使自己的收益最大化?
第二题 . 一道关于飞机加油的问题,已知:
每个飞机只有一个油箱,
飞机之间可以相互加油(注意是相互,没有加油机)
一箱油可供一架飞机绕地球飞半圈,
问题: 为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机
从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场)
五.主观题(说明:在以后的工作过程中,我们可定会犯这样那样的错误。既然错误已经酿成,损
失在所难免,我们只能想办法把损失减少到最小。如果能巧妙地回答出这些问题,再发生错误的情况
下。能让客户有最少的抱怨,公司有最少的损失。)
1.某手机厂家由于设计失误,有可能造成电池寿命比原来设计的寿命短一半(不是冲放电时间),
解决方案就是免费更换电池或给50元购买该厂家新手机的折换券。请给所有已购买的用户写信告诉解
决方案。
2.一高层领导在参观某博物馆时,向博物馆馆员小王要了一块明代的城砖作为纪念,按国家规定,
任何人不得将博物馆收藏品变为私有。博物馆馆长需要如何写信给这位领导,将城砖取回。
3.营业员小姐由于工作失误,将2万元的笔记本电脑以1.2万元错卖给李先生,王小姐的经理怎么写
信给李先生试图将钱要回来?
六.算法题(说明:这些题就不是什么花样了,考的是你的基础知识怎么样。再聪明而没有实学的
人都将会被这些题所淘汰。)
1.链表和数组的区别在哪里?
2.编写实现链表排序的一种算法。说明为什么你会选择用这样的方法?
3.编写实现数组排序的一种算法。说明为什么你会选择用这样的方法?
4.请编写能直接实现strstr()函数功能的代码。
5.编写反转字符串的程序,要求优化速度、优化空间。
6.在链表里如何发现循环链接?
7.给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里。
8.写一个函数,检查字符是否是整数,如果是,返回其整数值。(或者:怎样只用4行代码编写出
一个从字符串到长整形的函数?)
9.给出一个函数来输出一个字符串的所有排列。
10.请编写实现malloc()内存分配函数功能一样的代码。
11.给出一个函数来复制两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠。
12.怎样编写一个程序,把一个有序整数数组放到二叉树中?
13.怎样从顶部开始逐层打印二叉树结点数据?请编程。
14.怎样把一个链表掉个顺序(也就是反序,注意链表的边界条件并考虑空链表)?
23 楼
caoxin [专家分:1540] 发布于 2005-01-12 06:17:00
1.烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?
答:先取三根绳子(A,B,C),同时点燃A的两端和B的一端,当A烧完后,熄灭B并点燃C的两端.等C烧完再点燃B的两端.
2.你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?
答:4个
3.如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅,两只提捅形状上下都不均匀,问你如何才能准确称出4公升的水?(40秒-3分钟)
答:灌满5公升的桶后,再将水倒满3公升的桶,再将3公升的桶清空,将剩下的2公升水倒如3公升桶,再灌满5公升的桶, 将水倒如3公升的桶, 当3公升桶满时,5公升中剩下的是4公升水.
4.一个岔路口分别通向诚实国和说谎国。来了两个人,已知一个是诚实国的,另一个是说谎国的。诚实国永远说实话,说谎国永远说谎话。现在你要去说谎国,但不知道应该走哪条路,需要问这两个人。请问应该怎么问?(20秒-2分钟)
答: (是不是只许问每人一个问题啊, 如果是答案就是这样)
先问第一个: "对不起, 不好意思, 拜托了, 请问这两条路是不是去不同地方的?"
再问第二个:"狗卵! 哪条路是去说谎国的?"
如果,一答:YES 那么按照二指出的另一条路走;
如果,一答:NO 那么按照二指的路走就是了.
5.12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。13个呢?(注意此题并未说明那个球的重量是轻是重,所以需要仔细考虑)(5分钟-1小时)
答:先分A,B,C三组,每组四个. 每组编号为A1,A2,A3,A4;B1,B2,B3,B4;C1,C2,C3,C4;
第一次:称A,B两组:IF A==B; 则C为异常组,第二次取A或B组中任意三球与C1,C2,C3称:
IF C1+C2+C3==A1+A2+A3 ;第三次称C4与A1:IF C4>A1,则C4是重球;else C4是轻球
IF C1+C2+C3>A1+A2+A3;第三次称C1与C2:IF C1==C2,C3是重球;IF C1>C2,C1是重球
else,C2是重球
IF C1+C2+C3<A1+A2+A3;第三次称C1与C2;IF C1==C2,C3是轻球;IF C1>C2,C2是轻球
else,C1是轻球
如果第一次:A>B;则C是标准组, 第二次取A1,A2,B1与A3,B2,C1称,
IF A1+A2+B1==A3+B2+C1;第三次称B3与B4;IF B3==B4,则A4是重球;IF B3>B4,则B4是轻球;ELSE B3是轻球;
IF A1+A2+B1>A3+B2+C1;第三次称A1与A2:IF A1==A2,则B2是轻球;IF A1>A2,则A1是重球,ELSE A2是重球;
IF A1+A2+B1<A3+B2+C1;第三次称B1与C1,IF B1==C1,则A3是重球;IF B1<C1,则B1是轻球, 不会出现B1>C1这种情况.
如果第一次:A<B;则C是标准组, 方法同上.
13个球的话,第二次称时用三重一轻与一重一轻两个标准球对称.
7.在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的?(5分钟-15分钟)
答:25次.0时0分0秒,1时五分五秒,2时10分十秒.以此类推~~
1.你让工人为你工作7天,回报是一根金条,这个金条平分成相连的7段,你必须在每天结束的时候给他们一段金条。如果只允许你两次把金条弄断,你如何给你的工人付费?
答:分成1/7一块,2/7一块,4/7一块;第一天给工人1/7那块,第二天给他2/7那块,他找你1/7块~~~~以次类推.
2.有一辆火车以每小时15公里的速度离开北京直奔广州,同时另一辆火车每小时20公里的速度从广州开往北京。如果有一只鸟,以30公里每小时的速度和两辆火车同时启动,从北京出发,碰到另一辆车后就向相反的方向返回去飞,就这样依次在两辆火车之间来回地飞,直到两辆火车相遇。请问,这只鸟共飞行了多长的距离?
答: 也就是说在那两辆火车相遇之前那只傻鸟是飞个不停的,如果设北京到广州是N公里, 则 (N/15+20)*30,也就是说那鸟飞了6/7倍北京到广州的距离.
3.你有四个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的药丸的重量+1。只称量一次,如何判断哪个罐子的药被污染了?
答:取第一个罐子的一个药丸加上第二个罐子的两个药丸与第三个罐子的三个药丸对称,如果天平水平则被污染的是四号药罐,如果天平倾斜了三格则是第三号药罐,如倾斜了两格则是两号,ELSE 一号. (也许哦)
4.门外三个开关分别对应室内三盏灯,线路良好,在门外控制开关时候不能看到室内灯的情况,现在只允许进门一次,确定开关和灯的对应关系?
答:
可以这样: 把一个灯开一段时间后, 再打开第二个灯, 进门,用手摸一下,很烫的那个对应第一次开的,不烫的对应第二次开的,不亮的对应第三个.
5.人民币为什么只有1、2、5、10的面值?
答:因为这是能够组合成100以内任何数的最小张数
6.你有两个罐子以及50个红色弹球和50个蓝色弹球,随机选出一个罐子, 随机选出一个弹球放入罐子,怎么给出红色弹球最大的选中机会?在你的计划里,得到红球的几率是多少?
答:我的方案是:所有蓝球先装罐,再随机取没有装罐的球,得到红球的几率是100%!!!(哈哈是不是疯了~)
第一题 . 五个海盗抢到了100颗宝石,每一颗都一样大小和价值连城。他们决定这么分:
抽签决定自己的号码(1、2、3、4、5)
首先,由1号提出分配方案,然后大家表决,当且仅当超过半数的人同意时,按照他的方案进行分配,否则将被扔进大海喂鲨鱼
如果1号死后,再由2号提出分配方案,然后剩下的4人进行表决,当且仅当超过半数的人同意时,按照他的方案进行分配,否则将被扔入大海喂鲨鱼
依此类推 条件: 每个海盗都是很聪明的人,都能很理智地做出判断,从而做出选择。问题: 第一个海盗提出怎样的分配方案才能使自己的收益最大化?
答:如果提出方案的人也参加表决的话,那么答案如下:99,0,0,1,0
用逆推法: 当只剩两个人时,无论4号提出什么方案,5号都反对,那样的话4号就得死,而5号就能独吞了,所以5号会想方设法创造只剩下他与4号独处的局面,为了达到这个目的, 就的先干掉1,2,3号,干掉他们三个的最好方法就是反对一切方案.所以5号会是个永远的反对者!! 而4号也知道,为了活命,他会同意3号的一切方案,即使3号提出:100,0,0的分法,他也得同意,这样的话就算拿不到一分钱,他还留下了命(乃乃的,钱是身外之物,还怕以后抢不到吗) ,而3号也知道这种情况,所以为了走到这一步, 他就得干掉1号和2号, 所以在1号2号没死前,他也会是一个永远的反对派;现在有两个永远的反对派了,按照题目,必需超过半数的人同意才不会死,当1号牺牲后,2号势必也不能活,(3号与5号一个想独吞一个想灭门,呵呵 )所以2号会同意1号的任何方案, 理由与4号相同(谁不要命啊),最后,1号(也就是我)非常严肃的提出: 99,0,0,1,0(收益最大化原则), 因为如果是100,0,0,0,0的话,4号可以反对1号并在只剩下3,4,5号时同意3号的方案,这样他都没有得到什么也保住了命, 为了防止他第一次投反对票,1号应该贿赂他.
挺简单的,还没前面几题难,哥哥我想了一刻钟.
第二题 . 一道关于飞机加油的问题,已知:
每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有加油机)
一箱油可供一架飞机绕地球飞半圈,问题: 为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场.
答:一定是个递归的算法.不想了,明天再想.
24 楼
caoxin [专家分:1540] 发布于 2005-01-12 20:41:00
更正一下:
4.门外三个开关分别对应室内三盏灯,线路良好,在门外控制开关时候不能看到室内灯的情况,现在只允许进门一次,确定开关和灯的对应关系?
答: 可以这样: 把一个灯开一段时间后, 再打开第二个灯, 进门,用手摸一下,很烫的那个对应第一次开的,不烫的对应第二次开的,不亮的对应第三个.(不用人为短路了)[em12]
海盗那题答案也要改一下, 应该是: 99,0,0,1,0
因为如果是100,0,0,0,0的话,4号可以反对1号并在只剩下3,4,5号时同意3号的方案,这样他都没有得到什么也保住了命, 为了防止他第一次投反对票,1号应该贿赂他.