微软的面试题及答案(超变态但很经典)
3855 点击·0 回帖
![]() | ![]() | |
![]() | 第一组题答案: 1)三根绳,第一根点燃两端,第二根点燃一端,第三根不点,第一根绳烧完(30分钟)后,点燃第二根绳的另一端,第二根绳烧完(45分钟)后,点燃第三根绳子两端,第三根绳烧完(1小时15分)后,计时完成 2)根据抽屉原理,4个 3)3升装满;3升-〉5升(全注入);3升装满;3升-〉5升(剩1升);5升倒掉;3升-〉5升(注入1升);3升装满;3升-〉5升;完成(另:可用回溯法编程求解) 4)问其中一人:另外一个人会说哪一条路是通往诚实国的?回答者所指的那条路必然是通往说谎国的。 5)12个球: 第一次:4,4 如果平了:那么剩下的球中取3放左边,取3个好球放右边,称:如果左边重,那么取两个球称一下,哪个重哪个是次品,平的话第三个重,是次品,轻的话同理,如果平了,那么剩下一个次品,还可根据需要称出次品比正品轻或者重,如果不平:那么不妨设左边重右边轻,为了便于说明,将左边4颗称为重球,右边4颗称为轻球,剩下4颗称为好球,取重球2颗,轻球2颗放在左侧,右侧放3颗好球和一颗轻球,如果左边重,称那两颗重球,重的一个次品,平的话右边轻球次品。如果右边重,称左边两颗轻球,轻的一个次品。如果平,称剩下两颗重球,重的一个次品,平的话剩下那颗轻球次品 13个球: 第一次:4,4,如果平了。剩5颗球用上面的方法仍旧能找出次品,只是不能知道次品是重是轻。如果不平,同上 6) o o o o o o o o o 7) 23次,因为分针要转24圈,时针才能转1圈,而分针和时针重合两次之间的间隔显然>1小时,它们有23次重合机会,每次重合中秒针有一次重合机会,所以是23次 重合时间可以对照手表求出,也可列方程求出 8) 在地球表面种树,做一个地球内接的正四面体,内接点即为所求 第二组 无标准答案 第三组 1. 分成1,2,4三段,第一天给1,第二天给2取回1,第3天给1,第4天给4取回1、2,第5天给1,第6天给2取回1,第七天给1 2. 求出火车相遇时间,鸟速乘以时间就是鸟飞行的距离 3. 四个罐子中分别取1,2,3,4颗药丸,称出比正常重多少,即可判断出那个罐子的药被污染 4. 三个开关分别:关,开,开10分钟,然后进屋,暗且凉的为开关1控制的灯,亮的为开关2控制的灯,暗且热的为开关3控制的灯 5. 因为可以用1,2,5,10组合成任何需要的货币值,日常习惯为10进制 6. 题意不理解...*_* 7. 012345 0126(9)78 第四组 都是很难的题目 第一题:97 0 1 2 0 或者 97 0 1 0 2 (提示:可用逆推法求出) 第二题:3架飞机5架次,飞法: ABC 3架同时起飞,1/8处,C给AB加满油,C返航,1/4处,B给A加满油,B返航,A到达1/2处,C从机场往另一方向起飞,3/4处,C同已经空油箱的A平分剩余油量,同时B从机场起飞,AC到7/8处同B平分剩余油量,刚好3架飞机同时返航。所以是3架飞机5架次。 第三题:需要建立数学模型 (提示,严格证明该模型最优比较麻烦,但确实可证,大胆猜想是解题关键) 题目可归结为求数列 an=500/(2n+1) n=0,1,2,3......的和Sn什么时候大于等于1000,解得n>6 当n=6时,S6=977.57 所以第一个中转点离起始位置距离为1000-977.57=22.43公里 所以第一次中转之前共耗油 22.43*(2*7+1)=336.50升 此后每次中转耗油500升 所以总耗油量为7*500+336.50=3836.50升 第四题:需要建立数学模型 题目可归结为求自然数列的和S什么时候大于等于100,解得n>13 第一个杯子可能的投掷楼层分别为:14,27,39,50,60,69,77,84,90,95,99,100 第五题:3和4(可严格证明) 设两个数为n1,n2,n1>=n2,甲听到的数为n=n1+n2,乙听到的数为m=n1*n2 证明n1=3,n2=4是唯一解 证明:要证以上命题为真,不妨先证n=7 1)必要性: i) n>5 是显然的,因为n<4不可能,n=4或者n=5甲都不可能回答不知道 ii) n>6 因为如果n=6的话,那么甲虽然不知道(不确定2+4还是3+3)但是无论是2,4还是3,3乙都不可能说不知道(m=8或者m=9的话乙说不知道是没有道理的) iii) n<8 因为如果n>=8的话,就可以将n分解成 n=4+x 和 n=6+(x-2),那么m可以是4x也可以是6(x-2)而4x=6(x-2)的必要条件是x=6即n=10,那样n又可以分解成8+2,所以总之当n>=8时,n至少可以分解成两种不同的合数之和,这样乙说不知道的时候,甲就没有理由马上说知道。 以上证明了必要性 2)充分性 当n=7时,n可以分解成2+5或3+4 显然2+5不符合题意,舍去,容易判断出3+4符合题意,m=12,证毕 于是得到n=7 m=12 n1=3 n2=4是唯一解。 第六题:7只(数学归纳法证明) 1)若只有1只病狗,因为病狗主人看不到有其他病狗,必然会知道自己的狗是病狗(前提是一定存在病狗),所以他会在第一天把病狗处决。 2)设有k只病狗的话,会在第k天被处决,那么,如果有k+1只,病狗的主人只会看到k只病狗,而第k天没有人处决病狗,病狗主人就会在第k+1天知道自己的狗是病狗,于是病狗在第k+1天被处决 3)由1)2)得,若有n只病狗,必然在第n天被处决 第七题:(提示:可用图论方法解决) BONO;EDGE过(2分),BONO将手电带回(1分),ADAM;LARRY过(10分),EDGE将手电带回(2分),BONO;EDGE过(2分) 2+1+10+2+2=17分钟 第八题: 约定好一个人作为报告人(可以是第一个放风的人) 规则如下: 1、报告人放风的时候开灯并数开灯次数 2、其他人第一次遇到开着灯放风时,将灯关闭 3、当报告人第100次开灯的时候,去向监狱长报告,要求监狱长放人...... 按照概率大约30年后(10000天)他们可以被释放 第五组无标准答案 第六组部分题参考答案: 4. char * strcpy(char * pstrDest,const char * pstrSource) { assert((pstrDest!=NULL);;(pstrSource!=NULL)); char * pstr=pstrDest; while((*(pstrDest++)=*(pstrSource++))!=’’); return pstr; } 5. char * strrev(char * pstr) { assert(pstr!=NULL); char * p=pstr; char * pret=pstr; while(*(p++)!=’’); p--; char tmp; while(p>pstr) { tmp=*p; *(p--)=*(pstr); *(pstr++)=tmp; } return pret; 第四组 第一题 . 五个海盗抢到了100颗宝石,每一颗都一样大小和价值连城。他们决定这么分: 抽签决定自己的号码(1、2、3、4、5) 首先,由1号提出分配方案,然后大家表决,当且仅当超过半数的人同意时,按照他的方案进行分配,否则将被扔进大海喂鲨鱼,如果1号死后,再由2号提出分配方案,然后剩下的4人进行表决,当且仅当超过半数的人同意时,按照他的方案进行分配,否则将被扔入大海喂鲨鱼,依此类推 条件:每个海盗都是很聪明的人,都能很理智地做出判断,从而做出选择。 问题:第一个海盗提出怎样的分配方案才能使自己的收益最大化? 第二题 . 一道关于飞机加油的问题,已知: 每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有加油机),一箱油可供一架飞机绕地球飞半圈, 问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场) 第三题. 汽车加油问题 一辆载油500升的汽车从A开往1000公里外的B,已知汽车每公里耗油量为1升,A处有无穷多的油,其他任何地点都没有油,但该车可以在任何地点存放油以备中转,问从A到B最少需要多少油 第四题. 掷杯问题 一种杯子,若在第N层被摔破,则在任何比N高的楼层均会破,若在第M层不破,则在任何比M低的楼层均会破,给你两个这样的杯子,让你在100层高的楼层中测试,要求用最少的测试次数找出恰巧会使杯子破碎的楼层。 第五题. 推理游戏 教授选出两个从2到9的数,把它们的和告诉学生甲,把它们的积告 | |
![]() | ![]() |