华为笔试题大全.docx
- 文档编号:8802174
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:88
- 大小:55.59KB
华为笔试题大全.docx
《华为笔试题大全.docx》由会员分享,可在线阅读,更多相关《华为笔试题大全.docx(88页珍藏版)》请在冰豆网上搜索。
华为笔试题大全
华为
1.static有什么用途?
(请至少说明两种)
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3)在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用
2.引用与指针有什么区别?
1)引用必须被初始化,指针不必。
2)引用初始化以后不能被改变,指针可以改变所指的对象。
3)不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?
如果有,是什么区别?
全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡二叉树?
左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的?
没有回收垃圾资源。
7.什么函数不能声明为虚函数?
constructor函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么?
时间复杂度是O(n^2)。
9.写出floatx与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)
10.Internet采用哪种网络协议?
该协议的主要层次结构?
Tcp/Ip协议
主要层次结构为:
应用层/传输层/网络层/数据链路层/物理层。
11.Internet物理地址和IP地址转换采用什么协议?
ARP(AddressResolutionProtocol)(地址解析協議)
12.IP地址的编码分为哪俩部分?
IP地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。
写出C程序。
循环链表,用取余操作做
14.不能做switch()的参数类型是:
switch的参数不能为实型。
上海华为的一道关于指针方面的编程题
intA[nSize],其中隐藏着若干0,其余非0整数,写一个函数intFunc(int*A,intnSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。
(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)
华为笔试题含答案[软件工程题]
写一个程序,要求功能:
求出用1,2,5这三个数不同个数组合的和为100的组合个数。
如:
100个1是一个组合,5个1加19个5是一个组合。
。
。
。
请用C++语言写。
答案:
最容易想到的算法是:
设x是1的个数,y是2的个数,z是5的个数,number是组合数
注意到0<=x<=100,0<=y<=50,0<=z=20,所以可以编程为:
number=0;
for(x=0;x<=100;x++)
for(y=0;y<=50;y++)
for(z=0;z<=20;z++)
if((x+2*y+5*z)==100)
number++;
cout< 上面这个程序一共要循环100*50*20次,效率实在是太低了 事实上,这个题目是一道明显的数学问题,而不是单纯的编程问题。 我的解法如下: 因为x+2y+5z=100 所以x+2y=100-5z,且z<=20x<=100y<=50 所以(x+2y)<=100,且(x+5z)是偶数 对z作循环,求x的可能值如下: z=0,x=100,98,96,...0 z=1,x=95,93,...,1 z=2,x=90,88,...,0 z=3,x=85,83,...,1 z=4,x=80,78,...,0 ...... z=19,x=5,3,1 z=20,x=0 因此,组合总数为100以内的偶数+95以内的奇数+90以内的偶数+...+5以内的奇数+1, 即为: (51+48)+(46+43)+(41+38)+(36+33)+(31+28)+(26+23)+(21+18)+(16+13)+(11+8)+(6+3)+1 某个偶数m以内的偶数个数(包括0)可以表示为m/2+1=(m+2)/2 某个奇数m以内的奇数个数也可以表示为(m+2)/2 所以,求总的组合次数可以编程为: number=0; for(intm=0;m<=100;m+=5) { number+=(m+2)/2; } cout< 这个程序,只需要循环21次,两个变量,就可以得到答案,比上面的那个程序高效了许多 倍----只是因为作了一些简单的数学分析 这再一次证明了: 计算机程序=数据结构+算法,而且算法是程序的灵魂,对任何工程问 题,当用软件来实现时,必须选取满足当前的资源限制,用户需求限制,开发时间限制等种 种限制条件下的最优算法。 而绝不能一拿到手,就立刻用最容易想到的算法编出一个程序了 事——这不是一个专业的研发人员的行为。 那么,那种最容易想到的算法就完全没有用吗? 不,这种算法正好可以用来验证新算法 的正确性,在调试阶段,这非常有用。 在很多大公司,例如微软,都采用了这种方法: 在调 试阶段,对一些重要的需要好的算法来实现的程序,而这种好的算法又比较复杂时,同时用 容易想到的算法来验证这段程序,如果两种算法得出的结果不一致(而最容易想到的算法保 证是正确的),那么说明优化的算法出了问题,需要修改。 可以举例表示为: #ifdefDEBUG intsimple(); #endif intoptimize(); ...... inafunction: { result=optimize(); ASSERT(result==simple()); } 这样,在调试阶段,如果简单算法和优化算法的结果不一致,就会打出断言。 同时,在程 序的发布版本,却不会包含笨重的simple()函数。 ——任何大型工程软件都需要预先设计良 好的调试手段,而这里提到的就是一种有用的方法。 一个学生的信息是: 姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起,给出一个age,在些链表中删除学生年龄等于age的学生信息。 #include"stdio.h" #include"conio.h" structstu{ charname[20]; charsex; intno; intage; structstu*next; }*linklist; structstu*creatlist(intn) { inti; //h为头结点,p为前一结点,s为当前结点 structstu*h,*p,*s; h=(structstu*)malloc(sizeof(structstu)); h->next=NULL; p=h; for(i=0;i { s=(structstu*)malloc(sizeof(structstu)); p->next=s; printf("Pleaseinputtheinformationofthestudent: namesexnoage\n"); scanf("%s%c%d%d",s->name,&s->sex,&s->no,&s->age); s->next=NULL; p=s; } printf("Createsuccessful! "); return(h); } voiddeletelist(structstu*s,inta) { structstu*p; while(s->age! =a) { p=s; s=s->next; } if(s==NULL) printf("Therecordisnotexist."); else { p->next=s->next; printf("Deletesuccessful! "); } } voiddisplay(structstu*s) { s=s->next; while(s! =NULL) { printf("%s%c%d%d\n",s->name,s->sex,s->no,s->age); s=s->next; } } intmain() { structstu*s; intn,age; printf("Pleaseinputthelengthofseqlist: \n"); scanf("%d",&n); s=creatlist(n); display(s); printf("Pleaseinputtheage: \n"); scanf("%d",&age); deletelist(s,age); display(s); return0; } 2、实现一个函数,把一个字符串中的字符从小写转为大写。 #include"stdio.h" #include"conio.h" voiduppers(char*s,char*us) { for(;*s! ='\0';s++,us++) { if(*s>='a'&&*s<='z') *us=*s-32; else *us=*s; } *us='\0'; } intmain() { char*s,*us; charss[20]; printf("Pleaseinputastring: \n"); scanf("%s",ss); s=ss; uppers(s,us); printf("Theresultis: \n%s\n",us); getch(); } 随机输入一个数,判断它是不是对称数(回文数)(如3,121,12321,45254)。 不能用字符串库函数 /*************************************************************** 1. 函数名称: Symmetry 功能: 判断一个数时候为回文数(121,35653) 输入: 长整型的数 输出: 若为回文数返回值为1esle0 ******************************************************************/ unsignedcharSymmetry(longn) { longi,temp; i=n;temp=0; while(i)//不用出现长度问题,将数按高低位掉换 { temp=temp*10+i%10; i/=10; } return(temp==n); } 方法一 /*--------------------------------------------------------------------------- 功能: 判断字符串是否为回文数字 实现: 先将字符串转换为正整数,再将正整数逆序组合为新的正整数,两数相同则为回文数字 输入: char*s: 待判断的字符串 输出: 无 返回: 0: 正确;1: 待判断的字符串为空;2: 待判断的字符串不为数字; 3: 字符串不为回文数字;4: 待判断的字符串溢出 ----------------------------------------------------------------------------*/ unsignedIsSymmetry(char*s) { char*p=s; longnNumber=0; longn=0; longnTemp=0; /*判断输入是否为空*/ if(*s==\'\\0\') return1; /*将字符串转换为正整数*/ while(*p! =\'\\0\') { /*判断字符是否为数字*/ if(*p<\'0\'||*p>\'9\') return2; /*判断正整数是否溢出*/ if((*p-\'0\')>(4294967295-(nNumber*10))) return4; nNumber=(*p-\'0\')+(nNumber*10); p++; } /*将数字逆序组合,直接抄楼上高手的代码,莫怪,呵呵*/ n=nNumber; while(n) { /*判断正整数是否溢出*/ if((n%10)>(4294967295-(nTemp*10))) return3; nTemp=nTemp*10+n%10; n/=10; } /*比较逆序数和原序数是否相等*/ if(nNumber! =nTemp) return3; return0; } 方法二 /*--------------------------------------------------------------------------- 功能: 判断字符串是否为回文数字 实现: 先得到字符串的长度,再依次比较字符串的对应位字符是否相同 输入: char*s: 待判断的字符串 输出: 无 返回: 0: 正确;1: 待判断的字符串为空;2: 待判断的字符串不为数字; 3: 字符串不为回文数字 ----------------------------------------------------------------------------*/ unsignedIsSymmetry_2(char*s) { char*p=s; intnLen=0; inti=0; /*判断输入是否为空*/ if(*s==\'\\0\') return1; /*得到字符串长度*/ while(*p! =\'\\0\') { /*判断字符是否为数字*/ if(*p<\'0\'||*p>\'9\') return2; nLen++; p++; } /*长度不为奇数,不为回文数字*/ if(nLen%2==0) return4; /*长度为1,即为回文数字*/ if(nLen==1) return0; /*依次比较对应字符是否相同*/ p=s; i=nLen/2-1; while(i) { if(*(p+i)! =*(p+nLen-i-1)) return3; i--; } return0; } 求2~2000的所有素数.有足够的内存,要求尽量快 答案: intfindvalue[2000]={2}; staticintfind=1; booladjust(intvalue) { assert(value>=2); if(value==2)returntrue; for(inti=0;i<=find;i++) { if(value%findvalue[i]==0) returnfalse; } findvalue[find++]; returntrue; } 华为最后三个大题 1.A,B,C,D四个进程,A向buf里面写数据,B,C,D向buf里面读数据, 当A写完,且B,C,D都读一次后,A才能再写。 用P,V操作实现。 2.将单向链表reverse,如ABCD变成DCBA,只能搜索链表一次。 3.将二叉树的两个孩子换位置,即左变右,右变左。 不能用递规(变态! ) 华为笔试题: 2007.03.31华为笔试题之一二 给大家说几个: (感觉华为不过如此,虽然我的分不高,因为很多题我做给他实在是侮辱我的智商) 1。 大意如下: 38头牛中选出3头跑得最快的,使用一个每次只能供6头比赛的场地,要求用最快的方法。 (我给一个最傻瓜的答案,因为我发现一起笔试的有且恰好有38个人,不知道**什么意思? ) 2。 大意如下: 公司职员知道老板的年龄,不知道他女儿的年龄,老板3个女儿的年龄相加为13,相乘为老板年龄,且只有一个女儿的年龄大于5岁,求这4个的年龄? (网上有一大堆答案! ) 3。 原题是2002年以前的一道大学生数学建模竞赛的题,是说一个学生冒雨从宿舍去食堂吃饭,200米的距离内,问是走着少淋雨还是跑着少? (该题简化了大部分的假设,只剩下一点点问题要你解决,做着没劲! ) 选择题: (每题2分,共100分) 1、以下属于物理层的设备是() ;A、中继器 B、以太网交换机 C、桥 D、网关 2、在以太网中,是根据()地址来区分不同的设备的。 A、LLC地址 B、MAC地址 C、IP地址 D、IPX地址 3、以下为传输层协议的是() A、IP B、ICMP C、UDP D、SPX 4、以下对MAC地址描述正确的是() A、由32位2进制数组成 B、由48位2进制数组成 C、前6位16进制由IEEE负责分配 D、后6位16进制由IEEE负责分配 5、以下属于数据链路层功能的是() A、定义数据传输速率 B、定义物理地址 C、描述网络拓扑结构 D、流控制 6、IEEE802.3u标准是指() A、以太网 B、快速以太网 C、令牌环网 D、FDDI网 7、如果要将两计算机通过双绞线直接连接,正确的线序是() A、1--1、2--2、3--3、4--4、5--5、6--6、7--7、8--8 B、1--2、2--1、3--6、4--4、5--5、6--3、7--7、8--8 C、1--3、2--6、3--1、4--4、5--5、6--2、7--7、8--8 D、两计算机不能通过双绞线直接连接 8、在V.35和V.24规程中,控制信号RTS表示() A、数据终端准备好; B、数据准备好; C、数据载体检测; D、请求发送; E、清除发送。 9、路由器作为网络互连设备,必须具备以下哪些特点。 () A、至少支持两个网络接口 B、协议至少要实现到网络层 C、至少支持两种以上的子网协议 D、至少具备一个备份口 E、具有存储、转发和寻径功能 F、一组路由协议 G、必须有较高的协议处理能力 10、路由器的作用有() A、异种网络互连 B、子网间的速率适配 C、连接局域网内两台以上的计算机 D、隔离网络,防止网络风暴,指定访问规则(防火墙) E、子网协议转换 F、加快网络报文的传递速度 G、路由(寻径): 路由表建立、刷新、查找 H、报文的分片与重组 11、调用上一条历史命令的快捷键是() A、CTRL-P B、CTRL-O C、ALT-P D、ALT-O 12、交换机工作在OSI七层的哪一层? () A、一层 B、二层 C、三层 D、三层以上 13、以下对CSMA/CD描述正确的是() A、在数据发送前对网络是否空闲进行检测 B、在数据发送时对网络是否空闲进行检测 C、在数据发送时对发送数据进行冲突检测 D、发生碰撞后MAC地址小的主机拥有发送优先权 14、以下对STOREANDFORWARD描述正确的是() A、收到数据后不进行任何处理,立即发送 B、收到数据帧头后检测到目标MAC地址,立即发送 C、收到整个数据后进行CRC校验,确认数据正确性后再发送 D、发送延时较小 E、发送延时较大 15、以下对交换机工作方式描述正确的是() A、可以使用半双工方式工作 B、可以使用全双工方式工作 C、使用全双工方式工作时要进行回路和冲突检测 D、使用半双工方式工作时要进行回路和冲突检测 16、VLAN的主要作用有() A、保证网络安全 B、抑制广播风暴 C、简化网络管理 D、提高网络设计灵活性 17、在交换机中用户权限分为几个级别() A、1 B、2 C、3 D、4 18、在路由器的配置过程中查询以S开头所有命令的方法是() A、直接使用? B、S? C、S? D、DIRS* 19、第一次配置路由器时可以使用的方法为() A、使用CON口本地配置 B、使用CON口远程配置 C、使用AUX口远程配置 D、使用TELNET远程配置 20、在何种状态下可以为路由器改名() A、普通模式 B、超级模式 C、全局模式 D、接口模式 21、某公司申请到一个C类IP地址,但要连接6个的子公司,最大的一个子公司有26台计算机,每个子公司在一个网段中,则子网掩码应设为()。 A、255.255.255.0 B、255.255.255.128 C、255.255.255.192 D、255.255.255.224 22、与10.110.12.29mask255.255.255.224属于同一网段的主机IP地址是()。 A、10.110.12.0 B、10.110.12.30 C、10.110.12.31 D、10.110.12.32 23、ARP协议的作用是() A、将端口号映射到IP地址 B、连接IP层和TCP层 C、广播IP地址 D、将IP地址映射到第二层地址 24、当路由器接收的IP报文的TTL值等于1时,采取的策略是() A、丢掉该分组 B、将该分组分片 C、转发该分组 D、以上答案均不对 25、在NetWare网络中,客户需要访问某个类型的服务器时,首先要发送一个()广播报文来寻找服务器 A、Rip B、Sap C、Gns D、Arp 26、IPX地址网络地址有()个字节 A、10 B、8 C、4 D、6 27、对于帧中继描述正确的是() A、使用具有本地意义的DLCI描述PVC B、使用具有全局意义的DLCI描述PVC C、使用具有本地意义的DLCI描述SVC D、使用具有全局意义的DLCI描述SVC 28、对于INVERSEARP的描述正确的是() A、通过广播方式解析对端网络地址 B、通过多播方式解析对端网络地址 C、通过LMI信令解析对端网络地址 D、通过广播方式解析对端DLCI 29、下列对于PAP协议描述正确的是() A、使用两步握手方式完成验证 B、使用三步握手方式完成验证 C、使用明文密码进行验证 D、使用加密密码进行验证 30、X.25与帧中继对比描述正确的是() A、X.25是面向连接的协议,传输正确性、稳定性高于帧中继 B、X.25具有两层结构,较帧中继简单 C、X.25对于IP而言传输效率低于帧中继 D、X.25可以提
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华为 笔试 大全
![提示](https://static.bdocx.com/images/bang_tan.gif)