当前位置: 首页 > news >正文

大厂面经:大疆嵌入式面试题及参考答案(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 调试吗?讲一讲常用命令。如果我编译报错,怎么定位错误位置,你知道 gdb 怎么进行多线程调试吗?

GDB 常用命令

编译报错定位

多线程调试

你知道回溯的概念吗?谈一谈栈回溯,采用 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 使用过吗?

GDB 的使用

示例表格

阅读过汇编代码吗?

汇编语言概述

示例表格

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

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

示例表格

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

STM32 芯片硬件概述

示例表格

STM32 中断控制器是什么?

STM32 中断控制器

示例表格

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

嵌入式开发概述

准备工作

示例表格

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

FreeRTOS 内存管理

示例表格

线程之间的通信方式?

线程间通信方式

示例表格

FreeRTOS 任务抢占的机制

FreeRTOS 任务抢占机制

示例表格

FreeRTOS 内存分配

FreeRTOS 内存分配机制

示例表格

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

未初始化的变量初值

示例表格

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

static 变量初始化阶段

示例表格

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

程序从写完到运行的过程

示例表格

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

虚函数及其机制

示例表格

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

智能指针和 weak_ptr

示例表格

进程和线程的区别?

进程和线程的区别

示例表格

用过大疆哪些产品?RoboMaster S1

大疆 RoboMaster S1

互斥量和信号量区别

互斥量和信号量的区别

示例表格


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

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

  1. 发起系统调用:

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

相关文章:

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

目录 Linux 系统调用的过程,中间发生了什么? 表格总结 Linux 中断流程,谈谈你对中断上下文的理解 中断流程 中断上下文理解 Linux schedule() 函数的原理和调用的时机 schedule() 函数原理 调用时机 页表实现机制,分页的缺点? 页表机制 分页的缺点 介绍操作系…...

数据结构【有头双向链表】

目录 实现双向链表 双向链表数据 创建双向链表 初始化双向链表创建(哨兵位) 尾插 打印双向链表 头插 布尔类型 尾删 头删 查询 指定位置后插入 指定位置删除数据 销毁 顺序表和链表的分析 代码 list.h list.c test.c 注意&#xff1a…...

docker 安装jenkins详细步骤教程

Jenkins 是一个开源的持续集成(CI)和持续部署(CD)工具,用于自动化软件开发过程中的构建、测试和部署。 特点和功能: 持续集成:Jenkins 可以自动触发构建过程,检查代码变更并进行构建、测试和部署,以确保团队的代码始终保持可集成状态。 插件生态系统:Jenkins 拥有丰富…...

C++模板函数

C模板函数 函数模板简单的函数模板模板类型推导返回输入的类型,模板返回的类型由输入的决定返回类型的模板参数返回值使用auto,编译器自动推导 默认模板实参模板参数重载函数模板 constexpr关键字 函数模板 简单的函数模板 typename 可以使用class代替…...

c#中的正则表达式和日期的使用(超全)

在 C# 中,正则表达式(Regular Expressions)是一种强大的文本处理工具,用于执行各种字符串搜索、替换和验证任务。以下是一些常用的正则表达式示例及其用途: 1. 邮箱地址验证 ​ string emailPattern "^[^\s][^…...

论文阅读【检测】:商汤 ICLR2021 | Deformable DETR

文章目录 论文地址AbstractMotivation技术细节多尺度backbone特征MSDeformAttention 小结 论文地址 Deformable DETR 推荐视频:bilibili Abstract DETR消除对目标检测中许多手工设计的组件的需求,同时表现出良好的性能。然而,由于Transfor…...

dpdk发送udp报文

dpdk接收到udp报文后,自己构造一个udp报文,将收到的报文中的源mac,目的mac,源ip,目的ip,源端口和目的端口交换下顺序填充到新的udp报文中,报文中的负载数据和收到的udp保持一致。 注&#xff1…...

网站后端管理和构建java项目的工具-Maven

maven是用于管理和构建java项目的工具。 管理Jar包 无论是使用eclipse、IDEA创建的maven项目,格式都是统一的。 不同开发工具创建的maven项目兼容。 test是对main测试的代码。main中的resources中放置配置文件。 对于Maven,一个Maven项目就是一个对象…...

深入理解计算机系统 CSAPP 家庭作业11.10

A: //home.html <form action"/cgi-bin/adder" method"GET"><ul><li><label for"n1">n1:</label><input type"text" id"n1" name"n1" /> //name的值决定页面提交后&#xf…...

Unity3D 二进制序列化器详解

前言 在Unity3D开发中&#xff0c;二进制序列化是一种重要的数据持久化和网络传输技术。通过二进制序列化&#xff0c;游戏对象或数据结构可以被转换成二进制格式&#xff0c;进而高效地存储于文件中或通过网络传输。本文将详细介绍Unity3D中的二进制序列化技术&#xff0c;包…...

js_拳皇(上)

文章目录 架构设计&#xff1a;一图胜千言绪论不能正常加载动图设计的思路渲染画布开发感想角色抽象为矩形ctx 是 canvas 的对象键盘控制角色Set键盘事件流程图在 canvas 里面使用 gif 图片继承存储动作ReferenceError: gif is not definedTypeError: Cannot read properties o…...

TCP请求如何获取客户端真实源IP地址

应用场景 在基于TCP的应用程序中&#xff0c;获取客户端真实源IP地址可以用于以下应用场景&#xff1a; 访问控制和安全策略&#xff1a;通过获取客户端真实源IP地址&#xff0c;应用程序可以实施访问控制策略&#xff0c;限制或允许特定IP地址的访问。这可以用于身份验证、防…...

【b站-湖科大教书匠】6 应用层 - 计算机网络微课堂

课程地址&#xff1a;【计算机网络微课堂&#xff08;有字幕无背景音乐版&#xff09;】 https://www.bilibili.com/video/BV1c4411d7jb/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 6 应用层 6.1 应用层概述 6.2 客户-服务器方式和对等方…...

QT串口和数据库通信

创建串口 串口连接客户端并向服务器发送消息 client.pro #------------------------------------------------- # # Project created by QtCreator 2024-07-02T14:11:20 # #-------------------------------------------------QT core gui network QT core gui…...

WebKitWebKit简介及工作流程

简介 引擎能够解析HTML、CSS、JavaScript等网页标准&#xff0c;从而将互联网内容呈现给用户。 WebKit的主要特点包括&#xff1a; 开源性&#xff1a;它是一个开源项目&#xff0c;任何人都可以查看、修改和贡献代码。跨平台&#xff1a;WebKit可以在多个操作系统上运行&am…...

架构分析(CPU:ARM vs RISC-V)

ARM N2 ARM V2 对比 N2和V2&#xff0c;整体架构具有一致性。保证 SiFive P870 P870 Pipeline Veyron V1...

使用 Docker Compose 部署 RabbitMQ 的一些经验与踩坑记录

前言 RabbitMQ 是一个功能强大的开源消息队列系统&#xff0c;它实现了高效的消息通信和异步处理。 本文主要介绍其基于 Docker-Compose 的部署安装和一些使用的经验。 特点 成熟&#xff0c;稳定消息持久化灵活的消息路由高性能&#xff0c;高可用性&#xff0c;可扩展性高支…...

前端八股速通(持续更新中...)

1、深拷贝和浅拷贝的区别 浅拷贝&#xff1a;浅拷贝是拷贝一层&#xff0c;引用类型共享地址。 如果属性是基本类型&#xff0c;拷贝的就是基本类型的值。 如果属性是引用类型&#xff0c;拷贝的就是内存地址。 意思是&#xff0c;当进行浅拷贝时&#xff0c;对于对象的每一…...

【语音识别和生成】语音识别和语音合成技术

语音识别和生成&#xff1a;语音识别和语音合成技术 目录 引言语音识别技术 语音识别的基本原理语音识别系统的组成语音识别的关键技术 语音合成技术 语音合成的基本原理语音合成系统的组成语音合成的关键技术 语音识别和生成的应用 智能助理智能家居语音翻译医疗健康教育和学…...

Redis#架构师面试题

1、Redis锁存在哪些问题及如何解决&#xff1f; 1、死锁问题 加过期时间设定 2、原子性问题 通过“set…nx...ex…”命令&#xff0c;将加锁、过期命令编排到一起&#xff0c;它们是原子操作了&#xff0c;可以避免死锁。 3、释放其他线程的锁问题 当过期时间设置小于线程…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...