捷通华声笔试和面试题_第1页
捷通华声笔试和面试题_第2页
捷通华声笔试和面试题_第3页
捷通华声笔试和面试题_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1写出以下代码的输出结果。

classCClassA

{

public:

inta;

public:

CClassA();

CClassA(inta=0)

{

cout<<”createCClassA”<<a<<endl;

}

~CClassA()

{

cout<<”deleteCClassA”<<endl;

}

}

classCClassB:publicCClassA

{

public:

intb;

public:

CClassB(intib):b=ib,a=ib

{

cout<<”createCClassB”<<b<<endl;

}

~CClassB()

{

cout<<”deleteCClassB”<<endl;

}

}

main()

{

CClassA*pa=newCClassA;

deletepa;

}

提示:事实上原题我记不太清了,反正是考继承类与非继承类的构造与析构顺序:先构造父

类,再构造子类,析构反过来。(有可能还考了多态,就是指针与new出来的可能不一样,

记不太清了)

2上题main()函数第一句用new开辟了pa的内存,如果使用malloc分配,即pa=(CClassA*)

malloc(sizeof(CClassA));会出现什么问题,为什么?并请说明new和malloc之间的区别。

提示:malloc不调构造函数,而new出来的是调构造函数的。

3

inti=10;

int*pint1=newint(10);

int*pint2=newint[10];

intaint[10];

计算一下下面四个值:

sizeof(i),sizeof(pint1),sizeof(pint2),sizeof(aint)

提示:4,4,4,40

4实现一个整数的动态数组

//下面是代码,完成相应函数

constintARRAT_GROWUP=10;

//数组结构体定义

structArrayStruct

{

intiCurMaxElementCount;//当前数组最大能容纳元素的个数

intiCurElementCount;

int*pHead;

//当前元素数

//指针头部

};

//功能:生成一个数组,参数为最初元素个数

//参数:intiStartElementCount数组初始化大小

//返回:成功返回指针,否则返回NULL

ArrayStruct*Array_Init(intiStartElementCount)

{

if(iStartElementCount<=0)

returnNULL;

ArrayStruct*pReturn;

pReturn=newArrayStruct;

if(pReturn==NULL)

returnNULL;

pReturn->pHead=newint[iStartElementCount];

if(pReturn->pHead==NULL)

{

returnNULL;

}

pReturn->iCurMaxElementCount=iStartElementCount;

pReturn->iCurElementCount=0;

returnpReturn;

}

//================完成下面的函数

//功能:向数组添加一个元素,如果元素超过上述Array_Init函数的iStartElementCount参数

时,请考虑如何适应。可以假定一次增加ARRAY_GROWUP个元素容量,但是要保证在内

存中数据为线性存放(也就是说连续的,像数组一样,而不是链表)

//参数:ArrayStruct*pArray

要处理的数组结构体指针

//constintiAppendElement要增加的元素

//返回:成功时返回true,失败时返回false(10分)

boolArray_AddElement(ArrayStruct*pArrayconstintiAppendElement)

{

}

//功能:删除指定索引的元素,要保证元素在内存为线性不间隔存放

//参数:ArrayStruct*pArray

要处理的数组结构体指针

要删除的元素索引

//constintiRemovedIndex

//返回:成功时返回true,失败时返回false(10分)

boolArray_RemoveElement(ArrayStruct*pArray,constintiRemovedIndex)

{

}

//功能:返回指定索引的元素

//参数:constArrayStruct*pArray要处理的数组结构体指针

//

//

constintiIndex要取得索引值

int&iReturn成功时的值

//返回:成功为true失败为false

boolArray_GetElement(constArrayStruct*pArray,constintiIndex,int&iReturn)

{

}

//功能:删除一个数组

//参数:自己定义

//返回:无(10分)

voidArray_Release(/*请在这里填上参数*/)

{

}

我的想法:和C++的vector的思路一样,这里添加元素的时候,如果需要新分配内存,而且

还是连续的内存,所以不能简单地用malloc或不能用malloc了,用malloc的话,要重新分

配一段连续内存,再把原内容拷过来,再释放原来的连续内存,这样显然不太好。这里可以

用realloc来实现。删除和查找都比较简单,要注意的是,删除元素里直接用memcpy,目标

地址写要删除元素的地址,源地址写它下一个的地址就可以了。

选做题(任选1道还是2道忘了):

1、是5个人,5个任务,每个人只能干一个任务,同时已知每个人完成任务所花的资源,

求出5个任务都完成所需要花费的资源。(大概是这样)

2、就是叫你实现互斥锁,但是不能用pthread_的那些函数,不过可以用信号量什么的,实

现读读共享,读写互斥,写写互斥。思路应该就是信号量那些,sem_opsem_ctl这些吧。

3、大小写不敏感查找字符串,知道用’A’-’a’就差不多了。

面试部分:

1说出这4个都对不对,分别代表什么

constinta:代表整型a只读

constint*a:代表a指向一个整型变量,这个整型变量通过a访问是只读的

intconst*a:同上

int*consta:说明指针能改,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论