搜狗2013年校园招聘研发类笔试试卷之C/C++类
今天无聊在网上搜了下今年各大NB IT公司的笔试题,搜到了搜狗的,只有扫描版的试卷没有电子版也没有答案,就拿来做了做,题目非常多,涉及到C/C++、Java、数据结构、Android、IOS、Javascript等Web、甚至数据挖掘、综合类,在此先公布几道C/C++的基础题,十分简单当然也不是Hello World那种的,一不小心就容易犯错。
就是一些程序输出题:都是些基本题,学的基础扎实的不成问题,所以大牛们就飘过吧,给那些和我一些菜鸟的人准备滴~~~
虽然是选择题,但为了更有挑战力,我不给出选项了,大家看看能不能全部做出来,我这有标准答案,可以回复答案,我给你们打分哈~~~
1. 程序的输出结果:
#include <iostream> using namespace std; class Base { public: Base(int j) : i(j) {} virtual ~Base() {} void func1() { i *= 10; func2(); } int getValue() { return i; } protected: virtual void func2() { i++; } protected: int i; }; class Child : public Base { public: Child(int j) : Base(j) {} void func1() { i *= 100; func2(); } protected: void func2() { i += 2; } }; int main() { Base *pb = new Child(1); pb->func1(); cout << pb->getValue() << endl; delete pb; return 0; }
2.程序的输出结果:
#include <stdio.h> #define DOUBLE(x) x + x void main() { int i = DOUBLE(5) * 5; printf("%d\n", i); }
3. 程序的输出结果:
#include <stdio.h> int main() { char num; for(num = 0; num < 255; ) { num += num; } printf("the num is %d\n", num); }
4. 程序出错在什么阶段(编译?运行?)还是程序正常运行呢?
#include <iostream> using namespace std; int main(int argc, char **argv) { hhhhttp://www.sogou.com cout << "Welcome to sogou" << endl; return 0; }
5. x86_64环境下
#include <stdio.h> int main() { int a[4][4] = { {1, 2, 3, 4}, {50, 60, 70, 80}, {900, 1000, 1100, 1200}, {13000, 14000, 15000, 16000} }; int (*p1)[4] = a; int (*p2)[4] = &a[0]; int *p3 = &a[0][0]; printf("%d, %d, %d, %d\n", *(*(a + 1) - 1), *(*(p1 + 3) - 2) + 1, *(*(p2 - 1) + 16) + 2, *(p3 + sizeof(p1) - 3)); printf("%d\n", sizeof(p1)); return 0; }
6. 在32位操作系统gcc编译环境下,下面程序的运行结果为:
#include <iostream.h> class A { public: int b; char c; virtual void print() { cout << "this is father's function!" << endl; } }; class B : A { public: virtual void print() { cout << "this is children's function!" << endl; } }; int main() { cout << sizeof(A) << " " << sizeof(B) << endl; return 0; }
7. 有如下几个类和函数定义,几个bar都能编译通过吗?哪些能通过?哪些通不过?
#include <iostream> using namespace std; class A { public: virtual void foo() {} }; class B { public: virtual void foo() {} }; class C :public A, public B { public: virtual void foo() {} }; void bar1(A *pa) { B *pc = dynamic_cast<B *>(pa); } void bar2(A *pa) { B *pc = static_cast<B *>(pa); } void bar3() { C c; A *pa = &c; B *pb = static_cast<B *>(static_cast<C *>(pa)); }
大家没事做做哈!不用跑去机器上运行一遍,浪费时间(虽然只需要复制粘贴),另外有些题我也不是很明白(真正的小菜鸟),比如第5题,本人Java学的还可以,但C语言都忘的差不多了,特别是指针,如果理解的麻烦给我解释下,谢谢啦!
作者:Alexia(minmin)
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎微博互粉
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。