华为笔试题大全
本资源摘要信息涵盖了华为公司历年的招聘笔试题,涉及C、C++语言、数据结构、算法、计算机网络、操作系统等多方面的知识点。
**1. 静态变量的用途**
在C语言中,静态变量(static)有多种用途:
* 在函数体中,静态变量可以维持其值不变,即使函数调用过程中多次调用。
* 在模块内(但在函数体外),静态变量可以被模块内的函数访问,但不能被模块外的函数访问,这使得它是一个本地的全局变量。
* 在模块内,静态函数只能被模块内的其他函数调用,即它的作用域被限制在声明它的模块的本地范围内。
**2. 引用与指针的区别**
在C++语言中,引用和指针都是用来间接访问变量的,但是它们有以下几点区别:
* 引用必须被初始化,而指针不必。
* 引用初始化以后不能被改变,而指针可以改变所指的对象。
*不存在指向空值的引用,但是存在指向空值的指针。
**3. 实时系统的基本特性**
实时系统的基本特性是,在特定时间内完成特定的任务。实时性和可靠性是实时系统的两个重要特征。
**4. 全局变量和局部变量的区别**
在C语言中,全局变量和局部变量有以下几点区别:
* 全局变量储存在静态数据库中,而局部变量在堆栈中。
* 全局变量的作用域是整个程序,而局部变量的作用域是函数体内。
**5. 平衡二叉树**
平衡二叉树是一种特殊的二叉树,它的左右子树都是平衡二叉树,且左右子树的深度差值的绝对值不大于1。
**6. 堆栈溢出的原因**
堆栈溢出通常是由于没有回收垃圾资源引起的。
**7. 虚函数的限制**
在C++语言中,constructor函数不能声明为虚函数。
**8. 冒泡排序算法的时间复杂度**
冒泡排序算法的时间复杂度是O(n^2)。
**9. 浮点数比较**
在C语言中,浮点数的比较需要注意防止精度问题,可以使用以下方法:
if(x > 0.000001 && x < -0.000001)
**10. Internet网络协议**
Internet采用的网络协议是TCP/IP协议,它的主要层次结构为:
应用层/传输层/网络层/数据链路层/物理层。
**11. 物理地址和IP地址转换**
物理地址和IP地址的转换采用ARP协议(Address Resolution Protocol)。
**12. IP地址的编码**
IP地址由两部分组成:网络号和主机号。通过与子网掩码按位与操作,可以区分网络位和主机位。
**13. 循环链表**
循环链表可以用于实现循环计数器,例如,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。
**14. switch语句的参数类型**
switch语句的参数不能为实型。
**15. 指针方面的编程题**
给定一个整数数组A[nSize],其中隐藏着若干0,其余非0整数,写一个函数intFunc(int*A,int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。
这道题目考察了指针的使用、数组操作、排序算法等知识点。