华为面试.docx
《华为面试.docx》由会员分享,可在线阅读,更多相关《华为面试.docx(8页珍藏版)》请在冰豆网上搜索。
![华为面试.docx](https://file1.bdocx.com/fileroot1/2023-1/23/fe11e3d6-2838-48f3-8340-8d6a77d4f32c/fe11e3d6-2838-48f3-8340-8d6a77d4f32c1.gif)
华为面试
1、局部变量能否和全局变量重名?
答:
能,局部会屏蔽全局。
要用全局变量,需要使用":
:
";局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名局部变量,而不会用到全局变量。
对于有些编译器而言,在同一种函数内可以定义各种同名局部变量,例如在两个循环体内都定义一种同名局部变量,而那个局部变量作用域就在那个循环体内。
2、如何引用一种已经定义过全局变量?
答:
extern 可以用引用头文献方式,也可以用extern核心字,如果用引用头文献方式来引用某个在头文献中声明全局变理,假定你将那个编写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样错误,那么在编译期间不会报错,而在连接期间报错。
3、全局变量可不可以定义在可被各种.C文献包括头文献中?
为什么?
答:
可以,在不同C文献中以static形式来声明同名全局变量。
可以在不同C文献中声明同名全局变量,前提是其中只能有一种C文献中对此变量赋初值,此时连接不会出错.
4、请写出下列代码输出内容
#include
intmain(void)
{
inta,b,c,d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf("b,c,d:
%d,%d,%d",b,c,d);
return0;
}
答:
10,12,120
5、static全局变量与普通全局变量有什么区别?
static局部变量和普通局部变量有什么区别?
static函数与普通函数有什么区别?
答:
1)全局变量(外部变量)阐明之前再冠以static就构成了静态全局变量。
全局变量自身就是静态存储方式,静态全局变量固然也是静态存储方式。
这两者在存储方式上并无不同。
这两者区别在于非静态全局变量作用域是整个源程序,当一种源程序由各种源文献构成时,非静态全局变量在各个源文献中都是有效。
而静态全局变量则限制了其作用域,即只在定义该变量源文献内有效,在同一源程序其他源文献中不能使用它。
由于静态全局变量作用域局限于一种源文献内,只能为该源文献内函数公用,因而可以避免在其他源文献中引起错误。
2)从以上分析可以看出,把局部变量变化为静态变量后是变化了它存储方式即变化了它生存期。
把全局变量变化为静态变量后是变化了它作用域,限制了它使用范畴。
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、写出下列代码输出内容
#include
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);
return0;
}
答:
110
10、请找出下面代码中所有错误(题目不错,值得一看)
阐明:
如下代码是把一种字符串倒序,如“abcd”倒序后变为“dcba”
#include"string.h"
main()
{
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);
return0;
}
答:
办法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; //防止产生野指针
return0;
}
办法2:
(办法一需要额外存储空间,效率不高.) 不错想法
#include
#include
main()
{
charstr[]="hello,world";
intlen=strlen(str);
chart;
for(inti=0;i{
t=str[i];
str[i]=str[len-i-1];//小心一点
str[len-i-1]=t;
}
printf("%s",str);
return0;
}
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_GT_Length)
{ returnGT_Length_ERROR;
} .......}
答:
死循环//
问答题:
29.IPPhone原理是什么?
IP电话(又称IPPHONE或VoIP)是建立在IP技术上分组化、数字化传播技术,其基本原理是:
通过语音压缩算法对语音数据进行压缩编码解决,然后把这些语音数据按IP等有关合同进行打包,通过IP网络把数据包传播到接受地,再把这些语音数据包串起来,通过解码解压解决后,恢复成本来语音信号,从而达到由IP网络传送语音目。
30.TCP/IP通信建立过程如何,端口有什么作用?
三次握手,拟定是哪个应用程序使用该合同
31.1号信令和7号信令有什么区别,国内某前广泛使用是那一种?
1号信令接续慢,但是稳定,可靠。
7号信令特点是:
信令速度快,具备提供大量信令潜力,具备变化和增长信令灵活性,便于开放新业务,在通话时可以随意解决信令,成本低。
当前得到广泛应用。
32.列举5种以上电话新业务
如“闹钟服务”、“免干扰服务”、“热线服务”、“转移呼喊”、“遇忙回叫”、“缺席顾客服务”、“追查恶意呼喊”、“三方通话”、“会议电话”、“呼出限制”、“来电显示”、“虚拟网电话”等
四.找错题:
1.请问下面程序有什么错误?
inta[60][250][1000],i,j,k;
for(k=0;k<=1000;k++)
for(j=0;j<250;j++)
for(i=0;i<60;i++)
a[i][j][k]=0;
答:
把循环语句内外换一下
2.#defineMax_CB500
voidLmiQueryCSmd(StructMSgCB*pmsg)
{
unsignedcharucCmdNum;
......
for(ucCmdNum=0;ucCmdNum{
......;
}
答:
死循环,unsignedint取值范畴是0~255
3.如下是求一种数平方程序,请找出错误:
#defineSQUARE(a)((a)*(a))
inta=5;
intb;
b=SQUARE(a++);
答:
成果与编译器有关,得到也许不是平方值.