设为首页 加入收藏

TOP

C++开发工程师面试题库 150~200道(一)
2014-11-21 18:20:03 来源: 作者: 【 】 浏览:29
Tags:开发 工程师 试题库 150 200

151.简述需求分析的过程和意义



152.网状、层次数据模型与关系数据模型的最大的区别是什末



153.软件质量保证体系是什末 国家标准中与质量保证管理相关的几个标准是什末 编号和全称是什末号和全称是什末



153文件格式系统有哪几种类型?分别说说win95、win98、winMe、w2k、winNT、winXP分别支持那些文件系统



154.我现在有个程序,发现在WIN98上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?
155.有关P2P点对点文件传输的原理



156.一台计算机的IP是192.168.10.71子网掩码255.255.255.64与192.168.10.201是同一局域网吗
157.internet中e-mail协仪,IE的协仪,NAT是什么,有什么好处,能带来什么问题 DNS是什么,它是如何工作的
158.PROXY是如何工作的
169.win2k系统内AT命令完成什么功能,Messenger服务是做什么,怎么使用
170进程,线程的定义及区别
171,32位操作系统内,1进程地址空间多大,进程空间与物理内存有什么关系
172.网络攻击常用的手段,防火墙如何保证安全.
173.如何配静态IP,如何测网络内2台计算机通不通,PING一次返几个数据包
174.WIN9X与WINNT以上操作系统有”服务”吗,服务是什么,如何停止服务
175.AD在WIN2KSERVER上建需什么文件格式,AD是什么 XP多用户下”注销”与”切换”的区别.


176.UDP可以跨网段发送吗


177.最简单的确认远程计算机(win2K以上)某个监听端口是正常建立的


178. 找错



void test1()


{


char string[10];


char* str1=”0123456789″;


strcpy(string, str1);


}



答:表面上并且编译都不会错误。但如果string数组原意表示的是字符串的话,那这个赋值就没有达到意图。最好定义为char string[11],这样最后一个元素可以存储字符串结尾符’\0′;




void test2()


{


char string[10], str1[10];


for(int I=0; I<10;I++)


{


str1[I] =’a';


}


strcpy(string, str1);


}



答:strcpy使用错误,strcpy只有遇到字符串末尾的’\0′才会结束,而str1并没有结尾标志,导致strcpy函数越界访问,不妨让str1[9]=’\0′,这样就正常了。




void test3(char* str1)


{


char string[10];


if(strlen(str1)<=10)


{


strcpy(string, str1);


}


}



答:这又会出现第一道改错题的错误了。strlen(str1)算出来的值是不包含结尾符’\0′的,如果str1刚好为10个字符+1结尾符,string就得不到结尾符了。可将strlen(str1)<=10改为strlen(str1)<10。



179. 找错



#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;


}



答:我不知道这段代码的具体功能,但明显有两个错误


1,SRM_no没有赋初值


2,由于static的声明,使该函数成为不可重入(即不可预测结果)函数,因为SRM_no变量放在程序的全局存储区中,每次调用的时候还可以保持原来的赋值。这里应该去掉static声明。



180. 写出程序运行结果



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));


}


}



答:8,10,12,14,16


该题比较简单。只要注意b声明为static静态全局变量,其值在下次调用时是可以保持住原来的赋值的就可以。





181.



int func(int a)


{


int b;


switch(a)


{


case 1: b=30;


case 2: b=20;


case 3: b=16;


default: b=0;


}


return b;


}



则func(1)=


答:func(1)=0,因为没有break语句,switch中会一直计算到b=0。这是提醒我们不要忘了break。呵呵。



182:



int a[3];


a[0]=0; a[1]=1; a[2]=2;


int *p, *q;


p=a;


q=&a[2];



则a[q-p]=


答:a[q-p]=a[2]=2;这题是要告诉我们指针的运算特点



183.


定义 int **a[3][4], 则变量占有的内存空间为:_____


答:此处定义的是指向指针的指针数组,对于32位系统,指针占内存空间4字节,因此总空间为3×4×4=48。



184.


编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。


答:



/*输入年月日时分秒,输出年月日时分秒的下一秒,输出仍然在原内存空间*/


bool NextMinute(int *nYear,int *nMonth,int *nDate,int *nHour,int *nMinute,int *nSecond)


{


if(*nYear<0 || *nMonth>12 || *nMonth<0 || *nHour>23 || *nHour<0 || *nMinute<0 || *nMinute>59 || *nSecond<0 || *nSecond>59) return false;


int nDays;


switch(*nMonth)


{


case 1:


case 3:


case 5:


case 7:


case 8:


case 10:


case 12:


nDays=31;


break;


case 2:// 判断闰年


if(*nYear%400==0||*nYear%100!=0&&*nYear%4==0)


{


nDays=29;


}


else


{


nDays=28;


}


break;


default:


nDays=30;


break;


}


if(*nDate<0 || *nDate>nDays) return false;



(*nSecond)++; // 秒加1


if(*nSecond>=60) // 秒满60,做出特殊处理,下面时,日,月等类同


{


*nSecond=0;


(*nMinute)++;


if(*nMinute>=60)


{


*nMinute=0;


(*nHour)++;


if(*nHour>=24)


{


*nHour=0;


(*nDate)++;


if(*nDate>nDays)


{


*nDate=1;


(*nMonth)++;


if(*nMonth>12)


{


*nMonth=1;


(*nYear)++;


}


}


}


}


}


return true;


}


/*示例可运行代码*/


void main()


{


int nYear=2004,nMonth=12,nDate=31,nHour=23,nMinute=59,nSecond=59;


bool res = NextMinute(&nYear,&nMonth,&nDate,&nHour,&nMinute,&nSecond);


if(res)


printf(“The result:%d-%d-%d %d:%d:%d”,nYear,nMonth,nD

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇逻辑思维题目 下一篇在weblogic中发布ejb需涉及到哪些..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: