还剩12页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
综合测试试题第一部分C语言
一、请填写BOOLfloat指针变量与“零值”比较的if语句提示这里“零值”可以是
00.0FALSE或者“空指针”例如int变量n与“零值”比较的if语句为ifn==0ifn!=0以此类推请写出BOOLflag与“零值”比较的if语句请写出floatx与“零值”比较的if语句请写出char*p与“零值”比较的if语句
二、以下为WindowsNT下的32位C++程序,请计算sizeof的值charstr[]=“Hello”;char*p=str;intn=10;请计算sizeofstr=sizeofp=sizeofn=voidFunccharstr
[100]{请计算sizeofstr=}void*p=malloc100;请计算sizeofp=
三、简答题
1、头文件中的ifndef/define/endif干什么用?
2、#includefilename.h和#include“filename.h”有什么区别?
3、const有什么用途?(请至少说明两种)
4、在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”声明?
5、请简述以下两个for循环的优缺点//第一个fori=0;iN;i++{ifconditionDoSomething;elseDoOtherthing;}//第二个ifcondition{fori=0;iN;i++DoSomething;}else{fori=0;iN;i++DoOtherthing;}优点缺点优点缺点
四、有关内存的思考题voidGetMemorychar*p{p=char*malloc100;}voidTestvoid{char*str=NULL;GetMemorystr;strcpystrhelloworld;printfstr;}请问运行Test函数会有什么样的结果?答char*GetMemoryvoid{charp[]=helloworld;returnp;}voidTestvoid{char*str=NULL;str=GetMemory;printfstr;}请问运行Test函数会有什么样的结果?答VoidGetMemory2char**pintnum{*p=char*mallocnum;}voidTestvoid{char*str=NULL;GetMemorystr100;strcpystrhello;printfstr;}请问运行Test函数会有什么样的结果?答voidTestvoid{char*str=char*malloc100;strcpystr“hello”;freestr;ifstr!=NULL{strcpystr“world”;printfstr;}}请问运行Test函数会有什么样的结果?答
五、编写strcpy函数已知strcpy函数的原型是char*strcpychar*strDestconstchar*strSrc;其中strDest是目的字符串,strSrc是源字符串
(1)不调用C++/C的字符串库函数,请编写函数strcpychar*strcpychar*strDestconstchar*strSrc{assertstrDest!=NULLstrSrc!=NULL;char*address=strDest;while*strDest++=*strSrc++!=\0;returnaddress;}
(2)strcpy能把strSrc的内容复制到strDest,为什么还要char*类型的返回值?为了实现链式表达式intlength=strlenstrcpystrDesthelloworld!;六编程题
1、写出程序把一个链表中的接点顺序倒排listNode*reverse_listlistNode*head//逆序{ListNode*new_head=head;ifhead==NULL||head-next==NULLreturnhead;new_head=reverse_listhead-next;head-next-next=head;head-next=NULL;//防止链表成为一个环,这是最关键的returnnew_head;}
2、写出程序删除链表中的所有接点voiddel_allnode*head{node*p;whilehead!=NULL{p=head-next;freehead;head=p;}cout释放空间成功!endl;}
3、使用冒泡、选择法、快速排序法对数组进行排序第二部分C++与QT
1.C++对C语言做了很多改进,下列描述中 (D) 使得C语言发生了质变,即从面向过程变成面向对象A增加了一些新的运算符 B允许函数重载,并允许设置默认参数 C规定函数说明必须用原型 D引进类和对象的概念
2.下面说法中正确的是(B )A)一个类只能定义一个构造函数,但可以定义多哥析构函数只能一个B)一个类只能定义一个析构函数,但可以定义多个构造函数C)构造函数与析构函数同名,只是名字前加了一个求反符号(~)D)构造函数不可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以
3.下面关于友元的描述中,错误的是(D)A 友元函数可以访问该类的私有数据成员B 一个类的友元类中的成员函数都是这个类的友元函数C 友元可以提高程序的运行效率D 类与类之间的友元关系可以继承
4.有关析构函数的说法不正确的是(B)A析构函数有切仅有一个B析构函数和构造函数一样不可以有形参C析构函数的功能是用来释放一个对象D析构函数无任何函数类型
5.下列对重载函数的描述中,(A)是错误的A重载函数中不允许使用默认参数 B重载函数中编译时根据参数表进行选择C不要使用重载函数来描述毫无相干的函数 D构造函数重载将会给初始化带来多种方式
6.下面叙述错误的是( C)A.派生类可以使用private派生B.对基类成员的访问必须是无二义性的C.基类成员的访问能力在派生类中维持不变D.赋值兼容规则也适用于多继承的组合
一、选择题(共10小题,每题3分)
1.类的构造函数被自动调用执行的情况是在定义该类的CA成员函数时B数据成员时C对象时D友元函数时
2.说明友元函数使用关键字AAfriendBstaticCconstDcolatile
3.已知类X中的一个成员函数说明如下:VoidSetxa;其中Xa的含义是(C)A指向类X的指针为aB将a的地址赋给变量SstCa是类X的对象引用,用来做为Set的形参D变量X是a按位相与作为函数Set的参数
4.关于new运算符的下列描述中 D是错误的.//创建数组时,定义构造函数必须没有参数,或全部为默认参数A 它可以用来动态创建对象和对象数组B 使用它创建对象或对象数组可以使用运算符DELETE删除C 使用它创建对象时要调用构造函数D 使用它调用对象数组时不许指定初始值
5.允许访问类的所有对象的私有成员公有成员和保护成员的是AA友元函数B成员函数C内联函数D重载函数6.局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用(A)提供对全局变量的访问A)域运算符B)类运算符C)重载D)引用7.缺省析构函数的函数体是(C)A)不存在B)随机产生的C)空的D)无法确定的、
8.通常拷贝构造函数的参数表是(C)//在VC
6.0下A该类对象名//编译不会通过B该类对象的成员名//编译可以通过,但不是通常的标准方法C该类对象的引用名//标准拷贝构造函数的方法D该类对象的指针名//编译可以通过,但不是通常的标准方法
9.对定义重载函数的下列要求中,(D)是错误的A要求参数的个数不同 B要求参数中至少有一个类型不同C要求参数个数相同时,参数类型不同 D要求函数的返回值不同
10.对于多重继承,有(D)A.一个派生类只能有一个基类B.一个基类只能产生一个派生类C.一个基类必须产生多个派生类D.一个派生类可有多个基类
7.C和C++有什么不同(4分)
8.面向对象的三个基本特征及各自的作用(6分)
9.c和c++中的struct有什么不同?(5分)
10.const符号的作用有哪些?(5分)
11.引用与指针有什么区别?(6分)
12.重载(overload和重写overried,有的书也叫做“覆盖”)的区别?(4分)
13.static在类内修饰成员的作用是什么,如何引用这些成员?(4分)
14.虚析构函数的作用是什么?(6分)
15.类成员函数的重载、覆盖和隐藏区别?
16.在C中引用C++语言中的函数和变量时,C++的头文件需添加externC,但是在C语言中不能直接引用声明了externC的该头文件,应该仅将C文件中将C++中定义的externC函数声明为extern类型
三、编程题(共3小题每小题10分)
17.编写一个字符串处理的类,MyString,实现拷贝构造,‘=’号重载等基本函数
18.使用MyString作为成员对象实现一个Person类,包含姓名,年龄
19.实现一个Student类有性名,年龄,学号,老师姓名
20.编写类String的构造函数、析构函数和赋值函数已知类String的原型为classString{public:Stringconstchar*str=NULL;//普通构造函数StringconstStringother;//拷贝构造函数~Stringvoid;//析构函数Stringoperate=constStringother;//赋值函数private:char*m_data;//用于保存字符串};请编写String的上述4个函数Qt图形库部分
1、什么是Qt图形库,你是怎么理解的?
2、Qt库的QApplication类有什么作用?
3、Qt怎么处理绘图事件和鼠标事件?
4、举例说明怎么实现自定义信号和槽
5、要设计开发一个扫雷游戏,写出你的设计思路
二、编程题
1.继承自QWidget自定义一个Button功能如下1)enter与leave有不同的背景状态变化提示enterEventleaveEvent;2)Press与Release也有不同的背景状态变化3)当鼠标点击时可以发出clicked信号4)创建一个窗口,测试自定义的Button第三部分linux系统编程
1.Linux根目录下一般有哪些目录?每个目录的作用是什么?
2.用gcc编译文件test.c,要经过哪几个步骤?
3.gcc的参数“-L”,“-l”“-I”分别是什么意义?举例说明
4.写一个脚本完成如下功能首先,让使用者输入一个文件名,脚本作如下判断1这个文件是否存在,若不存在则给出一个“Filenamedoesnoetexist”提示,并中断程序2若这个文件存在,则判断它是文件还是目录,结果输出“Filenameisregularfile”或“Filenameisdirectory”3判断用户对这个文件或目录所具有的权限并显示出来
5.什么是系统调用?请写出你对系统调用的理解
6.什么是标准I/O库?标准I/O库和系统调用有什么区别?
7.什么是进程?用fork创建一个子进程时,系统会做什么工作?
8.管道和命名管道使用上有什么不同之处?
9.信号的处理方式有几种?怎样指定信号的处理方式?
10.进程和线程有什么区别?
11.什么是线程的互斥和同步,举例说明怎么实现线程的互斥和同步?
12.实现三个进程其中一个是父进程,其余两个是该父进程创建的子进程,其中一个子进程运行“ls–l”指令,另一个子进程在暂停5s之后退出,父进程等待子进程的退出信息,待收集到该信息,父进程就返回
13.编写一个多进程多线程的程序要求创建4个子进程,每个进程都分别创建2个线程,进程和线程的功能不做要求,可只提供简单的打印语句
14.编制一段程序,实现进程的管道通信使用系统调用pipe建立一条管道线,两个子进程分别向管道各写一句话Childprocess1issendingamessage!Childprocess2issendingamessage!而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上要求父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息第四部分网络编程1路由器工作在哪一层()A链路层B网络层C传输层D应用层2一台主机要实现通过局域网与另一个局域网通信,需要做的工作是()A配置域名服务器B定义一条本机指向所在网络的路由C定义一条本机指向所在网络网关的路由D定义一条本机指向目标网络网关的路由3下列提法中,不属于ifconfig命令作用范围的是()A配置本地回环地址B配置网卡的IP地址C激活网络适配器D加载网卡到内核中4下面的网络协议中,面向连接的的协议是()A传输控制协议B用户数据报协议C网际协议D网际控制报文协议5在局域网络内的某台主机用ping命令测试网络连接时发现网络内部的主机都可以连同,而不能与公网连通,问题可能是()A主机IP设置有误B没有设置连接局域网的网关C局域网的网关或主机的网关设置有误D局域网DNS服务器设置有误6DHCP是动态主机配置协议的简称,其作用是可以使网络管理员通过一台服务器来管理一个网络系统,自动地为一个网络中的主机分配()地址A UDPBMACC TCPDIP7在TCP/IP模型中,应用层包含了所有的高层协议,在下列的一些应用协议中,()是能够实现本地与远程主机之间的文件传输工作AtelnetBFTPC SNMPDNFS8当我们与某远程网络连接不上时,就需要跟踪路由查看,以便了解在网络的什么位置出现了问题,满足该目的的命令是()A:pingB:ifconfigC:tracerouteD:netstat9关于代理服务器的论述,正确的是A使用internet上已有的公开代理服务器,只需配置客户端B代理服务器只能代理客户端http的请求C设置好的代理服务器可以被网络上任何主机使用D使用代理服务器的客户端没有自己的ip地址10公司需要把
192.
168.
3.0/
255.
255.255网段划分成10个子网,子网掩码应该是?A
255.
255.
255.5B
255.
255.
255.4C
255.
255.
255.240D
255.
255.
255.248二填空题(本题共5小题,每空1分共10分)1网络
192.
168.
220.0/24定向广播地址是(),受限的广播地址为(),定向广播和受限广播的区别();2在tcp/ip模型中进程到进程之间通信属于()层,主机到主机属于()层,设备到设备属于()层,程序到程序属于()层3Ping命令的功能为()4进行远程登录的命令是()5DNS域名系统的作用是()三问答题(本题共4小题,每题6分共24分)1简述TCP/IP协议中各层的主要功能,各有哪些主要协议2什么是TCP、UDP?协议优缺点,应用场合?3简述TCP/IP协议中三次握手的过程及涵义4简述TCP/IP模型中应用层数据从主机A发送到主机B的整个过程5利用setsocketopt使用嵌套字支持广播,并编写两个程序,其中一个发送广播数据,另一个接收广播数据6编写一个UDP类型的client/server实例7编写一个UDP端口扫描程序8如何在编程中防止缓冲区溢出?9利用setsocketopt使用嵌套字支持广播,并编写两个程序,其中一个发送广播数据,另一个接收广播数据10写一个TCP并发的服务器,实现echo功能11写一个UDPecho服务器第五部分嵌入式平台架构
1.什么是嵌入式系统,描述一下你对嵌入式系统的理解?
2.搭建一个完整的嵌入式Linux开发平台需要做哪些工作,描述一下详细步骤?
3.什么是Bootloader,详细描述一下你对Bootloader的理解常用的Bootloader有哪些?
4.Bootloader的启动过程一般分为两个阶段,以vivi为例说明Bootloader的两个阶段完成什么工作
5.什么是Bootloader的“启动加载模式”和“下载模式”?
6.vivi的命令是怎样实现的?
7.vivi传递给内核的参数“noinitrdroot=/dev/bon/2init=/linuxrcconsole=ttyS0”是什么意思?
8.怎样把一个SD卡驱动程序编译到Linux内核中?描述一下详细步骤
9.你是怎样理解Linux内核配置编译机制的?
10.Linux内核源码各个子目录分别包含哪些内容?
11.执行makemenuconfig配置完Linux内核后,会生成两个文件.config和include/autoconf.h,它们分别是什么作用?
12.什么是根文件系统,你是怎样理解这一概念的?
13.怎样制作一个cramfs格式的根文件系统?描述一下详细过程
14.常用的根文件系统格式有哪些?它们分别具有什么特点?
15.Busybox工具包的作用是什么?TinyLogin工具包的作用是什么?
16.用Busybox实现的命令和PC上的Linux命令有什么区别?
17.内核是怎样启动根文件系统的?描述一下详细过程
18.怎样移植Qt图形库到根文件系统中,描述一下详细过程第六部分驱动篇
1.简述某一32处理器最小系统的组成与器件功能
2.简述NANDFLASH与NORFLASH的区别与适用场合
3.简述2440的中断响应过程
4.简述互斥锁与信号量的异同与应用领域
5.简述在linux下编写一个2*3键盘驱动的思路,要求动态扫描、去抖、检测键抬起、
6.检测长短键按下
7.简述2401驱动编写思路与架构
8.用自己的话简述你所理解的linux字符设备驱动架构第五部分综合项目部分
1、描述学生管理系统功能实现、编程思路、涉及知识点及各模块特点
2、描述歌词解析项目功能实现、编程思路、涉及知识点及各模块特点
3、描述wdbsever功能实现、编程思路、涉及知识点及各模块特点
4、描述TFTP客户端程序功能实现、编程思路、涉及知识点及各模块特点
5、描述飞鸽传输功能实现、编程思路、涉及知识点及各模块特点
6、描述黑白棋功能实现、编程思路、涉及知识点及各模块特点。