中兴笔试题
2008-10-16
公共部分(50分)
1:作业调度程序从处于(B)状态的队列中选择适当的作业的作业投入运行。分)
A 运行
B 提交
C 完成D后备
2:SQL语言中,删除一个表的命令是(B)(3分)
A CLEAR TABLE
B DROP TABLE
C DELETE TABLE
D REMOV
E TABLE
3:A TM采用的线路复用方式为(C)(3分)
A 频分多路复用
(3B 同步时分多路复用
C 异步时分多路复用
D 独占信道
4:数据库中只存放视图的(C)(3分)
A操作
B 对应的数据
C 定义
D
5:什么是虚拟设备?为什么在操作系统中引入虚拟设备? (10分)
SPOOLing是Simultaneous Peripheral Operation On-Line (即外部设备联机并行操作)的缩写,它是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为“假脱机技术”。
6:TCP为何采用三次握手来建立连接,若采用二次握手可以吗,请说明原因?(16分)
三次握手是为了防止已失效的连接请求再次传送到服务器端。
二次握手不可行,因为:如果由于网络不稳定,虽然客户端以前发送的连接请求以到达服务方,但服务方的同意连接的应答未能到达客户端。则客户方要重新发送连接请求,若采用二次握手,服务方收到重传的请求连接后,会以为是新的请求,就会发送同意连接报文,并新开进程提供服务,这样会造成服务方资源的无谓浪费。
7:什么是分布式数据库?(12分)
分布式数据库系统是在集中式数据库系统成熟技术的基础上发展起来的,但不是简单地把集中式数据库分散地实现,它具有自己的性质和特征。集中式数据库系统的许多概念和技术,如数据性、数据共享和减少冗余度、并发控制、完整性、安全性和恢复等在分布式数据库系统中都有了不同的、更加丰富的内容。
(1)数据性。数据性是数据库方法追求的主要目标之一。在集中式数据库中,数据性包括两方面:数据的逻辑性和物理性。其意义在于程序和数据的逻辑结构和数据的存储结构无关。在分布式系统中,数据库性除了上面所说之外,还有数据分布性亦称分布透明性,即用户不必关心数据的逻辑分片,不必关心数据的物理位置分布的细节,也不必关心重复副本(冗余数据)的一致性问题。有了分布透明性,用户的应用程序书写起来就如同数据没有分布一样。在集中式数据库中,数据的性是通过系统的三级模式和它们之间的二级映象得到的。分布式数据库,分布透明性是由于引入新的模式和模式之间的映象得到的。
(2)集中与自治相结合的控制结构。数据库是供用户共享的,在集中式数据库中,为保证数据的安全性和完整性,对数据库的控制是集中的。由数据库管理员(DBA)负责监督和维护系统的正常运行。
在分布式数据库中,数据的共享有两个层次:一是局部共享,即在局部场地上存储局部用户的共享数据。二是全局共享,即在分布式数据库的各个场地也存储可供网络中其他场地的用户共享的数据,支持全局引用。因此,相应的控制结构也具有两个层次:集中和自治。各局部的DBMS可以地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局应用。
(3)适当增加数据冗余度。在集中式数据库中,尽量减少冗余度是系统目标之一。其原因是,冗余数据浪费存储空间,而且容易造成个副本之间的不一致性。减少冗余度的目标是用数据共享来达到的。而在分布式系统中却希望增加冗余数据,在不同的场地存储同一数据的多个副本。其原因是提高系统的可靠性和性能,当某一
场地出现故障,系统可以对另一场地上的相同副本进行操作,不会造成系统的瘫痪。系统可以根据距离选择离用户最近的数据副本进行操作,减少通信代价。但是增加冗余会碰到集中式数据库同样的问题,即不利于更新,增加了系统维护代价,需要在这些方面作出权衡。
(4)全局的一致性、可串行性和可恢复性。分布式数据库中各局部数据库应满足集中式数据库的一致性、可串行性和可恢复性。除此以外,还要保证数据库的全局一致性、可串行性和可恢复性。例如,在前面提到的银行转帐事务中,包括两个节点上的更新操作,当其中一个节点出现故障,应使全局事务回滚,在一个节点撤销已经执行的操作等。
C++部分(50分)
1:设有“int w[3][4];”,pw是与数组名w等价的数组指针,则pw的初始化语句为int (*pw)[4] = w;(3分)
4:设有如下语句:(3分)
Int x;
*px=0;
则选择以下哪条语句可将x值置为0。(C)
A int *px;
B int const *px=&x;
C int *const px=&x;
D const int *px=&x;
8写一段代码判断一个单向链表中是否有环。(14分)给出如下结构
Struct node
{steuct *next;
};
Typedef stuct node Node;
答:
#include struct listtype { int data; struct listtype * next; }; typedef struct listtype * list; /* Check that whether there is loop in the singly linked list sll or not. */ int find_circle(list sll) { list fast = sll; list slow = sll; if (NULL == fast) { return -1; } while (fast && fast->next) { fast = fast->next->next; slow = slow->next; if (fast == slow) { return 1; } } return 0; } 第一部分数据结构和算法 1. 假设执行语句S的时间为O(1),则执行下列程序短的时间为() for(i=1;i<=n;i++) for(j=1;j<=n;j++) S; A. O(n) B. O(n2) C. O(n*i) D. O(n+1) 2. 二位数组A[10…20,5…10]采用行序为主序方式存储,每个数据元素占4个存储单元,且A[10][5]的存储地址是1000,则A[18][9]的地址是() A. 1208 B. 1212 C. 1368 D. 13 3. 设栈最大长度为3,入栈序列为1,2,3,4,5,6,则不可能得出栈序列是(D) A. 1,2,3,4,5,6 B. 2,1,3,4,5,6 C. 3,4, 2,1,5,6 D. 4,3,2,1,5,6 4. 设有98个已排序列元素,采用二分法查找时,最大比较次数是() A. 49 B. 15 C. 20 D. 7 5. Hash表示用于数据存储的一种有效的数据结构,Hash表等查找复杂度依赖于Hash值算法的有效性,在最好的情况下, Hash表的查找复杂度为(A) A. O(1) B. O(logn) C. O(n) D. O(nlogn) 第二部分软件工程 1. 软件能力成熟度模型CMM共分为(C)成熟度等级 A. 3 B. 4 C. 5 D. 6 2. 按照是否了解软件的内部构造,可以将测试分为黑盒测试和白盒测试。考虑以下算法的PDL语句,如果要对其进行完全路径覆盖的白盒测试,则需要()条路径。 do while records remain read record; if record field 1 = 0 then process record; store in buffer; increment counter; elseif record field 2 = 0 then reset counter; else process record; store in file; endif endif enddo A. 4 B. 5 C. 6 D. 7 3. 按照瀑布模型的阶段划分,软件测试可以分为单元测试,集成测试,系统测试。请问以下那项测试不属于系统测试的内容(B)A. 压力测试B. 接口测试C. 功能测试D. 安全测试E. 性能测试 4. 测试用例的设计是测试的重要阶段。系统测试用例设计应该从什么时候开始(A) A. 需求完成 B. 详细设计完成 C. 编码完成 D. 系统集成完毕,提交系统测试 5. 在UML方法中,使用多种类型的图形来帮助进行设计,请问一下那些图形不是UML的图形类型(B) A. 类图 B. 实体关系图 C. 序列图 D. 活动图 第四部分问答题 1. 简述一个Linux驱动程序的主要流程与功能。 2. 请列举一个软件中时间换空间或者空间换时间的例子。void swap(int a,int b) { int c; c=a;a=b;b=a; } --->空优 void swap(int a,int b) { a=a+b;b=a-b;a=a-b; } 3. 简述进程与线程的区别。 线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 (2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行 (3)拥有资源:进程是拥有资源的一个单位,线程不拥有系统资源,但可以访问隶属于进程的资源. (4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。 4. static有什么用途?(请至少说明两种) 1.变量的作用域 2.设置变量的存储域声明局部变量;声明外部变量; 5. 头文件中的ifndef/define/endif做什么用? 防止该头文件被重复引用 6. 请问一下程序将输出什么结果? char *RetMenory(void) { char p[] = “hellow world”; return p; } void Test(void) { char *str = NULL; str = RetMemory(); printf(str); } 答:可能是乱码。因为GetMemory 返回的是指向“栈内存”的指针,该指针的地址不是 NULL,但其原 现的内容已经被清除,新内容不可知。 7. 引用与指针有什么区别? 引用是一个别名,它本身是一个地址指针是一个变量,这个变量保存的值是一个变量的地址 1、用户将变量声明为引用时,要在变量的前面使用操作符(&),函数调用时也要在作为引用的参数前面加上操作符(&)。引用与被引用对象共用一个存储空间,只要改变其中的一个变量,则存储空间中的值也就随着改变。 2、指针是一个指向变量地址的变量,对其操作就是对其指向地址中的值进行操作。 3、引用在声明时要初始化,指针就不用。 4、指针可以指向NULL,引用就不可以。 5、引用一旦声明,就不可以改变,指针就可以。 6、引用的主要功能是传递函数的参数和返回值。 一般情况下,引用比指针更直观,更容易让看懂,所以一般情况都会用引用,但是请记住,因为引用不能赋值而且不能为空,所以当需要返回改变了的值和NULL时,不要用引用要用指针 C++中的引用和指针的区别 引用reference又称alias(别名),定义一个引用必须初始化,而且一旦引用指向一个对象就不能更改,这就使得renference 不能赋null值; 指针pointer:定义一个指针可以不初始化,且指针随便便更指向对象,除非声明const pointer。 指针的功能要强的多,指针和数组在大部分情况下可以通用,而且指针还有算术运算。不过另外还有指向函数的指针,没有指向函数的引用。 最关键的一个区别就是,指针可以做运算,而引用不可以 引用只是一个变量的别名,程序中的应用不占据实际的内存空间,而指针则是一个数值,其意义就是被指向数据所存放的内存地址,而指针同样也是一个数据,他的存放需要占据内存空间。 使用引用来代表其它变量时,对于整个程序而言会更加安全。而使用指针可以使得整个程序更加灵活。 引用和指针的比较 (1)引用在创建的同时必须初始化,即引用到一个有效的对象;而指针在定义的时候不必初始化,可以在定义后面的任何地方重新赋值. (2)不存在NULL引用,引用必须与合法的存储单元关联;而指针则可以是NULL. (3)引用一旦被初始化为指向一个对象,它就不能被改变为另一个对象的引用;而指针在任何时候都可以改变为指向另一个对象.给引用赋值并不是改变它和原始对象的绑定关系. (4)引用的创建和销毁并不会调用类的拷贝构造函数 (5)在语言层面,引用的用法和对象一样;在二进制层面,引用一般都是通过指针来实现的,只不过编译器帮我们完成了转换. 总的来说:引用既具有指针的效率,又具有变量使用的方便性和直观性. 1值传递 void Func(int x) {x=x+10;//修改的是n在堆栈中的拷贝x } int n=0; Func(n); cout<<\"n=\"< void Func2(int *x) { (*x)=(*x)+10;//修改指针x指向的内存单元的值 }int n=0; Func(&n); cout<<\"n=\"< void Func3(int &x) {x=x+10;//修改的是x引用到的对象n} int n=0; Func3(n); cout<<\"n=\"< 9. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 全局变量储存在静态数据区,局部变量在堆栈中。 10. 什么是平衡二叉树? 平衡二叉树是这样的二叉树:它的左右子树都是平衡二叉树,且两者深度之差不超过1 11. 堆栈溢出一般是由什么原因导致的? 堆栈溢出就是不顾堆栈中分配的局部数据块大小,向该数据块写入了过多的数据,导致数据越界,结果覆盖了老的堆栈数据。或者解释为在长字符串中嵌入一段代 码,并将过程的返回地址覆盖为这段代码的地址,这样当过程返回时,程序就转而开始执行这段自编的代码了. 12. 什么函数不能声明为虚函数? (1)只有类的成员函数才能说明为虚函数。因为虚函数仅适用于有继承关系的类对象,所以普通函数不能说明为虚函数。(2)静态成员函数不能是虚函数,因为静态成员函数不受限于某个对象。 (3)内联函数不能是虚函数。因为内联函数是不能在运行中动态确定其位置的。即使虚函数在类的内部定义,编译时,仍将其看作非内联函数。 (4)构造函数不能为虚函数。因为构造时,对象还是一片未定义的空间。只有在构造完成后,对象才能成为一个类的名副其实的实例。 (5)析构函数可以是虚函数,而且通常声明为虚函数。 13. 冒泡排序算法的时间复杂度是什么?O(n2) 14. #include 对于#include 对于#include “filename.h” ,编译器从用户的工作路径开始搜索filename.h 15. 写出float x 与“零值”比较的if语句。 const float EPSINON = 0.00001; if ((x >= - EPSINON) && (x <= EPSINON) 不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。 16. 操作系统中进程调度策略有哪几种? FCFS(先来先服务),优先级,时间片轮转,多级反馈 17. Internet采用哪种网络协议?该协议的主要层次结构? TCP/IP协议四层:应用层(Telnet, FTP, E-mail),运输层(TCP, UDP),网络层(IP, ICMP, IGMP),链路层(设备驱动程序及接口卡) 18. Internet物理地址和IP地址转换采用什么协议? ARP(地址解析协议):将IP地址翻译为物理的硬件地址RARP(反向地址解析协议):用于无盘工作站寻找其IP地址。 19. IP地址的编码分为哪俩部分? 网络地址和主机地址 (1)A类(1.0.0.0~126.0.0.0) 1字节网络地址+3字节主机地址 网络地址最高位为0;可用的A类网络有126个;网络号不能为127 (2)B类(128.0.0.0~191.255.255.255) 2字节网络地址+2字节主机地址 网络地址最高位为10;可用的B类网络有16382个; (3)C类(192.0.0.0~223.255.255.255) 3字节网络地址+1字节主机地址 网络地址最高位为110;可用网络达209万余个 (4)D类用于多点广播,第一个字节以1110开始,是一个专门保留的地址,它并不指向待定的网络,目前这一类地址被用在多点广播中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。 问:死锁产生的必要条件,解决死锁问题的几种方法? 操作系统中的死锁被定义为系统中两个或者多个进程无限期地等待永远不会发生的条件,系统处于停滞状态,这就是死锁。产生死锁的原因主要是: (1)因为系统资源不足。 (2)进程运行推进的顺序不合适。 (3)资源分配不当等。 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则 就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。 产生死锁的四个必要条件: (1)互斥条件:一个资源每次只能被一个进程使用。 (2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 (3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 (4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之 一不满足,就不会发生死锁。 死锁的解除与预防: 理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和 解除死锁。所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确 定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态 的情况下占用资源。因此,对资源的分配要给予合理的规划。 问:说出软件工程几种常用模型 常见的软件工程模型有:线性模型(又称瀑布模型),渐增式模型,螺旋模型,快速原型模型,形式化描述模型 问:说出CASM/CD(载波侦听)的基本工作模式 CSMA/CD的工作原理可用四个字来表示:“边听边说”,即一边发送数据,一边检测是否产生冲突。 问:ATM的信元有多少字节?53 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务