- 相关推荐
搜狗2017C++笔试题
搜狗2017C++笔试题有哪些呢?以下是CN人才网小编为大家整理的搜狗2017C++笔试题,欢迎阅读参考。
1.关于重载和多态正确的是?
A.如果父类和子类都有相同的方法,参数个数不同,将子类对象赋给父类后,由于子类继承于父类,所以使用父类指针调用父类方法时,实际调用的是子类的方法;
B.选项全部都不正确
C.重载和多态在C++面向对象编程中经常用到的方法,都只在实现子类的方法时才会使用
D.
class A{
void test(floata){cout<<"1";}
};
class B:public A{
void test(intb){cout<<"2";}
};
A *a=new A;
B *b=new B;
a=b;
a.test(1.1);
结果是1
解析:A中由于没有说明使用虚函数,使程序有多态性,所以实际是调用父类的方法;
C中重载在一般函数中也会使用;
D中,题目有2个错误,class A中,需添加成员函数的Public访问属性,否则在类外不能访问成员函数,并且指针对象的访问方式只能使用间接访问方式,即a->test(1.1)或者(*a).test(1.1),同样,由于没有多态性,输出结果为1,若class A中test函数为virtual,则输出2
2.现有两堆硬币,小明和小亮玩游戏,每次每人只能从其中一堆中取走1个或2个硬币,最后将硬币取完者算作胜利,当两堆硬币的个数分别是12,13时,小明应该如何安排策略才能必定获得胜利?
A.安排小亮先取硬币;
B.小明或小亮均一定必胜
C.安排自己先取硬币
D.不可能必胜
解析:很好理解,小明先从13个里面取出一个,剩下12个,以后的取法就是:无论小亮每次取多少个,自己都从另外一堆中取相同的个数,则可保证自己会取胜,因为两堆都是12个。
3.不考虑任何编译器优化(如:NRVO),下述代码的第10行会发生
#include //1
class B//2
{//3
};//4
B func(const B& rhs){//5
return rhs;//6
}//7
int main(int argc,char **argv){//8
B b1,b2;//9
b2=func(b1);//10
}//11
A.一次默认构造函数,一次拷贝构造函数,一次析构函数,一次(拷贝赋值运算符)operator=
B.二次拷贝构造函数,一次析构函数
C.一次(拷贝赋值运算符)operator=,一次析构函数
D.一次拷贝构造函数,一次析构函数,一次(拷贝赋值运算符)operator=
解析:b2=func(b1),首先b1作为形参传递到const B& rhs,会发生拷贝构造函数,然后fun函数结束时发生析构函数,最后是operator=,赋值给b2.
4.下面代码的输出结果是()
int main(){
int pid;
int num=1;
pid=fork();
if(pid>0){
num++;
printf("in parent:num:%daddr:%x\n",num,&num);
}
else if(pid==0){
printf("in child:num:%daddr:%x\n",num,&num);
}
A.父子进程中输出的num相同,num地址不相同
B.父子进程中输出的num不同,num地址相同
C.父子进程中输出的num相同,num地址也相同
D.父子进程中输出的num不同,num地址不相同
5.关于以下代码中的变量在内存中的存储位置描述不正确的是()
int a=0;
class someClass{
int b;
static int c;
};
int main(){
int d=0;
someClass *p=new someClass();
return 0;
}
A.b存在堆区
B.c存在堆区
C.d存在栈区
D.a存在全局变量区
解析: C应该在全局静态区
6.以下代码段有问题的是()
A.void func1(char *e){
char *p1;
p1=malloc(100);
sprintf(p1,error:"%s'.",e);
local_log(p1);
}
B. int func2(char *filename)
{
FILE *fp;
int key;
fp=fopen(filename,"r");
fscanf(fp,"%d",&key);
return key;
}
C.voidfunc3(char *info){
char *p,*pp;
p=malloc(100);
pp=p;
free(p);
sprintf(pp,*info:"%s'.",info);
free(pp);
}
D.选项全部都正确
解析:答案是ABC,答案是A申请了空间没有释放,答案B打开流没有关闭,答案C其实指针都是一块内存空间,free了二次,程序会因为内存错误崩溃.
7.请问该程序的输出是多少?
#include
int main()
{
unsigned char i=7;
int j=0;
for(;i>0;i-=3)
{
++j;
}
printf("%d\n",j);
return 0;
}
A.2
B.死循环
C.173
D.172
解析:unsigned char 8位数据位,范围0-255,
所以-2(11111110)时,溢出变成254;
同理-1(11111111)时,溢出变成255;
最后减到0时,不满足循环条件,for停止。
刚好173次。
7 4 1 -2 ==>共4次
254 251 ... 5 2 -1 ==>共85次
255 252 ... 6 3 ==>共85-1=84次(因为3-3=0,不能进入循环了)
所以总共173次。(相减相除)
更快捷的计算方法:256*2+7=519=173*3
8.快速排序在下面哪种情况下优势最明显()
A.数据有多个相同数值
B.数据基本有序
C.数据基本无序
D.数据无任何相同数值
9.下列各树形结构中,哪些是平衡二叉查找树:
解析:二叉平衡查找树:左子树中所有节点的值小于根的值,右子树中的所有节点的值大于根的值;左右子树的高度之差的绝对值为0或1,选C
10.下面哪种数据结构最适合创建一个优先级队列()
A.堆
B.双向链表
C.单向链表
D.栈
11.某个大型的网络游戏网站,现有几亿用户,为了实时获取前十名游戏分数最高的玩家,使用以下哪个排序算法比较合理()
A.基数排序
B.快速排序
C.二叉排序
D.堆排序
12.有A,B,C,D,E五个字符,出现的频率分别为2,5,3,3,4,由A,B,C,D,E生成的最优二叉树中,该树的带权路径长是多少()
A35
B.49
C.39
D.45
13.从根开始按层次(第0层->第1层->第2层)遍历一颗二叉树,需要使用什么辅助数据结构?()
A. heap
B.queue
C.binary tree
D.stack
14.假设MySQL数据库表:
create table T{
k int unsigned not null auto_increment,
a date,
b varchar(24),
c int,d varchar(24),
primary key(k),unique key a_index (a DESC,b DESC),
key k1(b),key k2(c),key k3(d));
如下哪些sql语句查询能较好的利用索引?()
A.select bfrom WHERE b like 'aaa%';
B.select a,bfrom T WHERE a='2015-10-25' ORDER BY b ASC,c ASC;
C.selecta,b,c from T WHERE a='2015-10-25' ORDER BY b ASC;
D.selecta,b,c from T WHERE a='2015-10-25' ORDER BY a,b;
15.在一个游戏的任务中,玩家需要进入1个山洞,取得宝石,之后回到入口.
山洞的地图如下:
S--------------------T
S是入口
T处有宝箱,打开宝箱之后可能得到的物品有:
1)宝石,出现概率为5%.
2)魔法券.出现概率为50%.玩家每消耗一个魔法券,可以直接传送到入口S.
3)什么也没有,概率为45%.
S到T的距离为1.
每次玩家回到S之后,宝箱T的状态会重置,再次进入山洞可以重新打开宝箱获得物品.
玩家的任务是到达T获取宝石之后回到入口S.如果到达T之后没有获得宝石,可以走出山洞之后再进入反复刷.
问题:玩家完成任务所走路程的数学期望是()
A.40
B.25
C.35
D.30
16.下面关于TCP的描述,错误的是()
A.TCP是一种面向连接的协议,给用户进程提供可靠的全双工的字节流
B.TCP客户端和服务器之间建立连接需要经过3次握手
C.只要有一方主动关闭连接后,这个TCP连接就结束了
D.只要有一方主动关闭连接后,这个TCP连接就结束了
17.关于进程和线程描述正确的是()
A.线程不拥有系统资源,但可以访问隶属于进程的资源
B.在创建或销毁进程时,系统开销明显大于创建或销毁线程时开销
C.进程是调度和拥有资源的基本单位
D.不仅进程自检可以并发执行,同一个进程的多个进程之间也可以并发执行
18.下面()哪个函数返回的有效句柄用完后不需要CloseHandle
A.CreateThread
B. GetCurrentProcess
C. OpenProcess
D. CreateFile
19. invalidateRect的作用是()
A.擦除一个矩形区域
B.删除一个矩形
C.使一个矩形区域变为无效,从而释放部分GDI资源
D.使一个矩形区域变为无效,从而可以重绘
20.典型的创建Windows窗口过程的流程为:()
A.注册窗口类->创建窗口->更新窗口->显示窗口->消息循环
B.创建窗口->注册窗口类->显示窗口->更新窗口->消息循环
C.注册窗口类->创建窗口->显示窗口->更新窗口->消息循环
D.创建窗口->注册窗口类->更新窗口->显示窗口->消息循环
参考答案:
1.B 2.C 3.D 4.B 5.B 6.ABC 7.C 8.C 9.C 10.A
11.D 12.C 13.B 14.AD 15.D 16.C 17.ABCD 18.B 19.D 20.C