您的位置:首页 > 职场人生

搜狗2012笔试、面试体会

2011-10-12 18:26 253 查看
一、C/C++(10道)

1、求输出

   int a[]={1,2,3,4,5}

   int*ptr = (int*)(&a+1)
   printf("%d %d", *(a+1), *(ptr-1));

答:a与&a的地址是一个,&a的类型是int[5],所以打印结果为2、5

2、

class A{

   virtual foo("A");

}

class B:A{

   foo("B")

}

void func(A a){

   a.foo();

}

void func1(A* ptr)

{

   a->foo();

}

void func2(A &a)

{

   a.foo()
}

答:第一个调用A中foo,第二个根据ptr指向的类型来选择,第三个根据a所引用的类型来选择。 A、B、B。

int main()

{

    B b;

    func(b),func1(&b),func2(b);

}

3、

union u{

    struct{

        int a;

        short b;

        char c;

    } s;

    char d;
};

求sizeof(u)

答:8

4、

class A{

       virtual void print(int a=3)

      {

               printf("A=%d\n", a);

      }

};

class B:public A

{

         virtual void print(int b=5)

        {

                 printf("B=%d\n",b);

        }

};

int main()

{

     A*ptr = new B();

     ptr->print();

     return 0;

}

求输出结果。

答:输出B=3。函数动态绑定,参数默认绑定。

二、数据结构(10道)

1、顶点度与边关系

2、2叉树前序中序求后序

3、双向链表插入新节点

4、AVL、B+、Hash常见应用

5、各种排序比较次数

三、大题

1、p()是一个概率生成器,有p的概率生成0,1-p的概率生成1,问如何实现g()生成均匀的0、1分布

2、给一个数组A[], 求输出Output[], Output[i]为所有A[]中元素乘积除了A[i],比如:A[10], 那么Output[3]=A[0]*A[1]*A[2]*A[4]*...A[9]
要求不许用除法,在O(n)时间中算出Output[]

3、棋盘覆盖问题(经典)

4、O(n)求数组中的众数

5、rand7()实现rand10()

总结:前面的几个语言题难度还是蛮大的,如果不使用很难理解。棋盘覆盖问题非常巧妙。

6、LCS最长公共子串
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息