传音 - 软件工程师 - 笔试
❗❗如果本文对您有帮助,请不要吝啬您的评论、点赞、收藏与小花,这对我非常重要!谢谢!❗❗
本文所涉及的题目均为基于个人学习和理解重新表述的内容,仅供学习交流之用,不代表任何实际考试题目。如有雷同,纯属巧合。
岗位:影像部 软件工程师(C/C++方向)(上海)(J16576)
题型:10 道选择题/简答题,1 道改错题,3 道算法/推理题
1、选择题/简答题
1.1
以下为 Linux 下的 64 位 C 程序,请计算 sizeof 的值。
char str[] = "Hello";char *p = str;int n = 10;
请计算
sizeof(str)= (1)sizeof(p)= (2)sizeof(n)= (3)
解答:
- 6
- 8
- 4
1.2
64 位 C 程序:
unsigned char *p1;unsigned long *p2;p1 = (unsigned char *)0x801000;p2 = (unsigned long *)0x810000;
请问
p1+5= (1)p2+5= (2)
解答:
- 0x801005
- 0x810028
1.3
以下程序运行后的输出结果 ==(A)==
#include <stdio.h>
#define F(X, Y) ((X) + (Y))
int main() {
int a = 3, b = 4;
printf("%d\n", F(a++, b++));
return 0;
}
- 7
- 8
- 9
- 10
解答:
宏定义是预处理阶段的简单字符串替换
F(a++, b++) = ((a++) + (b++)) = 3 + 4 = 7,因此输出 7
1.4
C/C++ 语言中,关于类的静态成员的不正确描述是 ==(D)==
- 静态成员不属于对象,是类的共享成员
- C++11 之前,非 const 的静态成员要在类外定义和初始化
- 静态成员函数不拥有this指针,需要通过类参数访问对象成员
- 只有静态成员函数可以操作静态数据成员
解答:
静态成员函数只能访问静态成员变量和其他静态成员函数,不拥有 this 指针,但静态成员变量在所有对象间共享,不仅可以被静态成员函数访问,也可以被其他非静态成员函数访问,选项 D 错误
1.5
32 位 C 程序,请问这个结构体所占的空间大小是 ==(C)== 字节
typedef struct {
int a;
char b;
short c;
short d;
} AA_t;
- 16
- 9
- 12
- 8
解答:
在 32 位系统上
int占用 4 字节,char占用 1 字节,short占用 2 字节,默认 4 字节对齐,所以该结构体所占空间如下所示:
4(int) + 1(char) + 3(填充) + 4(两个short) = 12 字节,选项 C 正确
1.6
对于 int *pa[5]; 的描述,正确的是?==(A)==
pa是一个具有 5 个元素的指针数组,每个元素是一个 int 类型的指针pa[5]表示某个数组的第 5 个元素的值pa是一个指向数组的指针,所指向的数组是 5 个 int 类型的元素pa是一个指向某个数组中第 5 个元素的指针,该元素是 int 类型的变量
解答:
int *pa[5];定义了一个指针数组,所有元素都是int*类型指针
int (*pa)[5];定义了一个数组指针,指向有 5 个元素并且类型为int的数组
1.7
下面哪一个表达式不能访问二维数组 b 的第 i 行第 j 列元素 ==(C)==
b[i][j]*(b[i]+j)*(*b+i)+j(*(b+i))[j]
解答:
选项 C 错误,应修改为
*(*(b+i)+j)
1.8
下面关于 C++ 中 const 和 define 的说法错误的是 ==(B)==
define宏在预处理阶段展开,const变量是编译运行阶段使用- 在编译阶段会对
define宏和const常量做类型安全检查 const可以节省空间,避免不必要的内存分配define宏在定义的时候不会分配内存
解答:
define宏定义仅在预处理阶段做简单字符串替换,不会对类型进行安全检查,选项 B 错误
1.9
下面程序段输出结果是 ==(B)==
int i = 5, k;
k = (++i) + (++i) + (i++);
printf("%d, %d\n", k, i);
- 24,8
- 21,8
- 20,7
- 24,7
解答:
++i返回i的引用,等表达式中所有的++i计算完毕才会返回值
k = (++i) + (++i) + (i++) = 7 + 7 + 7 = 21,执行完毕后i也由 7 后加到 8
因此选项 B 正确
1.10
32 位系统下,下面程序的输出结果为多少?==(B)==
#include <stdio.h>
#include <string.h>
void Func(char str_arg[100]) {
printf("%d\n", sizeo
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
欢迎来到我的专栏,在这里,我将整理并分享2024年各大企业的真实笔试/面试真题,同时还整理了嵌入式软件相关的八股知识。专栏内容涵盖C/C++基础、嵌软常见通信协议、ARM、FreeRTOS、Linux OS相关问题汇总,希望能帮助求职者了解考试趋势和嵌入式常见考点。无论你是准备面试,还是希望提升自己的专业知识,这里都能为你提供宝贵的参考和学习资源。
查看1道真题和解析

