本资源包含了华为公司在招聘过程中使用的C/C++编程语言相关的笔试题目及其参考答案,适合程序员准备技术面试。
1. static的用途有哪些?(请至少列出两种)
- 在函数体内声明为静态的变量,在该函数被调用的过程中保持值不变。
- 在模块内但不在任何函数体内的静态变量,只能由同一模块中的其他函数访问。
2. 引用和指针的区别是什么?
- 引用必须在定义时初始化,而指针则不必。
- 一旦引用绑定到某个对象后便不能改变其指向的对象;相反地,可以更改一个未被绑定的指针所指向的目标。
- 没有空值(null)的概念适用于引用,但存在对于指针。
3. 实时系统的基本特性是什么?
实时系统需要在特定的时间内完成预定的任务,并且具备高可靠性和时间敏感性特征。
4. 全局变量和局部变量在内存中的区别有哪些?
- 全局变量存储于静态数据区。
- 局部变量则位于栈中。
5. 什么是平衡二叉树?
如果一棵二叉树的每个节点左右子树的高度差不超过1,并且其左、右两个子树均是平衡二叉树,那么这棵树就是一颗平衡二叉树。
6. 堆栈溢出通常由什么原因引起?
- 当内存资源被过度使用或者长时间未能释放时可能会导致堆栈溢出问题。
7. 什么类型的函数不能声明为虚函数?
构造函数不可以定义为虚函数形式。
8. 冒泡排序算法的时间复杂度是多少?
冒泡排序的最坏时间复杂度是O(n^2) (n表示数组长度)。
9. 如何用C语言编写一个判断float x 是否等于零值(即非常接近于0)的if语句?
正确的实现应为:`if(x > -0.000001 && x < 0.000001)`,这表示当x在[-ε, ε]范围内时认为它与零相等。
10.Internet 使用哪种网络协议?主要层次结构是什么?
TCP/IP 协议是 Internet 的基础通信标准。其主要层包括应用层、传输层(如 TCP)、互联网层(IP)以及数据链路层和物理层。
11. 物理地址和 IP 地址之间的转换使用什么协议实现的?
ARP (Address Resolution Protocol) 用于将网络中的硬件地址映射为逻辑地址,从而完成这种转换工作。
12.IP 地址由哪两部分组成?
IP 地址分为网络标识符(Network Identifier)与主机标识符(Host Identifier)两个主要组成部分。它们通过子网掩码来区分这两部分内容的位置和大小。
13. 编写一个C程序,该程序接收用户输入的M、N值,并从1至N开始顺序循环数到M后输出当前数值,直到所有数字都被遍历过一遍为止。
```c
#include
int main() {
int m, n;
printf(Enter M and N: );
scanf(%d %d, &m, &n);
for(int i = 1; i <= n; ++i) {
if(i%m == 0)
printf(%d\n, i);
}
}
```
14. switch()语句中不能使用的数据类型有哪些?
实型(浮点数)是不允许作为switch语句的表达式的。
15. 在C++程序环境中,sizeof操作符如何用于计算不同变量或指针类型的大小?
```c
char str[] = http://www.ibegroup.com/;
char *p = str;
int n = 10;
// sizeof(str) 的值为字符串长度加一(包括终止空字符):17
// sizeof(p) 和 sizeof(n) 都是4,因为指针和整型变量在大多数系统上具有相同的大小。
```
对于函数参数中的数组类型如`void Foo(char str[100])`,sizeof(str)的值为4(即指向字符类型的指针)而不是字符串的实际长度。
通过 `malloc(100)` 动态分配内存后使用 `sizeof(p)` 也得到的是4字节大小。