小米嵌入式面试题目RTOS面试题目 嵌入式面试题目

第一章-非RTOS

  • bootloader工作流程

  • MCU启动流程

  • 通信协议,SPI IIC

  • MCU怎么选型,STM32F1和F4有什么区别

  • 外部RAM和内部RAM区别,怎么分配

  • 外部总线和内部总线区别

  • MCU上的固件,数据是怎么分配的

  • MCU启动流程

  • IAP是怎么升级的,突然断电怎么办

  • 挑了麦轮项目(因为大疆RM也是麦轮,面试官看样子比较感兴趣)

  • 为什么用的CAN总线

  • 你说一下spi和 i2c和 UART的 各自的工作方式优缺点?

  • 你知道怎么判断栈溢出吗?

  • 能简单说一些你用过的stm32的一些芯片的配置吗?CPU主频,flash和RAM分别都是多大的?

  • 你在stm32上都做过哪些开发?

  • 你开发过哪些驱动吗?

  • 你了解整个SPI的通信过程吗?SPI有几根线,分别是什么?你使用SPI的时候速率配置的是多少?

  • 有使用过DMA吗?解释一下什么是DMA?

  • SPI有4种模式你知道是那4种模式吗?

  • 你在开发调试过程中有遇到过哪些难以解决的问题可以分享一下吗?

  • .你有做过一些比较大型的软件开发吗?就是一些比较大的功能需要做一些设计、分层的东西。

    我说了其中一个项目分层驱动层、中间层和应用层。

  • 中间层的设计你考虑了哪些因素?

  • 堆和栈有什么区别?

  • 先问点iic,spi基础知识,速率,工作模式。

  • ARM体系结构。然后被逮住问:7种异常是什么(没答全),中断触发到返回的具体行为(CM3权威指南里有),中断嵌套如何实现(NVIC相关),中断机制的具体实现(还在答中断具体行为,他问的应该是两级向量表如何查找),中断部分结束。

  • c知识指针与引用的区别

  • 答了点单指令多数据流,感觉不感兴趣,又说了流水线冲突与解决,反问cache-miss什么情况,分支预测什么原理(高级计算机结构课上内容)。看来芯片方向看重体系结构的知识,课上学的终于有用了。

  • 之后我就把自己的优势定位在ARM体系结构和CPU原理/OS任务切换与调度原理/静态链接知识(这里推荐《程序员的自我修养》)。

  • 笔试考了DMA与中断传输的比较

  • 画项目框图、我开始把所有项目叙述和重点问题全部写纸上,每天背一遍。

  • 什么叫软硬实时、m4内核双堆栈机制、顺便答了arm模式切换和上下文切换,bootloader,链接原理,

  • 在职学姐告诉我,应该答不喜欢华为的文化。

  • 大华股份、算法工程化岗。提前准备了一些ucos移植,arm指令集流水线和静态链接的知识,事实证明,准备的方向很对,他很感兴趣。

  • 问了ucos移植的细节,提到了一种并发的指令集

  • 最后问我的优势劣势分别是什么,答优势是对底层原理的理解和对编译器的了解,劣势是不懂Linux。

  • 中断机制,大概有多少中断,可修改向量表吗(通常不可,有例外),又问m4内核的双堆栈机制。BL指令的跳转范围(32MB)。

  • 静态链接,深挖强弱符号的东西,最后说我对底层还是比较了解。

  • IIC与SPI的不同(片选方式,异步同步),IIC读写方向如何区分(地址位最后一位的高或低)

  • 9轴数据的意义,答了姿态解算中队数据的融合。

  • 手撕代码环节,特意找了个最简单的给我,牛客原题链表表示的两数相加

  • 问信号量,进入临界区的操作,为什么关中断可以保护临界区,cpsr如何保存。

  • 问静态链接,预处理是什么编译选项,-g是什么意思,如何使用ar生成库文件,这块不熟,会不会gdb(不会)。那就说说makefile一条指令的格式,.c生成.o什么选项,.o生成.elf什么选项,.o与.elf的区别联系,举个区别的例子。

  • 项目,直接画个框图给他,说的熟的不能再熟了。然后提问中断机制,这就进入了我的"模板",然后重点问了流水线效率问题,为什么中断返回PC要减4,拿出试卷让我答没写完的题。然后让结合项目代码分析如何避免流水线冲突(调整指令执行顺序,分支预测,增加部件)

  • 静态链接,也是熟的不能再熟的东西,是我亮点之一。

  • 老生常谈,叙述中断机制,bootloader,模板开启引出流水线

  • 如果使用C++导致MCU资源不够如何解决(答:直接操作寄存器)

  • 相关的通信协议I2C;SPI;串口有没有用过

  • 讲一下串口通信协议,串口通信如何校验,原理

  • 有没有遇到过IO口输出电压稳定的问题,如何解决的

  • 项目中有没有用到I2C,主要用在哪方面,讲一下选择I2C的原因

  • 静态局部变量与局部变量的区别(很基础)

  • 为什么局部变量未定义时,每次初始化的结果是不确定的?是个真随机数还是个伪随机数?(我答:与栈的工作过程有关)

  • 那么嵌入式中栈的工作机制是什么?(不会)

  • 我连续调用同一个函数两次,他的局部变量初始化结果是否会一致?

  • 远程网络升级嵌入式,他就问我你有考虑过你的固件安全性问题吗?如果有其他人通过网络途径下载一个非官方的固件包,你怎么去判断?

    C语言问题

    • 函数指针了解么,在哪里有用到?

    • struct字节对齐了解么?

    • 什么是大端小端?

    • 内存分配函数了解么?如果系统中只有10K内存,而我要分配12K,能分配成功吗?如果能,那么将分配到的区域用memset进行初始化,会成功吗?

    • 除了堆区,程序运行的内存中还有哪些区域?

    C++问题

    1. 智能指针有了解吗?
    2. 容器了解吗?vector实现的机制是怎么样的?
    3. 迭代器有了解吗?讲解一下你的理解、

嵌入式单片机一面

1和32架构的区别

\3. Stm32处理中断的过程

\4. 保护现场保护什么东西(寄存器和堆栈)

\5. 要保护那些寄存器?

\6. Stm32是要中断嵌套的吗,什么时候需要什么时候不需要

\7. Cortex-m系列使用浮点会对stm32中断效率产生什么影响(不清楚)

\8. 对嵌入式哪方面比较深刻,研究比较深入的

\9. Uart是怎么样的接口

\10. Uart异步,不需要时钟,那为什么还要设定波特率

\11. Spi跟uart在使用上有什么区别

\12. Spi和uart需不需要区分主从

\13. Spi的从是否可以主动读写主的数据,怎么做到的

\14. 写iic、spi、uart驱动需要哪些注意的地方

\15. Iic、spi、uart接收方式有三种,轮询,中断和DMA,如果是中断收到的数据要谁去申请谁去释放

\16. 中断里数据往一个buffer去放,这个buffer要谁去申请

\17. 如何保证buffer读和写的互斥

static用法,变量存储位置

C语言编译后的内存分布

volatile变量作用?修饰哪些变量,为什么这些变量要用volatile修饰

SPI四种模式

串口发送一个字节多少位

?在做硬件驱动的时候,碰到的比较困难的问题? 项目中有制定通讯协议,就问有出现过什么通讯错误,出现错误了怎么办?通讯丢失怎么办?

  • STM32启动过程?

  • C++为什么有指针还要引用?

    一些总结摘抄'

    作者:DJI小迷弟

    链接:https://www.nowcoder.com/discuss/794763?channel=-1\&source_id=profile_follow_post_nctrack

    来源:牛客网

    C/C++

    • static作用,变量加入static以后在内存中存储位置的变化。
    • volatile作用
    • C++为什么有指针还要引用,为什么不和JAVA一样抛弃指针
    • delete和delete[]的区别
    • 虚函数是用来干嘛的?虚函数机制怎么实现的?虚表指针在内存中的存放位置?
    • C++多态怎么理解?C++有哪些多态的典型例子?
    • 叙述程序编译都包含哪些阶段,每个阶段干了什么?
    • CMake是如何包含文件目录的
    • 全局变量和局部变量在什么地方?堆栈如何申请资源?
    • C语言编译后的内存分布
    • 我连续调用同一个函数两次,他的局部变量初始化结果是否会一致?(函数调用的过程)
    • 你说静态局部变量存储在静态区,那么静态区的创建和消失是在什么时候?
    • 我在windows里面运行了多个进程,其中一个进程执行完了,他的静态区会如何处理?(多进程的内存管理问题)
    • 静态局部变量与局部变量的区别?为什么局部变量未定义时,每次初始化的结果是不确定的?是个真随机数还是个伪随机数?
    • 嵌入式中栈的工作机制是什么?
    • struct字节对齐了解么?
    • 容器了解吗?vector实现的机制是怎么样的?
    • 迭代器有了解吗?讲解一下你的理解
    • 内存分配函数了解么?如果系统中只有10K内存,而我要分配12K,能分配成功吗?如果能,那么将分配到的区域用memset进行初始化,会成功吗?
  • 处理器架构

    作者:DJI小迷弟

    链接:https://www.nowcoder.com/discuss/794763?channel=-1\&source_id=profile_follow_post_nctrack

    来源:牛客网

    处理器架构

    • 51和32架构的区别
    • MCU可以运行Liunux吗,为什么
    • STM32启动过程(上电开始->main执行的过程)
    • 中断响应执行流程,中断上下文指的什么,保存中断上下文是完成的什么操作,以STM32为例,都有哪些寄存器被保存
    • STM32 F1和F4的区别
    • Cotex-M系列使用浮点运算对STM32中断效率会产生什么影响
    • STM32常见寄存器:R13(SP,堆栈指针),R14(LR,连接寄存器),R15(PC程序计数器)作用
    • 什么是大小端模式

常见硬件接口协议/总线

SPI
  • SPI有哪四种工作模式
(2)IIC
(3)UART
  • Uart异步,不需要时钟,那为什么还要设定波特率
(4)FSMC
(5)AXI

四旋翼中的姿态解算算法是如何运行的?两个部分:一个是数据滤波,一个是姿态解算Mahony。

PID算法的实现是库还是自己写?自己写的,算法不难,难的是参数调试

讲一下PID算法的实现过程?

简单说一下spi协议,spi协议最大传输速度。什么是平衡二叉树,为什么要这样设计平衡二叉树

链表和数组的区别,优劣?

IIC协议的最大通信速率、你觉得什么因素限制了IIC速度

问:stm32使用了哪些外设协议?

答:串口、iIC、spi、pwm

问:stm32使用了哪些外设协议?

答:串口、iIC、spi、pwm

问:做项目时,stm32芯片的选型?

答:外设数量、内存大小。

问:stm32程序出问题如何解决?

答:通过keil里的debug功能,端点、单步调试。

问:一些传感器的数据采集如何保证实时性?

答:通过在通用定时器的中断中释放信号量同步任务、ucos系统的延时函数实现。

问:如何调试PID参数,仿真还是实测?

答:配合上位机软件,在室内场地实际调试参数。

问:在飞行器遥控中,蓝牙通讯的距离对数据传输有无影响?

答:调试时飞行器与上位机的距离较近,没遇到这个问题。

下面大华单片机的题目

  • 如何使用软件实现iic

  • spi有哪些信号线

  • 从大一到大三写的代码多少行?手写内存复制函数,提问:s与d重叠时如何处理?

  • 说一说c标准库的一些函数名,给我整懵了

深圳小米

  • 操作系统的中断上半部和下半部

  • 中断中不能执行什么函数

  • (手写笔试题)求斐波那契数列

  • 看程序,回答输出。指针相关的题

南京地平线

  • 询问飞行器项目,询问 飞行器项目的姿态解算算法,使用解算算法的优点,相比于卡尔曼算法的优点。实时操作系统的实时性是如何实现的。主要是考察对项目的掌握程度。

星宸科技

首先是一个技术官针对笔试提问、一步步引导我做出笔试题。然后提问了一些C语言的知识,内存管理等,RTOS的信号量、竞争等。

随后是主管面试,画图解释C语言实现动态内存分配。

ARM相关的

  • ARM是32位,地址空间是

ARM是32位,地址空间是2的32次幂,4G地址空间。所有的外设(FLASH,RAM,SD卡等等)都映射到这4G的空间上。比如大部分ARM7都把RAM映射到0x40000000,所以对RAM的操作就在0X40000000开始的地址上。FLASH从0X0开始。使用FLASH还要考虑地址重映射,就是选择片内FLASH或片外FLASH。

FLASH一般是8位或16位,当它接到32位的ARM上时,地址位就会错位。对于16位FLASH,FLASH的A0要接ARM的A1。对于8位FLASH,FLASH的A0要接ARM的A0。ARM的A0对应8位,ARM的A1对应16位,ARM的A2对应32位,如果FLASH是32位,那么FLASH的A0接ARM的A2.

  • STM32启动方式和程序存储

    https://blog.csdn.net/weixin_42279760/article/details/121063006

    此文档主要介绍在stm32程序下载与运行时,FLASH和RAM的使用情况

    1.背景介绍

    因为stm32内部有两个存储空间,一个是片上的FLASH,一个是片上的RAM,其中FLASH相当于硬盘,其空间一般较大; RAM相当内存,其空间一般较小。不过使用者可以通过 BOOT1/BOOT0 引脚选择程序是在FLASH或RAM中运行(RAM运行执行效率较高)。

    2.存储概况

    以stm32f103zet6为例,此芯片的FLASH 的起始地址为0x08000000,SIZE = 0x80000共512K字节RAM 的起始地址为0x20000000,SIZE = 0x10000共64K字节(因为不同的SRAM芯片的型号不同,但是在stm32中的起始地址都是0x20000000+SIZE)。除此之外,还有一块为系统存储器起始地址为0x1FFFF000,SIZE = 0x7FF共2K字节,其中内置了ST提供的Boot Loader,可以通过该Boot Loader下载程序到FLASH,详细部分在此不做讨论。

    3.编译生成信息分析

    Keil5 编译生成

    compiling stm32f10x_tim.c...

    linking...

    Program Size: Code=7632 RO-data=336 RW-data=72 ZI-data=55640

    FromELF: creating hex file...

    After Build - User command #1: CopyHex_Flash.bat

    1

    2

    3

    4

    5

    6

    上图为Keil5工程编译生成信息,这些信息都代表着程序占用的空间。

    Code:表示程序代码部分所占空间

    Ro-data:表示程序定义的常量所占空间(eg:const定义数据类型)

    RW-data:表示已初始化的全部变量所占空间

    ZI-data:表示未初始化的静态和非静态全局变量以及堆栈所占空间

    在以下三种情况中FALSH和RAM的占用情况:

    运行时程序占用FLASH的大小 SIZE = Code + RO-data+ RW_data

    运行时程序占用RAM的大小 SIZE = RW-data + ZI-data

    烧录时程序占用FLASH的大小 SIZE = Code + RO-data + RW-data

    4.疑问解析

    程序运行时RW为什么既在FALSH中出现又在RAM中出现呢?

    这是因为FALSH部分属性为只读的,而RAM的属性虽然是读写但是里面的数据不能掉电保存,因此在烧录STM32程序的时候,只能先将RW-data保存到flash中,在上电之后系统再将flash中的RW-data拷贝到RAM中进行读写操作,因此在FLASH和RAM中都要留出RW-data的占用空间。

    为什么烧录时没有ZI-data放在flash中呢?

    这是因为ZI-data中的数据都是0,没必要包含,只有程序运行之前,将ZI-data所在的区域(这一区域在RAM中)一律清零即可。包含进去反而浪费FLASH的存储空间。

  • STM32F103的RAM和FLASH大小

小米嵌入式面经

1.变量声明和定义的区别

2.const和指针组合有几种情况,分别介绍一下。

3.项目中用到了spi,spi有几种工作模式,简单介绍一下。

4.static关键字

5.volatile关键字,举几个什么时候需要用到volatile关键字的例子。

6.进程与线程区别,通信方式

7.C语言内存分区,未定义的全局变存放在哪个区。

剩下问的问题很基础,就c语言加操作系统基础,太基础了反而记不清了。八股都答出来了,所以印象不是很深。

两面总共手撕三个代码:

1.删除链表重复节点。(剑指offer原题,难度中等)

2.将字符串里的数字提取出来然后转成数字打印。(难度简单,应该是leetcode的题,掌握数组基础即可,记得数字范围很大,用long接收)

3.一个循环输入,满足某某条件跳出结束即可。(难度在于用 scanf(****!=EOF);即可,牛客有输入练习,做多了就会了)

百度 北京 嵌入式linux(提前批

static,vailate,const关键字。

3.栈和队列。

4.数组和链表

代码:

1.合并两个链表,按顺序。

2.去除字符串里面的空格。

马上面,1.5h

1.还问项目,问里面的难点,还问了一下本科的毕设,因为写在简历上。

2.也问了static关键字,函数里用static定义的变量,存在哪个区?

3.malloc,在函数里定义一个很大的数组,应该直接定义还是用malloc?

代码:

1.复制链表

2.判断计算机是大端还是小端。

3.两数之和leetcode第一题。

4.Linux使用多线程,实现软件定时功能。

华为 上海无线 嵌入式软件工程师

9.11 笔试

1.有向无环带权图,找关键路径。

2.内存分配算法

3.两个数组,给定规则,求最长有连续关联数据的子数组。

9.24 一面,45min

1.介绍项目,问软件部分的结构框架

\2. static关键字

3.大小端,字节对齐,问网络通信一般是什么字节序?

4.存储结构,堆和栈的区别,还有哪些存储区?

5.宏函数和内联函数的区别。#define在编译的那个环节使用?

6.问指针问题,给出四行代码,问含义

int *p[10]

int (*p)[10]

int* (*p)[10]

int (*p)10

7.手撕一个代码,给定数组和一个整数k,问有多少长度至少为2且元素和为k的倍数的子数组。开始写的方法暴力,后面和面试官讨论说出来思路。

当天过了一小时二面,45min

1.介绍项目

2.大小端

3.字节对齐问题,给一个结构体

struct{

char a;

char b;

int c;

}

问在32位机器上,使用sizeof()多大,我说8字节,面试官说还可能是12字节,如果是这种情况:

struct{

char a;

int c;

char b;

}

4.数据结构,问满二叉树,完全二叉树,BST二叉搜索树,说自己的理解和区别。

5.快排,冒泡排序的时间复杂度,什么情况下快排时间复杂度比冒泡高?

6.手撕一个代码,二叉树路径总和位sum的路径有多少,不一定从根节点开始,但一定从上向下。用两层递归写出来。

7.问对无线通信有什么了解。

malloc分配的内存在哪里。

单片机启动程序,在执行main之前的是什么。

keil怎么使用库。

问了堆和栈的区别,static关键字。问到malloc()后不释放会怎样。

第二章-RTOS相关

  • 操作系统基础,任务调度,同步,多线程

  • RTOS

  • 你知道怎么判断栈溢出吗?

  • 进程通信有使用过一些锁和同步的东西吗?

  • 多个进程在获取不到锁的时候会进入什么状态?

  • A:阻塞。

  • 假设一个低优先的进程A获取先到锁,高优先级的进程B获取不到锁,那高优先级进程B的进行也会阻塞吗?

  • A:还是会阻塞。

  • 那如果还有一个任务C,优先级介于A和B之间,那么C任务会去抢占CPU资源吗?

    会的.

  • 那这样导致B等待资源的时候会越来越长,这样的问题有方法可以解决吗?因为B的优先级才最高。

    A:先把A优先级提高,等A释放后再给B。

  • 用什么方式提高A的优先级?

    RTOS有函数可以提高。

  • 那么A的优先级需要提高到多少?

    面试过后才突然想起来,从问题15-20,其实面试官想考的是"优先级反转问题"。但是我当时回答的磕磕绊绊,甚至有一些错误。

  • 又问我信号量组织方式

  • 问单片机与嵌入式系统的最大区别在哪里,答嵌入式系统可以跑多任务,然后逮住OS开始问。任务在内存中的组织方式(TCB-用户栈-用户代码),上下文切换时任务在内存中是如何变动,任务调度点,优先级反转如何解决,任务抢占如何发生,通信机制。

  • 信号量实现的底层原理,可不可以用一个全局变量代替信号量的计数值,答不可以信号量是临界资源要进临界区,问怎么进临界区,答关中断保存cpsr,他比较满意。

  • 大疆一面:问项目,反复问上系统的必要性,估计是个搞os的根本不懂四轴,以前栽过,这次答圆了,又主动答了中断机制,看他不是很感兴趣。最后问我懂不懂os的内存管理,答不懂,之后就是笔试编程为啥不做,答嵌入式对算法只是了解,项目里没用到。

  • 二面,把四轴的控制流程说了一遍,他对四轴还是懂一点,但飞控算法没问,难道大疆不该很看重这一块吗,把所有项目大概都问了一遍,无异常。然后问,你的劣势在哪,答不会Linux,又问我图像处理的算法,靠本科上课学的还没忘干净的知识答一点,中位数滤波,边缘滤波,想深问,我说我只是了解。感觉他不很满意

  • 二面挂了,挂的很不甘心,我的cpu原理知识还没吐出来呢,静态链接也没问,arm这块就问了个中断机制。回来反思为什么引不出自己的优势,感觉自己所答还是很零散,中断就中断,os就os,指令集就指令集,串不起来。后来我**找到一种组织的方式,**能从中断入手把arm架构,上下文模切换,指令流水和程序优化串起来讲,形成一个模板,只要问到其中某一个知识我就能把全部一串说出来,他感兴趣自然再深问。涨了一波经验,挂的不亏。

  • 双堆栈机制与模式切换,任务调度点与任务在内存中的组织方式(TCB-用户栈-用户代码),优先级反转与解决,死锁的原因,然后makefile语法一个。

  • 问CPU知识,"模板"用上了。先问m4 的双堆栈与上下文切换,17个寄存器的功能,LR的作用。顺势答为何中断返回要LR中的值减4,然后指令流水、CPU知识就跟着出来了。又问分支预测发生在指令处理的哪个阶段,cache的作用,回写与写透的区别,为什么设计三级缓存。

  • 线程切换是怎么设计的?

  • 信号量、互斥量底层是怎么设计的?

  • 内存管理是如何设计的?

  • 中断管理是如何设计的?

  • 你自己设计的OS相比于别人的,有哪些创新之处?

  • 实时操作系统的调度器设计细节?包括调度算法设计和上下文保存中的细节

  • 一个操作系统中哪些地方会调用调度器?

  • 一个信号量释放之后,在调度下一个线程的时候是如何选择的?

  • 如何去评估一个操作系统的实时性是否满足要求?如何去测算中断响应时间?

  • MCU上如何设计用户态和内核态?如何保障操作系统的安全性?

  • 平时做驱动外设的时候,有没有遇到过一些棘手的问题?如何解决的?

    这是一个人的

  1. 我的项目中freertos创建了几个任务,都是干嘛的,任务之间如何设计数据交互,反正基本上属于让你把项目给他完完整整的介绍清楚

  2. 静态局部变量与局部变量的区别(很基础)

  3. 为什么局部变量未定义时,每次初始化的结果是不确定的?是个真随机数还是个伪随机数?(我答:与栈的工作过程有关)

  4. 那么嵌入式中栈的工作机制是什么?(不会)

  5. 我连续调用同一个函数两次,他的局部变量初始化结果是否会一致?

  6. 最后面试官说,其实我想问一下你函数调用的过程。

  7. 然后你说静态局部变量存储在静态区,那么静态区的创建和消失是在什么时候?(答:创建时根据程序需求在主函数执行之前执行一个准备函数,其中进行内存申请,消失是随着程序的退出而消失)

  8. 那么我在windows里面运行了多个进程,其中一个进程执行完了,他的静态区会如何处理?

  9. 最后面试官说,可能你所接触的都是单进程,很少甚至忽略进程这个概念,其实我想问的是多进程的内存管理问题。

  • 你任务的优先级是怎么安排的,高优先级的的线程RTOS会怎么样处理?

  • 相同优先级的几个线程是怎么运行的?

  1. 对于临界区数据的处理,使用互斥锁和自己通过条件来判断,哪样更好,为什么?
  2. 上下文切换的时候系统做了些什么?

Linux问了多线程的处理,我只是用树莓派做过小项目,就回答了一下在树莓派中我是怎样处理的,然后面试官问,如果你用的是四核心处理器,那么分配300个线程合理吗?怎样分配才算合理?

面试官还问了多进程,但我没用过,直接就说没有了解过了。

  • RTOS中哪里会进行线程调度

  • 线程切换为什么用PendSVC,有什么优势

  • 线程优先级反转,如何解决?

  • 用了rtos,所以详细问了几个线程间的通信和同步,并问为什么用这种方式并设置场景让我换别的方案

  • RTOS采取哪些手段保证他的实时性

操作系统

  • Freertos支持的任务调度方式,详细说下每种方式
  • 任务(线程)间通信方法
  • 进程和线程的区别
  • 互斥量和信号量的区别
  • 优先级翻转,如何避免优先级翻转
  • STM32任务切换为什么用PendSV
  • FreeRTOS的内存管理怎么实现的?为什么这么做?
  • 对于临界区数据的处理,使用互斥锁和自己通过条件来判断,哪样更好,为什么?

在你的项目中有无接触过信号量、资源争抢的情况(无、但我举了一个信号量同步的问题)

RTOS的实时性如何保证、RTOS中如何测量任务的运行时间、RTOS的中断如何管理、RTOS的并发竞争、IIC协议内容、

相关推荐
茶猫_8 小时前
力扣面试题 - 25 二进制数转字符串
c语言·算法·leetcode·职场和发展
uzong8 小时前
7 年 Java 后端,面试过程踩过的坑,我就不藏着了
java·后端·面试
Rstln11 小时前
【DP】个人练习-Leetcode-2019. The Score of Students Solving Math Expression
算法·leetcode·职场和发展
J老熊13 小时前
JavaFX:简介、使用场景、常见问题及对比其他框架分析
java·开发语言·后端·面试·系统架构·软件工程
猿java13 小时前
什么是 Hystrix?它的工作原理是什么?
java·微服务·面试
陪学15 小时前
百度遭初创企业指控抄袭,维权还是碰瓷?
人工智能·百度·面试·职场和发展·产品运营
大数据编程之光16 小时前
Flink Standalone集群模式安装部署全攻略
java·大数据·开发语言·面试·flink
ifanatic18 小时前
[面试]-golang基础面试题总结
面试·职场和发展·golang
程序猿进阶19 小时前
堆外内存泄露排查经历
java·jvm·后端·面试·性能优化·oom·内存泄露
长风清留扬20 小时前
一篇文章了解何为 “大数据治理“ 理论与实践
大数据·数据库·面试·数据治理