• 微软笔试题


    2009年微软清华笔试笔经

    第一部分 Basics 应该是常识题。
    一些 Threads,Memory Manager, HTTP session ,OSI&HTTP,Heap&Stack,BTree,Sorting
    Algorithm 等等。这部分我答的很菜因为没有复习且荒于时间估计要覆没了,基本的内容
    还是操作系统和数据结构
    第二部分
    Reasoning 和以前GRE 的Analitical 很像有组题 也有单题
    做的还算比较爽
    第三部分 Programming
    一道题
    一个单向链表 给出 链表头pHead 和另一个链表中位置pStartNode,要把它转化为以
    pStartNode 为头的链表,但元素链接方向相反了
    例如
    p1->p2->p3->p4->p5->null pHead=p1;pStartNode=p3
    转换后变成了 p3->p2->p1->p5->p4->null;
    我也rush 的写完了
    第四部分 Design
    给了一个 Outlook2003 的图,要求你给新的Outlook 提建议和新的feature
    第五部分 Testing
    一个是要测试一个一堆矩阵的重合区域的程序,找bug 并提供测试例子。
    另一个是给 字符串拷贝 strcpy 找测试例子
    总的来说 卷子不算很难还是比较基本的 不过 Basics 之类的题可能还是要把一些基础
    课稍微复习复习。不过我因为少答了一个小时所以只能充当分母了,不过去玩玩 ms 的题
    还是挺有意思的题出的还是比较不错的虽然我很多不会做。

    2010年9月26日微软笔试题 收藏

    一、选择题(10个,答对得4分,不答得0分,答错得-1分)

    Question 1

    合并两个已排好序的数组在最坏情况下需要比较多少次?

    (A)2n (B)2n-1 (C)2n+1 (D)2n-2 (E)None of above

    Question 2

    Question 3

    Question 4

    Question 5

    Question 6

    Question 7

    #include
    #include
    int main()
    {
    char a[] = "Hello World";
    char *b = "byebye";
    strncpy(a, b, strlen(b));
    printf("%s ", a);
    return 0;
    }

    Question 8

    binary search tree

    Question 9

    C程序,读程序写出结果。

    Question 10

    看程序写出结果:

    #include
    #include

    class Base
    {
    protected:
    int m_value;
    public:
    Base(){
    m_value = 0;
    }
    virtual int getValue(){
    return --m_value;
    }
    };
    class Derived:public Base
    {
    public:
    virtual int getValue(){
    return ++m_value;
    }
    };
    int main()
    {
    Derived *pDerived = new Derived();
    Base *pBase = pDerived;
    Base &base = *pBase;
    pDerived->getValue();
    pBase->getValue();
    base.getValue();
    printf("%d,", pDerived->getValue());
    printf("%d,", pBase->getValue());
    printf("%d ", base.getValue());
    return 0;
    }

    二、编程题

    一个rotated sorted array是一个在某处交换了元素的sorted array,例如,rotated sorted array[13, 27, 37, 2, 3, 5]是从sorted array[2, 3, 5, 13, 27, 37]变换而来的,这个sorted array是以增序排好序的。

    现在需要计算给定值在rotated sorted array中的索引。例如,27在rotated sorted array[13, 27, 37, 2, 3, 5]中的索引是2。注意:如果想得满分,程序的时间复杂度需要小于O(n)。

    参考答案(仅供参考):

    一、(1)B

    (2)

    (3)

    (4)

    (5)

    (6)

    (7)byebyeWorld

    (8)

    (9)

    (10)4,5,6

    二、

    2010.4.24笔试

    编程题

    一个文件中有多行信息,每一行信息中,第一个为一个key,后面用空格间隔若干symbol,例如:
    B A C D E(每一行中的一个symbol至多出现一次,且不与key重复),表示B<A B<C B<D B<E关联。
    若一行中只有一个值,如
    C
    则表示无关联。
    现在求写出一个算法,判断一个文件下的所有行中所包含的关联,能否囊括所有元素的关联,使之形成一个sort链,达到例如:A<B<C<D的效果。
    例1
    input:
    A B C
    B C
    C
    (means:A<B A<C B<C)
    output:
    It can be sorted determine.
    例2
    input:
    A B
    B A
    C
    (means:A<B B<A)
    output:
    It can't be sorted determine.
    例3
    input:
    A B
    A C
    C
    (means:A<B A<C)
    output:
    It can't be sorted determine.

    2009年微软笔试笔经

    赶到考场已经13:45,闲话少数,考试开始了。经过一番没睡午觉后的疲劳作战,考
    试结束了。走出考场就像先睡一觉。呵呵不管了,一切听天由命吧。不过,人不能太自私,
    总结一下,利己利人吧^_^。
    我做的A 卷,这套题共分五部分,依次是Basic,Reasoning,Programming,Design,
    Testing。 Basic 好像有11 道题多选题,答对一个加一分,答错一个扣0.5。
    有一个是给汇编代码,让选择其功能。最后一个是SQL 题,我不懂,不会:(。别的记
    不起来了。
    Reasong 部分好像有12 道题。其中前两道题我敢断定是从GRE 上抄来的,可惜GRE 的书
    我虽然借了,但是没看。这两道题根本没读懂,也就不说了。后面的题由一个大题组成,分
    成好像是10 个小题。
    大题题面大意为:现欲举办一场音乐会,组织者准备请四个小提琴家F,G,H,J 和五
    个钢琴家R,S,T,W,Z。会议有六天,每天只能有一个人表演,但是有如下限制:
    (1) 如果 F 表演,则前三天必须都为小提琴表演;
    (2) 如果 J 表演,则必须是在第六天。
    (3) 如果 R 表演,则T 必须在第一天表演。
    (4) 如果 W 表演,它的前一天和后一天都不能是钢琴表演。
    问组织者应如何安排表演?
    下边有 10 个小题左右,都是针对可能情况发问的。我随便举一例吧:
    下面哪项可能为真?(多选)
    A. 如果 F 表演,则W 不可能表演。
    B. 如果 R 表演,则W 不可能表演。
    C. 如果 J 表演,则F,W 不能同时表演。
    D. 如果 W 表演,则S,T 不能同时表演。
    声明:此题为我根据印象编制的,反映题目类型。忠告大家:要对付此题有一个绝好的办法:
    你去找那个五个小姐,领养五个宠物,穿五种颜色衣服,喜欢吃五种水果那道题。自己推出
    那道题,此类问题一概搞定。
    Programing 部分有两道大题。
    第一题如下:编写一个函数GetGCD,来求一个数组中N 个数的GCD(Greatest Common
    Demonitor),即最大公约数。并写出尽可能多的测试用例。
    例如 GCD(18,12)=6, GCD(14,35)=7。。。
    (1)函数原型如下:int GetGCD(CAryInt & aryInt);
    (2)数组访问使用[]操作符,
    (3)数组元素个数由CAryInt 的成员函数GetSize 获得。
    众所周知,求最两个数大公约数算法为欧几里得算法,求整个数组的最大公约数就可以
    先求头两个的,然后求结果和第三个数的最大公约数,依次反复,直到最后,具体算法在此
    不赘述。
    第二题如下:设计一个数据结构,用来存储一个字典。并写一个函数PrintWord,当要
    查询‘ab’时,其输出为所有以ab 开头的单词。此题开始没想到怎么做,后来突然想起可
    以用树来存储,我的实现为:将所有相同字母开头的单词组成一个树,这样26 个树组成的
    森林即为整个字典。树的每个结点有26 个儿子,分别代表a 到z,然后还要有个字段表示
    该结点的字符串,还要有个字段表示该字符串长度,遗憾的事,还应该有个字段表示该结点
    是否是单词,可惜我当时没想到,不管啦,听天由命吧。具体算法即结构定义略。
    Design 部分一个大题
    题目是让你给MSN Messenger 提出新的特性,如果给你三个月时间,你如何改进它?
    这个题我自己从用户界面角度编了这么几条(纯属个人意见,不要骂我哦):
    (1) 应该有自动隐藏功能,像QQ 那样。
    (2) 还应该有留言功能。
    (3) 还应该能更换皮肤
    (4) 还应该能有MSN Space 的快照,让我方便的看到我朋友的MSN 空间的缩略信息。
    Testing 部分有两个大题:
    第一题为找bug,改bug 题。给的程序是判断一个单向链表是否含有环的程序,如果有,
    返回产生环的第一个结点的指针,否则返回NULL。并写出尽可能多的测试用例 Struct
    LinkedList {
    LinkedList *pNext;
    }
    Struct LinkedList *IsCyclicList(struct LinkedList *pHead)
    {
    Struct LinkedList *pCur, *pStart;
    While(pCur){
    For(;;){
    If(pCur!=pStart)
    pStart=pStart->pNext;
    }
    pCur = pCur->pNext
    }
    }
    这个程序写得实在太烂了,改都不好改。我就简单指出了其几个典型错误,然后就自己
    写了一个算法。其典型错误为:链表结构定义的不对,没有数据字段,否则这个链表没任何
    意义;指针没初始化;for 循环会陷入死循环。
    我给出的算法是
    Struct LinkedList {
    Int data;
    Struct LinkedList *pNext;
    }
    Struct LinkedList *IsCyclicList(struct LinkedList *pHead)
    {
    Struct LinkedList *pCur, *pStart;
    If (!pHead)
    Return NULL;
    Else if(!pHead->pNext)
    Return NULL;
    pCur=pHead;
    pStart=pHead->pNext;
    While(pStart&&pCur!=pStart){
    If(pStart->pNext)
    pStart=pStart->pNext->pNext;
    else
    pStart=NULL;
    pCur=pCur->next;
    }
    Return pStart;
    }
    我也没仔细推敲,对不对反正就它了。
    第二题为:给你一个函数int system(char *command),该函数为command 字符串的命令
    解释器,其命令为机器可执行的命令,让你写出尽可能多的测试用例,有多少写多少。
    以前经常在往事看前人们的总结,现在也贡献给大家一点,欢迎各位考友补充,希望对
    大家有帮助,也顺便纪念我这繁忙而充实的一天^_^。

  • 相关阅读:
    数组
    2017.3.20for
    PHP基础2
    php基础1
    触发器
    SQL储存过程
    范式
    时间戳
    主键和外键
    15 大图轮播
  • 原文地址:https://www.cnblogs.com/sooner/p/3276393.html
Copyright © 2020-2023  润新知