MPS - 嵌入式软件工程师 - 笔试

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

alt

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

岗位:嵌入式软件工程师(成都)

题型:10 道填空题,3 道编程题,4 道问答题

1、填空题

1.1

一些代码量较小的函数可以使用关键字 (1) 说明该函数是内联函数,其优点 (2),缺点 (3)

解答:

  1. inline
  2. 减少函数调用开销,提高程序运行效率
  3. 可能导致代码膨胀,增加编译后的代码体积

1.2

假设串口波特率为 9600,设置数据位 8,起始位 1,奇偶校验位 1,停止位 2。则每秒钟串口可以传输 (1) 个字节数据。

解答:

  1. 800

1.3

知某外设的基地址为 0x800_0000,内部控制寄存器信移地址 0x8000,请用一条指令设置控制寄存器的BIT[6:7] 位域清零,其它位不变 (1)

解答:

  1. BIC [0x8008000], #0xc0

1.4

Linux下常用命令使用:

  1. 新建一个名字为 Test 的目录:(1)
  2. 删除内有文件和子目录的名字为 Test 的目录:(2)
  3. 列出当前目录下的所有文件和子目录:(3)

解答:

  1. mkdir Test
  2. rm -r Test
  3. ls

1.5

在 ARM M0 MCU 编程开发环境中,下面结构体变量 a 所占内存大小是(1)

struct Member {
    char name[30];
    int age;
    double score;
} a = {"Lucky", 18, 90.5};

解答:

48

1.6

FreeRTOS 是一种实时可抢占式操作系统,FreeRTOS 内核采用的调度算法(1)

解答:

  1. 时间片轮询的优先级抢占式调度算法

1.7

正常的中断服务程序中,其最后执行的一条指令是(1),中断服务程序的入口地址是(2)

解答:

  1. BX LR
  2. 0x08000000

1.8

有数组 int a[X]; 其中 x 为大于 0 的某一未知常数,请用通用公式计算出数组长度等于:(1),所占内存大小:(2)

解答:

  1. sizeof(a) / sizeof(a[0])
  2. sizeof(a)

1.9

MCU 中一个 12bit 精度 adc 模块,参考电压为 3.3V,采样电路使用 90.9K/10K 电阻分压,请使用宏定义一个函数,根据 ADC 采样结果 x,求解实际被采样电压(单位:mV)大小:(1)

解答:

#define ADC_TO_VOLTAGE(x) (x)*3300*1009 / (4096*10)

1.10

I2C 是一种串行通信协议,用于在芯片之间传输数据。其起始信号 SCL 和 SDA 变化是:(1)

解答:

  1. SCL 保持高电平,SDA 产生下降沿

2、编程题

2.1

题目:

请根据流程图用伪代码实现状态机切换及事件响应。

解答:

Click to view image

#include <stdio.h>
#include <stdbool.h>
#include <time.h>

// 定义状态枚举
typedef enum {
    IDLE_STATE,
    PE_SEND_ALERT,
    PE_WAIT_FOR_GET_STATUS,
    PE_GIVE_STATUS
} State;

// 定义事件枚举
typedef enum {
    EVENT_TIMEOUT,
    EVENT_RX_CMD_SEND_ALERT,
    EVENT_TX_ALERT_MSG_SUCCESS,
    EVENT_RX_GET_STATUS_MSG,
    EVENT_TX_STATUS_MSG_SUCCESS,
    EVENT_TX_RETRY_FAILED
} Event;

// 当前状态
State currentState = IDLE_STATE;

// 状态机函数
void stateMachine(Event event) {
    switch (currentState) {
        case IDLE_STATE:
            if (event == EVENT_RX_CMD_SEND_ALERT) {
                currentState = PE_SEND_ALERT;
            }
            break;

        case PE_SEND_ALERT:
            if (event == EVENT_TX_ALERT_MSG_SUCCESS) {
                currentState = PE_WAIT_FOR_GET_STATUS;
            }
            else if (event == EVENT_TX_RETRY_FAILED) {
                currentState = IDLE_STATE;
            }
            break;

        case PE_WAIT_FOR_GET_STATUS:
            if (event == EVENT_RX_GET_STATUS_MSG) {
                currentState = PE_GIVE_STATUS;
            }
            else if (event == EVENT_TIMEOUT) {
                currentState = I

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

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

全部评论

相关推荐

头像
11-03 16:48
已编辑
百度_高级研发工程师
事实是检验真理的唯一标准。&nbsp;无论我们怎么去说,去讲述,去证明,都抵不过一个offer来得实在,无论我们怎么去复现求职中的摸爬滚打、扒皮抽筋、狼狈不堪,都抵不过你在简历写上大厂的名字(外包不算)。&nbsp;所以在我求职期间,我什么话都不说,什么话都不讲,因为没有意义,虽然我总讲过程才是意义,但只有当你上岸的那一刻,你才有资格回想在水里的挣扎,只有等你出了山,你才知道山的全貌。&nbsp;我为什么一定要离开华为OD,难道它不稳定吗,不能赚钱吗。为了证明自己,那肯定有的。其实更多的是印证我的认知是否真的正确。&nbsp;(给不了解我的人交代一下背景,在下双非一本,gap一年,华为OD外包,摸爬滚打4个月,艰难上岸百度正编)一、...
先锋战士:说得很真诚。鄙视链自古有之,学历,家庭背景,财富,权利。从小有之,小学羡慕那些当班委的,中学羡慕那些学生会的,高中羡慕尖子班拿教学金的,大学羡慕高绩点,毕业了羡慕进大厂的。工作了,又羡慕高职级的,再后来又羡慕别人早早结婚的。我想表达的观点很简单,无论是华为od还是百度,都是经历,没有孰高孰低,为了抵达下一个风景,总会付出更多东西,但不就是人生吗?正如登山,每个阶段的山,都要想办法攀登,在博主的文字中,见到了坚持和积极寻找问题解决办法的心态
学历对求职的影响
点赞 评论 收藏
分享
评论
2
12
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务