2021年度华为软件测试工程师笔试题及部分答案_第1页
2021年度华为软件测试工程师笔试题及部分答案_第2页
2021年度华为软件测试工程师笔试题及部分答案_第3页
2021年度华为软件测试工程师笔试题及部分答案_第4页
2021年度华为软件测试工程师笔试题及部分答案_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

现巧总线例议

应用乂

数据链路乂

物理层

TCP/IPStackOSIReferenceModel

Application

ApplicationPresentation

Session

Transport

Transport

Network

Internet

DataLinkDataLink

Network

AccessPhysicalPhysirRi

OSI七层网络构造图,和TCP/IP五层构造图

OSI

OSI是OpenSystemInterconnect缩写,意为开放式系统互联。在OSI浮现之前,计算机网

络中存在众多体系构造,其中以IBM公司SNA(系统网络体系构造)和DEC公司DNA(Digital

NetworkArchitecture)数字网络体系构造最为知名。为理解决不同体系构造网络互联问题,国

际原则化组织ISO(注意不要与OSI搞混))于1981年制定了开放系统互连参照模型(Open

SystemInterconnectionReferenceModel,OSI/RM)。这个模型把网络通信工作分为7层,它们

由低到高分别是物理层(PhysicalLayer)微据链路层(DataLinkLayer),网络层(NetworkLayer),

传播层(TransportLayer),会话层(SessionLayer),表达层(PresentationLayer)和应用层

(ApplicationLayer)o第一层到第三层属于OSI参照模型低三层,负责创立网络通信连接链

路;第四层到第七层为OSI参照模型高四层,详细负责端到端数据通信。每层完毕一定功

能,每层都直接为其上层提供服务,并且所有层次都互相支持,而网络通信则可以自上而下

(在发送端)或者自下而上(在接受端)双向进行。固然并不是每一通信都需要通过OSI

所有七层,有甚至只需要双方相应某一层即可。物理接口之间转接,以及中继器与中继器之

间连接就只需在物理层中进行即可;而路由器与路由器之间连接则只需通过网络层如下三层

即可。总来说,双方通信是在对等层次上进行,不能在不对称层次上进行通信。

OSI参照模型各个层次划分遵循下列原则:

1、同一层中各网络节点均有相似层次构造,具备同样功能。

2、同一节点内相邻层之间通过接口(可以是逻辑接口)进行通信。

3、七层构造中每一层使用下一层提供服务,并且向其上层提供服务。

4、不同节点同等层按照合同实现对等层之间通信。

第一层:物理层(PhysicalLayer),规定通信设备机械、电气、功能和过程特性,用以建立、

维护和拆除物理链路连接。详细地讲,机械特性规定了网络连接时所需接插件规格尺寸、引

脚数量和排列状况等;电气特性规定了在物理连接上传播bit流时线路上信号电平大小、阻

抗匹配、传播速率距离限制等;功能特性是指对各个信号先分派确切信号含义,即定义了

DTE和DCE之间各个线路功能;规程特性定义了运用信号线进行bit流传播一组操作规程,

是指在物理连接建立、维护、互换信息是,DTE和DCE双放在各电路上动作系列。

在这一层,数据单位称为比特(bit)。

属于物理层定义典型规范代表涉及:E1A/TIARS-232、EIA/TIARS-449、V.35、RJ-45等。

第二层:数据链路层(DataLinkLayer):在物理层提供比特流服务基本上,建立相邻结点之间

数据链路,通过差错控制提供数据帧(Frame)在信道上无差错传播,并进行各电路上动作

系列。

数据链路层在不可靠物理介质上提供可靠传播。该层作用涉及:物理地址寻址、数据成帧、

流量控制、数据检错、重发等。

在这一层,数据单位称为帧(frame)。

数据链路层合同代表涉及:SDLC、HDLC、PPP、STP、帧中继等。

第三层是网络层

在计算机网络中进行通信两个计算机之间也许会通过诸各种数据链路,也也许还要通过诸多

通信子网。网络层任务就是选取适当网间路由和互换结点,保证数据及时传送。网络层将

数据链路层提供帧构成数据包,包中封装有网络层包头,其中具有逻辑地址信息一源站点和

目站点地址网络地址。

如果你在谈论一种IP地址,那么你是在解决第3层问题,这是“数据包”问题,而不是第

2层“帧”。IP是第3层问题一某些,此外尚有某些路由合同和地址解析合同(ARP)。关于

路由一切事情都在第3层解决。地址解析和路由是3层重要目。网络层还可以实现拥塞控制、

网际互连等功能。

在这一层,数据单位称为数据包(packet)。

网络层合同代表涉及:IP、IPX、RIP、OSPF等。

第四层是解决信息传播层。第4层数据单元也称作数据包(packets)0但是,当你谈论TCP

等详细合同时又有特殊叫法,TCP数据单元称为段(segments)而UDP合同数据单元称为

“数据报(datagrams)"«这个层负责获取所有信息,因而,它必要跟踪数据单元碎片、乱

序到达数据包和其他在传播过程中也许发生危险。第4层为上层提供端到端(最后顾客到最

后顾客)透明、可靠数据传播服务。所为透明传播是指在通信过程中传播层对上层屏蔽了通

信传播系统详细细节。

传播层合同代表涉及:TCP、UDP、SPX等。

第五层是会话层

这一层也可以称为会晤层或对话层,在会话层及以上高层次中,数据传送单位不再此外命名,

统称为报文。会话层不参加详细传播,它提供涉及访问验证和会话管理在内建立和维护应用

之间通信机制。如服务器验证顾客登录便是由会话层完毕。

第六层是表达层

这一层重要解决拥护信息语法表达问题。它将欲互换数据从适合于某一顾客抽象语法,转换

为适合于OSI系统内部使用传送语法。即提供格式化表达和转换数据服务。数据压缩和解

压缩,加密和解密等工作都由表达层负责。

第七层应用层,应用层为操作系统或网络应用程序提供访问网络服务接口.

应用层合同代表涉及:Telnet、FTP、HTTP,SNMP等。

通过OSI层,信息可以从一台计算机软件应用程序传播到另一台应用程序上。例如,

计算机A上应用程序要将信息发送到计算机B应用程序,则计算机A中应用程序需要将

信息先发送到其应用层(第七层),然后此层将信息发送到表达层(第六层),表达层将数据

转送到会话层(第五层),如此继续,直至物理层(第一层)。在物理层,数据被放置在物理

网络媒介中并被发送至计算机B。计算机B物理层接受来自物理媒介数据,然后将信息

向上发送至数据链路层(第二层),数据链路层再转送给网络层,依次继续直到信息到达计

算机B应用层。最后,计算机B应用层再将信息传送给应用程序接受端,从而完毕通信

过程。下面图示阐明了这一过程。

OSI七层运用各种各样控制信息来和其她计算机系统相应层进行通信。这些控制信息

包括特殊祈求和阐明,它们在相应OSI层间进行互换。每一层数据头和尾是两个携带控制

信息基本形式。

对于从上一层传送下来数据,附加在前面控制信息称为头,附加在背面控制信息称为尾。

然而,在对来自上一层数据增长合同头和合同尾,对一种OSI层来说并不是必须。

当数据在各层间传送时,每一层都可以在数据上增长头和尾,而这些数据已经包括了上

一层增长头和尾。合同头包括了关于层与层间通信信息。头、尾以及数据是有关联概念,它

们取决于分析信息单元合同层。例如,传播层头包括了只有传播层可以看到信息,传播层下

面其她层只将此头作为数据一某些传递。对于网络层,一种信息单元由第三层头和数据构成。

对于数据链路层,经网络层向下传递所有信息即第三层头和数据都被看作是数据。换句话说,

在给定某一OSI层,信息单元数据某些包括来自于所有上层头和尾以及数据,这称之为封

装。

例如,如果计算机A要将应用程序中某数据发送至计算机B,数据一方面传送至应用

层。计算机A应用层通过在数据上添加合同头来和计算机B应用层通信。所形成信息单

元包括合同头、数据、也许尚有合同尾,被发送至表达层,表达层再添加为计算机B表达

层所理解控制信息合同头。信息单元大小随着每一层合同头和合同尾添加而增长,这些合同

头和合同尾包括了计算机B相应层要使用控制信息。在物理层,整个信息单元通过网络介

质传播。

计算机B中物理层收到信息单元并将其传送至数据链路层;然后B中数据链路层读

取计算机A数据链路层添加合同头中控制信息;然后去除合同头和合同尾,剩余某些被传

送至网络层。每一层执行相似动作:从相应层读取合同头和合同尾,并去除,再将剩余信息

发送至上一层。应用层执行完这些动作后,数据就被传送至计算机B中应用程序,这些数

据和计算机A应用程序所发送完全相似。

一种OSI层与另一层之间通信是运用第二层提供服务完毕。相邻层提供服务协助一

OSI层与另一计算机系统相应层进行通信。一种OSI模型特定层普通是与此外三个OSI

层联系:与之直接相邻上一层和下一层,尚有目的联网计算机系统相应层。例如,计算机A

数据链路层应与其网络层,物理层以及计算机B数据链路层进行通信

2:请你详细解释一下IP合同定义,在哪个层上面,重要有什么作用?TCP与UDP呢?

3:请问互换机和路由器分别实现原理是什么?分别在哪个层次上面实现?

4:请问C++类和C里面struct有什么区别?

5:请讲一讲析构函数和虚函数用法和作用?

6:全局变量和局部变量有什么区别?实怎么实现?操作系统和编译器是怎么懂得?

7:某些寄存器题目,重要是寻址和内存管理等某些知识。

8:8086是多少尉系统?在数据总线上是怎么实现?

软件测就各I喈段!

面试就是跟你聊聊工作,看经验了

笔试,看看数据构造,二叉树,排序,什么

也许会考多线程

互换基本合同

1.软件测试相应开发流程各阶段应当怎么样划分?单元测试,集成测试,系统测试各相应与

开发流程那几种文档?

2.压力测试和性能测试区别?

switch(n)中n不能是如下那种类型AcharBintCunsignedDdouble

华为全套面试题

华为全套面试题(基本版)

(-)

慧通:

1。什么是预编译,何时需要预编译:

答案:1、总是使用不经常改动大型代码体。

2、程序由各种模块构成,所有模块都使用一组原则包括文献和相似编译选项。在这种状况

下,可以将所有包括文献预编译为一种预编译头。

2»char*constp

charconst*p

constchar*p

上述三个有什么区别?

答案:

char*constp;〃常量指针,p值不可以修改

charconst*p;〃指向常量指针,指向常量值不可以改

constchar*p;〃和charconst*p

3<>charstrl[]=nabcM;

charstr2l]=nabcH;

constcharstr3[]=nabcn;

constcharstr4[]=Habcn;

constchar*str5="abcu;

constchar*str6="abcu;

char*str7="abc";

char*str8="abc";

cout«(strl==str2)«endl;

cout«(str3==str4)«endl;

cout«(str5==str6)«endl;

cout«(str7==str8)«endl;

成果是:0011

strl,str2,str3,str4是数组变量,它们有各自内存空间;

而str5,str6,str7,str8是指针,它们指向相似常量区域。

4o如下代码中两个sizeof用法有问题吗?[C易]

voidUpperCase(charstr[])//将str中小写字母转换成大写字母

(

for(size_ti=0;i<sizeof(str)/sizeof(str[0]);++i)

if(*ar<=str[i]&&str[i]<='z,)

str[i]-=(“'A');

)

charstr[]="aBcDe”;

cout«"sir字符长度为:"v<sizeof(str)/sizeof(str[0])«endl;

UpperCase(str);

cout«str«endl;

答案:函数内sizeof有问题。依照语法,sizeof如用于数组,只能测出静态数组大小,无法

检测动态分派或外部数组大小。函数外str是一种静态定义数组,因而其大小为6,由于尚

有'\0',函数内str实际只是一种指向字符串指针,没有任何额外与数组有关信息,因而sizeof

作用于上只将其当指针看,一种指针为4个字节,因而返回4。

5。一种32位机器,该机器指针是多少位

答案:指针是多少位只要看地址总线位数就行了。80386后来机子都是32数据总线。因此

指针位数就是4个字节了。

6omain()

(

inta[5]={1,2,3,4,5);

int*ptr=(int*)(&a+l);

printf(H%d,%dn,*(a+l),*(ptr-l));

)

答案:2,5

*(a+l)就是a[l],*(ptr-l)就是a[4],执行成果是2,5

&a+l不是首地址+1,系统会以为加一种a数组偏移,是偏移了一种数组大小(本例是5个

int)

int*ptr=(int*)(&a+l);

则ptr实际是&(a[5]),也就是a+5

因素如下:

&a是数组指针,其类型为int(*)[5];

而指针加1要依照指针类型加上一定值,

不同类型指针+1之后增长大小不同

a是长度为5int数组指针,因此要加5*sizeof(int)

因此ptr实际是af51

但是prt与(&a+l)类型是不同样(这点很重要)

因此prt-1只会减去sizeof(int*)

a,&a地址是同样,但意思不同样,a是数组首地址,也就是a[0]地址,&a是对象(数组)

首地址,a+1是数组下一元素地址,即a[l],&a+1是下一种对象地址,即a[5].

7。请问如下代码有什么问题:

intmain()

chara;

char*str=&a;

strcpy(str,,,helloH);

printf(str);

return0;

)

答案:没有为str分派内存空间,将会发生异常

问题出在将一种字符串复制进一种字符变量指针所指地址。虽然可以对的输出成果,但由于

越界进行内在读写而导致程序崩溃。

8ochar*s二“AAA”;

printf(H%sM,s);

s[0]=B;

printf(u%sn,s);

有什么错?

答案:“AAA”是字符串常量。s是指针,指向这个字符串常量,因此声明s时候就有问题。

cosntchar*s='^AAA'^;

然后又由于是常量,因此对是s[0]赋值操作是不合法。

9。写一种“原则”宏,这个宏输入两个参数并返回较小一种。

答案:.#defineMin(X,Y)((X)>(Y)?(Y):(X))〃结尾没有';'

10。嵌入式系统中经常要用到无限循环,你怎么用C编写死循环。

答案:while(l){}或者for(;;)

110核心字static作用是什么?

答案:定义静态变量

12。核心字const有什么含意?

答案:表达常量不可以修变化量。

13。核心字volatile有什么含意?并举出三个不同例子?

答案:提示编译器对象值也许在编译器未监测到状况下变化。

14oint(*s[10])(int)表达是什么啊?

答案:int(*s[10])(int)函数指针数组,每个指针指向一种intfunc(intparam)函数。

15o有如下表达式:

inta=248;b=4;intconstc=21;constint*d=&a;

int*conste=&b;intconst*fconst=&a;

请问下列表达式哪些会被编译器禁止?为什么?

答案:*c=32;d=&b;*d=43;e=34;e=&a;f=0x321f;

气这是个什么东东,禁止

*d说了是const,禁止

e=&a说了是const禁止

const*fconst=&a;禁止

16互换两个变量值,不使用第三个变量。即a=3,b=5,互换之后a=5,b=3;

答案:有两种解法,一种用算术算法,一种用人(异或)

a=a+b;

b=a-b;

a=a-b;

or

a=aAb;//只能对int,char..

b=aAb;

a=aAb;

or

aA=bA=a;

17.c和c++中struct有什么不同?

答案:c和C++中struct重要区别是c中struct不可以具有成员函数,而C++中struct可以。

C++中struct和class重要区别在于默认存取权限不同,struct默以为public,而class默以为

private

18.#include<stdio.h>

#include<stdlib.h>

voidgetmemory(char*p)

(

p=(char*)malloc(lOO);

strcpy(p,''helloworld");

)

intmain()

char*str=NULL;

getmemory(str);

printf(n%s/n",str);

free(str);

return0;

}

答案:程序崩溃,getmemory中malloc不能返回动态内存,free()对str操作很危险

19.charszstr[10];

strcpy(szstr,"");

产生什么成果?为什么?

答案:长度不同样,会导致非法OS

20.列举几种进程同步机制,并比较其优缺陷。

答案:原子操作

信号量机制

自旋锁

管程,会合,分布式系统

21.进程之间通信途径

答案:共享存储系统

消息传递系统

管道:以文献系统为基本

22.进程死锁因素

答案:资源竞争及进程推动顺序非法

23.死锁4个必要条件

答案:互斥、祈求保持、不可剥夺、环路

24.死锁解决

答案:鸵鸟方略、防止方略、避免方略、检测与解除死锁

25.操作系统中进程调度方略有哪几种?

答案:FCFS(先来先服务),优先级,时间片轮转,多级反馈

26.类静态成员和非静态成员有何区别?

答案:类静态成员每个类只有一种,非静态成员每个对象一种

27.纯虚函数如何定义?使用时应注意什么?

答案:virtualvoidf()=0;

是接口,子类必要要实现

28.数组和链表区别

答案:数组:数据顺序存储,固定大小

连表:数据可以随机存储,大小可动态变化

29.ISO七层模型是什么?tcp/udp是属于哪一层?tcp/udp有何优缺陷?

答案:应用层

表达层

会话层

运送层

网络层

物理链路层

物理层

tcp/udp属于运送层

TCP服务提供了数据流传播、可靠性、有效流控制、全双工操作和多路复用技术等。

与TCP不同,UDP并不提供对IP合同可靠机制、流控制以及错误恢复功能等。由于

UDP比较简朴,UDP头包括很少字节,比TCP负载消耗少。

tcp:提供稳定传播服务,有流量控制,缺陷是包头大,冗余性不好

udp:不提供稳定服务,包头小,开销小

30:(void*)ptr和(*(void**))ptr成果与否相似?其中ptr为同一种指针

答案:.(void*)ptr和(*(void**))ptr值是相似

31:intmain()

{

intx=3;

printf("%d",x);

return1;

问函数既然不会被其他函数调用,为什么要返回I?

答案:mian中,c原则以为0表达到功,非0表达错误。详细值是某中详细出错信息

32,要对绝对地址0x100000赋值,咱们可以用

(unsignedint*)0x100000=1234;

那么要是想让程序跳转到绝对地址是0x100000去执行,应当怎么做?

答案:*((void(*)())0x100000)();

一方面要将0x100000强制转换成函数指针,即:

(void(*)())0x100000

然后再调用它:

*((void(*)0)0x100000)();

用typedef可以看得更直观些:

typedefvoid(*)()voidFuncPtr;

*((voidFuncPtr)0x100000)();

33,已知一种数组table,用一种宏定义,求出数据元素个数

答案:#defineNTBL

#defineNTBL(sizeof(table)/sizeof(table[0]))

34。线程与进程区别和联系?线程与否具备相似堆栈?dll与否有独立堆栈?

答案:进程是死,只是某些资源集合,真正程序执行都是线程来完毕,程序启动时候操作系

统就帮你创立了一种主线程。

每个线程有自己堆栈。

DLL中有无独立堆栈,这个问题不好回答,或者说这个问题自身与否有问题。由于DLL中

代码是被某些线程所执行,只有线程拥有堆栈,如果DLL中代码是EXE中线程所调用,那

么这个时候是不是说这个DLL没有自己独立堆栈?如果DLL中代码是由DLL自己创立线

程所执行,那么是不是说DLL有独立堆栈?

以上讲是堆栈,如果对于堆来说,每个DLL有自己堆,因此如果是从DLL中动态分派内存,

最佳是从DLL中删除,如果你从DLL中分派内存,然后在EXE中,或者此外一种DLL中

删除,很有也许导致程序崩溃

35ounsignedshortA=10;

printf("~A=%u\n",~A);

charc=128;

printf("c=%d\n",c);

输出多少?并分析过程

答案:第一题,〜A=0xfffffff5,int值为-11,但输出是uint。因此输出

第二题,c=0x10,输出是int,最高位为1,是负数,因此它值就是0x00补码就是128,因此

输出一128。

这两道题都是在考察二进制向血或uint转换时最高位解决。

(-)

1.-1,2,7,28,,126请问28和126中间那个数是什么?为什么?

答案:第一题答案应当是4八3-1=63

规律是n人3-1(当n为偶数0,2,4)

吁3+1(当n为奇数1,3,5)

2.用两个栈实现一种队列功能?规定给出算法和思路!

答案:设2个栈为A,B,一开始均为空.

入队:

将新元素push入栈A;

出队:

(1)判断栈B与否为空;

(2)如果不为空,则将栈A中所有元素依次pop出并push到栈B;

(3)将栈B栈顶元素pop出;

这样实现队列入队和出队平摊复杂度都还是0(1),比上面几种办法要好。

3.在c语言库函数中将一种字符转换成整型函数是atol()吗,这个函数原型是什么?

答案:函数名:atol

功能:把字符串转换成长整型数

用法:longatol(constchar*nptr);

程序例:

#include<stdlib.h>

#include<stdio.h>

intmain(void)

(

long1;

char*str="98765432";

1=atol(lstr);

printf(ustring=%sinteger=%ld\nH,str,1);

retum(O);

)

4。对于一种频繁使用短小函数,在C语言中应用什么实现,在C++中应用什么实现?

答案:c用宏定义,C++用inline

5。直接链接两个信令点一组链路称作什么?

答案:PPP点到点连接

7。软件测试均有那些种类?

答案:黑盒:针对系统功能测试臼合:测试函数功能,各函数接口

8。拟定模块功能和模块接口是在软件设计那个队段完毕?

答案:概要设计阶段

9oenumstring

xl,

x2,

x3=10,

x4,

x5,

}x;

问X;

答案:取值在0。lo10ollo12中一种

10ounsignedchar*p1;

unsignedlong*p2;

pl=(unsignedchar*)0x801000;

p2=(unsignedlong*)0x810000;

请问pl+5=;

p2+5=;

答案:801005;810014o不要忘掉了这个是16进制数字,p2要加20变为16进制就是14

选取题:

1.Ethternet链接到Internet用到如下那个合同?

A.HDLC;B.ARP;C.UDP;D.TCP;E.ID

2.属于网络层合同是:

A.TCP;B.IP;C.ICMP;D.X.25

3.Windows消息调度机制是:

A.指令队列;B.指令堆栈;C.消息队列;D.消息堆栈;

答案:b,a,c

四.找错题:

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;

答案:把循环语句内外换一下

2o如下是求一种数平方程序,请找出错误:

#defineSQUARE(a)((a)*(a))

inta=5;

intb;

b=SQUARE(a++);

答案:这个没有问题,s(a++),就是((a++)X(a++))唯一要注意就是计算后a

=7T

3otypedefunsignedcharBYTE

intexamply_fun(BYTEgt_len;BYTE*gt_code)

(

BYTE*gt_buf;

gt_buf=(BYTE*)MALLOC(Max_GT_Length);

if(gt」en>Max_GT_Length)

returnGT_Length_ERROR;

)

答案:要释放内存

问答题:

1.IPPhone原理是什么?

答案:IPV6

2.TCP/IP通信建立过程如何,端口有什么作用?

答案:三次握手,拟定是哪个应用程序使用该合同

(三)

1、局部变量能否和全局变量重名?

答案:能,局部会屏蔽全局。要用全局变量,需要使用"::"

局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名局部变量,而不会用

到全局变量。对于有些编译器而言,在同一种函数内可以定义各种同名局部变量,例如在两

个循环体内都定义一种同名局部变量,而那个局部变量作用域就在那个循环体内

2、如何引用一种己经定义过全局变量?

答案:extern

可以用引用头文献方式,也可以用extern核心字,如果用引用头文献方式来引用某个在头文

献中声明全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式

引用时,假定你犯了同样错误,那么在编译期间不会报错,而在连接期间报错

3、全局变量可不可以定义在可被各种.C文献包括头文献中?为什么?

答案:可以,在不同C文献中以static形式来声明同名全局变量。可以在不同C文献中声明

同名全局变量,前提是其中只能有一种C文献中对此变量赋初值,此时连接不会出错

4、语句for(;1;)有什么问题?它是什么意思?

答案:和while⑴相似。

5、do.......while和while........do有什么区别?

答案:前一种循环一遍再判断,后一种判断后来再循环.

6、请写出下列代码输出内容

#include<stdio.h>

main()

inta,b,c,d;

a=10;

b=a++;

c=++a;

d=10*a++;

printf(Hb,c,d:%d,%d,%d'\b,c,d);

return0;

)

答案:10,12,120

a=10;

b=a++;//a=llb=10

c=++a;//a=12c=12

d=10*a++;//a=13d=120

高档题

1,static全局变量与普通全局变量有什么区别?static局部变量和普通局部变量有什么区别?

static函数与普通函数有什么区别?

答案:

全局变量(外部变量)阐明之前再冠以static就构成了静态全局变量。全局变量自身就是静态

存储方式,静态全局变量固然也是静态存储方式。这两者在存储方式上并无不同。这两者

区别虽在于非静态全局变量作用域是整个源程序,当一种源程序由各种源文献构成时,非

静态全局变量在各个源文献中都是有效。

而静态全局变量则限制了其作用域,即只在定义该变量源文献内有效,在同一源程序其他

源文献中不能使用它。由于静态全局变量作用域局限于一种源文献内,只能为该源文献内函

数公用,因而可以避免在其他源文献中引起错误。从以上分析可以看出,把局部变量变化

为静态变量后是变化了它存储方式即变化了它生存期。把全局变量变化为静态变量后是变化

了它作用域,限制了它使用范畴。

static函数与普通函数作用域不同。仅在本文献。只在当前源文献中使用函数应当阐明为内

部函数(static),内部函数应当在当前源文献中阐明和定义。对于可在当前源文献以外使用函

数,应当在一种头文献中阐明,要使用这些函数源文献要包括这个头文献

static全局变量与普通全局变量有什么区别:static全局变量只初使化一次,防止在其她文献

单元中被引用;

static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次根据上

一次成果值;

static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中

维持一份拷贝

2、程序局部变量存在于()中,全局变量存在于()中,动态申请数据存在于()中。

答案:栈;静态区;堆

3、设有如下阐明和定义:

typedefunion{longi;intk[5];charc;}DATE;

structdata{intcat;DATEcow;doubledog;)too;

DATEmax;

则语句printf("%d",sizeof(too)+sizeof(max));执行成果是:

答案:DATE是一种union,变量公用空间.里面最大变量类型是int[5],占用20个字节.因

此它大小是20

data是一种struct,每个变量分开占用空间.依次为int4+DATE20+double8=32.

因此成果是20+32=52.

固然…在某些16位编辑器下,int也许是2字节,那么成果是int2+DATE10+double8=20

4、队列和栈有什么区别?

答案:队列先进先出,栈后进先出土

5、这道题目出错了,这里就不写上了。

6、已知一种单向链表头,请写出删除其某一种结点算法,规定,先找到此结点,然后删除。

答案:slnodetype*Delete(slnodetype*Head,intkey){}中if(Head->number==key)

Head=Pointer->next;

free(Pointer);

break;

Back=Pointer;

Pointer=Pointer->next;

if(Pointer->number==key)

Back->next=Pointer->next;

free(Pointer);

break;

voiddelete(Node*p)

if(Head=Node)

while(p)

7、请找出下面代码中因此错误

阐明:如下代码是把一种字符串倒序,如“abed”倒序后变为“dcba”

1、#includeHstring.h"

2、main()

3、{

4、char*src=nhello,world";

5、char*dest=NULL;

6、intlen=strlen(src);

7、dest=(char*)malloc(len);

8>char*d=dest;

9、char*s=src[len];

10、while(len—!=0)

11>d++=s-;

12、printf("%s”,dest);

13、return0;

14、)

答案:还要加上#include<stdio.h>

intmain(){

char*src="hello,world";

intlen=strlen(src);

char*dest=(char*)malloc((len+l)*sizeof(char));//耍为\0分派一种空间

char*d=dest;

char*s=&src[len-l];〃指向最后一种字符

while(len—!=0)

*d++=*s-・;

*d=0;〃尾部要加\0

printf(u%s\nn,dest);

free(dest);//使用完,应当释放空间,以免导致内存汇泄露

return0;

)

华为笔试题(3)

-09-2919:41

一、判断题(对写T,错写F并阐明因素,每小题4分,共20分)

1、有数组定义inia⑵⑵={{1},{2,3}};则a[0]⑴值为0。(对的)

2、int(*ptr)(),则ptr是一维数组名字。(错误int(*ptr)();定义一种指向函数指针变量)

3、指针在任何状况下都可进行>,<,>=,<=,==运算。(错误)

4、switch(c)语句中c可以是intJong,char,float.unsignedint类型。(错,不能用实形)

二、填空题(共30分)

1、在windows下,写出运营成果,每空2分,共10分。

charstr[]=HHello”;

char*p=str;

intn=10;

sizeof(str)=()

sizeof(p)=()

sizeof(n)=()

voidfunc(charstrfl00]){

sizeof(str)=()

答案:6,4,4,4,详细解释请参看我空间里“C/C++程序员应聘试题剖析”

2、voidgetmemory(charintnum)

{*p=(char*)malloc(num);}

voidtest(void)

{char*str=NULL;

getmemory(&str,100);

strcpy(str,*'hello");

printf(str);

运营test函数有什么成果?()10分

答案:输出hello,但是发生内存泄漏。

3、设intarr[J={6,7,8,9,10};

int*ptr=arr;

*(ptr++)+=123;

printf(0%d,%dK,*ptr,*(++ptr));

)10分

答案:8,8。这道题目意义不大,由于在不同编译器里printf参数方向是不同样,在vc6.0

下是从有到左,这里先*(++ptr)后*pt,于是成果为8,8

二、编程题(第一小题20,第二小题30分)

1、不使用库函数,编写函数intstrcmp(char*source,char*dest)

相等返回0,不等返回-1;

答案:一、

intstrcmp(char*source,char*dest)

(

assert((source!=NULL)&&(dest!=NULL));

inti,j;

for(i=0;source[i]==dest[i];i++)

(

if(source[i]=='\0'&&dest[i]=="\0')

return0;

else

return-1;

)

)

答案:二、

intstrcmp(char*source,char*dest)

(

while((*source!='\0')&&(*source==*dest))

{

source++;

dest++;

)

return((*source)-(*dest))?-l:0;

}

2、写一函数intfun(char*p)判断一字符串与否为回文,是返回1,不是返回0,出错返回-1

答案:一、

intfun(char*p)

if(p==NULL)

return-1;

else

intlength=0;

inti=0;

intjudge=1;

length=strlen(p);

for(i=0;i<length/2;i++)

if(p[i]!=p[length-l-i])

judge=0;

break;

)

if(judge==0)

return0;

else

return1;

)

)

答案:二、

intfun(char*p){intlen=strlen(p)-1;char*q=p+len;if(!p)return-1;while(p<q){if

((*p++)!=(*q—))return0;}return1;)

华为笔试网络题(3)

-09-3012:48

1.在OSI7层模型中,网络层功能有()

A.保证数据传送对的无误B.拟定数据包如何转发与路由

C.在信道上传送比特流D.纠错与流控

2.FDDI使用是一局域网技术。()

A.以太网;B.迅速以太网;C.令牌环;D.令牌总线。

3.下面那种LAN是应用CSMA/CD合同()

A.令牌环B.FDDIC.ETHERNETD.NOVELL

4.TCP和UDP合同相似之处是()

A.面向连接合同B.面向非连接合同C.传播层合同D.以上均不对

5.应用程序PING发出是—报文.()

A.TCP祈求报文。B.TCP应答报文。C.ICMP祈求报文。D.ICMP应答报文。

6.如下说法错误是(多)()

A.中继器是工作在物理层设备B.集线器和以太网互换机工作在数据连路层

C.路由器是工作在网络层设备D.桥能隔离网络层广播

7.当桥接受分组目MAC地址在桥映射表中没有相应表项时,采用方略是()

A.丢掉该分组B.将该分组分片C.向其她端口广播该分组D.以上答案均不对

8.LANSwitch在网络层次模型中地位()

A.物理层B.链路层C.网络层D.以上都不是

9.不大于—TCP/UDP端标语已保存与既有服务一一相应,此数字以上端标语可自由分派。()

A.199B.100C.1024D.2048

10.当一台主机从一种网络移到另一种网络时,如下说法对的是()

A.必要变化它IP地址和MAC地址B.必要变化它IP地址,但不需改动MAC地址

C.必要变化它MAC地址,但不需改动IP地址D.MAC地址.IP地址都不需改动

答案:LB;2.C;3.C;4.C;5.C;6.BD;7.C;8.B;9.C;10.B.

华为笔试题(4)

-09-3013:00

1.找错

voidtest1()

(

charstringf10];

char*strl="";

strcpy(string,strl);

)

答:表面上并且编译都不会错误。但如果string数组原意表达是字符串话,那这个赋值就没

有达到意图。最佳定义为charstring"1],这样最后一种元素可以存储字符串结尾符、(T;

voidtest2()

charstring[10],strl[10];

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

(

strl[I]='a';

)

strcpy(string,strl);

1

答:strcpy使用错误,strcpy只有遇到字符串末尾VT才会结束,而strl并没有结尾标志,导

致strcpy函数越界访问,不妨让strl[9]=A(T,这样就正常了。

voidtest3(char*strl)

(

charstring[10];

if(strlen(strl)<=10)

strcpy(string,strl);

答:这又会浮现第一道改错题错误了。strlen(strl)算出来值是不包括结尾符、(X,如果strl刚

好为10个字符+1结尾符,string就得不到结尾符了。可将strlen(strl)<=10改为

strlen(strl)<10o

2.找错

#defineMAX_SRM256

DSNget_SRM_no()

(

staticintSRM_no;

inti;

for(I=0;I<MAX_SRM;I+4-,SRM_no++)

(

SRM_no%=MAX_SRM;

if(MY_SRM.state==IDLE)

break;

if(I>=MAX_SRM)

return(NULL_SRM);

else

returnSRM_no;

)

答:我不懂得这段代码详细功能,但明显有两个错误

1,SRM_no没有赋初值

2,由于static声明,使该函数成为不可重入(即不可预测成果)函数,由于SRM_n。变量

放在程序全局存储区中,每次调用时候还可以保持本来赋值。这里应当去掉static声明。

3.写出程序运营成果

intsum(inta)

(

autointc=0;

staticintb=3;

c+=l;

b+=2;

retum(a+b+c);

)

voidmain()

(

inti;

inta=2;

for(I=0;I<5;I++)

(

printf([%dj,sum(a));

)

)

答:8,10,12,14,16

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

来赋值就可以。

4.

intfunc(inta)

(

intb;

switch(a)

(

case1:b=30;

case2:b=20;

case3:b=16;

default:b=0;

)

returnb;

)

则func(l)=?

答:func(l)=O,由于没有break语句,switch中会始终计算到b=0。这是提示咱们不要忘了

breako呵呵。

5:

inia[3];

a[0]=0;a[l]=l;a[2]=2;

int*p,*q;

p=a;

q=&a[21;

则a[q-p]=?

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

6.

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

答:此处定义是指向指针指针数组,对于32位系统,指针占内存空间4字节,因而总空间

为3X4X4=48。

7.

编写一种函数,规定输入年月日时分秒,输出该年月日时分秒下一秒。如输入12月31日

23时59分59秒,则输出1月1日0时0分。秒。

答:

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

voidNextMinute(int*nYear,int*nMonth,int*nDate,int*nHour,int*nMinute,int*nSecond)

intnDays;

(*nSecond)++;//秒力口1

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

*nSecond=0;

(*nMinute)++;

if(*nMinute>=60)

*nMinute=0;

(*nHour)++;

if(*nHour>=24)

*nHour=0;

(*nDate)++;

switch(*nMonth)

case1:

case3:

case5:

case7:

case8:

case10:

case12:

nDays=31;

break;

case2://判断闰年

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

nDays=29;

else

nDays=28;

break;

default:

nDays=30;

break;

if(*nDate>nDays)

*nDate=l;

(*nMonth)++;

if(*nMonth>12)

*nMonth=l;

(*nYear)++;

)

/*示例可运营代码*/

voidmain()

(

intnYear=,nMonth=12,nDate=31,nHour=59,nMinute=59,nSecond=59;

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

printf(nTheresult:%d-%d-%d%d:%d:%d",nYear,nMonth,nDate,nHour,nMinute,nSecond);

华为硬件笔试题

-09-3013:01

一选取

13个题目,没有所有抄下来,涉及课程有电路,模仿电路,数字电路,信号与系统,微机原理,网络,

数字信号解决

关于于

1.微分电路

2.CISCRISC

3.数据链路层

二填空

10个题目,没有所有抄下来,涉及课程有电路,模仿电路,数字电路,信号与系统,微机原理,网络,

数字信号解决

关于于

1.TIC6000DSP

2.二极管

3.RISC

4.IIR

三简答

1.x(t)傅立叶变换为X(jw)=$(w)+$(w-PI)+$(w-5)

h(t)=u(t)-u(t-2)

问:⑴,x⑴是周期吗?

(2),x(t)*h⑴是周期吗?

(3),两个非周期信号卷积后可周期吗?

2.简述分组互换特点和局限性

四分析设计

1.波形变换题目

从正弦波,方波,锯齿波->方波,设计电路

2.74161计数器构成计数电路,分析几进制

3.用D触发器构成2分频电路

4.判断MCS-51单片机指令对的还是错误,并指出错误因素

(l)MULRO,RI

(2)MOVA,@R7

(3)MOVA,#3000H

(4)MOVC@A+DPTR,A

(5)LJMP#1000H()

5.MCS-51单片机中,采用12Mhz时钟,定期器TO采用模式1(16位计数器),请问在下面程序

中,pl.O输出频率

MOVTMOD,#01H

SETBTRO

LOOP:MOVTHO,#OB1H

MOVTL0,#0E0H

LOOP1:JNBTFO,LOOP1

CLRTRO

CPLP1.0

SJMPLOOP

华为硬件面试题

-09-3013:02

全都是几本模电数电信号单片机题目

1.用与非门等设计全加法器

2.给出两个门电路让你分析异同

3.名词:sram,ssram,sdram

4.信号与系统:在时域与频域关系

5.信号与系统:和4题差不多

6.晶体振荡器,好像是给出振荡频率让你求周期(应当是单片机,12分之一周期..

■.)

7.串行通信与同步通信异同,特点,比较

8.RS232C高电平脉冲相应TTL逻辑是?(负逻辑?)

9.延时问题,判错

10.史密斯特电路,求回差电压

11.VCO是什么,什么参数(压控振荡器?)

12.用D触发器做个二分颦电路.又问什么是状态图

13.什么耐奎斯特定律,怎么由模仿信号转为数字信号

14.用D触发器做个4进制计数

15.那种排序办法最快?

一、研发(软件)

用C语言写一种递归算法求N1;

给一种C函数,关于字符串和数组,找出错误;

防火墙是怎么实现?

你对哪方面编程熟悉?

硬件:

1、继电器控制电路。

2、SDRAM是怎么工作

3、写出逻辑表达式阐明A2A1A0不不大于B2B1B0。

4、惯用触发器有几种

5、示波器有几种触发方式,举出三种

华为3C0M数据通信工程师试题

-09-2918:53

1H.323协商

答案:12个包协商,先H225然后H245,需要注意是面试官也许会问到跟SIP比较

2ipsec为什么是三层。L2tp为什么是二层?

答案:IPSec(Internet合同安全)是一种工业原则网络安全合同,为IP网络通信提供透明安

全服务,保护TCP/IP通信免遭窃听和篡改,可以有效抵抗网络袭击,同步保持易用性。IPSec

有两个基本目的:1)保护IP数据包安全;2)为抵抗网络袭击提供防护办法。

第三层保护长处

普通IPSec提供保护需要对系统做一定修改。但是IPSec在IP传播层即第三层”方略执

行"(strategicimplementation)几乎不需要什么额外开销就可以实现为绝大多数应用系统、

服务和上层合同提供较高档别保护;为既有应用系统和操作系统配备IPSec几乎不必做任何

修改,安全方略可以在ActiveDirectory里集中定义也可以在某台主机上进行本地化管理。

IPSec方略在ISO参照模型第三层即网络层上实行安全保护,其范畴几乎涵盖了TCP/IP

合同簇中所有IP合同和上层合同,如TCP、UDP、ICMP,Raw(第255号合同)、甚至涉

及在网络层发送数据客户自定义合同。在第三层上提供数据安全保护重要长处就在于:所有

使用IP合同进行数据传播应用系统和服务都可以使用IPSec,而不必对这些应用系统和服务

自身做任何修改。

运作于第三层以上其她某些安全机制,如安全套接层SSL,仅对懂得如何使用S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论