求职宝典

6.2 笔试真题 & 详解

浪潮软件研发B卷(60分钟)

注:对于有C和JAVA选择的试题,考生可以选择其中一种解答,请在答题卡中标明。即选择C语言试题解答,则解答的JAVA试题不计分;选择JAVA语言,解答的C语言试题不计分。

一、 填空题,共52分,每空2分

1.在计算机中,最适合进行数字加减运算的数字编码是____,最适合表示浮点数阶码的数字编码是______。

2.如果主存容量为16M字节,且按字节编址,表示该主存地址至少应需要__位。

3.中断响应时间是指_________________________________。

4.表达式a*(b+c)-d的后缀表达形式为_________。

5.若二叉树的先序遍历序列为ABDECF,中序遍历序列DBEAFC,则其后序遍历序列为____________。

6.以比较为基础的排序算法在最坏情况下的计算时间下界为________。

7.若广义表L=((1,2,3)),则L的深度为______。

8.某双向链表中的结点如下图所示,删除t所指结点的操作为________。

9.在_____存储结构中,数据结构中元素的存储地址与其关键字之间存在某种映射关系。

10.在TCP/IP网络中,为各种公共服务保留的端口号范围是_____。

11.OSI传统7层指的是:物理层、数据链路层、_____、传输层、话路层、_____和应用层。

12.关系模式R(U,F),其中U=(W,X,Y,Z),F={WX→Y,W→X,X→Z,yVw}。关系模式R的候选码是_______,_____是无损连接并保持函数依赖的分解。

13.软件设计的主要任务是设计软件的结构、过程和模块,其中软件结构设计的主要任务是要确定_____。

14.常见的软件开发模型有瀑布模型、演化模型、螺旋模型、喷泉模型等。其中______模型适用于需求明确或很少变更的项目,______模型主要用来描述面向对象的软件开发过程。

15.在UML提供的图中,______用于描述系统与外部系统及用户之间的交互;______用于按时间顺序描述对象间的交互。

【C语言】:

16.设有定义语句int(*f)(int);则f是____________。

17.函数调用语句:func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)))中func函数的实参个数是____________。

18.变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000,若要求将a的高4位取反,低4位不变,所要执行运算是______。

19.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为____________。

20.已有定义:double*p;请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元______。

21.C程序经过编译、______步骤之后才能形成一个真正可执行的二进制机器指令文件。

【JAVA】:

16.FileInputStream是字节流;BufferedWriter是字符流;ObjectOutputStream是____________。

17.保证JAVA语言可移植性的特征是____________。

18.如果有一个类MyFrame是Frame的子类,能够被不同包中的类所使用,请写出该类的声明头:______。

19.在java中,用package语句说明一个包时,该包的层次结构必须与______相同。

20.在java中,能实现多重继承效果的方式是______。

21.线程在生命周期中要经历5状态,分别是新建状态、可运行状态、运行状态、______状态和终止状态。

二、选择题,共8分,每空1分

1.采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为______。

2.在C++中,下列函数______不能重载。

3.下面程序段的时间复杂度为______。

For(int i=0;i<m;i++)

For(int j=0;j<n;j++)

a[i][j]=i*j;

A.O(m2) B.O(n2) C.O(m*n) D.O(m+n)

4.如果事务T获得了数据项Q上的排它锁,则T对Q______。

A.只能读不能写 B.只能写不能读

C.既可读又可写 D.不能读不能写

5.一进程刚获得三个主存块的使用权,若该进程访问页面的次序是{1321215123},采用LRU算法时,缺页数是______次。

A.3 B.4 C.5 D.6

6.在下面的两个关系中,职工号和部门号分别为职工关系和部门关系的主键(或称主码)职工(职工号、职工名、部门号、职务、工资)

部门(部门号、部门名、部门人数、工资总额)

在这两个关系的属性中,只有一个属性是外键(或称外来键、外码、外来码),它是______

A.职工关系的“职工号” B.职工关系的“部门号”

C.部门关系的“职工号” D.部门关系的“部门号”

7.某二叉树的前序和后序序列正好相反,则该二叉树一定是_______的二叉树。

A.空或只有一个节点 B.高度等于其节点数

C.任一结点无左孩子 D.任意节点无右孩子

8.有权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼数,它的带权路径长度为_______。

A.24 B.71 C.48 D.53

三、问答题(共10分)

1.接口是否可继承接口?抽象类是否可实现接口?抽象类是否可继承实体类?(共3分)

2.TCP和UDP的区别?(共2分)

3.列举面向对象的特征,并介绍主流面向对象语言中数据类型的分类及该类型存储位置之间区别?(共5分)

四、程序题,共30分

1. 阅读以下说明和C程序,将应填入__(n)__处的字句写在答题纸对应栏内。(共10分、每空2分)

说明:假设需要将N个任务分配给N个工人同时去完成,每个人都能承担这N个任务,但费用不同。下面的程序用回溯法计算总费用最小的一种工作分配方案,在该方案中,为每个人分配1个不同的任务。

程序中,N个任务从0开始依次编号,N个工人也从0开始依次编号,主要的变量说明如下:

C[i][j]:将任务i分配给工人j的费用;

task[i]:值为0表示任务i未分配,值为j表示任务i分配给工人j;

worker[k]:值为0表示工人k未分配任务,值为1表示工人k已分配任务;

mincost:最小总费用。

【C 程序】

#include<stdio.h>

#define N 8 /*N 表示任务数和工人数*/

Int c[N][N];

unsigned int mincost=65535; /*设置的初始值,大于可能的费用*/

int task[N], temp[N], worker[N];

void plan(int k,unsigned int cost)

{ int I;

if (__(1)__&& cost<mincost) {

mincost=cost;

for(i=0; i<N; i++)temp[i]=task[i]; }

else{

for(i=0; i<N; i++) /*分配任务 k*/

if (worker[i]==0 &&___(2)__){

worker[i]=1; task[k]=__(3)__;

Plan(__(4)__,cost+c[k][i]);

__(5)__; task[k]=0;

}/*if*/

}

}/*Plan*/

voin main()

{ int I,j;

for(i=0; i<N; i++){ /*设置每个人任务由不同工人承担时的费用及全局数组的初值*/

worker[i]=0; task[i]=0; temp[i]=0;

for(j=0; j<n; j++)

scanf(“%d”,&c[i][j]);

}

Plan(0, 0) /*从任务0开始分配*/

printf(“\n 最小差用=%d\n”, mincost);

for(i=0; i<N; i++)

printf(“Task% isassigned to Worker%d\n”,I,temp[i])

} /*main*/

2. 阅读以下说明,回答问题1至问题4,将解答填入答题纸的对应栏内。(共10分)

说明:

某宾馆需要建立一个住房管理系统,部分的需求分析结果如下:

(1) 一个房间有多个床位,同一房间内的床位具有相同的收费标准。不同房间的床位收费标准可能不同。

(2) 每个房间有房间号(如201、202等)、收费标准、床位数目等信息。

(3) 每位客人有身份证号码、姓名、性别、出生日期和地址等信息。

(4) 对每位客人的每次住宿,应该记录其入住日期、退房日期和预付款额日期。

(5) 管理系统可查询出客人所住房间号。

根据以上的需求分析结果,设计一种关系模型如图 2-1 所示:

图 2-1 住房管理系统的实体联系图

1)根据上述说明和实体-联系图,得到该住房管理系统的关系模式如下所示,请补充住宿关系。(2分)

房间(房间号,收费标准,床位数目)

客人(身份证号,姓名,性别,出生日期,地址)

住宿(______、_______,入住日期,退房日期,预付款额)

2)请给出问题1住宿关系的主键和外键。(2分)

3)若将上述关系直接实现为对应的物理表,现需查询在2005年1月1日到2005年12月31日期间,在该宾馆住宿次数大于5次的客人身份证号,并且按照入住次数进行降序排列。下面是实现该功能的SQL语句,请填补语句中的空缺。(3分)

SELECT 住宿.身份证号,count(入住日期) FROM 住宿,客人

WHERE 入住日期 >= ‘20050101’ AND 入住日期 <= ‘20051231’

AND 住宿.身份证号 = 客人.身份证号

GROUP BY _(2)_

_(3)_ count(入住日期) >5

_(4)_

4)为加快SQL语句的执行效率,可在相应的表上创建索引。根据问题3中的SQL语句,除主键和外键外,还需在那个表的的哪些属性上创建索引,应该创建什么类型的索引,请说明原因。(3分)

3. 完成下列的快速排序算法,可以选择C或JAVA部分解答。(10分)

【C】: int partitions(int a[],int low,int high) void quicksort(int a[],int n)

{int pivotkey=a[low]; {___(5)___;

//a[0]=a[low]; }

While(low<high) #include<stdio.h>

{while(___(1)___) //#include<math.h>

--high; #include”myfunc.h”//存放于个人函

a[low]=a[high]; 数库中

while(___(2)___) main()

++low; {int

a[high]=a[low]; i,a[11]={0,11,12,5,6,13,8,9,14,7,10};

} for(i=0;i<11;printf(“%3d”,a[i]),++i);

//a[low]=a[0]; printf(“\n”);

a[low]=pivotkey; quicksort(a,10);

return low; for(i=0;i<11;printf(“%3d”,a[i]),++i);

} printf(“\n”);

void qsort(int a[],int low,int high) }

{int pivottag;

if(___(3)___)

{//递归调用

pivottag=___(4)___;

qsort(a,low,pivottag-1);

qsort(a,pivottag+1,high);

}

}

【JAVA】:

/**

*快速排序

*/

Public static void main(String [] args) {

Random random =new Random();

Int[] pDtat=new int[10];

For(int i=0;i<pData.length;i++){//随即生产10个随机数

Integer a=random.nextInt(100);

pData[i]=a;

System.out.print(pData[i]+””);

}

System.out.print();

Int left=0;

Int right=pData.length-1;

(1)

for(int i=0;i<pData.length;i++){

System.out.print(pData[i]+””);

}

System.out.println();

}

Public static int[] Sort(int[] pData,int left,int right){

Int middle,str Temp;

Int i=left;

Int j=right;

Middle= (2) ;

do{

While( (3) )

I++;

While( (4) )

j--;

if(i<=j){

str Temp=pData[i];

pData[i]=pData[j];

pData[j]=str Temp;

i++;

j--;

}

For(int k=0;k<pData.length;k++){

System.out.print(pData[k]+””);

}

System.out.println();

}while( (5) );//如果两边扫描的下标交错,完成一次排序

If(left<j)

Sort(pData,left,j);//递归调用

If(right>i)

Sort(pData,i,right);//递归调用

Return pData;

浪潮笔试试题

考题发下来之后,大体看了一下,54分的填空选择,26分的编程题,考题涉及的内容比较多,有操作系统,数据库,面向对象,网络模型,C语言基本知识等等,似乎还有一些计算机基础知识,比如win98和win2k谁是16位操作系统,谁是32位操作系统这样的题目。出来之后我问了问工作人员,软件研发组所分的C类和E类是按照什么进行的分类啊,结果他也不清楚,考试的时候我们E组做的C/C 的题目,也就是我上面说的综合性题目,而C组的题目是专门针对C++或者Java的,你可以从两份试题中任选一份。编程题:题二:编码变换的一个题目26a2变换为666_a_2.

浪潮往年笔试题目

1. static

2.指针与数组

3.字符串处理

基本都是要考的。

数据结构, 前两家没涉及。

浪潮的考了回溯算法, 排序, 二叉树查找,我做的不太好。

回忆下试题有:

回溯算法:

N个任务,N个工人, C[i][i]:把任务i分配给工人j所需的费用。

求费用最低的分配方法。

二叉树查找:

在二叉树中找结点E,

1.若该节点是叶结点, 直接删除

2.若该节点只有Lchild, 则删除该节点, 把Lchild防到原有的结点位置。

题一:strcpy(char *to,char *from)函数用于拷贝字符串

void strcpy(char *to,char *from){

while( );

}

题二:编码变换的一个题目26a2变换为666_a_2

具体规则是

<!--[if !supportLists]-->1。 <!--[endif]-->当前字符如果不是数字,则简单复制

<!--[if !supportLists]-->2。 <!--[endif]-->当前字符如果是数字,字面值为N,并且有后续字符,则将后续字符重复N-1次

<!--[if !supportLists]-->3。 <!--[endif]-->当前字符如果是数字,但是没有后续字符,则简单复制<!--[if !supportLists]-->4。 <!--[endif]-->这样,每次变换后的串为一组,组与组之间用_连接。

代码忘了,简单的C语言字符串处理,只不过对指针和串位的处理要注意。

当然,还要填写一个解码的函数语句。

题三:C++template最简单的例子。

填空题中几个有印象的。

1。语句x++,++x,x=x+1,x=1+x都是完成x的值增1的操作,请写一个具有相同功能的语句,不允许与已给出的重复 (我填的x+=1,浪潮这个也考,嘻嘻)

2。控制台程序的入口是 main() windows程序的入口是 WinMain()

3。C++类中的默认限定符是:private

4。C++struct中默认的限定符是:public

1:下列哪组 SQL 命令全部属于数据定义语句的命令?

A.CREATE , DROP , ALTER

B.CREATE , DROP , SELECT

C.CREATE , DROP , GRANT

D.CREATE , DROP , UPDATE

2:系统故障会造成

A.内存数据丢失 B.硬盘数据丢失

C.软盘数据丢失 D.磁带数据丢失

3:三个模式之间存在下列映射关系,将正确的填入括号中

A.外模式 / 内模式 B.外模式 / 模式

C.模式 / 模式 D.内模式 / 外模式

4:在视图上不能完成的操作是

A.更新视图 B.查询

C.在视图上定义新视图 D.在视图上定义新的基本表

5:数据库系统中产生数据不一致性的根本原因是

A.没有严格保护数据 B.未对数据进行完整性控制

C.数据冗余 D.数据存储量大

6:在某个数据库中建立了表person(no,name,sex,birthday),no为表的主码,表中已有的记录如下图所示:

No Name Sex Birthday

1 张丽丽 女 1967/05/07

4 李方 女 1970/04/14

6 王安 男 1982/10/27

以下四个语句中能够正确执行的插入操作是

A.INSERT INTO person VALUES(6,′王中′,′男′,′1964/03/08′)

B.INSERT INTO person(name,sex) VALUES(′王中′,′男′)

C.INSERT INTO person VALUES(2,′男′,′王中′,′1964/03/08′)

D.INSERT INTO person(no,sex) VALUES(2,′男′) 7:如果事务T获得了数据对象Q上的S锁,则其他事务在数据对象Q上

A.可加X锁 B.可加S锁

C.可加任何锁 D.不能加任何锁

8:下列短语中可以在 SQL 查询时去掉重复数据的是

A.ORDER BY

B.DESC

C.GROUP BY

D.DISTINCT 9:数据库的三级模式结构之间存在着两级映像,使得数据库系统具有较高的

A.事务并发性 B.数据可靠性

C.数据独立性 D.数据重用性

10:一个数据库一般不是由独立的对象组成的,对象的聚集形式的数学意义是

A.笛卡尔积 B.选择

C.投影 D.联接

11:表达式“AGE BETWEEN 18 AND 24”等价于

A.AGE>18 AND G<24 B.AGE>=18 AND G<24

C.AGE>18 AND G<=24 D.AGE>=18 AND AGE<=24

12:五种基本关系代数运算是

A.∪,-,×,π和σ B.∪,-,∞,π和σ

C.∪,∩,×,π和σ D.∪,∩,∞,π和σ ]

13:供应商可以给某个工程提供多种材料,同一种材料也可以由不同的供应商提供,从材料到供应商之间的联系类型是

A.多对多 B.一对一

C.多对一 D.一对多

14:事务日志是用于保存

A.程序运行过程 B.数据操作

C.程序的执行结果 D.对数据的更新操作

15:属性类型允许是基本数据类型、结构类型和集合类型的模型是

A.平面关系模型 B.嵌套关系模型

C.复合对象模型 D.分布式关系模型

简答题

16:事务T1、T2和T3的定义如下:

T1:x:=x+1

T2:x:=x*2

T3:x:= 3

假设x的初值为0,若允许这三个事务并发执行,试列出所有可能的调度和相应的x 值。 17:学生表:S(SNO,SNAME,SEX) 各属性含义依次为学号、姓名和性别;

课程表:C(CNO,CNAME,CREDIT) 各属性含义依次为课程号、课程名、学分;

学生选课表:SC(SNO,CNO,MARK) 各属性含义依次为学号、课程号和成绩。

基于以上关系模式回答1—4题。

1.试用SQL语句统计男生和女生的人数。

2.试用SQL语句写出下列查询:检索出所有男生的姓名、所选课程号和成绩。

3.试用SQL语句实现下列查询:检索出各门课程的学生平均成绩(要求列出课程名称和平均成绩)。

4.用关系代数表达式实现下列查询:检索出没有选修课程号为C3的所有学生姓名 18:已知三个关系模式:

订单表: ORDER (ONO,CNAME,ODATE)其属性的含义依次为订单号、客户名称和订货日期;

订单明细表: ITEM(ONO,PNO,PRICE,QTY)其属性的含义依次为订单号、产品编号、单价和订购数量;

产品表:PRODUCT(PNO ,PNAME,UNIT)其属性含义依次为产品编号、品名和单位。

根据上述三个关系模式用 SQL 语句完成以下问题。

1.创建一个视图,视图名为 ORD ,视图的属性有订单号、客户名称、品名、单价和订购数量。

2.查询订购产品编号为 P1 的客户名称和订单号。

3.将订单明细表中订购数量超过 100 的商品的单价降低10%。 19:名词解释:外键。 20:设有两个关系模式:

S(SNO,SNAME,SEX,AGE),其属性含义依次为学号、姓名、性别、年龄;

SC(SNO,CNAME,GRADE),其属性含义依次为学号、课程名、分数。

试根据下列 SQL 语句写出等价的关系代数表达式。

SELECT SNAME

FORM S

WHERE SNO IN

(SELECT SNO

FROM SC

WHERE GRADE BETWEEN 70 AND 80) 21:关系数据语言分为哪三类? 22:如果让你来实现数据库的等值连接,请你说出你的算法或者思路。 23:数据库中有三个关系(基本表):

S (学号,姓名,性别,年龄,系别)

C (课号,课名)

SC (学号,课号,成绩)

依据此信息用 SQL 语句完成下面问题。

1.查询每个学生的姓名和年龄,并按年龄降序排列。

2.查询 S 表中姓“王”的学生的情况。

3.查询选修了“数据库原理”的学生的姓名和成绩。

4.查询与“刘平”同一系的学生情况。 24:简述SQL语言的特点。 25:事务是什么?

1。设计函数int atoi(char *s)。

int atoi(char *s)

{

char sign; 

char sign_val = 1;

int val = 0;

int n = 0;

/* skip spaces */

while (isspace(*s))

s;

if (*s == '-' || *s == ' ')

/* skip '-' and ' ' sign */

{

sign = *s;

if (sign == '-')

sign_val = -1;

s;

}

/* when goes here, it is not space or sign */

while ((*s != '\0') && isdigit(*s))

{

val = 10 * n (*s - '0'); 

n = val;

s ;

}

if (*s != '\0')

{

printf( "non digit in your input!!\n"); 

exit(-1); 

} 

/* non error occured */ 

return (sign_val * val); 

} 

2。int i=(j=4,k=8,l=16,m=32); printf("%d", i); 输出是多少?

结果为: 32.(注释:主要考的是逗号运算)

3。解释局部变量、全局变量和静态变量的含义。

局部变量包括函数的形参,包含在函数体或者语句块内的变量,局部变量的生存期在退出函数或语句块后结束。

全局变量是指在所有函数和语句块之外的变量,它对于整个程序均可见,全局变量的生存期与程序的生存期相同.

静态变量指由要害字static声明的变量,它的作用域和其他变量一样,由它所在的位置决定,如在函数体或语句块中声明,则只在函数体或语句块可见,其他地方均不可见.它的生存期与程序相同.

4。解释堆和栈的区别。简述如下:

栈上分配的内存,由系统自动分配,系统会自动收回.假如需要动态分配内存,则只能通过malloc/new在堆上分配的内存,使用完毕后,通过free/delete来释放内存。

5。论述含参数的宏与函数的优缺点。

含参数的宏优点:省去了函数调用的开销,运行效率高.

含参数的缺点:

由于宏本质上是字符串的替换,所有可能会由于一些参数的副作用导致得出错误的结果.

如:

#define max(a, b) ( ((a) > (b)) ? (a) : (b) )

假如程序中出现这样的调用: max(a , b);

将导致a被计算2次,从而可能得到错误的结果,而函数调用不会出现这种问题.另外,假如程序中有多次宏替换的话,可能导致代码体积变大.函数的优点是:

没有带参数宏可能导致的副作用,计算的正确性较宏更有保证.

函数调用的缺点:

函数调用需要一些参数,返回地址等入栈,出栈的开销,效率没有宏函数高.

1、局部变量能否和全局变量重名?

答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: "

局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。

2、如何引用一个已经定义过的全局变量?

答:extern

可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。

3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?

答:可以,在不同的C文件中以static形式来声明同名全局变量。

可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错

4、语句for( ;1 ;)有什么问题?它是什么意思?

答:和while(1)相同。

5、do……while和while……do有什么区别?

答:前一个循环一遍再判断,后一个判断以后再循环

6、请写出下列代码的输出内容

#include

main()

{

int a,b,c,d;

a=10;

b=a++;

c=++a;

d=10*a++;

printf( "b,c,d:%d,%d,%d ",b,c,d);

return 0;

}

答:10,12,120

7、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?

全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。

从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。

static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件

static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;

static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;

static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

8、程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中。

9、设有以下说明和定义:

typedef union {long i; int k[5]; char c;} DATE;

struct data { int cat; DATE cow; double dog;} too;

DATE max;

则语句 printf( "%d ",sizeof(struct date)+sizeof(max));的执行结果是:___52____

答:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20

data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.

所以结果是 20 + 32 = 52.

当然...在某些16位编辑器下, int可能是2字节,那么结果是 int2 + DATE10 + double8 = 20

10、队列和栈有什么区别?

队列先进先出,栈后进先出

11、写出下列代码的输出内容

#include

int inc(int a)

{

return(++a);

}

int multi(int*a,int*b,int*c)

{

return(*c=*a**b);

}

typedef int(FUNC1)(int in);

typedef int(FUNC2) (int*,int*,int*);

void show(FUNC2 fun,int arg1, int*arg2)

{

INCp= &inc;

int temp =p(arg1);

fun( &temp,&arg1, arg2);

printf( "%d\n ",*arg2);

}

main()

{

int a;

show(multi,10, &a);

return 0;

}

答:110

11、请找出下面代码中的所以错误

说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”

1、#include "string.h "

2、main()

3、{

4、 char*src= "hello,world ";

5、 char* dest=NULL;

6、 int len=strlen(src);

7、 dest=(char*)malloc(len);

8、 char* d=dest;

9、 char* s=src[len];

10、 while(len--!=0)

11、 d++=s--;

12、 printf( "%s ",dest);

13、 return 0;

14、}

答:

方法1:

int main()

{

char* src = "hello,world ";

int len = strlen(src);

char* dest = (char*)malloc(len+1);//要为\0分配一个空间

char* d = dest;

char* s = &src[len-1];//指向最后一个字符

while( len-- != 0 )

*d++=*s--;

*d = 0;//尾部要加\0

printf( "%s\n ",dest);

free(dest);// 使用完,应当释放空间,以免造成内存汇泄露

return 0;

}

方法2:

#include

#include

main()

{

char str[]= "hello,world ";

int len=strlen(str);

char t;

for(int i=0; i   {

t=str[i];

str[i]=str[len-i-1]; str[len-i-1]=t;

}

printf( "%s ",str);

return 0;

}

12。对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?

答案:c用宏定义,c++用inline

13。软件测试都有那些种类?

答案:黑盒:针对系统功能的测试 白合:测试函数功能,各函数接口

14。确定模块的功能和模块的接口是在软件设计的那个队段完成的?

答案:概要设计阶段

15。enum string

{x1,

x2,

x3=10,

x4,

x5,

}x;

问x;

答案:取值在0。1。10。11。12中的一个

16。unsigned char *p1;

unsigned long *p2;

p1=(unsigned char *)0x801000;

p2=(unsigned long *)0x810000;

请问p1+5= ;

p2+5= ;

答案:801005; 810014。不要忘记了这个是16进制的数字,p2要加20变为16进制就是14

选择题:

1.Ethternet链接到Internet用到以下那个协议?

A.HDLC;B.ARP;C.UDP;D.TCP;E.ID

2.属于网络层协议的是:

A.TCP;B.IP;C.ICMP;D.X.25

3.Windows消息调度机制是:

A.指令队列;B.指令堆栈;C.消息队列;D.消息堆栈;

答案:b,a,c

二找错题:

1.请问下面程序有什么错误?

int a[60][250][1000],i,j,k;

for(k=0;k<=1000;k++)

for(j=0;j<250;j++)

for(i=0;i<60;i++)

a[i][j][k]=0;

答案:把循环语句内外换一下

2。以下是求一个数的平方的程序,请找出错误:

#define SQUARE(a) ((a)*(a))

int a=5;

int b;

b=SQUARE(a++);

答案:这个没有问题,s(a++),就是((a++)×(a++))唯一要注意的就是计算后a=7了

3。typedef unsigned char BYTE

int examply_fun(BYTE gt_len; BYTE *gt_code)

{

BYTE *gt_buf;

gt_buf=(BYTE *)MALLOC(Max_GT_Length);

......

if(gt_len>Max_GT_Length)

{

return GT_Length_ERROR;

}

.......

}

答案:要释放内存

问答题:

1.IP Phone的原理是什么?

答案:IPV6

2.TCP/IP通信建立的过程怎样,端口有什么作用?

答案:三次握手,确定是哪个应用程序使用该协议

1.实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数;

答//假设线性表的双向链表存储结构

typedef struct DulNode{

struct DulNode *prior; //前驱指针

ElemType data; //数据

struct DulNode *next; //后继指针

}DulNode,*DuLinkList;

//删除操作

Status ListDelete_DuL(DuLinkList &L,int i,ElemType &e)

{

if(!(p=GetElemP_DuL(L,i))) //此处得到i位置的节点指针,如果有需要也得写出具体函数实现

return ERROR;

e=p->data;

p->prior->next=p->next;

p->next->prior=p->pror;

free(p);

return OK;

}

//插入操作

Status ListInsert_DuL(DuLinkList &L,int i,ElemType &e)

{

if(!(p=GetElemP_DuL(L,i)))

return ERROR;

if(!(s=(DuLinkList)malloc(sizeof(DuLNode))))

return ERROR;

s->data=e;

s->prior=p->prior;

p->prior->next=s;

s->next=p;

p->prior=s;

return OK;

}

2.写一个函数,将其中的\t都转换成4个空格。

答该函数命名为convert,参数的意义为:

*strDest目的字符串,*strSrc源字符串,length源字符串的长度

函数实现为:

char* convert(char *strDest, const char *strSrc,int length)

{

char * cp = strDest;

int i=0;

while(*strSrc && i{

if (*strSrc=='\t') //将\t转换成4个空格

{

for(int j=0;j<4;j++)

*cp++=' ';

}

else //否则直接拷贝

*cp++=*strSrc;

strSrc++;

i++;

}

return strDest;

}

3.Windows程序的入口是哪里?写出Windows消息机制的流程。

答: Windows程序的入口是WinMain函数

消息机制:系统将会维护一个或多个消息队列,所有产生的消息都会被放入或是插入队列中。系统会在队列中取出每一条消息,根据消息的接收句柄而将该消息发送给拥有该窗口的程序的消息循环。每一个运行的程序都有自己的消息循环,在循环中得到属于自己的消息并根据接收窗口的句柄调用相应的窗口过程。而在没有消息时消息循环就将控制权交给系统。

4.如何定义和实现一个类的成员函数为回调函数?

答:所谓的回调函数,就是预先在系统的对函数进行注册,让系统知道这个函数的存在,以后,当某个事件发生时,再调用这个函数对事件进行响应。

定义一个类的成员函数时在该函数前加CALLBACK即将其定义为回调函数,函数的实现和普通成员函数没有区别

5.C++里面是不是所有的动作都是main()引起的?如果不是,请举例。

答:不是,比如中断引起的中断处理不是直接由main()引起的,而是由外部事件引起的。

6.C++里面如何声明const void f(void)函数为C程序中的库函数?

答:在该函数前添加extern “C”声明

7.下列哪两个是等同的

int b;

A const int* a = &b;

B const* int a = &b;

C const int* const a = &b;

D int const* const a = &b;

答:

各式表示的意思分别为:

A const int* a = &b; //*a是const,但指针a可变

B const* int a = &b; //a是const,但*a可变

C const int* const a = &b; //a和*a都是const,常量和指针的值都不能改变

D int const* const a = &b; //a和*a都是const,常量和指针的值都不能改变

因此C,D两者是相同的。

总结个技巧:如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。

8. 内联函数在编译时是否做参数类型检查?

答:做类型检查,因为内联函数就是在程序编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体来代替

《浪潮集团求职宝典》

《浪潮集团求职宝典Word下载》

《浪潮集团求职宝典PDF下载》

Copyright©2006-2023应届毕业生网yjbys.com版权所有