zoukankan      html  css  js  c++  java
  • 微软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的均可以)



  • 相关阅读:
    接口方法上的注解无法被@Aspect声明的切面拦截的原因分析
    SpringBoot整合Netty
    简单的RPC框架
    基于redis的分布式锁的分析与实践
    8种方案解决重复提交问题
    领券中心项目,如何用 Redis 做实时订阅推送的?
    IM(即时通讯)服务端(二)
    IM(即时通讯)服务端(一)
    0xC00000FD: Stack overflow (parameters: 0x00000000, 0x003E2000).错误
    int (*a)[10]和int *a[10]的区别
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3003139.html
Copyright © 2011-2022 走看看