华为C++笔试题_第1页
华为C++笔试题_第2页
华为C++笔试题_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、I. static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不 变。2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用 函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3)在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。 那就是,这个函数被限制在声明它的模块的本地范围内使用2引用与指针有什么区别?1)引用必须被初始化,指针不必。2)引用初始化以后不能被改变,指针可以改变所指的对象。3)不存在指向空值的引用,但是存在指向空值的指针。3. 描述实时系统的基本特性在特定时间内完成特定的任务,实时性与

2、可靠性。4. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。5. 什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。6. 堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。7. 什么函数不能声明为虚函数?con structor函数不能声明为虚函数。8. 冒泡排序算法的时间复杂度是什么?时间复杂度是0(nT)。9. 写出float x与“零值”比较的if语句。if(x>0.000001 && xv-0.000001)10.1 nternet采用哪种网络协议?该协议的主要层次结构?Tcp/ip

3、协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。II. Internet物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)(地址解析協議)12.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与 上之后才能区分哪些是网络位哪些是主机位。13. 用户输入M,N值,从1至N开始顺序循环数数,每数到 M输出该数值,直 至全部输出。写出C程序。循环链表,用取余操作做14. 不能做switch()的参数类型是:switch的参数不能为实型。1.以下三条输出语句分别输出什么?C易char str

4、1= "abc"char str2= "abc"const char str3 = "abc"const char str4 = "abc"const char* str5 = "abc"const char* str6 = "abc"cout << boolalpha << ( str1=str2 ) << endl; / 输出什么?cout << boolalpha << ( str3=str4 ) <&l

5、t; en dl; / 输出什么?cout << boolalpha << ( str5=str6 ) << en dl; / 输出什么?文章出自 2. 非C+内建型别A和B,在哪几种情况下B能隐式转化为A ? C+中等 答:a. class B : public A / B公有继承自A,可以是间接继承的b. class B operator A( ); / B实现了隐式转化为 A的转化c. class A A( const B& );/ A 实现了 non-explicit的参数为B (可以有其他带默 认值的参数)构造函数d. A& ope

6、rator= ( const A& ); /赋值操作,虽不是正宗的隐式类型转换,但也可 以勉强算一个3. 以下代码中的两个sizeof用法有问题吗? C易void UpperCase( char str ) /将str中的小写字母转换成大写字母for( size_t i=0; i<sizeof(str)/sizeof(strO); +I )if( 'a'<=stri && stri<='z')stri -= ('a'-'A');char str = "aBcDe"cou

7、t << "str 字符长度为:"<< sizeof(str)/sizeof(strO) << endl;UpperCase( str );cout << str << en dl;4. 以下代码有什么问题?C难void char2Hex( char c ) /将字符以16进制表示char ch = c/0x10 + 'O' if( ch > '9' ) ch += ('A'-'9'-1);char cl = c%0x10 + 'O

8、9; if( cl > '9' ) cl += ('A'-'9'-1);cout << ch << cl << ''char str = "I love 中国"for( size_t i=0; i<strle n( str); +I )char2Hex( stri);cout << en dl;5. 以下代码有什么冋题?C+易struct TestTest( int ) Test() void fun() ;void mai n( void )Test

9、 a(1);a. fu n();Test b();b. fu n();6. 以下代码有什么冋题? C+易cout << (true?1:"1") << endl;7. 以下代码能够编译通过吗,为什么?C+易un sig ned int const size1 = 2;char str1 size1 ;un sig ned int temp = 0;cin >> temp;un sig ned int const size2 = temp;char str2 size2 ;8. 以下代码中的输出语句输出0吗,为什么? C+易struct C

10、LSint m_i;CLS( int I ) : m(i) CLS()CLS(0);CLS obj;cout << obj.m_i << en dl;9. C+中的空类,默认产生哪些类成员函数?C+易答:class Emptypublic:Empty();/缺省构造函数Empty( const Empty& );/ 拷贝构造函数Empty();/析构函数Empty& operator=( const Empty& ); / 赋值运算符Empty* operator&();/ 取址运算符const Empty* operator&(

11、) con st; / 取址运算符 const;10. 以下两条输出语句分别输出什么?C+难float a = 1.0f;cout << (in t)a << en dl;cout << (int&)a << en dl;cout << boolalpha << ( (int)a = (int&)a ) << endl; / 输出什么?Float b = O.Of;cout << (in t)b << en dl;cout << (int&)b <

12、;< en dl;cout << boolalpha << ( (int)b = (int&)b) << endl; / 输出什么?11. 以下反向遍历array数组的方法有什么错误?STL易vector array;array.push_back( 1 );array.push_back( 2 );array.push_back( 3 );for( vector:size_type i=array.size()-1; i>=0; -I ) / 反向遍历 array 数组 _cout << arrayi << en

13、 dl;12. 以下代码有什么问题?STL易typedef vector In tArray;In tArray array;array.push_back( 1 );array.push_back( 2 );array.push_back( 2 );array.push_back( 3 );删除array数组中所有的2for( In tArray:iterator itor=array.begi n(); itor!=array.e nd(); +itor )if( 2 = *itor ) array.erase( itor );13. 写一个函数,完成内存之间的拷贝。考虑问题是否全面答:v

14、oid* mymemcpy( void *dest, const void *src, size_t count ) _char* pdest = static_cast<char*>( dest );const char* psrc = static_cast<c onst char*>( src );if( pdest>psrc && pdest<psrc+cout )能考虑到这种情况就行了 for( size_t i=co un t-1; i!=-1; -I )pdesti = psrci;elsefor( size_t i=0; i&

15、lt;co unt; +I )pdesti = psrci;return dest;int main( void )char str = "0123456789"mymemcpy( str+1, str+0, 9 );cout << str << en dl;system( "Pause");return 0;本试题仅用于考查C+/C程序员的基本编程技能。内容限于 C+/C常用语法, 不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及 对C+/C的理解程度,但不能反映考生的智力和软件开发能力。笔试时间90分钟。

16、请考生认真答题,切勿轻视。、请填写BOOL, float,指针变量与“零值”比较的if语句。(10分)提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如int变量n与 “零值”比较的if语句为:if ( n = 0 ) if ( n != 0 ) 以此类推。请写出BOOL flag与“零值”比较的if语句: 请写出float x与“零值”比较的if语句: 请写出char *p与“零值”比较的if语句:、以下为 Windows NT下的32位C+程序,请计算sizeof的值(10分)char str =“ Hellochar *p = str ;int n = 10;请计算

17、sizeof (str )=sizeof ( p )=sizeof ( n )=void Func ( char str100) 请计算sizeof( str )= void *p = malloc( 100 );请计算sizeof ( p )=三、简答题(25分)1、头文件中的ifndef/define/endif干什么用?2、#include 和 #include “filename.h” 有什么区别?3、const有什么用途?(请至少说明两种)exter n “ C” 声4、在C+程序中调用被C编译器编译后的函数,为什么要加 明?5、请简述以下两个for循环的优缺点/第一个for (i=

18、0; i+;)if (con diti on)DoSometh in g();elseDoOtherth in g();/第二个 if (con diti on)for (i=0; i+;) DoSometh in g();elsefor (i=0; i+;) DoOtherth in g();优点:缺点:优点:缺点:四、有关内存的思考题(20分)void GetMemory(char *p)p = (char *)malloc(100);void Test(void)char *str = NULL;GetMemory(str);strcpy(str, "hello world&q

19、uot;);prin tf(str);请问运行Test函数会有什么样的结果?答:char *GetMemory(void)char p = "hello world"return p;void Test(void)char *str = NULL;str = GetMemory();prin tf(str);请问运行Test函数会有什么样的结果?答:Void GetMemory2(char *p, i nt num)*p = (char *)malloc( nu m);void Test(void)char *str = NULL;GetMemory(& str,

20、100);strcpy(str, "hello");prin tf(str);请问运行Test函数会有什么样的结果?答:void Test(void)char *str = (char *) malloc(100);strcpy(str, “ hello ” );free(str);if(str != NULL)“”strcpy(str,“world ” );prin tf(str);请问运行Test函数会有什么样的结果?答:五、编写strcpy函数(10分)已知strcpy函数的原型是char *strcpy(char *strDest, const char *strS

21、rc);其中strDest是目的字符串,strSrc是源字符串。(1) 不调用C+/C的字符串库函数,请编写函数strcpy(2) strcpy能把strSrc的内容复制到strDest,为什么还要char *类型的返回值?六、编写类String的构造函数、析构函数和赋值函数(25分)已知类String的原型为:class Stringpublic:String(const char *str = NULL); / 普通构造函数String(const String &other); / 拷贝构造函数 String(void); / 析构函数Stri ng & operate

22、=(co nst Stri ng & other); / 赋值函数private:char *m_data; /用于保存字符串 ; 一请编写String的上述4个函数。附录C : C+/C试题的答案与评分标准一、请填写BOOL, float,指针变量与“零值”比较的if语句。(10分)请写出BOOL flag与“零值”比较的if语句。(3分)标准答案:if ( flag )if ( !flag )如下写法均属不良风格,不得分。If (flag = TRUE)if (flag = 1 )if (flag = FALSE)if (flag = 0)请写出float x与“零值”比较的if语

23、句。(4分)标准答案示例:const float EPSINON = 0.00001;if (x >= - EPSINON) && (x <= EPSINON)不可将浮点变量用“=”或“!= ”与数字比较,应该设法转化成“ >=”或“<= 此类形式。如下是错误的写法,不得分。If (x = 0.0)if (x != 0.0)请写出char *p与“零值”比较的if语句。(3分) 标准答案:if (p = NULL)if (p != NULL)如下写法均属不良风格,不得分。If (p = 0)if (p != 0)if (P)if (!)二、以下为 Win

24、dows NT下的32位C+程序,请计算sizeof的值(10分)char str =“ Hello ” ;char *p = str ;int n = 10;请计算sizeof (str ) = 6 ( 2 分)sizeof ( p ) = 4 ( 2 分)sizeof ( n ) = 4 ( 2 分)void Func ( char str100)请计算sizeof( str ) = 4 ( 2 分)void *p = malloc( 100 );请计算sizeof ( p ) = 4 ( 2 分)三、简答题(25分)1、头文件中的ifndef/define/endif干什么用? ( 5分

25、)答:防止该头文件被重复引用。2、 #include 和 #include “filename.h” 有什么区别? ( 5 分)华为的CC+面试题Q1:请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图?:Q2:请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用?:TCP 与 UDP 呢?:总得来说前面两道题目还是比较简单的!:Q3:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实:现的?:Q4:请问C+的类和C里面的struct有什么区别?:Q5:请讲一讲析构函数和虚函数的用法和作用?:Q6:全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器:是

26、怎么知道的?:Q7:些寄存器的题目,我忘记了具体实什么题目,主要好像是寻址和内:存管理等一些知识,不记得了。:Q8:8086是多少尉的系统?在数据总线上是怎么实现的?还有一些硬件方:面的知识我既不清楚了。:一般建议参加华为的研发面试的同学先要准备一下相关的知识,软件的主要:是看看C和数据结构方面的,硬件模电,数电和微机原理两道c面试题1、一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些 学生信息连在一起,给出一个age,在些链表中删除学生年龄等于age的学生信 息。程序代码# I nelude "stdio.h"# I nclude "conio

27、.h"struct stuchar n ame20;char sex;int no;int age;struct stu * n ext;*li nklist;struct stu *creatlist(i nt n)int I;/h为头结点,p为前一结点,s为当前结点struct stu *h,*p,*s;h = (struct stu *)malloc(sizeof(struct stu);h-> next = NULL;p=h;for(i=0;i< n;i+)s = (struct stu *)malloc(sizeof(struct stu);p->n ex

28、t = s;prin tf("Please in put the in formatio n of the stude nt: n ame sex no age n"); sca nf("%s %c %d %d",s->n ame,&s->sex,&s->no,&s->age);s-> next = NULL;p = s;prin tf("Create successful!");return(h);void deletelist(struct stu *s,int a)struc

29、t stu *p;while(s->age!=a)p = s;s = s->n ext;if(s=NULL)prin tf("The record is n ot exist.");elsep->n ext = s->n ext;prin tf("Delete successful!");void display(struct stu *s)s = s->n ext;while(s!=NULL)prin tf("%s %c %d %dn",s->n ame,s->sex,s->n o,s->age); s = s->n ext;int main()struct stu *s;int n, age;prin tf("Please in put the len gth of seqlist:n");sca nf("%d",&n);s = creatlist( n);display(s);

温馨提示

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

评论

0/150

提交评论