微软2013年暑期实习招聘笔试回忆[已补充完整]

刚考完,开始觉得做的还好,下来把不确定的验证下,发现悲剧了好多。。


总共20道选择题,全部不定项。总分100分,时间75分钟。去年时间是90分钟的。。。。

 

1~8,做对3分,半对2分,错误-2分,不做0分

9~18,做对5分,半对3分,错误-3分,不做0分

19~20,做对13分,半对7分,错误-7分,不做0分

 

以下只代表我记得的,不代表原试卷信息。


1、关于支持不定数量参数的方法(supportvariable parameters)有哪些?

(cdecl,stdcall,pascal,fastcall)

cdecl只有这一个。


2、以下代码输出的结果是:

 

class A
{
public:
    virtual void f()
    {
        cout<<"A::f"<<endl;
    }
    void f() const
    {
        cout<<"A::f const"<<endl;
    }
};

class B:public A
{
public:
    virtual void f()
    {
        cout<<"B::f"<<endl;
    }
    void f() const
    {
        cout<<"B::f const"<<endl;
    }
};

void g(const A* a)
{
    a->f();
}

int main()
{
    A *b = new B();
    b->f();
    g(b);
    return 0;
}

 


答案为:

 

B::f A::f const

 

 

第一个b->f()为动态绑定,输出B::f没问题,第二个,目前还没弄明白,

 

感觉是由于函数g的参数有const,所以调用成员函数也是调用const版本,但是const版本的不是虚函数,不存在动态绑定,所以输出A::f const。


3、linked list和array的区别,链表与数组的区别。

4、线程Thread和进程Process的区别(下列关于...和...说法正确的是?)好像是指明了windows下的。

 

5、更奇葩的:

 

    int i=10,j=10;
    i = i++;
    j = ++j;
    cout<<i<<","<<j;


问输出结果:

 

使用g++编译,直接警告这是未定义的。。。。。

当然也给出了结果11,11.

使用vc编译,没有任何警告,结果也是11,11.


6、给一个二维数组,求数组的[x][y]是多少(x,y是确定的数字)?Java/C#下的
答案是越界。

7、关于const int x和const int * x和int const x的注释表述是否正确。
貌似AB选项忘记初始化了,但是描述正确的是ABC,自己查查资料吧。

8、以下代码输出的结果是:

 

class C
{
public:
    long    a;
};

class D:public C
{
public:
    long b;
};

void seta(C *data, int index)
{
    data[index].a = 2;
}

int main()
{
    D data[4];
    cout<<sizeof(C)<<","<<sizeof(D)<<endl;
    for(int i=0;i<4;++i)
    {
        data[i].a = 1;
        data[i].b = 1;
        seta(data,i);
    }
    for(int i=0;i<4;++i)
    {
        cout<<data[i].a<<data[i].b;
    }
    return 0;
}


 

答案:22221111.

这个做错了。。。。。觉得不可能这么简单,果然有猫腻。。

seta中,参数是基类C类型的指针,然后移动指针取对象并赋值,

但是main中往函数seta中传递的是派生类的对象,所以对象被截取了。。。再按照基类去取对象,只取出了一部分

自己慢慢体会吧。。。


9、1000瓶中有1瓶毒药,喂老鼠,问至少多少只老鼠,才能识别毒药?

(2^n > 1000),n=10即可。


10.下列代码输出值为1的是?(其中选项有return 1&7,return "ab" == "ab")

1&7=1;

gcc下会对"ab" == "ab"警告:比较字面值是未定义的行为。但是结果也给出1.


11、32位有符号数x,x/2不等于x>>1的情况?


12、3*4的表格grid,可能找出多少个方框?(6 0)

 


13、一条直线可以将平面分2部分,2条可以分4部分,问100条可以分多少部分?

自己画画吧,我当时没读懂题意,空着。。。


14、稳定的排序方法?

选项:有(冒泡排序、快排、堆排序、希尔排序、归并排序)


 

15、关于MVC中M、V、C的职责描述


16、二叉树的还原(必须要有中序,外加其他的任一一个)


17、n长度的string,求它substring子串的可能性

 2^n - 1个


18、sql执行,影响的结果条数?(涉及in、group、sum关键字)


19、单向图的最短路径?不需要算法,画画就出来了。放最后真浪费。。。那么高的分数。。


20、有N个球,只有一个的质量和其他的不同,给你一个天平,允许称3次(只能称相等或不等,没有刻度的),问下面可能的N有?

(<= 3 ^ 3的均可以)

 



 

posted @ 2013-04-06 22:47  坚固66  阅读(210)  评论(0编辑  收藏  举报