计算机专业面试题目

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机专业面试题集

计算机随笔2008-05-05 19:28:18 阅读2083 评论0 字号:大中小订阅

一些面试准备题(包括高质量c++题)

const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。

事实上这个概念谁都有只是三种声明方式非常相似很容易记混。

Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:

把一个声明从右向左读。

char * const cp; ( * 读成pointer to )

const cp指向字符串;即指向字符串的常指针;

const char * p;

p指向字符串常量,即指向字符串常量的指针;

char const * p;

这个和上面的事一样的,表达的意思也是指向字符串常量的指针

同上因为C++里面没有const*的运算符,所以const只能属于前面的类型。

---------------------------------

下面这个程序执行后会有什么错误或者效果:

#define MAX 255

int main()

{

unsigned char A[MAX],i;

for (i=0;i<=MAX;i++)

A[i]=i;

}

解答:

MAX=255

数组A的下标范围为:0..MAX-1,这是其一..

其二.当i循环到255时,循环内执行:

A[255]=255;

这句本身没有问题..但是返回for (i=0;i<=MAX;i++)语句时,

由于unsigned char的取值范围在(0..255),i++以后i又为0了..无限循环下去. 注:char类型为一个字节,取值范围是[-128,127],unsigned char [0 ,255]

---------------------------------

编写用C语言实现的求n阶阶乘问题的递归算法:*******仅仅只要是一个算法就ok,不用管那么多,能用就行。

long int fact(int n)

{

int x;

long int y;

if(n<0)

{

printf("error!");

}

if(n==0)

return 1;

x=n-1;

y=fact(x); //这是一个递归调用过程,

return (n*y);

}

Long int fact(int n)

{

If(n<0)

{

Printf(“error”);

}

If(n==0)

Return 1;

Else

Return n*fact(n-1);

}

--------------------------------二分查找算法://已经在排好序的情况下进行查找

1、递归方法实现:

int BSearch(elemtype a[],elemtype x,int low,int high)

/*在下届为low,上界为high的数组a中折半查找数据元素x*/

{

int mid;

if(low>high) return -1;//error

mid=(low+high)/2;

if(x==a[mid]) return mid;

if(x

else return(BSearch(a,x,mid+1,high));

}

Int base(elemtype a[],elemtype x,int low,int high)

{

Int mid;

If(low>high)

Return -1;

Mid=(low+high)/2;

If(x==a[mid])

Return mid;

If(x

Elae return base(a,x,mid+1,high);

}

2、非递归方法实现:

int BSearch(elemtype a[],keytype key,int n)

{

int low,high,mid;

low=0;high=n-1;

while(low<=high)

{

mid=(low+high)/2;

if(a[mid].key==key) return mid;

else if(a[mid].key

else high=mid-1;

}

return -1;

}

--------------------------------

非递归计算如下递归函数的值(斐波拉契):

f(1)=1

f(2)=1

f(n)=f(n-1)+f(n-2) n>2

解:

int f(int n)

{

int i,s,s1,s2;

s1=1;/*s1用于保存f(n-1)的值*/

s2=1;/*s2用于保存f(n-2)的值*/

s=1;

for(i=3;i<=n;i++)

{

s=s1+s2;

s2=s1;

s1=s;

}

return(s);

}

------------------------------

交换两个数,不用第三块儿内存:

int a = ……;

int b = ……;

a = a + b;

b = a - b;

a = a - b;

-------------------------------

Q1:请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图?

1、OSI每层功能及特点

a 物理层为数据链路层提供物理连接,在其上串行传送比特流,即所传送数据的单位是比特。此外,该层中还具有确定连接设备的电气特性和物理特性等功能。

相关文档
最新文档