华为C++笔试题--经典版本
华为历年笔试题大汇总
2010校园招聘笔试题目分享 (1)应聘华为各类工程师通信基础题库以及答案 (1)华为资金管理岗笔试 (10)华为厦门销售融资岗笔试 (12)华为财经笔试 (12)华为会计笔试 (12)华为软件工程师笔试题 (13)华为硬件笔试题 (18)研发(软件) (18)武汉华为笔试归来(财经类资金管理销售融资岗) (20)2008-2009校园招聘笔试题目分享 (21)华为笔试 (21)华为笔试回来 (22)华为的C语言笔试题 (23)华为C/C++笔试题 (24)2010校园招聘笔试题目分享应聘华为各类工程师通信基础题库以及答案电信基础知识题库(以下题目可以按填空、判断或简答方式出题,也可以经过变化成为选择题)1、语音信号数字化过程中,采用的是的量化方法是非均匀量化。
2、PCM30/32路系统中,每个码的时间间隔是488ns。
3、PCM30/32路系统中,TS0用于传送帧同步信号,TS16用于传送话路信令。
4、PCM30/32路系统中,复帧的重复频率为500HZ,周期为2ms。
5、程控交换机的硬件可分为话路系统和中央控制系统两部分,整个交换机的控制软件都放在控制系统的存储器中。
6、一般二氧化硅光纤的零色散波长在1310nm左右,而损耗最小点在1550nm波长左右。
7、G.652光纤是零色散波长在1310nm的单模光纤。
8、光缆的基本结构由缆芯、加强元件和护套组成。
9、常用的光缆结构形式有层绞式光缆、束管式光缆、骨架式光缆和带状式光缆。
10、在网状网的拓扑结构中,N个节点完全互连需要N(N-1)/2条传输线路。
11、在星型网的拓扑结构中,N个节点完全互连需要N-1条传输线路。
12、A TM技术是电路交换技术和分组交换技术的结合。
13、根据98年发布的《自动交换电话(数字)网技术体制》,我国电话网分为三级。
14、根据新的电话网体制,我国长途电话网分为二级。
15、当电话网全网为三级时,两端局之间最大的串接电路段数为5段,串接交换中心最多为6个。
华为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 是源字符串。
华为c-c++笔试题.doc
华为c/c++笔试题1.Windows是内核级线程么。
答:见下一题2.Linux有内核级线程么。
答:线程通常被定义为一个进程中代码的不同执行路线。
从实现方式上划分,线程有两种类型:“用户级线程”和“内核级线程”。
用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。
这种线程甚至在象DOS 这样的操作系统中也可实现,但线程的调度需要用户程序完成,这有些类似Windows 3.x 的协作式多任务。
另外一种则需要内核的参与,由内核完成线程的调度。
其依赖于操作系统核心,由内核的内部需求进行创建和撤销,这两种模型各有其好处和缺点。
用户线程不需要额外的内核开支,并且用户态线程的实现方式可以被定制或修改以适应特殊应用的要求,但是当一个线程因I/O 而处于等待状态时,整个进程就会被调度程序切换为等待状态,其他线程得不到运行的机会;而内核线程则没有各个限制,有利于发挥多处理器的并发优势,但却占用了更多的系统开支。
Windows NT和OS/2支持内核线程。
Linux 支持内核级的多线程3.C++中什么数据分配在栈或堆中,New分配数据是在近堆还是远堆中?答:栈: 存放局部变量,函数调用参数,函数返回值,函数返回地址。
由系统管理堆: 程序运行时动态申请,new和malloc 申请的内存就在堆上4.使用线程是如何防止出现大的波峰。
答:意思是如何防止同时产生大量的线程,方法是使用线程池,线程池具有可以同时提高调度效率和限制资源使用的好处,线程池中的线程达到最大数时,其他线程就会排队等候。
5函数模板与类模板有什么区别?答:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定。
6一般数据库若出现日志满了,会出现什么情况,是否还能使用?答:只能执行查询等读操作,不能执行更改,备份等写操作,原因是任何写操作都要记录日志。
华为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语言笔试题1笔试题
华为C语言笔试题(附答案)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局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。
全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。
华为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笔试题文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-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地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
【华为】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++笔试题
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)什么是预编译,何时需要预编译?答: a、总是使用不经常改动的大型代码体。
b、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。
在这种情况下,可以将所有包含文件预编译为一个预编译头。
(2)char * const p char const * p const char *p上述三个有什么区别?答: char * const p:常量指针,p的值不可以修改char const * p:指向常量的指针,指向的常量值不可以改const char *p: 指向字符的指针,该指针的值不可修改(3)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 1 。
str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。
华为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)循环链表的节点对换和删除。
(整理)华为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.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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
脚本执行失败问题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.判断:子类可以访问父类保护成员,子类的友元类也可以通过子类对象去访问父类的保护成员。