C++面试必备:开发工程师试题集锦

需积分: 1 0 下载量 91 浏览量 更新于2024-07-26 收藏 134KB DOC 举报
"C++面试题1" C++面试题主要涵盖了语言特性和编程实践,以下是对提供的部分内容的详细解析: 1. 变量存储位置: - 全局变量`int(*g_pFun)(int);`:全局的函数指针,存储在数据段(A)。 - `myFunction`赋值给`g_pFun`,`myFunction`的代码位于代码段(B)。 - 静态内部变量`static int nCount;`:静态变量通常存储在数据段或BSS段(A)。 - 函数内部的字符数组`char p[]="AAA";`:由于是局部数组,空间在栈中(C)。 - 字符串常量`"AAA"`的指针`char *p="AAA"`:存储在程序文本段(代码段)或rodata段(E),依赖于编译器。 - 动态分配的字符指针`char *p = new char;`:`p`本身在栈上(C),指向的空间在堆上(D)。 2. 程序输出: - 给定程序的输出是未定义的,因为访问了未初始化的内存(G)。`&num+1`实际上是数组的指针加上一个元素的大小,相当于指向下一行的地址,减去1则回到数组末尾,但这里的类型转换使得访问的不是一个有效的内存地址,因此结果是未定义的。扩展题目中,`*((int*)(num+1)-1)`的结果是1(A),因为`num+1`是指向数组第二个元素的指针,减1后回到第一个元素,即`num[0]`。 3. 程序间通信方式: - A. 信号(Signals):通常用于进程间通信,但不是可靠的,可能被其他信号中断。 - B. 管道(Pipes):用于同一主机内的进程间通信,单向且不可靠。 - C. TCP(Transmission Control Protocol):跨主机可靠的双向通信协议。 - D. UDP(User Datagram Protocol):跨主机的不可靠的、无连接的通信协议。 - E. PIPE:在某些系统中,命名管道可以实现跨机器通信。 - F. 串口I/O:可用于跨主机的通信,可靠性取决于物理连接。 4. C++类成员: - `class A`中的`funa()`和`funb()`是虚函数,用于多态性。 - `fun()`是普通成员函数,没有关键字`virtual`。 - `fund()`是静态成员函数,不与对象实例关联,可以直接通过类名调用。 - `si`是静态成员变量,也是类级别的,不依赖于对象实例。 这些面试题考察了C++的内存管理、指针操作、程序间通信以及面向对象特性等多个方面,对于准备C++面试的开发者来说,理解和掌握这些知识点至关重要。