2022年华为面试题.docx

上传人:C****o 文档编号:12870568 上传时间:2022-04-26 格式:DOCX 页数:24 大小:64.75KB
返回 下载 相关 举报
2022年华为面试题.docx_第1页
第1页 / 共24页
2022年华为面试题.docx_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《2022年华为面试题.docx》由会员分享,可在线阅读,更多相关《2022年华为面试题.docx(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精品学习资源1.用一个双向链表写一个快速排序算法/ 2.#ifdef#define_DEBUGassertexprdoifexpr 欢迎下载精品学习资源, FILE, LINE;printfAssertion%sfailedin%s,line%dnexit0; 欢迎下载精品学习资源#else#defineassertexpr #endifwhile0;欢迎下载精品学习资源 FILE, LINE都是 C 里自带的宏 ,分别表示当前的文件名和全部行,而调用 printf 函数 的 时 候 也 应 该 把 assertexpr 中 的 expr也 打 印 出 来 wanguodu好 似 忘 了 .

2、而dowhile0呵呵 ,的确只循环一次 是为了防止在进行宏替换的时候出错./ for ; 1;这个程序有什么问题,会显现什么结果?有 1,2,.始终到 n 的无序数组 ,求排序算法 ,并且要求时间复杂度为On, 空间复杂度 O1, 使用交换 ,而且一次只能交换两个数./4. 以下代码有什么问题?C+ 易 structTestTestintTestvoidfun;voidmainvoidTesta1;a.fun;Testb;/ 应当是 Test b;类是结构体的扩展 ,在类中封装了对数据成员的操作,缺省的成员为私有的, 而结构体为公有欢迎下载精品学习资源的,这就是它们的区分 ,对构造函数的调用

3、,假如没有参数 ,是不需要加上括号的 ,假如加了括号 , 就不是定义一个对象了,而是声明白一个函数 ,返回该类型 ,所以上面的 Testb, 实际上是调用一个函数名为 b,返回类型为 Test 的函数 ,而不是创建了一个对象b,去掉括号后 ,就是调用的没有形参的构造函数;b.fun;/ b 不是 Test 的实例对象/5. 以下代码有什么问题?C+ 易couttrue.1:1endl;/ 类型不同 ,必需保证 1 和1这两部分返回的类型一样/3.以下两条输出语句分别输出什么?C+ 难 floata=;coutintaendl;/ 1coutint&aendl;/ a 内存里的是多少就是多少co

4、utboolalphainta=int&aendl;/输出什么? boolalpha 表示什么 ,/ boolalpha 输出 bool 字母, false floatb=;/用什么头包含 .coutintbendl;/ 0 coutint&bendl;/ 0coutboolalphaintb=int&bendl;/输出什么?fasle floatf=;int&fandint&f对于后者 ,就是取地址后强制转换为int,应当没有问题 ;但是前者 ,将强制转换成int& , int 引用类型;我们知道,float 在内存中采纳的是ieee745方式:0-00000000, 1-0000803F,

5、2-00000040.也就是说 ,对于 f=, 就转换后仍是0,但是对于 f=, 转换后的结果为 0x3f800000关键是看清晰这是一个强制转换,同时要明白 float 类型的存贮格式与int 不同/六、编写类 String 的构造函数、析构函数和赋值函数25 分已知类 String 的原型为:classStringpublic:Stringconstchar*str=NULL;/一般构造函数StringconstString&other;/拷贝构造函数Stringvoid;/析构函数String&operate=constString&other;/赋值函数private:欢迎下载精品学习

6、资源char*m_data;/用于储存字符串;请编写 String 的上述 4 个函数;/String 的析构函数String:Stringvoid/3 分deletem_data;/由于 m_data 是内部数据类型,也可以写成deletem_data;/String 的一般构造函数String:Stringconstchar*str/6 分ifstr=NULLm_data=newchar1;/*m_data=0 ;假设能加NULL判定就更好elseintlength=strlenstr;m_data=newcharlength+1;strcpym_data,str;/假设能加NULL判定就

7、更好/拷贝构造函数String:StringconstString&other/3 分intlength=strlenother.m_data;m_data=newcharlength+1;/假 设 能 加NULL判 断 就 更好strcpym_data,other.m_data;/赋值函数String&String:operate=constString&other/13 分/1检查自赋值/4 分ifthis=&other return*this;/2释放原有的内存资源/3 分deletem_data;/3安排新的内存资源,并复制内容/3 分欢迎下载精品学习资源intlength=strle

8、nother.m_data;m_data=newcharlength+1;/假设能加NULL判定就更好strcpym_data,other.m_data;/4返回本对象的引用/3 分return*this;/ typedefstructinta:2;intb:2;intc:1;test;testt;t.a=1;printf%d,t.a;t.b=3;printf%d,t.b;t.c=1;printf%d,t.c;printf%d,t.a;=1t.a 为 01,输出就是 1printf%d,t.b;=-1t.b 为 11,输出就是 1printf%d,t.c;=-1t.c 为 1,输出也是 -13

9、 个都是有符号数int 嘛;这是位扩展问题,可以查看谭浩强的c 程序设计关于位段的部分/ intmainprintfThisisline1n; return0;printfThisisline2n;不添加新函数,不修改main 函数,不引入新文件,让程序输出: Thisisline2#defineprintfAifstrcmpA,Thisisline1n=0printfThisisline 2n/有以下程序main union unsignedint n;unsignedu1;char c;ul.c= A ;欢迎下载精品学习资源printf%cn,u1.n;执行后输出结果是A) 产生语法错 B

10、随机值CAD6545以下程序段中, 能够通过调用函数fun,使 main 函数中的指针变量p 指向一个合法的整型单元的是AmainBmain int *p;int *p;fun&p;funp;intfunint*pintfunint*pints;p=&s;ints;*p=&s;C#includeD#include mainmainint*p;fun&p;int funp;*p;intfunint*pintfunint*p*p=int*malloc2; p=int*mallocsizeoint;答案 C49以下表达中不正确的选项是A 语言中的文本文件以ASC 码形式储备数据B 语言中对二进制文件

11、的拜访速度比文本文件快C语言中,随机读写方式不适用于文本文件D 语言中,次序读写方式不适用于二进制文件选 D,次序读写方式可以读二进制文件啊/有一个数组 a1000 存放 0-1000; 要求每隔二个数删掉一个数,到末尾时循环至开头连续进行,求最终一个被删掉的数的原始下标位置;以 7 个数为例:0,1,2,3,4,5,6,70-1-2 删除 -3-4-5 删除 -6-7-0 删除,如此循环直到最终一个数被删除;#includeusingnamespacestd; #definenull0structnodeintdata; node*next;欢迎下载精品学习资源;intmainnode*he

12、ad=newnode; head-data=0;head-next=null; node*p=head;forinti=1;idata=i;tmp-next=null; head-next=tmp; head=head-next;head-next=p; whilep.=p-nextp-next-next=p-next-next-next; p=p-next-next;coutdata; return0;人家要求就是用数组,我程序的答案也是603#include constintsize=1000; voidmainintarrsize;intcurrentSize=size;/指示当前数组中

13、仍剩余有效元素的个数; intcount=0;/计数用;forintk=0;ksize;k+ arrk=k;forinti=0;i=0&count2 count+; elseifcount=2arri=-1;/ 删除此时的元素;欢迎下载精品学习资源currentSize-;/ 有效元素减一; count=0;/ 并将计数值归零;forintj=0;jsize;j+ifarrj.=-1couttheresultis:jendl; break;/有一个数组 AnSize, 其元素含有多个 0,求一函数将全部的非零元素移到前面不分大小 ,按原位置前移 .并返回非零函数的个数i.#includestd

14、afx.h #include #include#defineMAX_NUM20/1 解法/intmoveintarray,intnsize/intnum=0;/forinti=0;insize;i+/ifarrayi.=0/arraynum=arrayi;/ifnum.=i/ arrayi=0;/ num+;/ / / returnnum;/2 解法/intmoveintarray,intnsize/ inttemp20;/ forinti=0;insize;i+/ tempi=arrayi;/ arrayi=0;/ 欢迎下载精品学习资源/ intnum=0;/ forintj=0;jnsiz

15、e;j+/ iftempj.=0/ arraynum=tempj;/num+;/ / /returnnum;/3 解法/intmoveintarray,intnsize/ intnum=0;/ forinti=0;insize;i+/ ifarrayi=0/ forintj=i+1;jnsize;j+/ ifarrayj.=0/ inttemp=arrayi;/ arrayi=arrayj;/arrayj=temp;/ num+;/ break;/ / / / / returnnum;/4 解法intmoveintarray,intnsize intnum=0,temp=0;forinti=0

16、;insize;i+ ifarrayi.=0num+;forintj=0;jnsize;j+ ifarrayj.=0 arraytemp=arrayj;temp+;fortemp;tempnsize;temp+ arraytemp=0;returnnum;欢迎下载精品学习资源intmainintargc,char*argvintaMAX_NUM=0,10,0,0,451,321,0,0,7,8,9,0,21,2,0,5,0,44,22,0,;forinti=0;iMAX_NUM;i+ coutsetw4ai;coutendl;intnZero=movea,MAX_NUM; coutnZeroe

17、ndl;fori=0;iMAX_NUM;i+ coutsetw4ai;coutendl; return0;/ charResult,arg1=8;Result=arg14; Result 的值是? -128#defineDIVa,ba/bintarg1=7,arg2=5; floatvalue;value=floatDIVarg1*arg2,arg1-arg2/2; value 值?3unionFLAG欢迎下载精品学习资源structcharModel1;charModel2;欢迎下载精品学习资源longusVal;myFlag;myFlag 占用内存大小为几位?4chara6=abcde;*

18、 a+5=?0 unsignedunsignedcharchara5;*p,*q;a0=1;a1=2;a2=3;欢迎下载精品学习资源a3=4;a4=5;p=a;q=&a3;aq-p=.4与表达式 value=arg12+1 结果等同的是?c a:value=arg12+1b:value=arg1*4+1c:value=arg12+1d:value=arg1*3switchc 中 c 的类型不能是?d a: charb:longc:unsigned d:double欢迎下载精品学习资源enumstring;x1,x2,x3=10,x4, x5欢迎下载精品学习资源enumstringx=x5; x

19、=.12下面函数要实现打印helloworld 的功能,哪里有错误?void*GetMemoryvoidcharstr=helloworld; returnstr;返回栈内存voidTestvoidchar*str=NULL;str=char*GetMemory; printfstr;下面哪里有错误?#defineBUFSIZE256欢迎下载精品学习资源charBufBUFSIZE voidmainintlen=300; unsignedchar*pInput;pInput=unsignedchar*malloclen; sprintfpInput,%s,helloeorld; memcpyB

20、uf,pInput,len;它溢出上边的定义少了个 ; memcpy 参数错误fori=1;i+4; 后, i=.5请在三位数的正整数中查找符合下条件的: 完全平方数,又有2 个数字相同如 144, 676voidmaininta;intb;intx,y,z; a=sqrt1000;forinti=10;ia;i+b=i*i; z=b; x=z%10;z=z/10; y=z%10;z=z/10; ifx=y|x=z|y=z coutbname,name; temp1-num=num; temp1-age=age; temp1-next=NULL: ifNULL=headtemp1-prev=.

21、; head=.;elsetemp2=head; whiletemp2-next.=NULLtemp2=temp2-next; temp1-prev=.;temp2-next=.;return0;temp1-prev=NULL; head=temp1;temp1-prev=temp2; temp2-next=temp1;/ char型, bool 型,float 型的变量和零值比较的c+ 语句分别是什么比方inti; ifi=0 或 ifi.=0/欢迎下载精品学习资源实数数列:一个实数数列共有N 项,已知:Ai=Ai-1-Ai+1/2+d其中, 1iNN60其中的 Ai , Ai-1 , Ai

22、+1 中, i 是下标;使用键盘输入 NdA1ANm,求出 Am,并输出;/1.Arethefollowingdefinitionsvalid.Whyorwhynot.conststd:stringhello=Hello;conststd:stringmessage=hello+,world+.;2.Arethefollowingdefinitionsvalid.Whyorwhynot. conststd:stringexclam=.;conststd:stringmessage=Hello+,world+exclam;2 是错误的编译器报错:invalidoperandsoftypescon

23、stchar6andconstchar8tob inaryoperator+1. 中 hello+,world后 hello+,world 就 变 成 是 string 类 型 了 , 所 以 hello+,world+.; 就是 string 类型用string:operator+conststring&对hello+,world与.进行字符串连结操作2. 中Hello+,world中间的 + 是标准运算符 ,所以处理不了两个char* 的相加操作由于 + 操作符的重载版本是: string:operator+char*所以, string 类对象在前, char* 在后是可以的,反过来就不

24、行了!/将一个单链表反序 ,只有一个链表头节点head,仍有两个指向节点元素类型的指针p 和 q,不许申请新的节点及指针变量什么的.用 c 或 c+实现算法 ./有 17 枚硬币分 3 次第一次分其中的1 2其次次分其中的1 3第三次分其中的1 9怎么分吧?1/2:1/3: 1/9=9:6:2加 1 枚凑成 18,第一次分 9 枚,仍剩 9 枚;然后分 6 枚,仍剩 3 枚;第三次分 2 枚,仍剩 1欢迎下载精品学习资源枚;搞好这一枚物归原主;/对于任意输入的一个INT数 N在屏幕上面输出一个2N-1 的矩阵例如N=3输出1111112221123211222111111讲下大致的思路也可以v

25、oidoutputintninti,j; fori=0;i2*n-1;i+forj=0;j2*n-1;j+inta=i=n-1.i:2*n-2-i; intb=j=n-1.j:2*n-2-j; intresult=ab.a+1:b+1; coutresult;coutendl;/任务:编号为 1 52 的纸牌,正面对上,从第2 张开头,以 2 为基数,是 2 的倍数的牌翻一次,直到最终一张牌;然后从第3 张开头,以 3 为基数,是 3 的倍数的翻一次,直到最终一张牌,然后再依次4 的倍数的牌翻一次, 5 的、 6 的.直到以 52 为基数的翻过,输出这是正面对上的牌有那些;intcard53;

26、forintk=1;k=52;k+cardk=0;/0 表示正面对上 . forinti=2;i=52;i+forintj=i;j=52;j+=icardj=1-cardj;/翻转一次 .cout 以下牌正面朝上 :endl; forintm=1;m=52;m+ifcardm=0欢迎下载精品学习资源coutm;coutendl;/一道网程题目同步辅导上有这样一道题目:某一分组交换网络中,分组长度为8bit,输出线路的传输速率为2Mbps ,每秒钟传输分组数为 6000 组,就交换机在交换过程中的推迟时间为A 、8usB4usC3usD7us每个分组为 8bit ,所以以 2m 的网络速度发送,

27、一个分组需要4us 的延时,这个很简洁,但4us 是最逗延时,也就是说,低于此延时数据就不能牢靠发送,一次最快速度算,1s/4us250000,即每秒最快可以发送250000 个分组,由于 6000250000 ,所以可以以此速度正常发送;选 b;我觉得这个题的问法有点问题;应当是最小延时;/求 ijk+kji=1333的 i、j、k 的程序 i、j、k 是 1 位的整数;inti,j,k;intm; fori=0;i10;i+forj=0;j10;j+fork=0;k10;k+m=i*101+j*20+k*101; ifm=1333printfi=%d,j=%d,k=%dn,i,j,k;欢迎下载

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁