2013年人人校园招聘笔试题

一、选择题(每题5分,共计50分)
1、对于全局函数 int f(void) ,与其完全等价的函数原型为()
A、int &f();      B、int f(void) const;       C、const int f();      D、A、B、C都不是
2、下列关于构造函数的描述中,错误的是()
A、构造函数可以设置默认的参数
B、构造函数在定义类对象时自动执行
C、构造函数可以是内联函数
D、构造函数不可以重载
函数重载是通过靠参数来实现的,构造函数是可以重载的,但析构函数没有参数,不能重载,所以析构函数只有一个版本。
3、考虑函数原型 void test(int a , int b = 7, char ch='*'),下面的函数调用中,属于不合法调用的是()
A、test(5)      B、test(5,8)     C、test(6,'#')      D、test(0,0,'#')
4、所谓LRU页面淘汰算法是指将驻留在内存中()页面淘汰
A、时间最长的
B、最久未使用的
C、使用频度最少的
D、出现脏数据的
5、下列说法错误的是()
A、构造函数可以有一个参数         B、构造函数可以有多个参数
C、一个类只能有一个构造函数       D、一个类只能有一个析构函数
6、系统在调用重载函数时,能作为确定哪个重载函数被调用的依据是()
A、函数返回类型     B、参数个数    C、函数名称    D、参数名称
7、一个栈的入栈序列是A、B、C、D、E,则栈的不可能的输出序列是()
A、EDCBA       B、DECBA     C、DCEAB     D、ABCDE
8、有12个球,外形相同,其中一个小球的质量与其他11个不同,给一个天平,需要几次把这个小球找出来并且求出这个小球是比其他的轻还是重()
A、3     B、5      C、7      D、9



9、



二、问答题
1、编码实现环状单向链表(尾指针直接指向头指针,中间没有空节点),去除连续的重复元素的操作。
比如:1(头)->2->2->3->3->1->1(头) 去除以后的结果是1->2->3,注意头尾的1也要去掉一个。
struct Tnode
{
Tnode *next;
int value;
};


Tnode *unique(Tnode *head)
{
}



2、静安市区建有一条从南到北的公路,沿着这条公路有10个加油站,加油站总部每天都要给每个加油站补给一车汽油,加油站总公司计划在这10个加油站中选出一个加油站作为总补给点,每天负责给其他加油站送一车汽油,请问挑选哪个加油站使得每天负责运送汽油的总里程数最小,请用代码实现,如果时间不够,请写出主要思路。


3、阅读下面一段程序:
int foo(int x , int y)
{
	if(x == 0 || y == 0)
		return 2;
	return foo(x - 1 , y ) + foo(x , y - 1);
}
(1)当输入的x和y分别为8和8时,写出该程序的结果,并写出你的演算过程。   简单的递归应用
(2)该程序的执行效率很低,请写出你能想到的更高效f函数的实现方法。
由于递归的效率很低,所以我们可以使用递推函数来实现。
int foo(int x , int y)
{
	int i , j , res;
	int **c = new int*[x+1];      //共有x+1行  
    for(i = 0; i < x + 1 ; ++i)  
        c[i] = new int[y+1];      //共有y+1列
	//初始化
	for(i = 0; i < x + 1 ; ++i)
		c[i][0] = 2;
	for(i = 0; i < y + 1 ; ++i)
		c[0][i] = 2;

	for(i = 1; i < x + 1 ; ++i)
	{
		for(j = 1; j < y + 1 ; ++j)
			c[i][j] = c[i-1][j] + c[i][j-1];
	}
	res = c[x][y];  
    for(i = 0; i < x + 1 ; ++i)    //释放动态申请的二维数组  
        delete[] c[i];
    delete[] c;
	return res;
}

4、题目:由于诺基亚手机不止可以当作手机使用,还可以作为砖头防身,人人的员工小丁相测一测它从多高才能摔破。借助人人公司所在的静安中心大楼(共27层),小丁准备从1层开始一层一层的将诺基亚手机扔下去,直到摔破为止,显而易见,在最坏的情况下需要扔27次才能测出这个临界值(假定顶层的高度一定可以摔破这部诺基亚手机),小丁跟同事小李说了这个想法,小李说他这也有一部同型号的诺基亚手机,正好不用了给了小丁,现在小丁手中有两部诺基亚手机。
(1)请你帮忙计算一下在最坏情况下,小丁最少需要扔几次才能测出这个临界值,并且给出具体策略?(PS,两部手机,第一步手机选择第k层扔下去,若是没有摔坏我们可以继续拿来往楼下摔,若是摔坏了,只有一部手机了,还得按照之前一部手机的策略)
1+2+3+...+x>=27  可以求得x=7,则小丁最少需要扔7次才能测出这个临界值。
小丁依次分别站在7、13、18、22、25、27层进行测试,比如当在25层楼将诺基亚手机扔下去时,摔破了,则小丁从23层开始依次往楼上一层一层的测试,肯定在不超过7次的时候测出这个临界值。
(2)现在我们发散一下,假设给你m部诺基亚手机,n层的高楼(假定顶层的高度一定可以摔碎),在最坏情况下至少需要扔多少次才能测出临界高度?程序实现,最好给出算法思想,假定输入若干组m和n,你的程序需要对每组m、n给出响应结果。(其中m属于[1,50],n属于[1,1000])

转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/8453834
  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
《面向对象程序设计》试题 一、单选题(每空2分,共40分) 1、关于C++与C语言关系的描述,( )是错误的。 A.C语言是C++语言的一个子集 B.C语言与C++语言是兼容的 C.C++语言对C语言进行了一些改进 D.C++语言和C语言都是面向对象的 2、已知:int m=10; 下列表示引用的方法,( )是正确的。 A.int& x=m; B.int& y=10; C.int& z; D.float& t=&m; 3、考虑下面函数原型声明: void DefPar(int a, int b=7, char z = '*'); 下面函数调用,不合法的是( )。 A.DefPar(5); B.DefPar(5,8); C.DefPar(5,'#'); D.DefPar(0,0,'*'); 4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项,不能作为依据的是( )。 A.函数的返回值类型 B.参数的类型 C.函数名称 D.参数个数 5、下列有关C++类的说法,不正确的是( )。 A.类是一种用户自定义的数据类型 B.只有类的成员函数或类的友元函数才能存取类的私有成员 C.在类,如果不做特别说明,所有成员的访问权限均为私有的 D.在类,如果不做特别说明,所有成员的访问权限均为公用的 6、已知X类,则当程序执行到语句X array[3];时,调用了( )次构造函数。 A.0 B.1 C.2 D.3 7、有关析构函数的说法,不正确的是( )。 A.析构函数有且仅有一个 B.析构函数和构造函数一样可以有形参 C.析构函数的功能是在系统释放对象之前作一些内存清理工作 D.析构函数无任何函数类型 8、类定义的内容允许被其对象无限制地存取的是( )。 A.private 部分 B. protected 部分 C.public 部分 D.以上都不对 9、关于常数据成员的说法,不正确的是( )。 A.常数据成员的定义形式与一般常变量的,只不过常数据成员的定义必须出现在类体 B.常数据成员必须进行初始化,并且不能被更新 C.常数据成员通过构造函数的成员初始化列表进行初始化 D.常数据成员可以在定义时直接初始化 10、运用运算符delete删除一个动态对象时( )。 A.系统首先为该动态对象调用构造函数,再释放其占用的内存 B.系统首先释放该动态对象占用的内存,再为其调用构造函数 C.系统首先为该动态对象调用析构函数,再释放其占用的内存 D.系统首先释放动态对象占用的内存,再为其调用析构函数 11、可在类外用p.a的形式访问派生类对象 p的基类成员a,其a是( )。 A.私有继承的公用成员 B.公用继承的私有成员 C.公用继承的保护成员 D.公用继承的公用成员 12、在公用继承方式下,有关派生类对象和基类对象的关系,不正确的叙述是(  )。 A.派生类的对象可以赋给基类的对象 B.派生类的对象可以初始化基类的引用 C.派生类的对象可以直接访问基类的成员 D.派生类的对象的地址可以赋给指向基类的指针 13、设置虚基类的目的是( )。 A.简化程序 B.消除二义性 C.提高运行效率 D.减少目标代码 14、在C++,用于实现动态多态性的是( )。 A.内联函数 B.重载函数 C.模板函数 D.虚函数 15、不能说明为虚函数的是( )。 A.析构函数 B.构造函数 C.类的成员函数 D.以上都不对 16、如果一个类至少有一个纯虚函数,那么就称该类为( )。 A.抽象类 B.派生类 C.纯基类 D.以上都不对 17、下面关于友元的描述,错误的是( )。 A.友元函数可以访问该类的私有数据成员 B.一个类的友元类的成员函数都是这个类的友元函数 C.友元可以提高程序的运行效率 D.类与类之间的友元关系可以继承 18、下列运算符,( )运算符在C++不能被重载。 A.&& B.[ ] C.:: D.new 19、模板的使用实际上是将类模板实例化成一个( )。 A.函数 B.对象 C.类 D.抽象类 20、假定MyClass为一个类,则该类的拷贝构造函数的声明语句为( )。 A.MyClass(MyClass x) B.MyClass&(MyClass x) C.MyClass(MyClass &x) D.MyClass(MyClass *x) 二、填空题(前16个空,每空1分,后2个空,每空2分,共20分) 1、类和对象的关系可表述为:类是对象的 ,而对象则是类的 。 2、在C++,三种继承方式的说明符号为 、 和 ,如果不加说明,则默认的继承方式为 。 3、如果只想保留公共基类的一个复制,就必须使用关键字 把这个公共基类声明为虚基类。 4、若要把void fun( )定义为类A的友元函数,则应在类A的定义加入语句 。 5、类的静态成员分为 和 。 6、运算符重载要求保持其原来的操作数个数、 、 和语法结构。 7、通过关键字 可以声明模板,通过关键字 指定函数模板的类型参数,有几个类型参数就有几个类型关键字。 8、列出C++两种用户自定义的数据类型: 、 。 9、构造函数的作用是 。 10、后置自增运算符“++”重载为类的成员函数(设类名为A)的形式为 。 三、阅读下面3个程序,写出程序运行时输出的结果:(共13分) 1、#include <iostream> using namespace std; void fun(int &a,int &b) { int p; p=a; a=b; b=p; } void exchange(int &a,int &b,int &c) { if(a<b) fun(a,b); if(a<c) fun(a,c); if(b<c) fun(b,c); } void main() { int a=12,b=89,c=56; exchange(a,b,c); cout<<"a="<<a<<",b="<<b<< ",c="<<c<<endl; } 2、#include <iostream> using namespace std; class Date { public: Date(int,int,int); Date(int,int); Date(int); Date(); void display(); private: int month, day, year; }; Date::Date(int m, int d, int y) : month(m),day(d),year(y) { } Date::Date(int m,int d):month(m),day(d) { year=2009; } Date::Date(int m) : month(m) { day=1; year=2010; } Date::Date() { month=1; day=1; year=2010; } void Date::display() { cout <<month<<"/"<<day<<"/"<<year<<endl; } void main() { Date d1(12,31,2009); Date d2(12,31); Date d3(1); Date d4; d1.display(); d2.display(); d3.display(); d4.display(); } 3、#include <iostream> using namespace std; class A { public: A() { cout<<"constructing A "<<endl; } ~A() { cout<<"destructing A "<<endl; } }; class B: public A { public: B() { cout<<"constructing B "<<endl; } ~B() { cout<<"destructing B "<<endl; } }; class C : public B { public: C() { cout<<"constructing C "<<endl; } ~C() { cout<<"destructing C "<<endl; } }; void main() { C c1; } 四、编程题(共27分) 1、(10分)已知复数类Complex的声明如下: class Complex { public: Complex(); Complex(double); Complex(double, double); friend Complex operator + (Complex&, Complex&); friend ostream & operator << (ostream&, Complex&); friend istream& operator >> (istream&, Complex&); private: double real, imag; }; 要求: (1)写出该类的所有构造函数的类外定义代码。 (2)写出对运算符“+”、“<<”、“>>”进行重载的运算符重载函数的定义。 2、(17分)下列Base类是一个表示形状的抽象类,area( )为求图形面积的函数,total( )则是一个通用的用以求不同形状的图形面积总和的函数。 class Base { public: virtual double area()=0; }; double total(Base *s[ ], int n) { double sum=0.0; for(int i=0; i<n; i++) sum+=s[i]->area( ); return sum; } 要求: (1)从Base类派生圆类(Circle)、正方形类(Square),圆类新增数据成员半径(radius),正方形类新增数据成员边长(a),圆类和正方形类都有构造函数,修改、显示数据成员值的函数,求面积函数。 (2)写出main( )函数,计算半径为5.5的圆和边长为9.9的正方形的面积和(必须通过调用total函数计算)。
海康威视是国领先的安防产品和解决方案提供商,每会在校园内进行招聘,而2013校园招聘,技术服务工程师(硬件类)专业知识笔试题(B卷)主要包括以下内容。 第一部分为电路基础知识和分析能力。要求考生对常用电子元器件的使用和特性有了解,同时需要具备一定的电路分析能力。题目内容包括常见电子元器件的特性、电路分析和设计,对于电路设计常见的问题有哪些解决方法等。 第二部分为数字逻辑与计算机组成原理。考查考生对理论知识的理解和掌握能力。题目内容包括数字逻辑的基础和设计,计算机组成原理的基础以及控制器和总线的结构和原理等。 第三部分为微处理器原理和编程能力。测试考生对微处理器的基础和编程能力。题目内容包括微处理器指令的含义和应用,汇编程序设计等。 第四部分为Analog Devices ADI16-B位PCIE数据采集卡的基本知识。该部分旨在测试考生了解该采集卡的结构和应用,并具备一定的使用能力,题目内容包括该采集卡的技术指标、连接与使用方法、数据采集和转换等。 总之,该笔试题主要考查了考生的电路基础知识、数字逻辑与计算机组成原理、微处理器原理以及Analog Devices ADI16-B位PCIE数据采集卡的基本知识。这些都是技术服务工程师需要掌握的理论和实践能力,也是海康威视校园招聘考察人才的主要依据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值