转载自某HR的MSNSpace
[url]http://tengguokai.spaces.live.com/?_c11_BlogPart_p=1&_c=BlogPart[/url]
前言:前几天和人力资源部的去合肥招人,出了笔试题目,笔试、面试和最终签协议全程把关,录取了几个,结果还算满意。
下面是第一天在中国科技大学的笔试题目:
一、选择题(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范式居然没有人答对,这让我有些意外,而且就连“事务”也没几个人知道,更让我意外。答案自己去翻,教条式的内容。
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个人。