以下是小编给大家收集的回忆微软笔试(共含8篇),欢迎大家前来参阅。同时,但愿您也能像本文投稿人“木神七七”一样,积极向本站投稿分享好文章。
回忆微软笔试
题目包括数据结构算法数据库软件工程软件测试(2个大题写Test cases 不知道格式怎么写,没写过)
选择题不记得了,不定项选择,偶感觉出的都挺偏。做卷子的`最大感触就是偶英语太差了。
1。全篇公认一个最简单的题目是那个阅读理解,6辆不同款的车,排车位。条件是:(6个车就简写为ABCDEF,车位1~6) Either A not or B is in slot 1. Either B not or C is in slot 6. D, E 不分次序挨着 F, B 不分次序挨着
具体每个问题给个条件,排序,不难。就是不知道偶理解那个Either not or是不是“不是……就是……”的意思。
2。给一个“MS Office Outlook ”的图,让写一个你想要有哪些feature to improve or add. 给你3月时间搞定这个你要如何做。
3。写代码。把一个单链表,按照指定位置逆序。并在code中体现基本错误异常处理之类。
不能再多malloc内存了,可以用temp pointers。还有一个不允许的什么条件没看懂,无碍大雅吧。
eg,
N1->N2->N3->N4->N5->NULL pHEAD = N1;pSTART = N3;返回这个N3->N2->N1->N5->N4->NULL
eg。N1->N2->N3->N4->N5->NULL pHEAD = N1;pSTART = N5;返回这个N5->N4->N3->N2->N1->NULL
eg。N1->N2->N3->N4->N5->NULL pHEAD = N1;pSTART = N1;返回这个N1->N5->N4->N3->N2->NULL
void Wasp(//可以自己加声明变量和局部变量
4。一个矩形函数及其应用的找bug和写Test cases
5。char * strcpy(char* str1, char* str2)//string copy
写Test cases
又饿又累,不记得太多了,其他都太模糊了,等偶想起来再写出来。哪位仁兄记住的更多,欢迎补充9月2日 (日) 10:49 (CST)209月2日 (日) 10:49 (CST)年9月2日 (日) 10:49 (CST)~ 希望更多同学去体验一把MS笔试,题目挺爽。
,
不过,我记得李开复在央视的节目里说过,他们的考察内容是应聘者的可塑性。
石先生(某大型国企职工):我认为这一部分的问题有很大的随意性,主要是考察应聘者的智商,但是因为问题的不同又有不同的考察方向,比如第一个问题就考察了应聘者的逆向思维能力,第二个就考察了应聘者的观察能力与细致程度。
于先生(某外资公司人事主管):我不知道微软出这些题目的用意,但在我看来,智力题是微软面试中最好的考察方式。不仅考察的.指向不同,就连问题的答案有时候也能给人以启发。比如上述第二个问题,如果你能找到答案,它就会帮你理解企业的资源使用组合方式,经过优化以后可以发挥不同的作用。不同的管理者就会使用不同的组合方式,当然结果就会不同。
微软笔试题目
微软笔试题:写程序找出二叉树的深度
一个树的深度等于max(左子树深度,右子树深度)+1。可以使用递归实现。
假设节点为定义为
struct Node {
Node* left; Node* right;
};
int GetDepth(Node* root) {
if (NULL == root) {
return 0;
}
int left_depth = GetDepth(root->left);
int right_depth = GetDepth(root->right);
return left_depth >right_depth ? left_depth + 1 :right_depth + 1;
}
微软笔试题:利用天平砝码,三次将140克的盐 分成50、90克两份?
有一个天平,2克和7克砝码各一个。如何利用天平砝码在三次内将140克盐分成50,90克两份。
第一种方法:
第一次:先称 7+2克盐 (相当于有三个法码2,7,9)
第二次:称2+7+9=18克盐 (相当于有2,7,9,18四个法码)
第三次:称7+18=x+2,得出x是23,23+9+18=50克盐.
剩下就是90克了.
第二种方法:
1.先把140克盐分为两份,每份70克
2.在把70克分为两份,每份35克
3.然后把两个砝码放在天平两边,把35克面粉分成两份也放在两边(15+7=20+2)
现在有四堆面粉70,35,15,20,分别组合得到
70+20=90
35+15=50
微软笔试题:地球上有多少个满足这样条件的点
站在地球上的某一点,向南走一公里,然后向东走一公里,最后向北走一公里,回到了原点。地球上有多少个满足这样条件的点?
北极点满足这个条件。
距离南极点很近的一个圈上也满足这个条件。在这个圆圈上,向南走一公里,然后向东走一公里恰好绕南极点一圈,向北走一公里回到原点。
所以地球上总共有无数点满足这个条件。
或者
首先,在地球表面上,南北走向是沿着经度方向,东西是沿着纬度方向。如果你一直往北走就会达到北极点,往南走就到了南极点。因此,向南走一公里,然后向东走一公里,最后向北走一公里,回到了原点,一种情况就是,出发点是在北极点,这样向南走一公里,然后向东走任意几公里,最后向北走一公里,最后都会回到北极点;
其次,可以这么认为如果从A点向南走一公里到达B点,那么若向东走一公里能回到B,那么最后向北走一公里,就能回到了原点A。这样就可以先找出在南北极点附近找出绕一周只有1公里的圈,那么这个圈落在南极附近时,只要往北推1公里,此时该圈上的点都能满足;若这个圈落在北极附近时,能不能往北推1公里我就不分析了。反正在南极附近能找到任意多个点就能回到这个问题了
微软笔试题:正确标注水果篮
有三个水果篮。其中一个里面只有苹果,一个里面只有橘子,另外一个既有苹果又有橘子。每个水果篮上都有标签,但标签都是错的。如何检查某个水果篮中的一个水果,然后正确标注每个水果篮?
从标注成既有苹果也有橘子的水果篮中选取一个进行检查。
如果是橘子,则此篮中只有橘子;标有橘子的水果篮中只有苹果;标有苹果的水果篮中既有苹果也有橘子。
如果是苹果,则此篮中只有苹果;标有苹果的水果篮中只有橘子;标有橘子的水果篮中既有苹果也有橘子。
微软笔试题:不利用浮点运算,画一个圆
不利用浮点运算,在屏幕上画一个圆 (x**2 + y**2 = r**2,其中 r 为正整数)。
考虑到圆的对称性,我们只需考虑第一象限即可。
等价于找到一条连接点(0,r)到点(r,0)的一条曲线,曲线上的点距圆心(0,0)的距离最接近r。
我们可以从点(0,r)开始,搜索右(1,r),下(0,r-1),右下(1,r-1)三个点到圆心的距离,选择距圆心距离最接近r 的点作为下一个点。反复进行这种运算,直至到达点(r,0)。
由于不能利用浮点运算,所以距离的比较只能在距离平方的基础上进行。也就是比较 x**2 + y**2 和 r**2之间的差值。
微软笔试题:将一个句子按单词反序
将一个句子按单词反序。比如 “hi baidu com mianshiti”,反序后变为 “mianshiti com baidu hi”。
可以分两步走:
第一步按找字母反序,“hi baidu com mianshiti” 变为 “itihsnaim moc udiab ih”。
第二部将每个单词中的字母反序,“itihsnaim moc udiab ih” 变成 “mianshiti com baidu hi”。
这个方法可以在原字符串上进行,只需要几个整数变量来保持指针即可,空间复杂度低。
微软笔试题:计算n bit的整数中有多少bit 为1
设此整数为x,
方法1:
让此整数除以2,如果余数为1,说明最后一位是1,统计值加1。
将除得的结果进行上面运算,直到结果为0。
方法2:
考虑除法复杂度有些高,可以使用移位操作代替除法。
将 x 和 1 进行按位与操作(x&1),如果结果为1,说明最后一位是1,统计值加1。
将x 向右一位(x >>1),重复上面过程,直到移位后结果为0。
方法3:
如果需要统计很多数字,并且内存足够大,可以考虑将每个数对应的bit为1的数量记录下来,这样每次计算只是一次查找操作。
微软笔试题:快速求取一个整数的7倍
乘法相对比较慢,所以快速的方法就是将这个乘法转换成加减法和移位操作。
可以将此整数先左移三位(×8)然后再减去原值:X << 3 - X。
微软笔试题:判断一个数是不是2的n次幂
设要判断的'数是无符号整数X。
首先判断X是否为0,如果为0则不是2的n次幂,返回。
X和X-1进行按位与操作,如果结果是0,则说明这个数是2的n次幂;如果结果非0,则说明这个数不是2 的n次幂。
证明:
如果是2的n次幂,则此数用二进制表示时只有一位是1,其它都是0。减1后,此位变成0,后面的位变成1,所以按位与后结果是0。
如果不是2的n次幂,则此数用二进制表示时有多位是1。减1后,只有最后一个1变成0,前面的 1还是1,所以按位与后结果不是0。
微软笔试题:三只蚂蚁不相撞的概率是多少
在三角形的三个顶点上各有一只蚂蚁,它们向另一个顶点运动,目标随机(可能为另外两个顶点的任意一个)。问三只蚂蚁不相撞的概率是多少?
如果蚂蚁顺时针爬行记为0,逆时针爬行记为1。那么三只蚂蚁的状态可能为000,001,...,110,111中的任意一个,且为每种状态的概率相等。在这8种状态中,只有000和111可以避免相撞,所以蚂蚁不相撞的概率是1/4。
微软笔试题:判断数组中是否包含重复数字
给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字。(原数组不必保留)
给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字。(原数组不必保留)
微软笔试题:如何将蛋糕切成相等的两份
一块长方形的蛋糕,其中有一个小长方形的空洞(角度任意)。使用一把直刀,如何一刀将蛋糕切成相等的两份?
通过长方形中心的的任意直线都能将长方形等分,所以连接两个长方形的中心点的直线可以等分这个蛋糕。
一个没有排序的链表,比如list={a,l,x,b,e,f,f,e,a,g,h,b,m},请去掉重复项,并保留原顺序,以上链表去掉重复项后为newlist={a,l,x,b,e,f,g,h,m},请写出一个高效算法(时间比空间更重要)。
建立一个hash_map,key为链表中已经遍历的节点内容,开始时为空。
从头开始遍历链表中的节点:
- 如果节点内容已经在hash_map中存在,则删除此节点,继续向后遍历;
- 如果节点内容不在hash_map中,则保留此节点,将节点内容添加到hash_map中,继续向后遍历。
微软笔试题:小明一家5口如何过桥?
小明一家过一座桥,过桥时是黑夜,所以必须有灯。现在小明过桥要1秒,小明的弟弟要3秒,小明的爸爸要6秒,小明的妈妈要8秒,小明的爷爷要12秒。每次此桥最多可过两人,而过桥的速度依过桥最慢者而定,而且灯在点燃后30秒就会熄灭。问:小明一家如何过桥?
小明与弟弟过去,小明回来,用4s;
妈妈与爷爷过去,弟弟回来,用15s;
小明与弟弟过去,小明回来,用4s;
小明与爸爸过去,用6s;
总共用29s。
题目的关键是让速度差不多的一起走,免得过于拖累较快的一个人。
微软笔试题:编一个程序求质数的和
编一个程序求质数的和,例如F(7) = 2+3+5+7+11+13+17=58。
方法1:
对于从2开始的递增整数n进行如下操作:
用 [2,n-1] 中的数依次去除n,如果余数为0,则说明n不是质数;如果所有余数都不是0,则说明n是质数,对其进行加和。
空间复杂度为O(1),时间复杂度为O(n^2),其中n为需要找到的最大质数值(例子对应的值为17)。
方法2:
可以维护一个质数序列,这样当需要判断一个数是否是质数时,只需判断是否能被比自己小的质数整除即可。
对于从2开始的递增整数n进行如下操作:
用 [2,n-1] 中的质数(2,3,5,7,开始时此序列为空)依次去除n,如果余数为0,则说明n不是质数;如果所有余数都不是0,则说明n是质数,将此质数加入质数序列,并对其进行加和。
空间复杂度为O(m),时间复杂度为O(mn),其中m为质数的个数(例子对应的值为7),n为需要找到的最大质数值(例子对应的值为17)。
方法3:
也可以不用除法,而用加法。
申请一个足够大的空间,每个bit对应一个整数,开始将所有的bit都初始化为0。
对于已知的质数(开始时只有2),将此质数所有的倍数对应的bit都改为1,那么最小的值为0的bit对应的数就是一个质数。对新获得的质数的倍数也进行标注。
对这样获得的质数序列累加就可以获得质数和。
空间复杂度为O(n),时间负责度为O(n),其中n为需要找到的最大质数值(例子对应的值为17)。
微软笔试态度
技术基础
这方面的题目主要以c、c++和数据结构为主,也就是大家经常看到的那些题目,虽然微软会说你可以用任何你熟悉的语言实现,但是有些东西,特别是底层些的,一般java和c#等其他高层语言用惯了的人肯定会比较忽视。所以c、c++和数据结构还是基础。不过微软的题目从来都不是简简单单的完成功能就好。怎么写的'完美,怎么写的效率高,怎么写的出错可能少,这些都是他们所追求的。在学校呆久了的人可能会养成仅仅实现功能就会草草了事的习惯。但在公司,我们关注的是各方面的因素,一个好的软件绝不仅仅是单单实现功能那么简单。
智力题目
这方面网上说的很多,不多说了,我这方面也确实不擅长。这方面的题目有一定分量,但是也不是全部。感觉多看看有用,但是用处不大。人也不光指望智力活着,还是应该多关注点我们可以努力的东西,
英语
大公司或者外企,英语都是绝对重要的东西,这绝对不是吓唬人。特别是像微软这样的企业,由于你所需要沟通的对象很可能是外国人,所以要求你得英语也有比较高的水平。特别是微软不仅仅要求阅读能力,还要求撰写的能力。
所有笔试的题目基本都是英语描述的,除了个别的智力题目实在是很难用英语描述。前面大部分的题目可以用中文解答。最后有两道想法类的题目要求你全部用英文作答,其实也就是考察你得英文写作能力。
想法
这类题目就是给你个题目,让你谈谈你的看法。题目可能会出的比较灵活,也比较深刻,你很可能有些可谈,但是有找不到头绪。相信微软出此题目的意义也是和前面的选择、填空题目结合起来,希望全面考察一个人。如果你前面作答的不好,这个可千万要注意好好答。可问题是要用英文描述,能不能把自己的想法表达出来,还要看你的本事了。
3、是不是全部是英文题目,做答的时候要用英文吗?
微软笔试经验分享
这段时间各种笔试轰炸也没时间准备微软了,。。于是就上阵了。
19分钟30题verbal,25分钟19题数学,大概这样。verbal我倒觉得还好,时间也正好。可是那个数学题做到一半,竟然遇到最讨厌的汇率题!!直接浪费7分钟!!!然后心态就不好了,之后有个裤子衣服的题目,计算真心 ,20个四位数统统要用,结果到后面,计算器就反应迟钝了!又浪费时间。接下来出现了一个乍一看完全不明所以的revenue题目,还是得猜,猜了两题才明白意思了,
。。狂汗啊!接着就是个油价问题,基本就是问利润啊,给了成本。。。我算着算着觉得还是很 ,因为没有答案有没有!!做到最后一题奔溃掉,突然发现自己没有换算单位啊!!于是重算,竟然在最后一秒选好了正确答案,惊心动魄有木有!!
网测笔试无数。。。第一次做的那么奔溃,从前汇率提都是最后一题的',所以也不影响什么,这次摆在中间,直接秒杀我。。。
汇率混乱的同学,一定要事先把原理弄弄清楚啊。。。。还有有些题一看就是复杂到按计算机手软的,可以适当放弃。。。
微软笔试经验
前面10个是计算机专业相关的选择题,还算比较基础吧,os,data structure基础好一点肯定没有问题,有些选项出的不是很好,模棱两可的,也不知道该不该选,比如“进程内所有的事情都是thread做的”,我也选,选错了还要倒扣,
中间10个题,就是gre原来的逻辑部分,仔细看去都不难
程序题纯粹是在考指针用法,仔细点也不难
后面一道是吹水题,我瞎写的
最后一个改错题
1,isvalied似乎>,<搞反了, 2。求交集的min和max是不是也反了??? 3。要判断size==0,要不aryRect[1]就出错了,还有什么的?给copystr写test case也是吹水的`
总的感觉就是首先要把前面的题答好了,后面的吹水题大家差不多(牛人除外)
基本题型:
1.你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个,抓取多少个就可以确定你肯定有两个同一颜色的果冻?(5秒-1分钟)
2.烧一根不均匀的绳,从头烧到尾总共需要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.你让工人为你工作七天,回报是一根金条,
这个金一平分成相连的7段,你必须在每天结束的时候给他们一段金条如果只许你两次把金条弄断,你如何给你的 工人付费?( 1,2,4)
4.有一辆火车以每小时15公里的速度离开洛杉矶直奔纽约,另一辆火车以第小时20公里的速度从纽约开往洛杉矶。如果有一只鸟,以外30公里每小时的速度和两辆火车现时启动,比洛杉叽出发,碰到另辆车后返回,依次在两辆火车来回的飞行,只到两面辆火车相遇,请问,这只小鸟习行了多长距离? (6/7路程)
5.你有两个罐子,50个红色弹球,50个蓝色弹球,随机选出一个罐子,随机选取出一个弹球放入罐子,怎么给红色弹球最大的选中机会?在你的计划中,得到红球的准确几率是多少?
6.想象你在镜子前,请问,为什么镜子中的影像可以颠倒左右,却不能颠倒上下?
7.你有四人装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的重量+1.只称量一次,如何判断哪个罐子的药被污染了?
8.如果你有无穷多的水,一个3夸脱的和一个5夸脱的提桶,你如何准确称出4夸脱的水?(两次 5-3=2剩1,,再5-1)
9.你有一桶果冻,其中有黄色,绿色,红色三种,,闭上眼睛选出同样颜色的两个,抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?
10.如果要你能去掉50个州的任何一个,那你去掉哪一个,为什么?
11.将汽车钥匙插入车门,向哪个方向旋转就可以打开车锁?
微软笔试真题
例行交代一下,今天早上闹钟不知道的何故没有响(每次有事的时候总出问题),8点钟起床,8点20出发。三环外堵车,92路还堵。下车9:35,因为提前二十分钟进场,我就跑过去了。我原以为迟到会直接取消资格,结果10点才开始,而且有个姐姐过了开考半个多小时才过来,太飙汗了。全英文的,20道选择题,不定项选择,分值不一样。全选中满分,以下全部为回忆写的。我只写出我自己的答案,有错请指出。
1. 给定一个整形数组,数组的大小为N,数组内的数的范围为-N到N,问最好的排序时间复杂度是多少?
A O(logN)
B O(N)
C O(NlogN)
D O(N2) /*(代表平方)*/
E 以上都不对
应该是B,采用位图排序,google位图排序
2. MVC模式是现在开发的一种常用设计模式,请问如下可以充当MVC模式中控制器的是?
A CSS
B HTML 模板
C Javascript
D Web Service
E 以上都不是
我真的不懂,我勉强觉得Web Service可以当作是控制器吧
3. 在编译进程中,会产生Parse Tree的是?
A 语法分析过程
B 语意分析过程
C 汇编代码过程
D 目标代码过程
百度了一下,貌似是在语法分析上,没学过编译原理不懂,后面百度链接baike.baidu.com/view/29903.htm
4. 寻找最短路径,给定一个还算不是很复杂的图。图不记得了,选项也不记得了。
google 普鲁姆算法 克鲁斯卡尔算法
5. 一个节点可以生成生成一种二叉树,两个相同的节点可以生成两种二叉树,三个相同的节点可以生成5种二叉树?那5种呢?
备选答案忘记了。刚查了一下,42。公式是C(2n, n)/(n+1)
6. 对于一个32位的操作系统来说,那些是正确的?
A. 操作系统可以访问到的物理内存为4G
B. 用户空间可访问的内存为4G
C. 碎片会极大的减缓程序的运行速度
D. 虚拟内存对应的'实际内存不一定要连续
我觉得是ACD
7. 给定一个二进制串,001110101如何编程001110010,
选项忘记了,反正就是一个符号运算符,应该是考补码的表示的。还有就是或与运算符。
8. 代码,运行结果是什么。比较简单,就不写了,应该就是找第几大的数。
9. 这个也是一个代码,F(1024)运行结果。没i有做出来,不懂他要考什么,大概代码:
int F(int i)
{
if (i == 0)
{
return 4;
}
if (i == 1)
{
return 0;
}
int p1 = 0;
int p2 = 4;
int count = 2;
for (count < i)
{
int p3 = (p1+p2)%5;
p1 = p2;
p2 = p3;
count++;
}
return (p1 + p2)%5;
}
10. 找出一个数组中,第M大的数,时间复杂度是?
A O(logN)
B O(N)
C O(NlogN)
D O(N2) /*(代表平方)*/
E 以上都不对
编程珠玑上看到了的,就是O(N)
11. 强制转换问题,int i, float f, double d, 下面哪个正确?
A i = (int)(double)i;
B i = (int)(float)i;
C f = -(-f);
D f = (float)(double)f;
E d = (double)(float)d;
12. 下面哪一个数可以判读是否一个数是2的n次方(n可以是等于或大于0的数)。位运算,还是于运算、或运算。
13. 一个排序二叉树,有5个元素,里面是1,2,3,4,5。问以下哪个序列不能遍历出来?
比如中序遍历出来是1,2,3,4,5,给定了四个序列,每个按照序列采用后序或者前序或者遍历构造一个排序二叉树,看能不能构造出来。
14. 99!里面有多少个0?
A 9
B 21
C 22
D 31
E 32
15. 一个virtual class 能不能生成一个abstract table?
16. 考前缀表达式,我不懂。
★ 微软面试
★ 假如微软在中国
★ 笔试题库