ChengXuYuan.com
程序员的职场第一站

搜狗2016 C++工程师笔试题

客观题:单选题17道,不定项选择3道:

1.[单选题]关于重载和多态正确的是

A.如果父类和子类都有相同的方法,参数个数不同,将子类对象赋给父类后,由于子类继承于父类,所以使用父类指针调用父类方法时,实际调用的是子类的方法

B.选项全部都不正确

C.重载和多态在C++面向对象编程中经常用到的方法,都只在实现子类的方法时才会使用

D.

class A{
void test(float a){cout<<“1”;}
};
class B:public A{
void test(int b){cout<<“2”;}
};
A *a=new A;
B *b=new B;
a=b;
a.test(1.1);
结果是1

2.[单选题]现有两堆硬币,小明和小亮玩游戏,每次每人只能从其中一堆中取走1个或2个硬币,最后将硬币取完者算作胜利,当两堆硬币的个数分别是12,13时,小明应该如何安排策略才能必定获得胜利?

A.安排小亮先取硬币

B.小明或小亮均一定必胜

C.安排自己先取硬币

D.不可能必胜

3.[单选题]不考虑任何编译器优化(如:NRVO),下述代码的第10行会发生

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>//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

一次默认构造函数,一次拷贝构造函数,一次析构函数,一次(拷贝赋值运算符)operator=

二次拷贝构造函数,一次析构函数

一次(拷贝赋值运算符)operator=,一次析构函数

一次拷贝构造函数,一次析构函数,一次(拷贝赋值运算符)operator=

4.[单选题]下面代码的输出结果是()

1
2
3
4
5
6
7
8
9
10
11
12
int main(){
   int pid;
   int num=1;
   pid=fork();
   if(pid>0){
   num++;
   printf("in parent:num:%d addr:%x\n",num,&num);
   }
   else if(pid==0){
   printf("in child:num:%d addr:%x\n",num,&num);
   }
}

A.父子进程中输出的num相同,num地址不相同

B.父子进程中输出的num不同,num地址相同

C.父子进程中输出的num相同,num地址也相同

D.父子进程中输出的num不同,num地址不相同

5.[单选题]

1
2
3
4
5
6
7
8
9
10
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存在全局变量区

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.

void func3(char *info){
char *p,*pp;
p=malloc(100);
pp=p;
free(p);
sprintf(pp,*info:”%s’.”,info);
free(pp);
}

D.选项全部都正确

7.[单选题]

#include<stdio.h>
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

8.[单选题]快速排序在下面哪种情况下优势最明显()

A.数据有多个相同数值

B.数据基本有序

C.数据基本无序

D.数据无任何相同数值

9.[单选题]下列各树形结构中,哪些是平衡二叉查找树:




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生成的最优二叉树中,该树的带权路径长是多少()

A.35

B.49

C.39

D.45

13.[单选题]从根开始按层次(第0层->第1层->第2层)遍历一颗二叉树,需要使用什么辅助数据结构?()

A.heap

B.queue

C.binarytree

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.selectbfromWHEREblike’aaa%’;

B.selecta,bfromTWHEREa=’2015-10-25’ORDERBYbASC,cASC;

C.selecta,b,cfromTWHEREa=’2015-10-25’ORDERBYbASC;

D.selecta,b,cfromTWHEREa=’2015-10-25’ORDERBYa,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.ABD   18.B   19.D   20.C

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址