经纬恒润 - 嵌入式软件工程师 - 笔试

❗❗如果本文对您有帮助,请不要吝啬您的评论、点赞、收藏与小花,这对我非常重要!谢谢!❗❗

alt

本文所涉及的题目均为基于个人学习和理解重新表述的内容,仅供学习交流之用,不代表任何实际考试题目。如有雷同,纯属巧合。

岗位:嵌入式软件工程师-campus-2025

题型:10 道单选题,6 道不定项,5 道填空题,2 道编程题

1、单选题

1.1

以下哪个选项一定可以将 flag 的第二个 bit 置为 0 ==(A)==

  1. flag &= ~2
  2. flag |= 2
  3. flag ^= 2
  4. flag >>= 2

解答:

  1. 清除 flag 的第二个位
  2. flag 的第二个位置一,其他位不变
  3. flag 的第二个位取反
  4. flag 的所有位右移 2 位,低位移出,高位补 0

1.2

以下语句,int *p, a=4;p=&a; 下面均代表地址的一组选项是:==(D)==

  1. a, p, *&a
  2. &*a, &a, *p
  3. *&p, *p, &a
  4. &a, &*p, p

解答:

a*&a*p 均表示值,*&p&*pp&a 均表示地址,&*a 语法错误,选项 D 正确

1.3

下面关于哈佛结构描述正确的是 ==(A)==

  1. 程序存储空间与数据存储空间分离
  2. 存储空间与 IO 空间分离
  3. 程序存储空间与数据存储空间合并
  4. 存储空间与 IO 空间合并

解答:

哈佛结构:程序存储空间 和 数据存储空间 分离的计算机体系结构
冯·诺依曼结构:程序存储空间 和 数据存储空间 合并的计算机体系结构

1.4

下面程序段的输出是 ==(B)==

#include <stdio.h>

int fun(char *str1) {
    char *str2 = str1;
    while (*++str1);
    return (str1 - str2);
}

int main() {
    char *str = "GeeksQuiz";
    printf("%d\n", fun(str));
    return 0;
}

  1. 10
  2. 9
  3. 8
  4. 随机值

解答:

str1 - str2 两个指针相减 = (指针 str1 地址 - 指针 str2 地址) / sizeof(char)
实际上 fun 函数的功能是计算字符串的长度,类似于 strlen 库函数

1.5

如下所示 C 代码片段,其中 main 函数的输出结果为 ==(A)==

#include <stdio.h>

#pragma pack(4)

struct example1 {
    short a;
    short b;
    int c;
};

struct example2 {
	short a;
	int c;
};

struct example3 {
    char c;
    struct example2 s2;
    short e;
};

int main(void) {
    printf("sizeof(struct example1) = %lu\n", sizeof(struct example1));
    printf("sizeof(struct example2) = %lu\n", sizeof(struct example2));
    printf("sizeof(struct example3) = %lu\n", sizeof(struct example3));
    
    return 0; 
}
  1. 8, 8, 16
  2. 8, 16, 16
  3. 8, 8, 8
  4. 16, 16, 16

解答:

#pragma pack(4) 表示默认 4 字节对齐
sizeof(struct example1)a(2字节) + b(2字节) + c(4字节)= 8字节
sizeof(struct example2)a(2字节) + 填充(2字节) + c(4字节)= 8字节
sizeof(struct example3)c(1字节) + 填充(3字节) + s2.a(2字节)+ 填充(2字节) + s2.c(4字节)+ e(2字节)+ 填充(2字节)= 16字节

1.6

关于下面代码描述正确的是 ==(C)==

#include <stdio.h>

char *GetMemory(void) {
    char p[] = "hello world";
    return p;
}

void Test(void) {
    char *str = NULL;
    str = GetMemory();
    printf(str);
}
  1. printf 函数使用有问题
  2. 程序正常打印 hello world
  3. GetMemory 函数返回的地址无法正常使用
  4. 程序存在内存泄露

解答:

不能将局部变量的地址作为函数返回值

1.7

对于语句:int *p1,*p2; 此处的 int 所指的是 ==(D)==

  1. p1 的类型
  2. *p1*p2 的类型
  3. p2 的类型
  4. p1p2 所指向变量类型

1.8

LINUX 所有服务的启动脚本都存放在 ==(A)== 目录中

  1. /etc/rc.d/init.d
  2. /etc/init.d
  3. /etc/rc.d/rc
  4. /etc/rc.d

解答(存疑):

一般存放在 /etc/rc.d/ 中,可能存放在 中

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

欢迎来到我的专栏,在这里,我将整理并分享2024年各大企业的真实笔试/面试真题,同时还整理了嵌入式软件相关的八股知识。专栏内容涵盖C/C++基础、嵌软常见通信协议、ARM、FreeRTOS、Linux OS相关问题汇总,希望能帮助求职者了解考试趋势和嵌入式常见考点。无论你是准备面试,还是希望提升自己的专业知识,这里都能为你提供宝贵的参考和学习资源。

全部评论

相关推荐

评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务