博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微软面试题目及答案
阅读量:5112 次
发布时间:2019-06-13

本文共 8183 字,大约阅读时间需要 27 分钟。

第一组

  1.烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?

  2.你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?

  3.如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅,两只提捅形状上下都不均匀,问你如何才能准确称出4公升的水?

  4.一个岔路口分别通向诚实国和说谎国。来了两个人,已知一个是诚实国的,另一个是说谎国的。诚实国永远说实话,说谎国永远说谎话。现在你要去说谎国

,但不知道应该走哪条路,需要问这两个人。请问应该怎么问?

  5.12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。13个呢?(注意此题并未说明那个球的重量是轻是重,所以需要

仔细考虑)

  6.在9个点上画10条直线,要求每条直线上至少有三个点?

  7.在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的?

  8.怎么样种植4棵树木,使其中任意两棵树的距离相等?

  第二组

  1.为什么下水道的盖子是圆的?

  2.中国有多少辆汽车?

  3.将汽车钥匙插入车门,向哪个方向旋转就可以打开车锁?

  4.如果你要去掉中国的34个省(含自治区、直辖市和港澳特区及台湾省)中的任何一个,你会去掉哪一个,为什么?

  5.多少个加油站才能满足中国的所有汽车?

  6.想象你站在镜子前,请问,为什么镜子中的影象可以颠倒左右,却不能颠倒上下?

  7.为什么在任何旅馆里,你打开热水,热水都会瞬间倾泻而出?

  8.你怎样将Excel的用法解释给你的奶奶听?

  9.你怎样重新改进和设计一个ATM银行自动取款机?

  10.如果你不得不重新学习一种新的计算机语言,你打算怎样着手来开始?

  11.如果你的生涯规划中打算在5年内受到奖励,那获取该项奖励的动机是什么?观众是谁?

  12.如果微软告诉你,我们打算投资五百万美元来启动你的投资计划,你将开始什么样商业计划?为什么?

  13.如果你能够将全世界的电脑厂商集合在一个办公室里,然后告诉他们将被强迫做一件事,那件事将是什么?

  第三组

  1.你让工人为你工作7天,回报是一根金条,这个金条平分成相连的7段,你必须在每天结束的时候给他们一段金条。如果只允许你两次把金条弄断,你如何给

你的工人付费? 1、2、4么类似找钱

  2.有一辆火车以每小时15公里的速度离开北京直奔广州,同时另一辆火车每小时20公里的速度从广州开往北京。如果有一只鸟,以30公里每小时的速度和两辆

火车同时启动,从北京出发,碰到另一辆车后就向相反的方向返回去飞,就这样依次在两辆火车之间来回地飞,直到两辆火车相遇。请问,这只鸟共飞行了多长的

距离?

  3.你有四个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的药丸的重量+1。只称量一次,如何判断哪个罐子的药被污染了?

  4.门外三个开关分别对应室内三盏灯,线路良好,在门外控制开关时候不能看到室内灯的情况,现在只允许进门一次,确定开关和灯的对应关系?

  5.人民币为什么只有1、2、5、10的面值?

  6.你有两个罐子以及50个红色弹球和50个蓝色弹球,随机选出一个罐子, 随机选出一个弹球放入罐子,怎么给出红色弹球最大的选中机会?在你的计划里,

得到红球的几率是多少?

  7.给你两颗6面色子,可以在它们各个面上刻上0-9任意一个数字,要求能够用它们拼出任意一年中的日期数值 两颗色子上都必须有的数字是0,1,2

必须有0,是因为01----09,有9天, 如个只一个色子上有0, 那多最多只能排出6个以0 开头的日期。

必须有1 和2,是因为日期中有11和22出现。

另外有两个特殊的数字:6和9  可以共用!

所以第一个色子:012 345 第二个色字:012 678

  第四组

  第一题 . 五个海盗抢到了100颗宝石,每一颗都一样大小和价值连城。他们决定这么分:   抽签决定自己的号码(1、2、3、4、5)   首先,由1号提出分配方案,然后大家表决,当且仅当超过半数的人同意时,按照他的方案进行分配,否则将被扔进大海喂鲨鱼,如果1号死后,再由2号提出

分配方案,然后剩下的4人进行表决,当且仅当超过半数的人同意时,按照他的方案进行分配,否则将被扔入大海喂鲨鱼,依此类推   条件:每个海盗都是很聪明的人,都能很理智地做出判断,从而做出选择。   问题:第一个海盗提出怎样的分配方案才能使自己的收益最大化? **************************倒推法 2号和3号有积极性让1号死,以便自己得到更多。所以,1号无奈之下,可能只有自己得0,而给2和3各50颗。但事实证明,这种做法依然不可行。为什么呢?

因为我们要先看4号和5号的反应才行。很显然,如果最后只剩下4和5,这无论4提出怎样的方案,5号都会坚决反对。即使4号提出自己要0,而把100颗钻石都给5,

5也不会答应――因为5号愿意看到4号死掉。这样,5号最后顺利得到100颗钻石——因此,4的方案绝对无法获得半数以上通过,如果轮到4号分配,4号只有死,只

有死!

由此可见,4号绝对不会允许自己来分。他注定是一个弱者中的弱者,他必须同意3号的任何方案!或者1号2号的合理方案。可见,如果1号2号死掉了,轮到3号分

,3号可以说:我自己100颗,4号5号0颗,同意的请举手!这时候,4号为了不死,只好举手,而5号暴跳如雷地反对,但是没有用。因为3个人里面有2个人同意啊

,通过率66.7%,大于50%!

由此可见,当轮到3号分配的时候,他自己100颗,4和5都是0。因此,4和5不会允许轮到3来分。如果2号能够给4和5一些利益,他们是会同意的。

比如2的分配方案是:98,0,1,1,那么,3的反对无效。4和5都能得到1,比3号来分配的时候只能得到0要好得多,所以他们不得不同意。

由此看来,2号的最大利益是98。1号要收买2号,是不可能的。在这种情况下,1号可以给4号和5号每人2颗,自己收买他们。这样,2号和3号反对是无效的。因此

,1号的一种分配方案是:96,0,0,2,2。

这是不是最佳方案呢?再想一想,1号也可以不给4号和5号各2个,而只需要1个就搞定了3号,因为如果轮到2号来分配,2号是可以不给3号的,3号的得益只有0。

所以,能得到1个,3号也该很满意了。所以,最后的解应该是:97,0,1,2,0。

好,再倒推。假设1号提出了97,0,1,0,2的方案,1号自己赞成。2和4反对。3∶2,关键就在于3号和5号会不会反对。假设3号反对,杀掉1号,2号来分配,3自

己只能得到0。显然,3号不划算,他不会反对。如果5号反对,轮到2号、3号、4号来分配,5号自己最多只能得到1。

所以,3号和5号与其各得到0和1,还不如现在的1和2。

正确的答案应该是:1号分配,依次是:97,0,1,0,2; 或者是:97,0,1,2,0。 **********************   第二题 . 一道关于飞机加油的问题,已知:   每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有加油机),一箱油可供一架飞机绕地球飞半圈,   问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,

中间没有飞机场)

  第三题. 汽车加油问题   一辆载油500升的汽车从A开往1000公里外的B,已知汽车每公里耗油量为1升,A处有无穷多的油,其他任何地点都没有油,但该车可以在任何地点存放油以备

中转,问从A到B最少需要多少油

  第四题. 掷杯问题   一种杯子,若在第N层被摔破,则在任何比N高的楼层均会破,若在第M层不破,则在任何比M低的楼层均不会破,给你两个这样的杯子,让你在100层高的楼层

中测试,要求用最少的测试次数找出恰巧会使杯子破碎的楼层。 http:/ /blog.csdn.net/taylor_tao/article/details/7084467

  第五题. 推理游戏   教授选出两个从2到9的数,把它们的和告诉学生甲,把它们的积告诉学生乙,让他们轮流猜这两个数   甲说:“我猜不出”   乙说:“我猜不出”   甲说:“我猜到了”   乙说:“我也猜到了”   问这两个数是多少   第六题. 病狗问题   一个住宅区内有100户人家,每户人家养一条狗,每天傍晚大家都在同一个地方遛狗。已知这些狗中有一部分病狗,由于某种原因,狗的主人无法判断自己的

狗是否是病狗,却能够分辨其他的狗是否有病,现在,上级传来通知,要求住户处决这些病狗,并且不允许指认他人的狗是病狗(就是只能判断自己的),过了7

天之后,所有的病狗都被处决了,问,一共有几只病狗?为什么?

  第七题. U2合唱团在17分钟内得赶到演唱会场,途中必需跨过一座桥,四个人从桥的同一端出发,你得帮助他们到达另一端,天色很暗,而他们只有一只手电

筒。一次同时最多可以有两人一起过桥,而过桥的时候必须持有手电筒,所以就得有人把手电筒带来带去,来回桥两端。手电筒是不能用丢的方式来传递的。四个

人的步行速度各不同,若两人同行则以较慢者的速度为准。BONO需花1分钟过桥,EDGE需花2分钟过桥,ADAM需花5分钟过桥,LARRY需花10分钟过桥,他们要如何在17分

钟内过桥呢?

  第八题. 监狱里有100个房间,每个房间内有一囚犯。一天,监狱长说,你们狱房外有一电灯,你们在放风时可以控制这个电灯(熄或亮)。每天只能有一个

人出来放风,并且防风是随机的。如果在有限时间内,你们中的某人能对我说:“我敢保证,现在每个人都已经至少放过一次风了。”我就放了你们!问囚犯们要

采取什么策略才能被监狱长放掉?如果采用了这种策略,大致多久他们可以被释放?

  第五组

  1.某手机厂家由于设计失误,有可能造成电池寿命比原来设计的寿命短一半(不是冲放电时间),解决方案就是免费更换电池或给50元购买该厂家新手机的折

换券。请给所有已购买的用户写信告诉解决方案。

  2.一高层领导在参观某博物馆时,向博物馆馆员小王要了一块明代的城砖作为纪念,按国家规定,任何人不得将博物馆收藏品变为私有。博物馆馆长需要如何

写信给这位领导,将城砖取回。

  3.营业员小姐由于工作失误,将2万元的笔记本电脑以1.2万元错卖给李先生,王小姐的经理怎么写信给李先生试图将钱要回来?

  4.给你一款新研制的手机,如果你是测试组的组长,你会如何测试?

  5.如何为函数int atoi(const char * pstr)编写测试向量?

  第六组

  1.链表和数组的区别在哪里?

  2.编写实现链表排序的一种算法。说明为什么你会选择用这样的方法?

  3.编写实现数组排序的一种算法。说明为什么你会选择用这样的方法?

  4.请编写能直接实现char * strcpy(char * pstrDest,const char * pstrSource)函数功能的代码。

  5.编写反转字符串的程序,要求优化速度、优化空间。

  6.在链表里如何发现循环链接?

  7.给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里。

  8.写一个函数,检查字符是否是整数,如果是,返回其整数值。(或者:怎样只用4行代码

  9.给出一个函数来输出一个字符串的所有排列。

  10.请编写实现void * malloc(int)内存分配函数功能一样的代码。

  11.给出一个函数来复制两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠。

  12.怎样编写一个程序,把一个有序整数数组放到二叉树中?

  13.怎样从顶部开始逐层打印二叉树结点数据?请编程。

  14.怎样把一个链表掉个顺序(也就是反序,注意链表的边界条件并考虑空链表)? --

  15.请编写能直接实现int atoi(const char * pstr)函数功能的代码。

  第一组题答案:

  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++))!='\0');    return pstr;   }

  5.   char * strrev(char * pstr)   {   assert(pstr!=NULL);   char * p=pstr;   char * pret=pstr;   while(*(p++)!='\0');   p--;   char tmp;   while(p>pstr)   {    tmp=*p;    *(p--)=*(pstr);    *(pstr++)=tmp;   }   return pret;

 

转载于:https://www.cnblogs.com/fickleness/p/3252684.html

你可能感兴趣的文章
rsync
查看>>
java中的IO操作总结
查看>>
noip模拟赛 党
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>
面试题17:合并两个排序的链表
查看>>
Jmeter HTTPS接口测试的证书导入
查看>>
移动设备显示尺寸大全 CSS3媒体查询
查看>>
hihoCoder #1831 : 80 Days-RMQ (ACM/ICPC 2018亚洲区预选赛北京赛站网络赛)
查看>>
图片等比例缩放及图片上下剧中
查看>>
jQuery方法大全
查看>>
WebView加载网页详情
查看>>
【转载】Linux screen 命令详解
查看>>
dd命令 建立两颗一模一样的磁盘
查看>>
常用的jquery触屏手机页面特效代码下载
查看>>
background-clip,background-origin
查看>>
C# 如何创建一个Windows服务
查看>>
集群和分布式区别
查看>>
Android(java)学习笔记153:采用post请求提交数据到服务器(qq登录案例)
查看>>