您的位置:首页 > 编程语言 > C语言/C++

海康2017校招C++开发岗位笔试题

2017-09-16 20:17 302 查看
一、 选择题

1.当一个类中某个函数被说明为virtual 时,该函数在该类的所有派生类中(C)、

A.只有被重新说明才是虚函数 B.只有被重新说明为virtual时才是虚函数

C.都是虚函数 D.都不是虚函数

2.从C++文件到可执行文件经过哪些步骤(C)

A.预处理、汇编、编译、链接 B.编译、预处理、汇编、链接

C.预处理、编译、汇编、链接 D.预处理、编译、链接、汇编

3.在设计一个离线的大数据处理系统,下面哪个指标不是系统追求的(C)

A.健壮性 B. 高吞吐

C.低延时 D.处理的数据规模

4.禁止修改p的值,但能够修改p所指向的数据,这样的指针应该定义为(B)
A.const char *p = new char[1024]; B. char *const p = new char [1024];
C.char const *p = new char [1024]; D.const char * const p = new char [1024];


5. int a [10] ={0},sizeof(a) ,在x86 32位系统和64位系统,分别返回(C)

A.40 40 B.10 10

C.40 80 D.4 8

6. 假定AB为一个类,则执行"AB a(2),b[3],*p[4] ;" 语句调用该类构造函数的次数为(B)

A.3 B.4

C.5 D.6

7.在 int a = 3,int *p = &a ;中,*p的值为(D)

A.变量a的地址值 B.未定义

C.变量p的地址值 D.3

8.已知f1和f2 是同一类两个成员函数,但是f1不能直接调用f2,这说明(C)

A.f1和f2都是静态函数 B.f1不是静态函数

C.f1是静态函数,f2不是静态函数 D.f1和f2 都不是静态函数

9.设下方模板,则对该函数模板的错误使用是()

A. Sum(10,2) B.Sum(5.0,6.7)

C.Sum(15.2f,16.0f) D.Sum("AB","CD")

10.下面的程序合法吗?如果合法,它将输出什么?
int i = 100, sum = 0;
for (int i = 0; i != 10; ++1){
sum += i;
}
std::cout << i << " " << sum << std::endl;
A.10 45 B.100 45

C.10 214747 D.不合法

11.下面程序输出结果是(C )
static int func(int j ){
static int i = j;
return ++i;
}

int main(int argc, chr * argv[]){
int i = 0;
int j = 5;
for (;j != 0; --j){
i = fun(j);
}
std::cout << i << std::endl;
return 0;
}
A.2 B.6

C.10 D.11

12. 下面哪个函数返回的有效句柄使用完毕后不需要CloseHandle (B)

A.CreateThread B.GetCurrentProcess

C.OpenProcess D.CreateFile

***13.两个进程加载同一个动态的链接库时候(windwos的dll或者Linux的.so文件),动态链接库的哪个资源

是两个进程共享的 ()

A.文本区域 B.栈区

C.堆区 D.文件描述符

14.以下程序输出结果是(B)
class A {
public:
virtual int func (int i = 1){
std::cout <<"class A" << std::endl;
return i + 1;
}

virtual ~A() {}
};

class B:public A{
public :
virtual int func (int i = 10){
std::cout <<"class B " << i << std::endl;
return i;
}
};
int main(int argc, char * argv[]){

A *p = new B();
std::cout << p->func() << std::endl;
delete p;

return 0;
}
A.10 B.1

C.2 D.11

15. 下列属于传输层协议的是:(B)

A.HTTP B.UDP

C.ICMP D.ARP

二、简答题 (20'=10 ' + 10')

1.简述 overload(重载),Override(重写) 以及Hide(隐藏)

重载:同一个类中不同的函数有相同的函数名,但是函数的参数和类型不同

重写:派生类对基类中的虚函数重新实现。即函数名和参数都一样,只是函数的实体不一样

隐藏:派生类把基类中相同名字的函数屏蔽掉了

2.假设有一个变量var,当它的类型为bool,int,float 指针变量时,分别写出它与0比较的if语句。
bool: if (!var){ ... }
int : if (var == 0){ ... }
float :if ( (var >= -0.00001) && (var <= 0.00001))
三、操作题

1.(15')

子网掩码是用来判断任意两台计算机IP地址是否属于同一网络,子网掩码与IP地址结构相同,

是32位二进制数,其中网络号部分全为1,主机号部分全为"0", 利用子网掩码可以判断两台主机是否

在同一个子网中,若两台主机的IP地址分别与它们子网掩码"与"后的结果相同,则说明两台主机在同

一个子网中。

完善下面的函数,判断两台计算机IP地址是处于同一子网络,要求:

输入参数:

char *mask_addr, 格式为 255.255.255.0

char *ip1_addr ,格式为 192.168.0.1

char *ip2_addr , 格式为 192.168.0.1
int checkNetSegment (char *mask_addr, char *ip1_addr, char *ip2_addr){
....
}

#include <iostream>
#include <string.h>
#include <stdlib.h>

int getIntArray(char *addr,int *array_addr){
char *taken = NULL;

if (addr == NULL){
return 2;
}
std::cout << "------start-------" << std::endl;
taken = strtok(addr,".");
//std::cout << taken << " " ;
int i = 0;
while(taken != NULL)
{

array_addr[i] = atoi(taken);
if(array_addr[i] > 255 || array_addr[i] < 0)
{
return 2;
}

i++;
taken = strtok(NULL,".");
// std::cout << taken << " " ;
}

return 0;
}

int checkNetSegment (char *mask_addr, char *ip1_addr, char *ip2_addr){
char *taken = NULL;
int aMask[4] = {0};
int aip1[4] = {0};
int aip2[4] = {0};
int ret = 0;

ret = getIntArray(mask_addr,aMask);
if (ret != 0){
std::cout << " invalid mask!" << std::endl;
return 2;
}
ret = getIntArray(ip1_addr,aip1);
if (ret != 0){
std::cout << " invalid ip1!" << std::endl;
return 2;
}
ret = getIntArray(ip2_addr,aip2);
if (ret != 0){
std::cout << " invalid ip2!" << std::endl;
return 2;
}

int i = 0;
for (int i = 0; i < 4; i ++){
if ((aip1[i]&aMask[i]) == (aip2[i]&aMask[i])){
continue;
}
std::cout << " ips are not in the same netsegment" << std::endl;
return 1;

}
std::cout << " ips are in the same netsegment" << std::endl;
return 0;
}

int main(){

char mask[] = "255.255.255.0";
char ip1 [] = "192.168.1.120";
char ip2 [] = "192.168.1.128";
int ret = checkNetSegment (mask,ip1,ip2);
return 0;
}
...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: