大厂面经:大疆嵌入式面试题及参考答案(4万字长文:持续更新)

目录

                  Linux 中断流程,谈谈你对中断上下文的理解

Linux schedule() 函数的原理和调用的时机

页表实现机制,分页的缺点?

介绍操作系统的多级反馈调度策略,时间片轮转,在项目中如何指定优先级来调度进程完成快速响应(nice 命令)

聊内存分配,进程内存分配,段页式存储,缺页中断,进程间通信的方式,为什么分用户空间和内核空间

详细说下进程间共享内存的分配,在哪个空间,读写速度怎么样,通信是否需要经过内核

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

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

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

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

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

如果让你去开辟一个新的产品,你会想做什么?

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

C++多态怎么理解?C++有哪些多态的典型例子?

C++了解吗?C++11 新特性用的多吗

C 语言字节对齐的规则,为什么要字节对齐?

C 语言程序运行时的内存分配

const 关键字的用法

copy_from_user 实现的原理?如果需要从内核中传递大量数据怎么办?

extern C 有什么用?为什么要和编译器声明 C 语言环境?C 语言环境和 C++有什么不同?

delete []和 delete 的区别?

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

线程切换是怎么设计的?

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

内存管理是如何设计的?

中断管理是如何设计的?

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

线程同步用过什么?

互斥锁注意过高低优先级翻转吗

自旋锁和互斥锁的区别,在中断中使用自旋锁要怎么避免死锁

U-cos 系统滴答时钟设置频率

多任务运行同步机制

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

你在 STM32 上都做过哪些开发?

你开发过哪些驱动吗?

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

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

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

你用过 GDB 调试吗?讲一讲常用命令。如果我编译报错,怎么定位错误位置,你知道 gdb 怎么进行多线程调试吗?

你知道回溯的概念吗?谈一谈栈回溯,采用 gdb 怎么调试?

在用户态开发中程序跑飞,出现段错误等情况,你通过什么方式去定位?

运行态的错误怎么调试?

对于一个无人机产品,基于目前市面上已有的产品,你还有什么新的设计想法?

如果要设计一个操作系统实现多线程,你会需要几个模块?

用过大疆哪些产品?RoboMaster S1

互斥量和信号量区别

项目中碰到的困难,怎么解决的。

无人机的未来(大疆产品优缺点)

对于临界区数据的处理,使用互斥锁和自己通过条件来判断,哪样更好,为什么?

上下文切换的时候系统做了些什么?

中断是如何产生的,具体的工作原理知不知道?

MMU 是什么东西?MMU 是如何实现虚拟内存和实际物理内存的切换的?

未初始化的全局变量放在什么地方?bss 段省的空间是什么空间?

说说 u-boot 启动流程。为什么 bootloader 要分两个阶段?

bootloader 第一个阶段为什么要足够的小?

对总线协议有哪些了解?I2C 和 SPI

I2C 的读写数据的步骤

虚拟地址如何转换成物理地址?MMU?

操作系统如何判断想要访问的物理地址是合法的还是非法的?

需要将所有的合法地址标记为合法的吗?

页表是如何初始化?

一个 ELF 文件加载到内存后,各个段的分布?

堆区和栈区之间还有什么区?

mmap 匿名页的映射?

mmap 返回的虚拟地址如何和具体文件关联起来?

gdb 使用过吗?

阅读过汇编代码吗?

c 语言函数的入参在汇编语言中是如何导入函数主体的?

用到的 STM32 芯片硬件有了解过吗?

STM32 中断控制器是什么?

对嵌入式开发有哪些了解?做了哪些准备?

FreeRTOS 的内存管理怎么实现的?

线程之间的通信方式?

FreeRTOS 任务抢占的机制

FreeRTOS 内存分配

未初始化的变量的初值是怎么样的?

你可能感兴趣的:(单片机,嵌入式硬件,大厂面试,智能指针,gdb,FreeRTOS,大厂面经)