华为C++笔试题
华为C++笔试题
华为C++笔试题1. static 有什么用途?(请至少说明两种)1) 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内 (但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用2. 引用与指针有什么区别?1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3. 描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。
5. 什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6. 堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。
7. 什么函数不能声明为虚函数?constructor 函数不能声明为虚函数。
8. 冒泡排序算法的时间复杂度是什么?时间复杂度是O(n^2) 。
9. 写出float x 与“零值”比较的if 语句。
if(x>0.000001&&x<-0.000001)10.Internet 采用哪种网络协议?该协议的主要层次结构?Tcp/Ip 协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。
11.Internet 物理地址和IP 地址转换采用什么协议?ARP (Address Resolution Protocol) (地址解析協議)12.IP 地址的编码分为哪俩部分?IP 地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
13.用户输入M,N 值,从 1 至N 开始顺序循环数数,每数到M 输出该数值,直至全部输出。
华为C++笔试题
1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别?1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。
7.什么函数不能声明为虚函数?constructor函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么?时间复杂度是O(n^2)。
9.写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)10.Internet采用哪种网络协议?该协议的主要层次结构?Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。
11.Internet物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)(地址解析協議)12.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。
写出C程序。
华为C语言招聘笔试题目_笔试题目doc
华为C 语言招聘笔试题目_笔试题目一、对或错(用“T”代表正确,用“F”代表错误,并解释原因。
每项4 分,共20 分)1.有一个数组定义int a={{1} ,{2,3 } };值为0。
( )2.int (*ptr)() ,ptr 是一维数组的名称。
( )3.指针可以在任何情况下进行操作。
( )4.在switch(c) 语句中,c 可以是int 、long、char、float 、unsigned int 类型。
( )5、#定义打印(x) printf( 编号,#x,是)第二,填空(共30 分)1、在windows 下,写运行结果,每空2 分,共10 分。
你好;char * p=strint n=10sizeof(str)=(sizeof(p)=(sizeof(n)=(void func(char 字符串){ }sizeof(str)=(2、void setmemory(char **p ,int num){ * p=(char *)malloc(num) ;}空隙测试(空隙){字符*字符串=空;getmemory( 字符串,100);strcpy(str ,hello);printf(str) ;}运行测试功能的结果是什么?()10 分3.设置int arr={6 ,7,8,9,10}。
int * ptr=arr(ptr)=123 ;printf(%d ,%d,*ptr,*(ptr)) ;三、程序设计试题(第一项20 分,第二项30 分)1.编写函数intstrcmp (char * source,char * dest ),而不使用库函数。
相等返回0,不相等返回-1;2.写一个函数int fun(char *p) 来判断一个字符串是否是回文。
它返回1 而不是0。
错误返回-1。
华为C++笔试题
华为C++笔试题准备去华为面试的小伙伴已经准备好了吗?下面是小编整理的华为C++笔试题,希望对你有帮助!华为C++笔试题【一】 1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用。
2.引用与指针有什么区别?1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。
7.什么函数不能声明为虚函数?constructor函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么?时间复杂度是O(n^2)。
9.写出float x 与“零值”比较的if语句。
if(x>0.000001&x 10.Internet采用哪种网络协议?该协议的主要层次结构?Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。
11.Internet物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)(地址解析协议)12.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
华为c 笔试题及答案
华为c 笔试题及答案华为C笔试题及答案一、简介华为C是华为公司面向应届大学生的笔试选拔考试,旨在评估应聘者的综合素质和潜力。
本文将介绍华为C笔试题目及答案,帮助应聘者更好地准备华为C笔试。
二、题目及答案1. C语言基础题目:请编写一个程序,输出1-100之间的所有偶数。
答案:#include <stdio.h>int main() {int i;for(i=1; i<=100; i++) {if(i%2 == 0) {printf("%d ", i);}}return 0;}2. 数据结构与算法题目:请说明哈希表的原理及其应用场景。
答案:哈希表是一种根据关键字直接访问内存地址的数据结构。
其原理是通过哈希函数将关键字转换为一个索引值,然后将数据存储在对应索引值的位置上。
哈希表的应用场景包括缓存系统、数据库索引、字典等。
3. 计算机网络题目:请解释TCP和UDP协议的区别及其适用场景。
答案:TCP和UDP都是传输层的协议,但有一些区别。
TCP是面向连接的可靠传输协议,能够保证数据的完整性和顺序,适用于需要可靠传输的场景,如文件传输。
UDP是无连接的不可靠传输协议,不保证数据的完整性和顺序,适用于实时性要求较高的场景,如音视频传输。
4. 数据库题目:请解释事务的概念,并说明ACID原则。
答案:事务是数据库操作的最小单位,是一组对数据库进行的操作。
ACID是事务的四个基本属性,分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),保证事务的可靠性和稳定性。
5. 操作系统题目:请解释什么是进程和线程,并说明它们的区别。
答案:进程是操作系统进行资源分配和调度的最小单位,是程序在执行过程中的一个实例。
线程是进程中的一条执行路径,是CPU调度的最小单位。
进程之间相互独立,拥有独立的地址空间,而线程共享同一地址空间。
2023年华为最新笔试题编程题及答案
问题:输入一个字符串,用指针求出字符串的长度。
答案:#include <stdio.h>int main(){char str[20], *p;int length=0;printf(“Please input a string: ”);gets(str);p=str;while(*p++){length++;}printf(“The length of string is %d\n”, length);return 0;}问题:使用C语言实现字符串中子字符串的替换描述:编写一个字符串替换函数,如函数名为 StrReplace(char* strSrc, char* strFind,char* strReplace),strSrc为原字符串,strFind是待替换的字符串,strReplace为替换字符串。
举个直观的例子吧,如:“ABCDEFGHIJKLMNOPQRSTUVWXYZ”这个字符串,把其中的“RST”替换为“ggg”这个字符串,结果就变成了:ABCDEFGHIJKLMNOPQgggUVWXYZ答案一:#include <stdio.h>#include <string.h>void StrReplace(char* strSrc, char* strFind, char* strReplace);#define M 100;void main(){char s[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";char s1[]="RST";char s2[]="ggg";StrReplace(s,s1,s2);printf("%s\n",s);}void StrReplace(char* strSrc, char* strFind, char* strReplace){int i=0;int j;int n=strlen(strSrc);int k=strlen(strFind);for(i=0;i<n;i++){if(*(strSrc+i)==*strFind){for(j=0;j<k;j++){if(*(strSrc+i+j)==*(strFind+j)){*(strSrc+i+j)=*(strReplace+j); }else continue;}}}}答案二:#include <stdio.h>#define MAX 100StrReplace(char *s, char *s1, char *s2) {char *p;for(; *s; s++) {for(p = s1; *p && *p != *s; p++);if(*p) *s = *(p - s1 + s2);}}int main(){char s[MAX]; //s是原字符串char s1[MAX], s2[MAX]; //s1是要替换的//s2是替换字符串puts("Please input the string for s:");scanf("%s", s);puts("Please input the string for s1:");scanf("%s", s1);puts("Please input the string for s2:");scanf("%s", s2);StrReplace(s, s1, s2);puts("The string of s after displace is:"); printf("%s\n", s);return 0;}答案三:#include <stdio.h>#include <stdlib.h>#include <string.h>#define M 100void StrReplace(char* strSrc, char* strFind, char* strReplace);int main(){char s[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";char s1[]="RST";char s2[]="gggg";StrReplace(s,s1,s2);printf("%s\n",s);return 0;}void StrReplace(char* strSrc, char* strFind, char* strReplace){while(*strSrc != '\0'){if(*strSrc == *strFind){if(strncmp(strSrc,strFind,strlen(strFind)) == 0 ){int i = strlen(strFind);int j = strlen(strReplace);printf("i = %d,j = %d\n",i,j);char *q = strSrc + i;printf("*q = %s\n",q);while((*strSrc++ = *strReplace++) != '\0');printf("strSrc - 1 = %s\n",strSrc - 1);printf("*q = %s\n",q);while((*strSrc++ = *q++) != '\0');}else{strSrc++;}}else{strSrc++;}}}问题:编写一个程序实现功能:将字符串”Computer Secience”赋给一个字符数组,然后从第一个字母开始间隔的输出该串,用指针完毕。
(整理)华为C++笔试题最全.
脚本执行失败问题1. 虚函数是可以内联的,这样就可以减少函数调用的开销,提高效率(错误)2. 一个类里可以同时存在参数和函数名都相同的虚函数与静态函数(错误)3. 父类的析构函数是非虚的,但是子类的析构函数是虚的,delete子类指针(指向该子类对象),会调用父类的析构函数(正确)//任何情况下删除子类都会调用到父类的析构函数4.对于下面的类CA,sizeof(CA) = _B_:A. 4B. 8C. 12D. 16class CA{public:CA();virtual ~CA(); //因为有虚函数,所以会有4个字节的虚表指针private:int m_iTime; //成员变量4个字节public:int GetTime();int SetTime(int iTime);};5.下面这段程序,打印结果是_A_:A. 1B. 2C. 3D. 以上都不对int g_iCount = 0;class CParent{public:CParent() {}~CParent() {g_iCount += 1;}};class CSon : public CParent{public:CSon() {}~CSon() {g_iCount += 2;}};main(){CParent* p = new CSon();delete p;std::cout << g_iCount << std::endl;}6.请问下面这段程序的输出结果是_A_:A. 2,1,B. 2,2,C. 1,1,D. 1,2,class CParent{public:CParent() {}virtual ~CParent() {}public:virtual void Print(){ std::cout << "1,"; };};class CSon : public CParent{public:CSon() {};virtual ~CSon() {};public:void Print(){ std::cout << "2,"; };};void Test1(CParent& oParent){oParent.Print();}void Test2(CParent oParent){oParent.Print();}main(){CSon * p = new CSon();Test1(*p); //这里只是一个引用Test2(*p); //这里会在栈空间重新构造Cparent类对象 delete p;}7.请问下面这段程序的输出结果是_D_:A. 2,1,B. 2,2,C. 1,1,D. 1,2,class CParent{public:CParent() {}virtual ~CParent() {}public:void Print(){ std::cout << "1," ; };};class CSon : public CParent{public:CSon() {}virtual ~CSon() {}public:void Print(){ std::cout << "2,"; };};main(){CSon oSon;CParent * pParent = &oSon;CSon * pSon = &oSon;pParent->Print();pSon->Print();}8.请问下面这段程序的输出结果是_C_:A. 2,1,B. 2,2,C. 1,2,D. 1,1,class CParent{public:CParent() {Print();}virtual ~CParent() {}public:virtual void Print(){ std::cout << "1,"; }};class CSon : public CParent{public:CSon() {Print();}virtual ~CSon() {}public:void Print(){ std::cout << "2,"; }};main(){CParent * pParent = new CSon();delete pParent;}9.请问下面这段程序的输出结果是_D_:A. 2,2,B. 2,C. 输出结果不确定D. 以上都不对class CParent{public:CParent() {Print();}virtual ~CParent() {}public:virtual void Print() = 0;};class CSon : public CParent{public:CSon() {Print();}virtual ~CSon() {}public:void Print(){ std::cout << "2,"; };};main(){CParent * pParent = new CSon();delete pParent;}10.请仔细阅读以下程序:class Base{public:virtual bool operator == (int iValue){std::cout << "I am Base class !" << std::endl;return true;}virtual ~Base(){}};class Derive: public Base{public:virtual bool operator == (int iValue){std::cout << "I am Derive class !" << std::endl;return true;}virtual ~Derive(){}};int main(){Derive derive;Base* pBase = &derive;Derive* pDerive = &derive;*pBase == 0;*pDerive == 0;return 0;}程序的输出结果是_B_:A、I am Base class !I am base class !B、I am Derive class !I am Derive class !C、I am base class !I am Derive class !D、I am Derive class !I am Base class !11.请仔细阅读以下程序:class Base{public:virtual void display(std::string strShow = "I am Base class !") { std::cout << strShow << std::endl; }virtual ~Base(){}};class Derive: public Base{public:virtual void display(std::string strShow = "I am Derive class !") { std::cout << strShow << std::endl; }virtual ~Derive(){}};int main(){Base* pBase = new Derive();Derive* pDerive = new Derive();pBase->display();pDerive->display();delete pBase;delete pDerive;return 0;}程序的输出结果是_C_:A、I am Base class !I am base class !B、I am Derive class !I am Derive class !C、I am base class !I am Derive class !D、I am Derive class !I am Base class !12.请仔细阅读以下程序:class Base{public:virtual void display() const{ std::cout << "I am Base class !" << std::endl; } virtual ~Base(){}};class Derive: public Base{public:virtual void display(){ std::cout << "I am Derive class !"<< std::endl; } virtual ~Derive(){}};int main(){Base* pBase = new Derive();Derive* pDerive = new Derive();pBase->display();pDerive->display();delete pBase;delete pDerive;return 0;}程序的输出结果是_C_:A、I am Base class !I am base class !B、I am Derive class !I am Derive class !C、I am base class !I am Derive class !D、I am Derive class !I am Base class !13.在C++中,多态性存在于_B_:A、同一个类的多个同名函数之间B、子类继承层次中C、父类的多个同名函数之间D、以上都不是14.下面黑体加粗的语句存在问题,请问下面的修改哪个是正确的?Bclass A{public:void Func();..};class B{private:bool Func() const;..};class C:public A,public B{...}; // class definition is unimportantC test;test.Func(); //look hereA.test.B::Func(); B.test.A::Func();C.B::test.Func(); D.A::test.Func();15.判断:子类可以访问父类保护成员,子类的友元类也可以通过子类对象去访问父类的保护成员。
华为笔试c语言
1楼1、局部变量能否和全局变量重名?答:能,局部会屏蔽全局。
要用全局变量,需要使用 ":: "局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。
对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。
2、如何引用一个已经定义过的全局变量?答:extern可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。
3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?答:可以,在不同的C文件中以static形式来声明同名全局变量。
可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错4、语句for( ;1 ;)有什么问题?它是什么意思?答:和while(1)相同。
5、do……while和while……do有什么区别?答:前一个循环一遍再判断,后一个判断以后再循环6、请写出下列代码的输出内容#include <stdio.h>main(){int a,b,c,d;a=10;b=a++;c=++a;d=10*a++;printf( "b,c,d:%d,%d,%d ",b,c,d);return 0;}答:10,12,1207、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?stati c函数与普通函数有什么区别?全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。
全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。
华为C++笔试题及答案
}
};
CLS obj;
cout << obj.m_i << endl;
不能,因为m_i没有初始化,会付一个很大的数,
9. C++中的空类,默认产生哪些类成员函数?[C++易]
答:
class Empty
{
public:
Empty();
// 缺省构造函数
Empty( const Empty& );
// 拷贝构造函数
5.什么是平衡二叉树? 左右 6.堆栈溢出一般是由什么原因导致的?
没有回收垃圾资源。 7.什么函数不能声明为虚函数?
constructor函数不能声明为虚函数。 8.冒泡排序算法的时间复杂度是什么?
时间复杂度是O(n^2)。 9.写出float x 与“零值”比较的if语句。
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分) char str[] = “Hello” ;6 char *p = str ;4 int n = 10;4 请计算 sizeof (str ) = sizeof ( p ) = sizeof ( n ) = void Func ( char str[100]) { 请计算 sizeof( str ) = 4 }
2.引用与指针有什么区别? 1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性 在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 全局变量储存在静态数据库,局部变量在堆栈。
C_C++笔试题大全
1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别?1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。
7.什么函数不能声明为虚函数?Constructor(构造函数)函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么?时间复杂度是O(n^2)。
9.写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)10.Internet采用哪种网络协议?该协议的主要层次结构?Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。
11.Internet物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)(地址解析協議)IP地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。
写出C程序。
循环链表,用取余操作做14.不能做switch()的参数类型是:switch的参数不能为实型。
【华为】C 面试题、笔试题及答案(经典)
(一) 初级题1. 什么是预编译,何时需要预编译:答:(1) 总是使用不经常改动的大型代码体(2) 程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。
在这种情况下,可以将所有包含文件预编译为一个预编译头<<预编译又称为预处理,是做些代码文本的替换工作处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等就是为编译做的预备工作的阶段主要处理#开始的预编译指令预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。
常见的预编译指令有:>>2. char * const pchar const * pconst char *p上述三个有什么区别?答:char * const p; //常量指针,p的值不可以修改char const * p;//指向常量的指针,指向的常量值不可以改const char *p;//和char const *p3.char str1[] = "abc";char str2[] = "abc";const char str3[] = "abc";const char str4[] = "abc";const char *str5 = "abc";const char *str6 = "abc";char *str7 = "abc";char *str8 = "abc";cout << ( str1 == str2 ) << endl;cout << ( str3 == str4 ) << endl;cout << ( str5 == str6 ) << endl;cout << ( str7 == str8 ) << endl;结果是:0 0 1 1str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。
华为C++笔试题及答案
1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别?1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。
7.什么函数不能声明为虚函数?constructor函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么?时间复杂度是O(n^2)。
9.写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)10.Internet采用哪种网络协议?该协议的主要层次结构?Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。
11.Internet物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)(地址解析協議)12.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。
写出C程序。
华为C++笔试题(最新最全)
华为C++笔试题(最新最全)脚本执⾏失败问题1. 虚函数是可以内联的,这样就可以减少函数调⽤的开销,提⾼效率(错误)2. ⼀个类⾥可以同时存在参数和函数名都相同的虚函数与静态函数(错误)3. ⽗类的析构函数是⾮虚的,但是⼦类的析构函数是虚的,delete⼦类指针(指向该⼦类对象),会调⽤⽗类的析构函数(正确)//任何情况下删除⼦类都会调⽤到⽗类的析构函数4.对于下⾯的类CA,sizeof(CA) = _B_:A. 4B. 8C. 12D. 16class CA{public:CA();virtual ~CA(); //因为有虚函数,所以会有4个字节的虚表指针private:int m_iTime; //成员变量4个字节public:int GetTime();int SetTime(int iTime);};5.下⾯这段程序,打印结果是_A_:A. 1B. 2C. 3D. 以上都不对int g_iCount = 0;class CParent{public:CParent() {}~CParent() {g_iCount += 1;}};public:CSon() {}~CSon() {g_iCount += 2;}};main(){CParent* p = new CSon();delete p;std::cout << g_iCount << std::endl;}6.请问下⾯这段程序的输出结果是_A_:A. 2,1,B. 2,2,C. 1,1,D. 1,2,class CParent{public:CParent() {}virtual ~CParent() {}public:virtual void Print(){ std::cout << "1,"; };};class CSon : public CParent{public:CSon() {};virtual ~CSon() {};public:void Print(){ std::cout << "2,"; };};void Test2(CParent oParent){oParent.Print();}main(){CSon * p = new CSon();Test1(*p); //这⾥只是⼀个引⽤Test2(*p); //这⾥会在栈空间重新构造Cparent类对象 delete p; }7.请问下⾯这段程序的输出结果是_D_:A. 2,1,B. 2,2,C. 1,1,D. 1,2,class CParent{public:CParent() {}virtual ~CParent() {}public:void Print(){ std::cout << "1," ; };};class CSon : public CParent{public:CSon() {}virtual ~CSon() {}public:void Print(){ std::cout << "2,"; };};main(){CSon oSon;CParent * pParent = &oSon;pSon->Print();}8.请问下⾯这段程序的输出结果是_C_:A. 2,1,B. 2,2,C. 1,2,D. 1,1,class CParent{public:CParent() {Print();}virtual ~CParent() {}public:virtual void Print(){ std::cout << "1,"; } }; class CSon : public CParent{public:CSon() {Print();}virtual ~CSon() {}public:void Print(){ std::cout << "2,"; }};main(){CParent * pParent = new CSon(); delete pParent;}9.请问下⾯这段程序的输出结果是_D_:A. 2,2,B. 2,C. 输出结果不确定D. 以上都不对class CParent{virtual ~CParent() {}public:virtual void Print() = 0;};class CSon : public CParent{public:CSon() {Print();}virtual ~CSon() {}public:void Print(){ std::cout << "2,"; };};main(){CParent * pParent = new CSon();delete pParent;}10.请仔细阅读以下程序:class Base{public:virtual bool operator == (int iValue){std::cout << "I am Base class !" << std::endl; return true;}virtual ~Base(){}};class Derive: public Base{public:virtual bool operator == (int iValue)virtual ~Derive(){}};int main(){Derive derive;Base* pBase = &derive;Derive* pDerive = &derive;*pBase == 0;*pDerive == 0;return 0;}程序的输出结果是_B_:A、I am Base class !I am base class !B、I am Derive class !I am Derive class !C、I am base class !I am Derive class !D、I am Derive class !I am Base class !11.请仔细阅读以下程序:class Base{public:virtual void display(std::string strShow = "I am Base class !") { std::cout << strShow << std::endl; } virtual ~Base(){}};class Derive: public Base{public:virtual void display(std::string strShow = "I am Derive class !") { std::cout << strShow << std::endl; }Base* pBase = new Derive();Derive* pDerive = new Derive();pBase->display();pDerive->display();delete pBase;delete pDerive;return 0;}程序的输出结果是_C_:A、I am Base class !I am base class !B、I am Derive class !I am Derive class !C、I am base class !I am Derive class !D、I am Derive class !I am Base class !12.请仔细阅读以下程序:class Base{public:virtual void display() const{ std::cout << "I am Base class !" << std::endl; } virtual ~Base(){} };class Derive: public Base{public:virtual void display(){ std::cout << "I am Derive class !"<< std::endl; } virtual ~Derive(){} };int main()Derive* pDerive = new Derive();pBase->display();pDerive->display();delete pBase;delete pDerive;return 0;}程序的输出结果是_C_:A、I am Base class !I am base class !B、I am Derive class !I am Derive class !C、I am base class !I am Derive class !D、I am Derive class !I am Base class !13.在C++中,多态性存在于_B_:A、同⼀个类的多个同名函数之间B、⼦类继承层次中C、⽗类的多个同名函数之间D、以上都不是14.下⾯⿊体加粗的语句存在问题,请问下⾯的修改哪个是正确的?B class A{public:void Func();..};class B{private:bool Func() const;..public A,public B{...}; // class definition is unimportantC test;test.Func(); //look hereA.test.B::Func(); B.test.A::Func();C.B::test.Func(); D.A::test.Func();15.判断:⼦类可以访问⽗类保护成员,⼦类的友元类也可以通过⼦类对象去访问⽗类的保护成员。
★华为C++笔试题大全★
★华为笔试题大全★1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别?1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。
7.什么函数不能声明为虚函数?Constructor(构造函数)函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么?时间复杂度是O(n^2)。
9.写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)10.Internet采用哪种网络协议?该协议的主要层次结构?Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。
ARP (Address Resolution Protocol)(地址解析協議)12.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。
写出C程序。
循环链表,用取余操作做14.不能做switch()的参数类型是:switch的参数不能为实型。
★华为C++笔试题大全★
左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于 1。 6.堆栈溢出一般是由什么原因导致的?
没有回收垃圾资源。 7.什么函数不能声明为虚函数?
Constructor(构 造 函 数 )函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么? 时间复杂度是 O(n^2)。
一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起, 给出一个 age, 在
5 / 90
华为笔试题大全
些链表中删除学生年龄等于 age 的学生信息。 #include "stdio.h" #include "conio.h"
struct stu{ char name[20]; char sex; int no; int age; struct stu * next; }*linklist; struct stu *creatlist(int 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->next = s; printf("Please input the information of the student: name sex no age \n"); scanf("%s %c %d %d",s->name,&s->sex,&s->no,&s->age); s->next = NULL; p = s; } printf("Create successful!"); return(h); }
华为C++笔试题(附答案)
华为C/C++笔试题(附答案)1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)int a = 4;(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);a = ?答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;改后答案依次为9,10,10,112.某32位系统下, C++程序,请计算sizeof 的值(5分).char str[] = “http://ww /”char *p = str ;int n = 10;请计算sizeof (str ) = ?(1)sizeof ( p ) = ?(2)sizeof ( n ) = ?(3)void Foo ( char str[100]){请计算sizeof( str ) = ?(4)}void *p = malloc( 100 );请计算sizeof ( p ) = ?(5)答:(1)17 (2)4 (3) 4 (4)4 (5)43. 回答下面的问题. (4分)(1).头文件中的 ifndef/define/endif 干什么用?预处理答:防止头文件被重复引用(2). #i nclude 和#i nclude “filename.h” 有什么区别?答:前者用来包含开发环境提供的库头文件,后者用来包含自己编写的头文件。
(3).在C++ 程序中调用被 C 编译器编译后的函数,为什么要加extern “C”声明?答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern "C"修饰的变量和函数是按照C语言方式编译和连接的。
由于编译后的名字不同,C++程序不能直接调用C 函数。
C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。
(4). switch()中不允许的数据类型是?答:实型4. 回答下面的问题(6分)(1).Void GetMemory(char **p, int num){*p = (char *)malloc(num);}void Test(void){char *str = NULL;GetMemory(&str, 100);strcpy(str, "hello");printf(str);}请问运行Test 函数会有什么样的结果?答:输出“hello”(2). void Test(void){char *str = (char *) malloc(100);strcpy(str, “hello”);free(str);if(str != NULL){strcpy(str, “world”);printf(str);}}请问运行Test 函数会有什么样的结果?答:输出“world”(3). char *GetMemory(void){char p[] = "hello world";return p;}void Test(void){char *str = NULL;str = GetMemory();printf(str);}请问运行Test 函数会有什么样的结果?答:无效的指针,输出不确定5. 编写strcat函数(6分)已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc);其中strDest 是目的字符串,strSrc 是源字符串。
CC++笔试题系列二(华为招聘
CC++笔试题系列二(华为招聘华为笔试题;C;C++;1.说出下面这个程序的运行结果,并简要叙述其理由:char buf1[10]="hello";char buf2[10]="hello";if (buf1==buf2)printf("equal!");else printf("not equal!");答:因为buf1,buf2分配了不同的内存块,而比较的是数组名,实际上是两个分别指向数组起始元素地址的指针。
2.指出下面这段程序中存在一些什么问题:int loop,a[5];int* p=a;for (loop=0;loop<5;loop++){ p++;*p=loop;}答:数组a[5]在创建时没有初始化,在for循环里也没有起到完全初始化数组的作用,而且对一块未知内存赋值。
在最后一轮循环结束时p指向了数组a[5]的最后一个元素的下一个地址。
string 系列char * strcpy( char *strDest, const char *strSrc ){assert( (strDest != NULL) && (strSrc != NULL) );char *address = strDest;while( (*strDest++ = * strSrc++) != ‘\0’ );return address;}char* strncpy(char* strdest, const char* strsrc, int n){assert((strdest != NULL) && (strsrc != NULL));char* address = strdest;while(n-- > 0)*strdest++ = *strsrc++;return address;}int strcmp(const char* str1, const char* str2){assert((str1 != NULL) && (str2 != NULL);int ret = 0;while (!(ret = (unsigned char*)*str1 - (unsigned char*)*str2) && (*str2)) {str1++;str2++;}if (ret > 0)ret = 1;else if (ret < 0)ret = -1;return ret;}int strlen(const char* str){assert(str != NULL);int len = 0;while ('\0' != *str++)len++;return len;}类string的构造函数string::string(const char* str){if(str == NULL){m_data = new char[1];*m_data = '\0';}else{int length = strlen(str);m_data = new char[str + 1];strcpy(m_data, str);}}string 的析构函数string::~string(){delete [] m_data;}string 的拷贝构造函数string ::string(const string& other){int len = strlen(other.m_data);m_data = new char[len + 1];strcpy(m_data, other.m_data);}string 的赋值函数string& string::operator=(const string& other) {if (this == &other)return *this;delete [] m_data;int len = strlen(other.m_data);m_data = new char[len + 1];strcpy(m_data, other.m_data);return *this;}不用任何局部和全局变量实现int strlen(char *a)int strlen(char *a) {if('\0' == *a)return 0;elsereturn 1 + strlen(a + 1);}1)sizeof相关系列问题2)const相关系列问题3)大量林锐书的习题,以及各种变种这三个几乎是每次必出现,下面的这些是程序相关题,很多都是以前有讨论过的1)求出相似度的算法.2)写出二分查找的代码.int binary_search(int* arr, int key, int n){int low = 0;int high = n - 1;int mid;while (low <= high){mid = (high + low) / 2;if (arr[mid] > k)high = mid - 1;else if (arr[mid] < k)low = mid + 1;elsereturn mid;}return -1;}3)写出在母串中查找子串出现次数的代码.*4)写出快速排序或者某种排序算法代码出现次数相当频繁5)写出查找从一个集合中输出所有子集合的算法.6)实现strcpy函数char* strcpy(char* dest, const char* src){assert((dest != NULL) && (src != NULL));char* address = dest;while ('\0' != (*dest++ = *src++));return address;}出现次数相当频繁7)实现strcmp函数int mystrcmp(const char* str1, const char* str2){assert((str1 != NULL) && (str2 != NULL));int ret = 0;while (!(ret = *(unsigned char*)str1 - *(unsigned char*)str2) && *str2) {str1++;str2++;}if (ret > 0)ret = 1;else if (ret < 0)ret = -1;return ret;}出现次数相当频繁8)将一个单链表逆序struct test{int number;double score;test* next;}void reverse(test*& head){test* pe = head;test* ps = head->next;while(ps != NULL){pe->next = ps->next;ps->next = head;head = ps;ps = pe->next;}}9)循环链表的节点对换和删除。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别?1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。
7.什么函数不能声明为虚函数?constructor函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么?时间复杂度是O(n^2)。
9.写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)10.Internet采用哪种网络协议?该协议的主要层次结构?Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。
11.Internet物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)(地址解析協議)12.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。
写出C程序。
循环链表,用取余操作做14.不能做switch()的参数类型是:switch的参数不能为实型。
1. 以下三条输出语句分别输出什么?[C易]char str1[] = "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 ) << endl; // 输出什么?cout << boolalpha << ( str5==str6 ) << endl; // 输出什么?文章出自/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& operator= ( const A& ); // 赋值操作,虽不是正宗的隐式类型转换,但也可以勉强算一个3. 以下代码中的两个sizeof用法有问题吗?[C易]void UpperCase( char str[] ) // 将str 中的小写字母转换成大写字母{for( size_t i=0; i<sizeof(str)/sizeof(str[0]); ++I )if( 'a'<=str[i] && str[i]<='z' )str[i] -= ('a'-'A' );}char str[] = "aBcDe";cout << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl; UpperCase( str );cout << str << endl;4. 以下代码有什么问题?[C难]void char2Hex( char c ) // 将字符以16进制表示{char ch = c/0x10 + '0'; if( ch > '9' ) ch += ('A'-'9'-1);char cl = c%0x10 + '0'; if( cl > '9' ) cl += ('A'-'9'-1);cout << ch << cl << ' ';}char str[] = "I love 中国";for( size_t i=0; i<strlen(str); ++I )char2Hex( str[i] );cout << endl;5. 以下代码有什么问题?[C++易]struct Test{Test( int ) {}Test() {}void fun() {}};void main( void ){Test a(1);a.fun();Test b();b.fun();}6. 以下代码有什么问题?[C++易]cout << (true?1:"1") << endl;7. 以下代码能够编译通过吗,为什么?[C++易] unsigned int const size1 = 2;char str1[ size1 ];unsigned int temp = 0;cin >> temp;unsigned int const size2 = temp;char str2[ size2 ];8. 以下代码中的输出语句输出0吗,为什么?[C++易] struct CLS{int m_i;CLS( int I ) : m_i(i) {}CLS(){CLS(0);}};CLS obj;cout << obj.m_i << endl;9. C++中的空类,默认产生哪些类成员函数?[C++易]答:class Empty{public:Empty(); // 缺省构造函数Empty( const Empty& ); // 拷贝构造函数~Empty(); // 析构函数Empty& operator=( const Empty& ); // 赋值运算符Empty* operator&(); // 取址运算符const Empty* operator&() const; // 取址运算符const };10. 以下两条输出语句分别输出什么?[C++难]float a = 1.0f;cout << (int)a << endl;cout << (int&)a << endl;cout << boolalpha << ( (int)a == (int&)a ) << endl; // 输出什么?Float b = 0.0f;cout << (int)b << endl;cout << (int&)b << endl;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 << array[i] << endl;}12. 以下代码有什么问题?[STL易]typedef vector IntArray;IntArray array;array.push_back( 1 );array.push_back( 2 );array.push_back( 2 );array.push_back( 3 );// 删除array数组中所有的2for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor ) {if( 2 == *itor ) array.erase( itor );}13. 写一个函数,完成内存之间的拷贝。
[考虑问题是否全面] 答:void* mymemcpy( void *dest, const void *src, size_t count ){char* pdest = static_cast<char*>( dest );const char* psrc = static_cast<const char*>( src );if( pdest>psrc && pdest<psrc+cout ) 能考虑到这种情况就行了{for( size_t i=count-1; i!=-1; --I )pdest[i] = psrc[i];}else{for( size_t i=0; i<count; ++I )pdest[i] = psrc[i];}return dest;}int main( void ){char str[] = "0123456789";mymemcpy( str+1, str+0, 9 );cout << str << endl;system( "Pause" );return 0;}本试题仅用于考查C++/C程序员的基本编程技能。