面试软件必备编程题

Question 2. (单选)
下面关于图的存储的叙述中正确的是

 1. 用相邻矩阵法存储图,占用的存储空间大小只与图中结点个数有关,而与边数无关
2. 用相邻矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关
3. 用邻接表法存储图,占用的存储空间大小只与图中结点个数有关,而与边数无关
4. 用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关
 
Question 3. (单选)
对线性表进行二分法查找,其前提条件是

 1. 线性表以顺序方式存储,并且按关键码值排好序
2. 线性表以顺序方式存储,并且按关键码值的检索频率排好序
3. 线性表以链接方式存储,并且按关键码值排好序
4. 线性表以链接方式存储,并且按关键码值的检索频率排好序
 
Question 4. (单选)
下列哪一个关键码序列不符合堆的定义?

 1. A、C、D、G、H、M、P、Q、R、X
2. A、C、M、D、H、P、X 、G、0、R
3. A、D、P、R、C、Q、X 、M、H、G
4. A、D、C、M、P、G、H、X 、R、Q
 
Question 5. (单选)
对n个记录的文件进行快速排序,所需要的辅助存储空间为

 1. O(1)
2. O(log2n)
3. O(n)
4. O(n2)
 
Question 6. (单选)
通过破坏产生死锁的四个必要条件之一,可以保证不让死锁发生,其中采用资源有序分配法,是破坏

 1. 互斥条件
2. 不可剥夺条件
3. 部分分配条件
4. 循环等待条件
 
Question 7. (单选)
在下列操作系统的各个功能组成部分中,哪一个不需要有硬件的支持?

 1. 进程调度
2. 时钟管理
3. 地址映射
4. 中断系统
 
Question 8. (单选)
下列各种操作的时间中,哪一个不属于活动头硬盘的存取访问时间?

 1. 寻道时间0
2. 旋转延迟时间
3. 定位时间
4. 传送时间
 
Question 9. (单选)
对于下列文件的物理结构,哪一个只能采用顺序存取方式?

 1. 顺序文件
2. 链接文件
3. 索引文件
4. Hash文件
 
Question 10. (单选)
在UNIX系统中,下列哪一个命令属于目录管理的常用命令?

 1. pwd
2. pr
3. ln
4. find
 
 
Question 12. (单选)
对线性表,在下列哪种情况下应当采用链表表示?

 1. 经常需要随机地存取元素
2. 经常需要进行插入和删除操作
3. 表中元素需要占据一片连续的存储空间
4. 表中元素的个数不变
 
 
Question 14. (单选)
对上题中描述的排序方法,下列选项中正确的是:

 1. 排序过程中,比较的次数与元素的初始排列顺序无关
2. 排序过程中,比较的次数与元素的初始排列顺序有关
3. 确定数组中最大元素需要比较n(n-1)/2次
4. 确定数组中最小元素需要比较n-1次
 
Question 15. (单选)
对一个排好序的线性表,用二分法检索表中的元素,被检索的表应当采用哪种存储表示?

 1. 顺序存储
2. 链接存储
3. 散列法存储
4. 存储表示不受限制
 
 
Question 19. (单选)
下列对MD5的叙述不正确的是:

 1. 是一种散列算法
2. 指纹(摘要)的长度为128位
3. 是一种对称加密算法
4. 可用来校验数据的完整性
 
Question 20. (多选)
在SOCKET通信过程中,下列哪些函数是服务端需要调用,但是客户端不需要调用的函数?

 1. bind()
2. accept()
3. select()
4. listen()
 
Question 21. (多选)
UNIX程序运行时会自动打开的文件描述符包括:

 1. 标准输入
2. 标准输出
3. 标准错误
4. 系统日志
 
Question 22. (单选)
与逆波兰表达式ab+cd+*对应的中缀表达式是:

 1. a+b+c*d
2. (a+b)*c+d
3. (a+b)*(c+d)
4. a+b*c+d
 
Question 23. (多选)
正则表达式 ab?c 匹配的字符串是:

 1. abcd
2. acd
3. abdc
4. abbc
 
Question 24. (单选)
HTTP 1.1协议中规定表示正常响应的状态代码是

 1. 0
2. 100
3. 200
4. 400
 
Question 25. (单选)
在SOCKET通信过程中,下列哪些函数是客户端需要调用,但是服务端不需要调用的函数?

 1. socket()
2. bind()
3. connect()
4. send()
 
Question 26. (多选)
选项中,哪些属于软件开发模型

 1. CMMI
2. UML
3. RUP
4. XP
 
Question 27. (单选)
PSP是?

 1. 团队软件过程
2. 个体软件过程
3. 过程改进过程
4. 质量管理过程
 
Question 28. (单选)
以下选项中不是项目经理的职责的是?

 1. 需求分析
2. 计划
3. 计划跟踪
4. 质量管理
 
Question 29. (单选)
单元测试一般在什么时候进行?

 1. 编码完成后
2. 系统测试前
3. 测试用例编写完成后
4. 集成测试后
 
Question 30. (多选)
以下哪些过程能够提高软件质量?

 1. 可行性分析
2. 需求评审
3. 测试
4. 代码走查
 
Question 31. (单选)
给出以下定义, 则正确的叙述为
char x[ ]="abcdefg";
char y[ ]={'a','b','c','d','e','f','g'};

 1. 数组X和数组Y等价
2. 数组x和数组Y的长度相同
3. 数组X的长度大于数组Y的长度
4. 数组X的长度小于数组Y的长度
 
Question 32. (单选)
设有以下函数:
int f(int a)
{
int b=0;
static int c = 3;
b++; c++;
return(a+b+c);
}
int main()
{
int a = 2, i;
for(i=0;i<3;i++) printf("%d",f(a));
}
则输出结果是

 1. 789
2. 7911
3. 71013
4. 777
 
Question 33. (单选)
假定int类型变量占用两个字节,定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是

 1. 3
2. 6
3. 10
4. 20
 
Question 34. (单选)
以下程序的输出结果是
int i, a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);

 1. 258
2. 741
3. 852
4. 369
 
Question 35. (单选)
设有char st[20]= "hello /"; 则strlen(st)和sizeof(st))分别为:

 1. 9, 9
2. 5, 20
3. 13, 20
4. 20, 20
 
Question 36. (单选)
以下程序的输出结果是
struct TAG {
int x, y;
struct TAG *p;
} h[2];

h[0].x=1;
h[0].y=2;
h[1].x=3;
h[1].y=4;
h[0].p=h[1].p=h;
printf("%d%d
",(h[0].p)->x,(h[1].p)->y);

 1. 12
2. 23
3. 14
4. 32
 
Question 37. (单选)
以下程序的输出结果是
int a, b;
for(a=1, b=1; a<=100; a++) {
if(b>=10) break;
if (b%3==1){ b+=3; continue;}
}
printf("%d
",a);

 1. 4
2. 5
3. 6
4. 101
 
Question 38. (单选)
以下程序的输出结果是
union{
struct{int x, y, z;} u;
int k;
} a;

a.u.x=4;
a.u.y=5;
a.u.z=6;
a.k=0;
printf("%d", a.u.x);

 1. 4
2. 5
3. 6
4. 0
 
Question 39. (单选)
以下程序的输出结果是
int a, b;
void fun(){ a=1; b=2; }
int main()
{ int a=5, b=7;
fun();
printf("%d%d
", a,b);
}

 1. 12
2. 57
3. 21
4. 75
 
Question 40. (单选)
以下程序的输出结果是
#define M(x,y,z) x*y+z
int main()
{
int a=1, b=2, c=3;
printf("%d
", M(a+b,b+c, c+a));
}

 1. 19
2. 17
3. 15
4. 12
 
Question 41. (单选)
有下面的程序片段:
unsigned int a=2;int b = -3;

if(a+B<0) printf("##");
else printf("&&");
上面程序片段的输出结果是

 1. ##
2. &&
3. ##&&
4. 有语法错误,无输出结果
 
Question 42. (单选)
下面程序的输出结果是
int fun(int a, int b){return a+b;}
}
int main()
{ int x=3,y=4,z=5;
printf("%d",fun((--x,y++),z--));
}
上面程序的输出结果是

 1. 12
2. 11
3. 10
4. 9

答案是9, 为什么呢?
此处牵扯到表达式问题:
(1) 是豆号表达式 (--x,y++),书中说豆号的意思是
从左到右运算,先--x,之后 y++, 同时表达式有个值,
该值最右边的表达式的结果,是 y++, y++的值就是y;
(2)函数调用问题.在调用的时候,调用者首先计算要
传送的参数值,也就是说main首先得到(--x,y++) 和
z--两个表达式的结果,值分别是y和z, 所以调用相当于
t1=(--x,y++);
t2=z--;
fun(t1,t2).
 
Question 43. (单选)
请读程序:
#define SUB(X,Y) (X) * Y
main()
{int a=3,b=4;
printf("%d
",SUB(a++,b++));
}
上面程序的输出结果是

 1. 12
2. 15
3. 16
4. 20
 
Question 44. (单选)
请读程序:
int main()
{ int x=1,y=0,a=0,b=0;
switch(x)
{ case 1:
switch(y)
{ case 0: a++;break;
case 1: b++;break;
}
case 2:
a++;b++;break;
}
printf("a=%d,b=%d
",a,b);
}
上面程序输出结果是

 1. a=2,b=1
2. a=1,b=1
3. a=1,b=0
4. a=2,b=2
 
Question 45. (单选)
若有下面的程序片段:
int a[12]={0}, *p[3], **pp,i;
for(i=0;i<3;i++)
p[i]=&a[i*4];
pp=p;
则对数组元素的错误引用是

 1. pp[0][1]
2. a[10]
3. p[3][1]
4. *(*(p+2)+2)
 
Question 46. (单选)
请读程序:
void fun(float *pl,float *p2,float *s)
{ s=(float *)calloc(1,sizeof( float));
*s= *pl + *(p2++);
}
main()
{ float a[2]={1.1,2.2},b[2]={10.0,20.0}, *s=a;
fun(a,b,s);
printf("%.1f
", *s);
}

 1. 11.1
2. 12.1
3. 21.1
4. 1.1
 
Question 47. (单选)
(41)下面程序输出数组中的最大值,由s指针指向该元素.
int main()
{int a[10]={6,7,2,9,1,10,5,8,4,3},*p,*s;
for(p=a, s=a; p-a<10; p++)
if(?)s=p;
printf("The max:%d",*s):
}
则在if语句中的判断表达式应该是

 1. p>s
2. *p>*s
3. a[p]>a[s]
4. p-a>p-s
 
Question 48. (单选)
假定a和b为int型变量,则执行以下语句后b的值为
a=1; b=10;
do { b-=a; a++; } while (b--<0);

 1. 9
2. -2
3. -1
4. 8
 
Question 49. (单选)
设有以下宏定义:
#define N 3
#define Y(n) ( (N+1)*n)
则执行语句:z=2 * (N+Y(5+1));后,z的值为

 1. 出错
2. 42
3. 48
4. 54
 
Question 50. (单选)
执行以下程序段后,m的值为
int a[2][3]={ {1,2,3},{4,5,6} };
int m,*p;
p=&a[0][0];
m=(*p)*(*(p+2))*(*(p+4));

 1. 15
2. 14
3. 13
4. 12
 
Question 51. (问答)
给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a的bit 3。在以上两个操作中,要保持其它位不变。

 
 
Question 52. (问答)
有双向循环链表结点定义为:
struct node
{ int data;
struct node *front,*next;
};
有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除

 
 
Question 53. (问答)
编程实现:找出两个字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串为"cad"

 
 
Question 54. (问答)
说明关键字static和volatile的含义

 
 
Question 55. (问答)
编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列库函数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值