软件工程师求职试题集合
笔试网(www.ipmao.com)
简答题:
(1)已知矩阵c是一个给定的图的邻接矩阵,如果从i到j有一条边,侧c【i,j】=1,否则c【i,j】=0,写一算法求一矩阵a,使得a【i,j】=1,如果从i到j有一条或多条路径,否则为0,a也被称为c的传递包。
(2)给出联机同时外围设备操作(spooling)的优缺点。
(3)非c++内建型别 a 和 b,在哪几种情况下b能隐式转化为a?
(4)由链表组成的三叉堆各元素有四个域:lchild,mchild,rchild和descnum,分别表示:左子树指针,中间树指针、右子树指针和有多少个子元素。初始时,各元素的descnum值为0,请写一算法求得各元素的descnum值,并将其填入到dsecnum域里。
(5)求出 10 到 100 之间的素数(只能被 1 和自身整除的数)并以每行一个素数的格式顺序写入文件 su.dat 。
(6)执行下述程序的输出结果是__________________。 #include
char b[]=\main() {
char *bp;
for (bp=b;*bp;bp+=2) printf(\printf(\}
(7)说出结果 #include main() {
file *fp;
int i,a[4]={1,2,3,4},b;
fp=fopen(\\\for(i=0;i<4;i++)
fwrite(&a[i],sizeof(int),1,fp);
fclose(fp);
fp=fopen(\\\
fseek(fp,-2l*sizeof(int),seek_end); fread(&b,sizeof(int),1,fp); fclose(fp);
printf(\\\}
(8)1.进程与线程的区别?为什么要引入线程?
(9)利用信号量和p、v操作,如何实现进程间的互斥和同步?
(10)现有a、b两道程序,它们各自需要执行1小时,其中各使用处理器18分钟。今在一个多道程序设计系统中让a,b两道程序并发执行,总共花了72分钟使两道程序都执行结束。问两道并发工作时的处理器利用率比单道执行时提高了多少?
(11)对于一个有向图,除了进行拓扑排序,还可以采用什么方法判断图中是否存在回路?请简述判断原则。
(12)已知一组键值序列(22,24,26,25,27,29,21,28),试给出采用直接插入排序法对该组序列作升序排序的每一趟结果。
(13)rewrite readlines to store lines in an array supplied by main , rather than calling alloc to maintain storage. how much faster is the program?
(14)什么是死锁?死锁的必要条件是什么?
(15)某公司数据库中有关系模式如下: 职工(职工号,职工名,性别,年龄) 工作(职工号,公司号,工资) 公司(公司号,公司名,地址)
试用 sql 语句定义一个断言(断言名为 asse5 ),规定“开元”公司职工的工资不能低于 2000 元。
(16)阅读下列程序,回答问题。
#include
int fun(int n);
void main()
{
printf( ″ the fun of 3 is %d \\ n ″ , fun(3));
printf( ″ the fun of 4 is %d \\ n ″ , fun(4));
}
int fun(int n)
{
int result=1;
while (n > 1)
result *=n--;
return result;
}
程序的运行结果是什么 ?
(17)写出影响算法执行的时间效率的主要因素,并指出哪些因素与算法的时间效率直接相关。
(18)在ia32中一共有多少种办法从用户态跳到内核态?
(19)什么叫winsock?如何用winsock实现网络通信?
(20)设下列函数已经通过了调试
bool sort_array(arraytype * pinputarray, arraytype * poutarray);该函数在内存中排序,能把字节数最大为100m字节的arraytype类型的数组排序。其中arraytype是一个预定义的数组类型(细节无关紧要),pinputarray,poutarray分别为排序前的指针和排序后的指针。 请用c语言的伪码风格设计一个算法,他调用上面给出的函数完成下列从输入到输出的任务:
输入:排序前的大文件,名称为char * pinoutfilename ,其内容为用分号分隔的arraytype类型的数组元素,可装满4个100m字节的数组。 输出:排序后的大文件char * poutoutfilename。
(21)根据蒙特卡洛算法计算圆周率
double pi( dowrd dwcount/*测试次数*/ ); 返回值:pi