分类: LINUX
2008-08-27 17:06:56
(二) 数据库面试题
1. 存储过程和函数的区别?
答:存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。
2. 事务是什么?
答:事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:
原子性:事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。
一致性:事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。
隔离性:由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。
持久性:事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。
3. 游标的作用?如何知道游标已经到了最后?
答:游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后。
4. 触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。
答:事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段值。
语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。
(三) C语言面试题
以下试题,全部要求使用C或C++语言完成。
1. 找错
Void test1()
{
char string[10];
char* str1="0123456789";
strcpy (string, str1);
}
Void test2()
{
char string[10], str1[10];
for(I=0; I<10;I )
{
str1[i] ='a';
}
strcpy (string, str1);
}
Void test3 (char* str1)
{
char string[10];
if(strlen (str1)<=10)
{
strcpy (string, str1);
}
}
2. 找错
#define MAX_SRM 256
DSN get_SRM_no()
{
static int SRM_no;
int I;
for(I=0;I{
SRM_no %= MAX_SRM;
if(MY_SRM.state==IDLE)
{
break;
}
}
if(I>=MAX_SRM)
return (NULL_SRM);
else
return SRM_no;
}
3. 写出程序运行结果
int sum(int a)
{
auto int c=0;
static int b=3;
c =1;
b =2;
return(a b C);
}
void main()
{
int I;
int a=2;
for(I=0;I<5;I )
{
printf ("%d,", sum(a));
}
}
4.
int func (int a)
{
int b;
switch (a)
{
case 1: 30;
case 2: 20;
case 3: 16;
default: 0
}
return b;
}
则func (1)=?
5.
int a[3];
a[0]=0; a[1]=1; a[2]=2;
int *p, *q;
p=a;
q=&a[2];
则a[q-p]=?
6. 定义 int **a[3][4], 则变量占有的内存空间为:_____
7. 论述含参数的宏与函数的优缺点。
8. 编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。
9. 设计一个自然数数组,包含50个范围在(0,200)的自然数,并从小到大排列,随机产生一个范围在(0,200)自然数,去数组中用二分查找法查找,如果存在返回值并获取这个数在数组中的位置(第几个);如果不存在,返回假。
要求:
1) 编写初始化数组。并提供接口显示数组序号和内容;
2) 对数组排序,并提供接口显示数据需要和内容;
3) 随机产生自然数;
4) 用二分法查找随机数。
10. 设计一个 VC++程序,当主窗口显示时,从窗口客户区的左上角向右上角缓慢下落一个小三角形,在下落过程中,小三角形做逆时针缓慢旋转,到达右下角时,正好以一条底边和客户区边框重合并停止。在改变窗口大小时,停止三角形的下落,重新从左上角开始下落。要求:在整个屏幕上只能有一个三角形在移动。
11. 设计一个窗口A,在此窗口内按快捷键F1,弹出另外的窗口B,在B弹出后,两个窗口要左右并排显示,并撑满整个屏幕;用鼠标拖动两个窗口相邻的边,两个窗口的大小同
时改变,且相对位置不变。再按F1,窗口B隐藏,窗口A最大化,如此重复。
12. 设计一个VC++程序,将当前局域网上每台机器(相同的子网掩码)的共享文件夹列表显示出来。假定操作者有必要的权限。要求:
1) 用树型控件控制每台电脑;
2) 点击共享文件夹,显示文件夹的权属性,例如:只读,完全控制等。