微软校园招聘笔试+笔经超完整版.docx
- 文档编号:2865493
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:105
- 大小:81.52KB
微软校园招聘笔试+笔经超完整版.docx
《微软校园招聘笔试+笔经超完整版.docx》由会员分享,可在线阅读,更多相关《微软校园招聘笔试+笔经超完整版.docx(105页珍藏版)》请在冰点文库上搜索。
微软校园招聘笔试+笔经超完整版
目录
Part1笔试题目2
笔试题一2
微软实习生招聘4
5.1史上最全的笔面题(含答案)5
2011-5-28微软笔试7
Microsoft实习生面试时的笔试(英文)9
TestforBasicComputerScienceKnowledge12
微软的应试题完整版(附答案)16
笔试题(网络大汇总)24
Part2笔试经验54
微软笔试的一点回忆54
微软2010年5月笔试小谈55
微软2010年4月笔试内容56
给参加微软笔试的同学们一些建议57
微软软件开发笔试归来58
微软笔试应对经验59
Part1笔试题目
笔试题一
1写出下列算法的时间复杂度。
(1)冒泡排序;
(2)选择排序;
(3)插入排序;
(4)快速排序;
(5)堆排序;
(6)归并排序;
2写出下列程序在X86上的运行结果。
structmybitfields
{
unsignedshorta:
4;
unsignedshortb:
5;
unsignedshortc:
7;
}test
voidmain(void)
{
inti;
test.a=2;
test.b=3;
test.c=0;
i=*((short*)&test);
printf("%d\n",i);
}
3写出下列程序的运行结果。
unsignedinti=3;
cout<
4写出下列程序所有可能的运行结果。
inta;
intb;
intc;
voidF1()
{
b=a*2;
a=b;
}
voidF2()
{
c=a+1;
a=c;
}
main()
{
a=5;
//StartF1,F2inparallel
F1();F2();
printf("a=%d\n",a);
}
5考察了一个CharPrev()函数的作用。
6对16Bitscolors的处理,要求:
(1)Byte转换为RGB时,保留高5、6bits;
(2)RGB转换为Byte时,第2、3位置零。
7一个链表的操作,注意代码的健壮和安全性。
要求:
(1)增加一个元素;
(2)获得头元素;
(3)弹出头元素(获得值并删除)。
8一个给定的数值由左边开始升位到右边第N位,如
0010<<1==0100
或者
00010011<<4==00110000
请用C或者C++或者其他X86上能运行的程序实现。
附加题(只有在完成以上题目后,才获准回答)
InC++,whatdoes"explicit"mean?
whatdoes"protected"mean?
网上有不少Microsoft的测试题,引来不少的眼光。
在这里把所有的测试题加以整理,再附上答案。
(个别题目答案有多种,文本仅代表作者的思路)每道题的后面会给出一个时间。
这个时间是作者做出该题所用的时间。
(注意,这不是什么标准时间,相信所有浏览本试卷的朋友都会在某一道或多道题上找到灵感,迅速解题的)!
微软实习生招聘
您好!
以下是本次微软实习生招聘的笔试题目,请仔细阅读并认真答题:
注意:
本次测试题目仅限本人阅读,请勿传阅他人。
谢谢!
提交材料
1.不超过2页的说明书,包括算法,设计,使用说明,及程序编译运行环境要求
2.C#,C++或C程序源代码,程序必须是可运行的
3.Optional:
VisualStudioProject文件,以及其他编译必须文件
4.请在截止时间11月30日(周日)前交卷(含周日当天),若未完成,也可交卷同时写明哪些部分没有完成
超过截止日期仍未交卷者,将视为放弃,特此提醒!
评价标准
1.系统设计:
条理清晰,设计可扩展性
2.代码质量
3.说明书简洁清楚(bonuspointsifwritteninclearandconciseEnglish)
4.算法性能
问题
某栋写字楼6层,有1部电梯,请编写一个电梯仿真程序
A.考虑如下条件
1.每层楼都有上行和下行两个按键
2.电梯一开始停在1层
3.电梯可以容纳8个人
4.乘坐电梯的客人的请求频率,时间间隔和到达楼层是随机的
5.电梯的上下一层需要1秒
6.电梯空间有限,同时只能容纳一定数量的客人,如果已经达到人数额度,电梯将不理会任何请求
7.不考虑客人请求当前楼层和不请求楼层的情况
8.电梯的响应延迟为0(比如,电梯往3楼上行,3楼的客人在电梯到达3楼之前按上行键,程序有权调度电梯在3楼开门)
9.电梯的开关门时间和客人上下电梯时间为0,匀速运行
10.电梯调度算法不能预读尚未发生的请求(比如在10秒的时候电梯无法预知11秒时某层客人的请求)
11.客人请求发生在整数秒
B.目标
1.在运送所有客人到达目标楼层的前提下电梯的总行程尽可能小
2.设计一个接口,实现调度算法的可替换性(比如,通过重新实现该接口可以使系统使用其它算法)
C.输入和输出
输入:
input.txt
客人的请求序列,格式为到达时间,所在楼层,请求楼层,假设该输入是按照时间递增的
比如:
input.txt
123
231
在1秒的时候有客人请求从2层到3层,2秒的时候有客人请求从3层到1层
输出:
设计一种简单实用的输出可以清晰地反映电梯的运转情况
5.1史上最全的笔面题(含答案)
一、最基本题型(说明:
此类题型比较简单)
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小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?
都分别是什么时间?
你怎样算出来的?
二。
没有答案型(说明:
这些题显然不是考你智力。
而考的是你的反应能力。
这种题大多数没有答案,但是要看你的反应喽!
)
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个蓝色弹球,随机选出一个罐子,随机选出一个弹球放入罐子,怎么给出红色弹球最大的选中机会?
在你的计划里,得到红球的几率是多少?
四。
超难题(说明:
如果你是第一次看到这种题,并且以前从来没有见过类似的题型,并且能够在半个小时之内做出答案。
只能说明你的智力超常……)
1.五个海盗抢到?
00颗宝石,每一颗都一样大小和价值连城。
他们决定这么分:
抽签决定自己的号码(1、2、3、4、5)首先,由1号提出分配方案,然后大家表决,当且仅当超过半数的人同意时,按照他的方案进行分配,否则将被扔进大海喂鲨鱼如果1号死后,再由2号提出分配方案,然后剩下的4人进行表决,当且仅当超过半数的人同意时,按照他的方案进行分配,否则将被扔入大海喂鲨鱼依此类推条件:
每个海盗都是很聪明的人,都能很理智地做出判断,从而做出选择。
问题:
第一个海盗提出怎样的分配方案才能使自己的收益最大?
2.一道关于飞机加油的问题,已知:
每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有加油机)一箱油可供一架飞机绕地球飞半圈,问题:
为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?
(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场)
五。
主观题(说明:
在以后的工作过程中,我们可定会犯这样那样的错误。
既然错误已经酿成,损失在所难免,我们只能想办法把损失减少到最小。
如果能巧妙地回答出这些问题,再发生错误的情况下。
能让客户有最少的抱怨,公司有最少的损失。
)
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.怎样把一个链表掉个顺序(也就是反序,注意链表的边界条件并考虑空链表)?
2011-5-28微软笔试
笔试分为两大部分,全部是英语题,仅供参考
第一部分10道选择题每道题答对4分,不答0分,写一个错误选项则会扣除一分。
(共40分)
第二部分是一道编程题(C、C++、C#、Java均可),写完之后要编写测试用例。
(35+15)
选择题部分
1.以下哪些不是栈的基本操作
A.push
B.pop
C.判断栈是否为空
D.栈排序
2.两个有序数组大小都是n,现在要对它们进行合并排序。
问最坏情况下,需要比较多少次?
A.2n+1
B.2n
C.2n-1
D…记不清了
3.(an表示第n个常数,x^5表示x的5次方)
f(x)=a0*x^0+a1*x^1+a2*x^2+……an*x^n
对于固定的n,f(x)的时间复杂度以及空间复杂度分别是多少?
A.o(n^2),o(n)
B.o(n),o
(1)
C
D都记不住了
4.是个概率题,大概意思是这样的
现在有800个人,但是只有400份奖品,有一对夫妇都参加抽奖,但是他们最多抽到一份奖,现在问
他们俩能抽到一份奖的概率是多少?
A.0.5
B.0.75
C.(0.5,0.75)
D.(0.75,1)
5.现有一链表当前指示节点为currentNode,生成了一个新节点newNode,问要把newNode插入到currentNode之后,该怎么做?
A…
B…
C.newNode->next=currentNode->next,currentNode->next=newNode.D…6.问以下哪些特征不是interpretedlanguage(解释型语言)所独有的:
(我们知道一般分为两种:
解释型语言VB,Shell,批处理等;编译型语言,C,java等。
各有优点)
A.平台无关性。
(明显不对,因为java才是平台无关的)
B.执行速度较快(这个问题,以前做作业时就没争论清楚,自己感觉解释型语言不需要编译,速度能快一些,但是重复执行时,编译型语言只需要编译一次,效率高……)
C.可以定义动态变量(应该两种都可以)
D.以上都不对
7.给了一个二叉树,让求后序遍历的结果。
这个题如果知道后序遍历,肯定就可以做出来了。
尽管不难还是要搞清楚三者的区别(哈哈)
先序左根右
中序根左右
后序左右根
8.问以下几种排序方法,在最坏情况下时间复杂度小于o(n^2)的是哪一种(这个题目记得不是很清楚了)
A.快排
B.插入排序
C.合并排序
D.栈排序
9.现有n+1这么大的存储空间(可以理解有这么一个大小为n+1的数组),中间存了[1,n+1]范围内的n个数,说明丢失了一个数,现在要找出这个丢失的数,问最好情况下时间复杂度是多少
A.o
(1)
B.o(n)
C.o(n^2)
D.o(nlogn)
10.是一道程序题,由于太长,无从记忆……
编程题部分用C,C++,C#,或Java中的一种来编写以下程序。
现在给你一个字符串,其中特殊的字符只有两种space(空格)(""),newline(换行)(/n)。
现在让你来去除其中多余的空格。
具体要求
1.连续的空格只能当保留其中一个
2.该字符串的开头不能有空格
3.该字符串的结尾不能有空格
4.任何/n的前面或才后面都不能存在多余的空格
为了得到很高的分数,还需要满足以下条件
1.不能申请新的字符串空间
2.对给出的字符串只能遍历一遍
不能使用任何库函数。
我们给了两个供你调用的函数
intintIsSpace(charstr)()
当字符不为空格时,将返回0
当字符为空格时,将返回其它任意非0值
intintIsNewLine(charstr)()当字符不为换行时,将返回0
当字符为换行时,将返回其它任意非0值
程序编写完成后,请编写测试用例,并说明它完成的作用。
Microsoft实习生面试时的笔试(英文)
Microsoft实习生面试时的笔试(45分钟)(总第2次笔试)
(08年微软实习生---电子科技大学成都学院面试)
总共2大题
第一题(数据结构题)
读程序补充程序中缺少的部分难度不大
本次笔试程序的内容是数据结构中的线性表的链式存储
程序中出现需要补充的几个主要的函数:
线性链表的创建,插入,删除,判断链表是否为循环链表。
程序用c语言描述,指针一定要掌握好。
以下程序自己所写
仅供参考:
(以下程序在vc6.0中编译通过)
//Copyrightshuchen
//
//描述:
程序描述了单链表的创建,插入,删除
//注意:
判断是否循环链表由读者自己实现
//
//作者:
胡琛
//日期:
2007-7-22,16:
38:
25
#include
#defineERROR_OK0
#defineERROR_OUT_OF_MEMORY1
#defineERROR_OVERFLOW2
structLNode
{
intdata;
LNode*next;
};
//创建一个链表length为要创建链表的大小,head为头指针
intCreateList(LNode*&head,intlength)
{
head=newLNode();
if(!
head)
{
returnERROR_OUT_OF_MEMORY;
}
head->next=NULL;
LNode*p;
printf("pleaseentertheelement:
\n");
for(inti=0;i { p=newLNode(); if(! p) { returnERROR_OUT_OF_MEMORY; } scanf("%d",&(p->data)); p->next=head->next; head->next=p; } returnERROR_OK; } //插入一个节点 intInsert(LNode*head,intlocation) { intindex=1; while(index { head=head->next; ++index; } if(! (head->next)) { printf("overflow! \n"); returnERROR_OVERFLOW; } LNode*p=newLNode(); if(! p) { returnERROR_OUT_OF_MEMORY; } printf("inputannumberyouwantinsert: \n"); scanf("%d",&(p->data)); p->next=head->next; head->next=p; returnERROR_OK; } //删除一个节点 intDelete(LNode*head,intlocation) { intindex=1; while(index {//第2个条件保证指针越界后指向最后一个节点 head=head->next; ++index; } if(! (head->next)) { printf("overflow! \n"); returnERROR_OVERFLOW; } LNode*p=head->next; head->next=p->next; deletep; returnERROR_OK; } voidShowLinkList(LNode*head) { printf("LinkList: "); LNode*p=head->next; while(p) { printf("%d",p->data); p=p->next; } printf("\n"); } voidmain() { LNode*head=NULL; intinitialLength,location; printf("pleaseinputannumbertoinitilizetheLinkList: \n");//初始化链表的元素个数 scanf("%d",&initialLength); if(! CreateList(head,initialLength)) { printf("CreateLinkListSuccess! \n"); } ShowLinkList(head); printf("pleaseinputanlocationyouwanttoinsertto: \n"); scanf("%d",&location); if(! Insert(head,location)) { printf("Insertsuccess! \n"); } ShowLinkList(head); printf("pleaseinputanlocationyouwanttodelete: \n"); scanf("%d",&location); if(! Delete(head,location)) { printf("Deletesuccess! \n"); } ShowLinkList(head); } 第一题总结: 把数据结构中的基础打牢(不可能一直考链表) 第二题 英译中 英语文章: 长度和难度都跟四级中阅读理解的文章差不多 TestforBasicComputerScienceKnowledge MicrosoftTechnologyCenter TestforBasicComputerScienceKnowledge Dearcandid
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微软 校园 招聘 笔试 笔经超 完整版