挑战一下!百度面试题!
一、选择题:15 分 共 10 题
1. 任何一个基于“比较”的内部排序的算法,若对 6 个元素进行排序,则在最坏情况下所需的比较次数至少为____。
A. 10 B. 11 C. 21 D. 36
2. 关系模型有三类完整性约束,定义外键实现的是:
A. 实体完整性 B. 参照完整性 C. 用户定义的完整性 D. 实体完整性、参照完整性和用户定义的完整性
3. 64 位 Linux 系统和机器,int 类型、long 类型分别占用多大的空间(字节数):
A. 4, 4 B. 4, 8 C. 8, 4 D. 8, 8
4. 下面说法正确的是:
A. 根据gprof统计的程序运行时函数调用次数及执行时间,进行程序代码优化,这是 amdahl 定律的应用
B. 计算机网络设备的缓冲区是时间和空间局部性原理的应用
C. 局域网内的计算机发送数据包的数学模型遵循泊松分布
D. 分支预测使用先前运行时得到的配置文件,这是依据正态分布
5. 下列叙述正确的是:
A . #define fun(x,y) (x/y)
Int I = fun(2+4, 3);
I 的值为 2
B. var++ 与 ++var 没有区别
C. C++ 程序,抛出异常时,一定会发生异常对象的拷贝过程
D. quick sort 是一种稳定排序。
6. 上下文无关文法是一种____。
A. 左线性文法 B. 右线性文法 C. 正则文法 D. 以上都不上
7. 关系表达式 !(A&&(B||C)) 和下面哪个表达式表达的意思一致:
A. (!(A&&B))||(!(A&&C)) B. (!(A&&B))&&((!A)||(!B)) C. (!(A||B))&&(!(A&&B)) D. (!A)||((!B)||(!C))
8. 设 int x=4; 则执行以下语句 x+=x-=x-x--; 后,x 的值为:
A. -1 B. 5 C. 7 D. 11
9. 以下 IO 函数中,哪个是流式 IO 函数:
A. read B. fread C. mmap D. recv
10. 已知:
struct st
{
int n;
struct st *next;
};
static struct st a[3]={1, &a[1], 2, &a[2], 3, &a[0] }, *p;
如果下述语句的显示是 2,则对 p 的赋值是____。
printf( "%d", ++(p->next->n) );
A. p=&a[0]; B. p=&a[1]; C. p=&a[2]; D. p=*a;
二、简答题:20 分,共 2 题
1. (10 分)已知某种线上服务存在 3 种异常 D1, D2, D3,根据每天在固定时间段长期人工监控的统计结果,3 种异常的发生率是:D1 0.28%, D2 0.12%, D3 0.32%。现开发一种监控程序,分别对这三种异常做监控,如果发现某种异常就发出相应报警。记无异常为 D4,无报警为 A4。在各种异常情况下发出报警的溉率如下表:
D1 D2 D3 D4
A1 0.90 0.06 0.02 0.02
A2 0.05 0.80 0.06 0.01
A3 0.03 0.05 0.82 0.02
A4 0.02 0.09 0.10 0.95
请评价该监控程序的敏感性和正确性。
2. (10 分)以下是一个常驻内存的 C 程序,请问程序中有什么问题?
int f( int number )
{
FILE * fp;
char file_name[20];
int sum=0;
for( int i = 0; i < number; i++ )
{
if( 0 == i % 30 )
{
sprintf( file_name, "file_%d.txt", i / 20 );
fp = fopen( file_name, "r" );
if( fp == NULL ) return -1;
}
sum += i;
}
fclose( fp );
return sum;
}
三、编程题:30 分 共 1 题
注意:要求提供完整代码,如果可以编译运行酌情加分。
1. 一条 1 百万节点的单向链表,链表所有节点是按 value 字段从小到大的顺序链接;下面是一个节点的结构
typedef struct node_t{
int value; /* 节点排序字段 */
int group; /* 组号: 0,1,2,3,4,5,6,7,8,9 */