中兴公司笔试题目

A 一、选择题(15分) 1、就目前计算设备的计算能力而言,数据加密标准DES不能抵抗对密钥的穷举搜索攻击,其原因是______。 A.DES的算法是公开的     B.DES的密钥较短 C. DES除了其中S盒是非线性变换外,其余变换均为线性变换 D.DES的算法简单 点评:高程卷子上抄来的,题目稍微有点偏,答案是B,做对的不到一半。 2、char a = 127;int sum = 200;a += 1;sum += a; sum=________ A. 72      B. 99 C. 328     D. 327 点评:这是一个学生在其他公司笔试过后问过我的。当初他说这公司要招java的人,还以为是java的题目,答案是C,结果原来这道题目是C语言的,那答案就不同了,是A,因为C的char型会溢出转到负的整数,而java的char型是无符号的,且因为是unicode编码,范围是0~65536。 3、对n个元素进行快速排序时,最坏情况下的时间复杂度为______。 A.O(1og2n)  B.O(n)  C.O(nlog2n)       D. 0(n2) 点评:这题我也忘记了,我想数据结构学得好的人应该不会那么快忘记,答案是D。 4、一个具有767个结点的完全二叉树,其叶子结点个数为______。 A. 383     B. 384     C. 385     D. 386 点评:这题简单,也是高程里的,答案是B。 5、关键路径是指AOE(Activity On Edge)网中______。 A. 最长的回路      B. 最短的回路 C. 从源点到汇点(结束顶点)的最长路径   D. 从源点到汇点(结束顶点)的最短路径 点评:这关键路径我还记得,是最长路径,而不是最短路径,很多人错答D,正确答案是C。  二、C语言程序题 1、下面的程序运行后,c:/text.txt这个文件的内容是什么?占多少字节?(6分) void main() { char list[5]={'A',0,0,0,'/0'}; FILE* file=fopen("c://test.txt","w+"); if(file!=NULL) { fwrite(list,1,1,file); for(int i = 0;i < 3;i++) {  list[i]= (char)('Z'-i); } fseek(file,0,SEEK_SET); fprintf(file,"%s",list); } fclose(file); } 这题是网新考过的一道笔试题,几十份试卷竟然没有人完全答对。难点是很多人不知道SEEK_SET的意思,其实是把文件指针定位到第二个参数设定的位置。答案是ZYX,占3个字节。 2、下面的代码中,main()的返回值是多少?(6分) float volume=-1.0f; float GetVolume(int iVal) {   float volume= iVal/2;   return volume; } int main() {   volume += GetVolume(5);   float volume=GetVolume(-1);   return (int)volume; } 这题简单,就是考浮点运算的四舍五入,大概60%的人答对,结果是0。三、问答题 1、C语言中,用变量a给出下面的定义(12分) a) 一个指向指针的的指针,它指向的指针是指向一个整型数 b) 一个有10个整型数的数组 c) 一个有10个指针的数组,该指针是指向一个整型数的 d) 一个指向有10个整型数数组的指针 e) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数 f) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数 点评:这道题目后面三个稍微有点难,不少人答不出来,能答全对的只有15%左右。 答案: a) int **a; b) int a[10]; c) int *a[10]; d) int (*a)[10]; e) int (*a)(int); f) int (*a[10])(int); 2、C语言中,关键字static的作用是什么?(6分) 点评:看似简单的题目,很多人答不对,真正答全3点的几乎没有。 答案: 在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 3、C语言中,short s1 = 1; s1 = s1 + 1和short s1 = 1; s1 += 1有什么区别?(5分) 点评:这题也是一个学生在其他公司笔试之后问我的,答对的只有2、3个人。short和int类型的运算是要类型转换的,两种方式截然不同。前者编译器会报错,因为s1是short类型,1是int类型,不能直接加。而后者编译器是会自动转换的。 4、C语言中什么数据分配在栈中?什么数据分配在堆中?(8分) 点评:不到1/3的人能答对,答案也是五花八门。说来惭愧,当初我在HS金融的第一个老板面试我这题的时候,我也没答对。 答案是: 栈: 存放局部变量,函数调用参数,函数返回值,函数返回地址。由系统管理。 堆: 程序运行时动态申请,malloc申请的内存就在堆上 5、简述数据库设计中需满足的3范式以及数据库中“事务”的概念(10分) 点评:3范式居然没有人答对,这让我有些意外,而且就连“事务”也没几个人知道,更让我意外。答案自己去翻,教条式的内容。 第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。 第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字 第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。 事务是作为单个逻辑工作单元执行的一系列操作,并且这些操作作为一个整体,要么都做,要么都不做。 6、请用1句SQL选出男生的总分>158的班级,按总分高低排序,并写出SQL的执行结果(12分) scores num score 1 86 2 73 3 91 4 82 5 76 6 99 7 67 students class num sex 1 1 男 1 2 男 1 3 女 2 4 男 2 5 男 3 6 男 3 7 男 点评:这题相当难,我也不指望有人能做出来,主要是看回答的时候SQL语句如何写的,根据情况酌情给分。但还是有高人做出来了,这人重写了好几个答案,划掉再写,最后的结果还是对的。答案我就不说了,明年再出。 四、编程题。(20分) 下面是某单项链表节点的定义: struct node {    int data;    struct node *next; }; 请以C语言完成函数:    int remove_node_a(struct *node pHead); 该函数的功能是:对于以pHead为头节点的链表,如果链表中有连续的、重复的节点(指data域相同的节点),则仅保留其中一个,而删除其他的重复节点;函数返回被删除节点的个数,当存在任何错误时,返回-1。 点评:这题不算难,也是网新的题目。学数据结构的时候自己写过算法的一般都能大致写对,不过真正能按格式写,并且考虑了各种情况的人也不多,也就3、4个人。本文出自 51CTO.COM技术博客 B 下面是第二天在合肥工业大学的笔试题目: 1、论述C语言中含参数的宏与函数的区别和优缺点(6分) 点评:题目不难,但完全回答对的人其实并不多。 答案: 宏:不进行参数正确性检查,只进行简单的替换工作,占用了大量的空间。 函数:进行参数正确性的效验,占用了大量的时间。 2、C和C++的结构体有什么区别?C++ 中的类与结构体有什么区别?(10分) 第二个问题出得比较多,第一个出得不多。几十份卷子回答对的没几个,让我感到很失望。 答案: ①C++中的结构体能够定义方法,继承和重载,C语言中的不可以。 ②结构体中的成员缺省是public的,而类中的成员缺省是private的,这是C++中唯一的区别 3、以下C程序,j的最终结果是多少?(6分) int i=1; int j; j=(++i)+(++i) +(i++)+(i++)+(++i); 点评:是moto曾经出过的题目,其实不难,一般C语言学得不差的都知道。但有一点要注意的是,其实标准答案并不对,因为C语言中并没有规定这种运算的先后顺序,所以不同编译器的答案不同,VC6.0、VC.NET、BC5.1、和GCC答案不尽相同,而所谓的标准答案却和这几个编译器的结果都不同,反倒和C#、JAVA的结果相同,因为这两个编译器严格规定了这种运算的先后顺序。我本以为没有人会回答“和编译器相关”,但让我意外的是居然有人就这样回答的,我如获至宝,但最终他的综合能力并不咋喋,还是没招进来。 4、Heap与Stack有什么差别?(8分) 点评:很多人把Heap回答成List的特性了,什么先进先出,莫名其妙。 答案: Heap在程序中是用malloc函数分配的,需要手动清除。Stack是由程序自动分配、自动清除的。 5、详细说明TCP建立连接的三次握手过程。(10分) 点评:大致的过程90%的人都知道,但真正把第一次握手发送的内容回答对的寥寥无几。 [1]对每次发送的数据量跟踪进行协商,使数据段的发送和接收同步 [2]根据所接收到的数据量而确定的数据确认数及数据发送 [3]接收完毕后撤销联系,并建立虚连接。 6、请写出下面C语言程序的输出(7分) int Calc(int iValue) {   static int iSum,iCount;   iSum += iValue;   iCount ++ ;   return iSum/iCount; } int main() {   int iInput=Calc(Calc(3));   printf("Calc(Calc(3))=%d",iInput);   return 0; } 点评:题目不难,也是网新出过的,70%的人回答对了,是3。 7、一个数列[-1,2,7,28,_ ,126……]请问28和126中间那个数是什么?为什么?(8分) 点评:这是道不难的小学数学运算题,但错的人很多,唉,没几个数学学好的。 答案: 63 规律是n^3-1(当n为偶数0,2,4) n^3+1(当n为奇数1,3,5) 8、在操作系统中,什么是死锁?如何解决死锁?(8分) 点评:对死锁的解释答全的不多,解决死锁策略就更没多少人回答对了,操作系统课学好的人还是少啊! 答案: 一组进程为了竞争系统资源或相互间的通信而发生永久性的阻塞。死锁产生原因: ⒈系统资源不足⒉进程推进顺序非法 产生死锁的4个必要条件: ①互斥执行②不可剥夺③保持并等待④循环等待 解决死锁策略: ⒈采用静态分配方法来预防死锁(静态预防) ⒉采用有控分配方法来避免死锁(动态避免) ⒊当死锁发生时检测出死锁并设法修复 9、进程和线程的区别是什么?各有什么优点?(10分) 点评:搞不清进程和线程的大有人在,而回答全的就更只有10%。 10、SQL试题(12分) 表名:test class name score 1 a 75 1 b 91 1 c 54 2 d 66 2 e 75 2 f 39 2 g 42 3 h 23 3 i 98 3 j 85 其中class、name为char类型,score为integer类型。 用一条SQL语句查询显示每个班级分数最高的人的班级,名字和分数 点评:这题相当难,我也不指望有人能做出来,主要是看回答的时候SQL语句如何写的,根据情况酌情给分。答案我就不说了,明年再出。 11、如何用两个栈实现一个队列的功能?要求给出算法和思路,可以用文字描述。(15分) 点评:数据结构学得还可以的人应该都没问题,但真正回答对的还不到1/3。 答案: 设2个栈为A,B, 一开始均为空. 入队: 将新元素push入栈A; 出队: (1)判断栈B是否为空; (2)如果不为空,则将栈A中所有元素依次pop出并push到栈B; (3)将栈B的栈顶元素pop出;本文出自 51CTO.COM技术博客 第一部分 数据结构和算法   1.       假设执行语句S的时间为O(1),则执行下列程序短的时间为() for(i=1;i<=n;i++) for(j=I;j<=n;j++) S; A.        O(n) B.        O(n2) C.        O(n*i) D.       O(n+1)  B 2.       二位数组A[10…20,5…10]采用行序为主序方式存储,每个数据元素占4个存储单元,且A[10][5]的存储地址是1000,则A[18][9]的地址是() A.        1208 B.        1212 C.        1368 D.       1364  A 3.       设栈最大长度为3,入栈序列为1,2,3,4,5,6,则不可能得出栈序列是() 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  D 4.       设有98个已排序列元素,采用二分法查找时,最大比较次数是() A.        49 B.        15 C.        20 D.       7  D 5.       Hash表示用于数据存储的一种有效的数据结构,Hash表等查找复杂度依赖于Hash值算法的有效性,在最好的情况下,Hash表的查找复杂度为() A.        O(1) B.        O(logn) C.        O(n) D.       O(nlogn)  A 第二部分 软件工程   1. 软件能力成熟度模型CMM共分为()成熟度等级 A. 3 B. 4 C. 5 D. 6  C CMM共分为5个等级,即初始级、可重复级、已定义级、已管理级和优化级。 2. 按照是否了解软件的内部构造,可以将测试分为黑盒测试和白盒测试。考虑以下算法的PDL语句,如果要对其进行完全路径覆盖的白盒测试,则需要()条路径。 do ehile 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. 按照瀑布模型的阶段划分,软件测试可以分为单元测试,集成测试,系统测试。请问以下那项测试不属于系统测试的内容() A. 压力测试 B. 接口测试 C. 功能测试 D. 安全测试 E. 性能测试   4. 测试用例的设计是测试的重要阶段。系统测试用例设计应该从什么时候开始() A. 需求完成 B. 详细设计完成 C. 编码完成 D. 系统集成完毕,提交系统测试   5. 在UML方法中,使用多种类型的图形来帮助进行设计,请问一下那些图形不是UML的图形类型(C) A. 类图 B. 实体关系图 C. 序列图 D. 活动图   第三部分 Java语言及其他   1. 下面哪个是short型的取值范围:() A. -27--- 27-1 B. 0 --- 216-1 C. -215--- 215-1 D. -231---231-1   2. 下面哪项是不合法的标识符:(A) A. $persons B. TwoUsers C. *point D. _endline   3. 设 float x = 1,y = 2,z = 3,则表达式 y+=z--/++x 的值是() A. 3.5 B. 3 C. 4 D. 5   4. 下列哪些关键字即能够被用于局部变量的修饰,也可以用做类变量的修饰() A. public B. transient C. static D. finally   5. 以下的语句构造了几个JAVA对象?() String S = new String(“aaa”); A. 1 B. 2 C. 3   6. 下面的哪些叙述为真() A. equals()方法判定引用值是否指向同一对象 B. = = 操作符判定两个不同的对象的内容和类型是否一致 C. equal() 方法只有在两个对象的内容一致时返回ture D. 类File重写方法equals()在两个不同的对象的内容和类型一致时返回ture   7. 如果一个对象仅仅声明实现了cloneable接口,但是不声明clone方法,外部能够调用其clone方法吗?() A. 能 B. 不能 C. 不确定   8. 考虑在C/S结构下,服务器接受并处理请求,那么关于服务器处理请求的模式,哪些描述是错误的() A. 单线程模式下,服务器使用一个线程顺序的处理所有的请求,可能导致阻塞 B. 服务器可以为每一个请求创建一个线程来处理该请求,这样做比单线程模式更加稳定 C. 线程池模式下,当线程使用达到最大数量限制之后,线程池中没用可用线程的时候,服务器将阻塞或者拒绝某个请求的处理   9. 使用Swing做界面的时候,如果把一个JButton放在一个JFrame中,在JFrame改变时只影响JButton的高度而宽度不受影响,应该使用哪个布局管理器?() A. FlowLayout B. CardLayout C. North and South of BorderLayout D. East and West of BorderLayout E. GridLayout   10. 以下的那个状态是EntityBean所具有,而StatelessBean不具有的() A. 池态 B. 就绪态 C. 不存在态 D. 钝化态   11. 以下关于数据库范式的描述,哪些是错误的() A. 如果把多个数据项用一个大的String表示为一个字段,则不满足第一范式 B. 满足数据库范式使得数据库的效率更高 C. 如果满足更高的范式,则必须首先满足低级别的范式 D. 数据库第二范式要求把表中与所有键没有直接关系的数据全部拆分到其他表中   12. 考虑一下需求:包括学生、课程和教师的信息。其中学生的信息包括学生姓名、年龄地址等;课程信息包括课程号、课程名、课程学分等;教师信息包括教师的姓名、教师的地址等。一个学生可以选修多门课,而每门课也能有多个学生选修;一位教师可以教多门课,每门课也可以由多个教师讲授。请问如果使用关系数据库,并且达到第二范式的要求,需要设计()张表 A. 3 B. 4 C. 5 D. 6   13. 为了加快数据库查找的速度,需要对数据表添加索引,请问以下关于索引的描述,哪些是错误的() A. 聚类索引中,表中行的物理次序与索引键值的逻辑顺序相同 B. 使用索引会使得数据更新的效率降低 C. 在大多数数据库系统中,每张表只能够有一个聚类索引 D. 考虑这个SQL语句:Select S.name,S.age from Student S where S.address=”成都”,如果我们对表Student建一个复合索引(age,address),可以改善上述查询的效率。   第四部分 问答题 1. 简述一个Linux驱动程序的主要流程与功能。   2. 请列举一个软件中时间换空间或者空间换时间的例子。   3. 简述进程与线程的区别。   4. static有什么用途?(请至少说明两种)   5. 头文件中的ifndef/define/endif做什么用?   6. 请问一下程序将输出什么结果? char *RetMenory(void) { char p[] = “hellow world”; return p; } void Test(void) { char *str = NULL; str = RetMemory(); printf(str); }   7. 引用与指针有什么区别?   8. 描述实时系统的基本特性   9. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?   10. 什么是平衡二叉树?   11. 堆栈溢出一般是由什么原因导致的?   12. 什么函数不能声明为虚函数?  友元函数,构造函数。 13. 冒泡排序算法的时间复杂度是什么?   14. #include 和 #include “filename.h” 有什么区别?   15. 写出float x 与“零值”比较的if语句。   16. 操作系统中进程调度策略有哪几种?   17. Internet采用哪种网络协议?该协议的主要层次结构?   18. Internet物理地址和IP地址转换采用什么协议?   19. IP地址的编码分为哪俩部分 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值