微软校长笔试真题及答案(二)

更新时间:高考猫
  题目二:   1写出下列算法的时间复杂度。   (1)冒泡排序;   (2)选择排序;   (3)插入排序;   (4)快速排序;   (5)堆排序;   (6)归并排序;   2写出下列程序在X86上的运行结果。   struct mybitfields   {   unsigned short a : 4;   unsigned short b : 5;   unsigned short c : 7;   }test   void main(void)   {   int i;   test.a=2;   test.b=3;   test.c=0;   i=*((short *)&test);   printf("%d\n",i);   }   3写出下列程序的运行结果。   unsigned int i=3;   cout<   4写出下列程序所有可能的运行结果。   int a;   int b;   int c;   void F1()   {   b=a*2;   a=b;   }   void F2()   {   c=a+1;   a=c;   }   main()   {   a=5;   //Start F1,F2 in parallel   F1(); F2();   printf("a=%d\n",a);   }   5考察了一个CharPrev()函数的作用。   6对 16 Bits colors的处理,要求:   (1)Byte转换为RGB时,保留高5、6bits;   (2)RGB转换为Byte时,第2、3位置零。   7一个链表的操作,注意代码的健壮和安全性。要求:   (1)增加一个元素;   (2)获得头元素;   (3)弹出头元素(获得值并删除)。   8一个给定的数值由左边开始升位到右边第N位,如 0010<<1 == 0100 或者 0001 0011<<4 == 0011 0000   请用C或者C++或者其他X86上能运行的程序实现。   附加题(只有在完成以上题目后,才获准回答)   In C++, what does "explicit" mean? what does "protected" mean?   题目三:   某栋写字楼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   1 2 3   2 3 1   在1秒的时候有客人请求从2层到3层,2秒的时候有客人请求从3层到1层   输出: 设计一种简单实用的输出可以清晰地反映电梯的运转情况   题目四:   选择题部分   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. 问以下哪些特征不是 interPted language(解释型语言)所独有的:   (我们知道一般分为两种:解释型语言 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.对给出的字符串只能遍历一遍   不能使用任何库函数。   我们给了两个供你调用的函数   int intIsSpace(char str)()   当字符不为空格时,将返回 0   当字符为空格时,将返回其它任意非 0 值   int intIsNewLine(char str)()当字符不为换行时,将返回 0   当字符为换行时,将返回其它任意非 0 值   程序编写完成后,请编写测试用例,并说明它完成的作用。

中国点击率最高的一篇文章 !