面试编程题及答案Word格式.docx
- 文档编号:20616802
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:23
- 大小:28.84KB
面试编程题及答案Word格式.docx
《面试编程题及答案Word格式.docx》由会员分享,可在线阅读,更多相关《面试编程题及答案Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。
3)
static函数与普通函数作用域不同,仅在本文件。
只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。
对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件
综上所述:
static全局变量与普通的全局变量有什么区别:
static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:
static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:
static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
6、程序的局部变量存在于(堆栈)中,全局变量存在于(静态区)中,动态申请数据存在于(堆)中。
7、设有以下说明和定义:
typedefunion
longi;
intk[5];
charc;
}date;
structdata
intcat;
datecow;
doubledog;
}too;
datemax;
则语句printf(%d,sizeof(structdata)+sizeof(max));
的执行结果是:
___52____
考点:
区别struct与union.(一般假定在32位机器上)
date是一个union,变量公用空间.里面最大的变量类型是int[5],占用20个字节.所以它的大小是20.data是一个struct,
每个变量分开占用空间.依次为int4+date20+double8=32.所以结果是20+32=52.
当然...在某些16位编辑器下,int可能是2字节,那么结果是int2+date10+double8=20
8、队列和栈有什么区别?
队列先进先出,栈后进先出
9、写出下列代码的输出内容
intinc(inta)
{return(++a);
intmulti(int*a,int*b,int*c)
{return(*c=*a**b);
typedefint(func1)(intin);
typedefint(func2)(int*,int*,int*);
voidshow(func2fun,intarg1,int*arg2)
func1p=inc;
inttemp=p(arg1);
fun(temp,arg1,arg2);
printf(%dn,*arg2);
main()
inta;
//局部变量a为0;
show(multi,10,a);
110
10、请找出下面代码中的所有错误(题目不错,值得一看)
说明:
以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”
#includestring.h
char*src=hello,world;
char*dest=null;
intlen=strlen(src);
dest=(char*)malloc(len);
char*d=dest;
char*s=src[len];
while(len--!
=0)
d++=s--;
printf(%s,dest);
方法1:
一共有4个错误;
intmain()
char*src=hello,world;
intlen=strlen(src);
char*dest=(char*)malloc(len+1);
//要为分配一个空间char*d=dest;
char*s=src[len-1];
//指向最后一个字符
while(len--!
=0)
*d++=*s--;
*d=0;
//尾部要加’\0’
printf(%sn,dest);
free(dest);
//使用完,应当释放空间,以免造成内存汇泄露
dest=null;
//防止产生野指针
方法2:
(方法一需要额外的存储空间,效率不高.)不错的想法
#includestring.h
{
charstr[]=hello,world;
intlen=strlen(str);
chart;
for(inti=0;
ilen/2;
i++)
t=str;
str=str[len-i-1];
//小心一点
str[len-i-1]=t;
printf(%s,str);
11.对于一个频繁使用的短小函数,在c语言中应用什么实现,在c++中应用什么实现?
c用宏定义,c++用inline
12.直接链接两个信令点的一组链路称作什么?
ppp点到点连接
13.接入网用的是什么接口?
v5接口
14.voip都用了那些协议?
h.323协议簇、sip协议、skype协议、h.248和mgcp协议
15.软件测试都有那些种类?
黑盒:
针对系统功能的测试
白盒:
测试函数功能,各函数接口
16.确定模块的功能和模块的接口是在软件设计的那个队段完成的?
概要设计阶段
17.
unsignedchar*p1;
unsignedlong*p2;
p1=(unsignedchar*)0x801000;
p2=(unsignedlong*)0x810000;
请问p1+5=;
p2+5=;
答案:
0x801005(相当于加上5位)0x810014(相当于加上20位);
选择题:
21.ethternet链接到internet用到以下那个协议?
d
a.hdlc;
b.arp;
c.udp;
d.tcp;
e.id
22.属于网络层协议的是bc)
a.tcp;
b.ip;
c.icmp;
d.x.25
23.windows消息调度机制是c)
a.指令队列;
b.指令堆栈;
c.消息队列;
d.消息堆栈;
找错题:
25.请问下面程序有什么错误?
inta[60][250][1000],i,j,k;
for(k=0;
kmax>
length)
{returngt_length_error;
}.......}
死循环//
问答题:
29.ipphone的原理是什么?
ip电话(又称ip
phone或voip)是建立在ip技术上的分组化、数字化传输技术,其基本原理是:
通过语音压缩算法对语音数据进行压缩编码处理,然后把这些语音数据按ip等相关协议进行打包,经过ip网络把数据包传输到接收地,再把这些语音数据包串起来,经过解码解压处理后,恢复成原来的语音信号,从而达到由ip网络传送语音的目的。
30.tcp/ip通信建立的过程怎样,端口有什么作用?
三次握手,确定是哪个应用程序使用该协议
31.1号信令和7号信令有什么区别,我国某前广泛使用的是那一种?
1号信令接续慢,但是稳定,可靠。
7号信令的特点是:
信令速度快,具有提供大量信令的潜力,具有改变和增加信令的灵活性,便于开放新业务,在通话时可以随意处理信令,成本低。
目前得到广泛应用。
32.列举5种以上的电话新业务
如“闹钟服务”、“免干扰服务”、“热线服务”、“转移呼叫”、“遇忙回叫”、“缺席用户服务”、“追查恶意呼叫”、“三方通话”、“会议电话”、“呼出限制”、“来电显示”、“虚拟网电话”等
四.找错题:
1.请问下面程序有什么错误?
inta[60][250][1000],i,j,k;
k=1000;
k++)
for(j=0;
j250;
j++)
for(i=0;
i60;
i++)
a[j][k]=0;
把循环语句内外换一下
2.#definemax_cb500
voidlmiquerycsmd(structmsgcb*pmsg)
unsignedcharuccmdnum;
......
for(uccmdnum=0;
uccmdnummax_cb;
uccmdnum++)
......;
死循环,unsignedint的取值范围是0~255
3.以下是求一个数的平方的程序,请找出错误:
#definesquare(a)((a)*(a))
inta=5;
intb;
b=square(a++);
结果与编译器相关,得到的可能不是平方值.
微软亚洲技术中心的面试题!
!
【篇二:
华为最新笔试题——编程题及答案】
pclass=txt>
答案:
charstr[20],*p;
intlength=0;
printf(“pleaseinputastring:
”);
gets(str);
p=str;
while(*p++)
length++;
printf(“thelengthofstringis%d\n”,length);
问题:
使用c语言实现字符串中子字符串的替换
描述:
编写一个字符串替换函数,如函数名为strreplace(char*strsrc,char*strfind,char*strreplace),strsrc为原字符串,strfind是待替换的字符串,strreplace为替换字符串。
举个直观的例子吧,如:
“abcdefghijklmnopqrstuvwxyz”这个字符串,把其中的“rst”替换为“ggg”这个字符串,结果就变成了:
abcdefghijklmnopqggguvwxyz
答案一:
voidstrreplace(char*strsrc,char*strfind,char*strreplace);
#definem100;
voidmain()
{chars[]=abcdefghijklmnopqrstuvwxyz;
chars1[]=rst;
chars2[]=ggg;
strreplace(s,s1,s2);
printf(%s\n,s);
voidstrreplace(char*strsrc,char*strfind,char*strreplace)
inti=0;
intj;
intn=strlen(strsrc);
intk=strlen(strfind);
in;
if(*(strsrc+i)==*strfind)
jk;
if(*(strsrc+i+j)==*(strfind+j))
*(strsrc+i+j)=*(strreplace+j);
elsecontinue;
}
编写一个程序实现功能:
将字符串”computersecience”赋给一个字符数组,然后从第一个字母开始间隔的输出该串,用指针完成。
答案:
charstr[]=”computerscience”;
intflag=1;
char*p=str;
while(*p)
if(flag)
printf(“%c”,*p);
flag=(flag+1)%2;
p++;
printf(“\n”);
charstr1[20]={“hello”},str2[20]={“world”};
char*p=str1,*q=str2;
while(*p)p++;
while(*q)
*p=*q;
q++;
*p=?
\0?
;
printf(“%s\n”,str1);
以下函数的功能是用递归的方法计算x的n阶勒让德多项式的值。
已有调用语句p(n,x);
编写函数实现功能。
递归公式如下:
?
1
px(x)?
?
x
((2n?
1)xp(x)?
(n?
1)p(x))/nn?
1n?
2?
0)(n?
1)(n?
1)
floatp(intx,intn)
floatt,t1,t2;
if(n==0)return1;
elseif(n==1)returnx;
else{t1=(2*n-1)*x*p(x,(n-1));
t2=(n-1)*p(x,(n-2));
t=(t1-t2)/n;
returnt;
intx,n;
printf(“inputtwoint(xandn):
”);
scanf(“%d%d”,x,n);
printf(“%.2f\n”,p(x,n));
给主函数传递参数实现echo功能:
#inclduestdio.h
intmain(intargc,char*argv[])
{inti=1;
while(iargc)
{printf(“%s”,argv[i]);
i++;
1.数组比较(20分)
问题描述:
比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。
请编程实现上述比较,并返回比较中发现的不相等元素的个数,比如:
数组{1,3,5}和数组{77,21,1,3,5}按题述要求比较,不相等元素个数为0
数组{1,3,5}和数组{77,21,1,3,5,7}按题述要求比较,不相等元素个数为3
要求实现函数:
intarray_compare(intlen1,intarray1[],intlen2,intarray2[])
【输入】intlen1:
输入被比较数组1的元素个数;
intarray1[]:
输入被比较数组1;
intlen2:
输入被比较数组2的元素个数;
intarray2[]:
输入被比较数组2;
【输出】无
【返回】不相等元素的个数,类型为int
示例
1)输入:
intarray1[]={1,3,5},intlen1=3,intarray2[]={77,21,1,3,5},intlen2=5函数返回:
3
2)输入:
intarray1[]={1,3,5},intlen1=3,intarray2[]={77,21,1,3,5,7},intlen2=6函数返回:
#includestdlib.h
#includestdio.h
intcount=0;
for(;
len1=0len2=0;
len1--,len2--)
if(array1[len1-1]==array2[len2-1])
count++;
returncount;
intresult=0;
intarray1[]={1,3,5};
intlen1=3;
intarray2[]={77,12,1,3,5};
intlen2=5;
result=array_compare(len1,array1,len2,array2);
printf(theresultis%d,result);
}约瑟夫环是一个数学的应用问题:
已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。
从编号为k的人开始报数,数到m的那个人出列;
他的下一个人又从1开始报数,数到m的那个人又出列;
依此规律重复下去,直到圆桌周围的人全部出列。
typedefstructnode
intnum;
structnode*next;
}linklist;
linklist*creat(intn)
linklist*p,*q,*head;
inti=1;
p=(linklist*)malloc(sizeof(linklist));
p-num=i;
head=p;
for(i=2;
i=n;
q=(linklist*)malloc(sizeof(linklist));
/*malloc()向系统申请分配指定size个字节的内存空间。
返回类型是void*类型。
void*表示未确定类型的指针。
c,c++规定,void*类型可以强制转换为任何其它类型的指针。
*/
q-num=i;
p-next=q;
p=q;
p-next=head;
/*使链表尾指向链表头形成循环链表*/
returnhead;
voidfun(linklist*l,intm)
inti;
linklist*p,*s,*q;
p=l;
printf(出列顺序为:
);
while(p-next!
=p)
for(i=1;
im;
i++)/*从1开始*/
{q=p;
p=p-next;
printf(%5d,p-num);
s=p;
q-next=p-next;
/*使p指向新的起点*/
free(s);
/*free()与malloc()函数配对使用,释放malloc函数申请的动态内存*/}
printf(%5d\n,p-num);
linklist*l;
intn,m;
n=9;
m=5;
l=creat(n);
fun(l,m);
手机号码合法性判断(20分)
我国大陆运营商的手机号码标准格式为:
国家码+手机号码,例如:
8613912345678。
特点如下:
1、长度13位;
2、以86的国家码打头;
3、手机号码的每一位都是数字。
请实现手机号码合法性判断的函数要求:
1)如果手机号码合法,返回0;
2)如果手机号码长度不合法,返回1
3)如果手机号码中包含非数字的字符,返回2;
4)如果手机号码不是以86打头的,返回3;
【注】除成功的情况外,以上其他合法性判断的优先级依次降低。
也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。
intsintverifymsisdn(char*inmsisdn)
【输入】char*inmsisdn,表示输入的手机号码字符串。
【返回】判断的结果,类型为int。
输入:
inmsisdn=“869123456789“
输出:
无
【篇三:
软件工程师面试题(含答案)】
,说明在一个web应用如何去使用?
mvc设计模式(应用观察
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面试 编程 答案