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

目录

Linux 系统调用的过程,中间发生了什么?

表格总结

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

中断流程

中断上下文理解

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

schedule() 函数原理

调用时机

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

页表机制

分页的缺点

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

多级反馈队列调度

时间片轮转

使用 nice 命令

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

进程内存分配

段页式存储

缺页中断

进程间通信

用户空间和内核空间

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

进程间共享内存

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

设计细节

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

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

信号量释放后的调度决策

选择机制

调度决策

表格总结

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

评估实时性

测算中断响应时间

表格总结

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

用户态与内核态设计

安全性保障

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

产品方向

产品示例

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

遇到的问题

解决方案

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

多态概念

示例

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

C++11 新特性

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

字节对齐规则

为什么需要字节对齐

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

内存区域

const 关键字的用法

const 的用途

示例

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

copy_from_user 实现原理

大量数据传递

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

extern "C" 的作用

C 语言环境和 C++ 的不同

delete []和 delete 的区别?

delete 和 delete[] 的区别

示例

C++11 的新特性有了解过吗?

C++11 新特性

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

指针与引用的区别

线程切换是怎么设计的?

线程切换设计

表格总结

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

信号量底层设计

互斥量底层设计

内存管理是如何设计的?

内存管理设计

中断管理是如何设计的?

中断管理设计

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

创新之处

线程同步用过什么?

线程同步机制

示例

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

高低优先级翻转

解决方案

示例表格

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

自旋锁与互斥锁的区别

在中断中使用自旋锁避免死锁

示例表格

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

U-COS 系统滴答时钟

设置滴答时钟频率

示例表格

多任务运行同步机制

同步机制概述

常见的同步机制

示例表格

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

STM32 芯片配置示例

示例表格

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

开发经验

你开发过哪些驱动吗?

驱动开发经验

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

SPI 通信过程

SPI 的线路

示例表格

速率配置

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

DMA 技术

DMA 的工作原理

示例表格

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

SPI 模式

示例表格

gdb%20%E6%80%8E%E4%B9%88%E8%BF%9B%E8%A1%8C%E5%A4%9A%E7%BA%BF%E7%A8%8B%E8%B0%83%E8%AF%95%E5%90%97%EF%BC%9F-toc" style="margin-left:80px;">你用过 GDB 调试吗?讲一讲常用命令。如果我编译报错,怎么定位错误位置,你知道 gdb 怎么进行多线程调试吗?

GDB 常用命令

编译报错定位

多线程调试

gdb%20%E6%80%8E%E4%B9%88%E8%B0%83%E8%AF%95%EF%BC%9F-toc" style="margin-left:80px;">你知道回溯的概念吗?谈一谈栈回溯,采用 gdb 怎么调试?

回溯概念

GDB 中的栈回溯调试

示例表格

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

程序跑飞定位

运行态的错误怎么调试?

运行态错误调试

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

新的设计想法

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

操作系统多线程模块

用过大疆哪些产品?RoboMaster S1

RoboMaster S1 介绍

互斥量和信号量区别

互斥量与信号量的区别

示例表格

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

项目难题解决

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

无人机的未来

大疆产品优缺点

示例表格

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

互斥锁与自定义条件判断

互斥锁的优势

示例表格

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

上下文切换过程

示例表格

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

中断工作原理

示例表格

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

MMU(Memory Management Unit)

示例表格

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

全局变量存储位置

示例表格

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

U-Boot 启动流程

两阶段的原因

示例表格

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

第一阶段足够小的原因

示例表格

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

I2C 和 SPI 总线协议

示例表格

I2C 的读写数据的步骤

I2C 读写数据步骤

示例表格

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

MMU(Memory Management Unit)

示例表格

什么是缺页异常?

缺页异常概念

示例表格

可以举一个具体的缺页异常产生的例子吗?

缺页异常的具体例子

示例表格

用户态程序访问空指针或者 0 地址会发生什么?

访问空指针或 0 地址的结果

示例表格

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

判断物理地址合法性

示例表格

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

是否需要标记所有合法地址

示例表格

页表是如何初始化?

页表初始化过程

示例表格

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

ELF 文件的内存布局

示例表格

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

堆区和栈区之间的区域

示例表格

mmap 匿名页的映射?

mmap 匿名页映射

示例表格

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

mmap 的虚拟地址与文件关联

示例表格

gdb%20%E4%BD%BF%E7%94%A8%E8%BF%87%E5%90%97%EF%BC%9F-toc" style="margin-left:80px;">gdb 使用过吗?

GDB 的使用

示例表格

阅读过汇编代码吗?

汇编语言概述

示例表格

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

C 语言函数入参的汇编导入

示例表格

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

STM32 芯片硬件概述

示例表格

STM32 中断控制器是什么?

STM32 中断控制器

示例表格

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

嵌入式开发概述

准备工作

示例表格

FreeRTOS%20%E7%9A%84%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%E6%80%8E%E4%B9%88%E5%AE%9E%E7%8E%B0%E7%9A%84%EF%BC%9F-toc" style="margin-left:80px;">FreeRTOS 的内存管理怎么实现的?

FreeRTOS%20%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86-toc" style="margin-left:120px;">FreeRTOS 内存管理

示例表格

线程之间的通信方式?

线程间通信方式

示例表格

FreeRTOS%20%E4%BB%BB%E5%8A%A1%E6%8A%A2%E5%8D%A0%E7%9A%84%E6%9C%BA%E5%88%B6-toc" style="margin-left:80px;">FreeRTOS 任务抢占的机制

FreeRTOS%20%E4%BB%BB%E5%8A%A1%E6%8A%A2%E5%8D%A0%E6%9C%BA%E5%88%B6-toc" style="margin-left:120px;">FreeRTOS 任务抢占机制

示例表格

FreeRTOS%20%E5%86%85%E5%AD%98%E5%88%86%E9%85%8D-toc" style="margin-left:80px;">FreeRTOS 内存分配

FreeRTOS%20%E5%86%85%E5%AD%98%E5%88%86%E9%85%8D%E6%9C%BA%E5%88%B6-toc" style="margin-left:120px;">FreeRTOS 内存分配机制

示例表格

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

未初始化的变量初值

示例表格

static 变量的初始化在什么阶段?

static 变量初始化阶段

示例表格

一个程序从写完到运行起来需要经历什么阶段?

程序从写完到运行的过程

示例表格

虚函数是用来干嘛的?虚函数机制怎么实现的?虚表指针在内存中的存放位置?

虚函数及其机制

示例表格

智能指针用过吗?weak_ptr 是用来干嘛的?怎么保证用 weak_ptr 不会崩溃?

智能指针和 weak_ptr

示例表格

进程和线程的区别?

进程和线程的区别

示例表格

用过大疆哪些产品?RoboMaster S1

大疆 RoboMaster S1

互斥量和信号量区别

互斥量和信号量的区别

示例表格


Linux 系统调用的过程,中间发生了什么?

系统调用是用户态程序与内核交互的一种方式。当用户态程序需要请求内核服务时,它会通过系统调用来完成。以下是系统调用的一般过程:

  1. 发起系统调用:

    • 用户态程序通过调用一个库函数(通常是 glibc 提供的)来发起系统调用。
    • 库函数负责设置好系统调用所需的参数,并通过特定的指令(

http://www.ppmy.cn/news/1504251.html

相关文章

13. 基于标定板的lidar到车体的外参标定思路

目录 1. 什么是lidar到车体的外参?2. 为什么要做这个外参矫正?3. 怎么做这个外参矫正?3.1 标定思路3.2 lidar检测标定板上的圆心流程介绍3.3 匹配过程 4. 老乡别走,一起来读书吧 1. 什么是lidar到车体的外参? 在机器人…

LDR6020 iPad皮套一体式键盘充电方案解析

在移动办公与学习的浪潮中,iPad凭借其强大的性能与便携性,成为了越来越多人的首选设备。然而,随着工作与学习任务的日益复杂,单一的触控操作已难以满足高效、精准的需求。因此,搭配一款优秀的键盘成为了提升iPad使用体…

基于北京市空气质量影响因素研究系统【城市可换爬虫获取、LSTM、Flask、Echarts、MySQL、TensorFlow】

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主研究背景国内外研究现状研究目的研究意义关键技术理论介绍数据采集数据分析与大屏设计大屏相关性分析LSTM模型训练系统集成展示总结每文一语 有需要本项目的代码或文档以及全部资源&#xf…

[BJDCTF2020]Easy MD51

抓包看一下信息,发现有sql注入字段 输入 注入发现 查看源码 然后get传参?aQNKCDZO&bs214587387a 最后 MD5函数的弱类型比较 发现PHP代码,分析仍为 PHP md5绕过。 使用数组绕过POST传入param1[]1&param2[]2,得到flag。

Hadoop伪分布式搭建

伪分布式模式也是在一台单机上运行,集群中的结点由一个NameNode和若干个DataNode组,另有一个SecondaryNameNode作为NameNode的备份。一个机器上,既当namenode,又当datanode,或者说既是jobtracker,又是tasktracker。没有…

CentOS7.9升级OpenSSL1.1.1w

下载 https://www.openssl.org/source/old/1.1.1/index.html 安装依赖 yum install gcc libffi-devel zlib* openssl-devel libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc perl make 解压 tar -zxvf openss…

「数组」C++STL库vector(动态数组|向量)全部函数介绍

概述 vector 是一种C标准模板库STL中定义的一种序列容器,它允许你在运行时动态地插入和删除元素。 vector 是基于数组的数据结构,但它可以自动管理内存,这意味着你可以添加任意多的元素在其中,并且你不需要手动分配和释放内存。…

CentOS下通过yum搭建完整lnmp环境(安装单版本PHP)

lnmp即 Linux Nginx Mysql PHP,本文以 CentOS 7.x 为例介绍如何通过 yum 的方式搭建完整的 lnmp 环境。 实现目标 1、通过 yum 方式安装 nginx、mysql 8.0、php 7.4 2、安装 php 模块,部署网站,实现运行 php ,读取数据库 安…

大模型训练流程解析

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl训练大模型是一个复杂且资源密集的过程,它不仅仅要求大量的计算资源和时间,还涉及多个关键步骤和要素。这个过程需要从数据的收集、清洗、整理到模型的设计与选择,再到模型的训练、评估与优化,…

关于qt中如何布局

qt中有水平布局 垂直布局等等 1 可把控件放到空窗口中进行水平布局 要想有间隙 加弹簧即可 lineedit控件中若想让输入的数在屏幕上显示密码 别人不可见 usernameLineEdit->text(); 这个函数是获取用户输入 然后与if else 中的密码相匹配 #include <QApplication> #inc…

【2024蓝桥杯/C++/B组/小球反弹】

题目 分析 Sx 2 * k1 * x; Sy 2 * k2 * y; &#xff08;其中k1, k2为整数&#xff09; Vx * t Sx; Vy * t Sy; k1 / k2 (15 * y) / (17 * x)&#xff1b; 目标1&#xff1a;根据k1与k2的关系&#xff0c;找出一组最小整数组&#xff08;k1, k2&#xff09;&#xff…

【优秀python大屏案例】基于python flask的前程无忧大数据岗位分析可视化大屏设计与实现

随着大数据和人工智能技术的迅猛发展&#xff0c;数据分析和可视化在各个行业中的应用越来越广泛。特别是在招聘领域&#xff0c;大数据分析不仅能够帮助企业更好地了解市场需求&#xff0c;还能为求职者提供科学的职业规划建议。本文探讨了基于Python Flask框架的前程无忧大数…

springboot集成thymeleaf实战

引言 笔者最近接到一个打印标签的需求&#xff0c;由于之前没有做过类似的功能&#xff0c;所以这也是一次学习探索的机会了&#xff0c;打印的效果图如下&#xff1a; 这个最终的打印是放在58mm*58mm的小标签纸上&#xff0c;条形码就是下面的35165165qweqweqe序列号生成的&…

光伏气象仿真系统有什么优势?

光伏气象仿真系统作为这一领域的核心工具&#xff0c;凭借其独特的优势&#xff0c;正逐步成为行业标配。本文将围绕数据可靠性、功能齐全性、海外布局支持、系统开放性以及合作方式灵活性五个方面&#xff0c;深入探讨光伏气象仿真系统的显著优势。 1.数据可靠&#xff1a;权威…

Golang基础常识性知识面试中常见的六大陷阱及应对技巧

一、nil slice & empty slice 1、nil切片与空切片底层 nil切片&#xff1a;var nilSlice [] string nil slice的长度len和容量cap都是0 nil slicenil nil slice的pointer是nil 空切片&#xff1a;emptySlice0 : make([]int,0) empty slice的长度是0&#xff0c;容量是由…

信息安全工程师题

《中华人民共和国网络安全法》是为保障网络安全&#xff0c;维护网络空间主权和国家安全、社会公共利益&#xff0c;保护公民、法人和其他组织的合法权益&#xff0c;促进经济社会信息化健康发展制定。由全国人民代表大会常务委员会于2016年11月7日发布&#xff0c;自2017年6月…

Spring Boot项目实现调用腾讯云进行人脸识别

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 背景 随着科技的不断发展&#xff0c;人脸识别技术已经成为了一种日益重要的身份验证和安全监控手段。腾讯云人脸识别功能便是其中之一&#xff0c;而Java语言又是现在最为常用且高效的编程语言之一。本篇论…

数据结构之多维数组的存储

一、多维数组的定义 多维数组是由n&#xff08;n≥1&#xff09;个相同数据类型的数据元素组成的有限序列&#xff0c;其中每个元素本身也可以是一个数组。 最常见的多维数组是二维数组&#xff0c;可以看作是一维数组的一维数组。类似地&#xff0c;三维数组可以看作是存储二…

C语言实现 -- 单链表

C语言实现 -- 单链表 1.顺序表经典算法1.1 移除元素1.2 合并两个有序数组 2.顺序表的问题及思考3.链表3.1 链表的概念及结构3.2 单链表的实现 4.链表的分类 讲链表之前&#xff0c;我们先看两个顺序表经典算法。 1.顺序表经典算法 1.1 移除元素 经典算法OJ题1&#xff1a;移除…

RabbitMQ 生产和消息

1. 安装RabbitMQ 编写docker-compose.yml文件 version: 3.8 services:rabbitmq:image: rabbitmq:managementcontainer_name: rabbitmq_containerports:- "5672:5672"- "15672:15672"volumes:- ./rabbitmq_data:/var/lib/rabbitmqenvironment:RABBITMQ_DE…