
ARM/Linux嵌入式面试
文章平均质量分 91
华为、OPPO、大疆、Vivo、小米、海康、大华等大厂嵌入式工程师面试经验。
每周两更,永不停止!
励志做最全ARM/Linux嵌入式面试经验与题库。
励志讲清每一个知识点,找到每个问题最好的答案。
让你学懂,掌握,融会贯通。
TrustZone_
一个搞技术的读书人,妄图分享最干货的技术知识与世界运转的底层逻辑。公ZH:TrustZone
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ARM/Linux嵌入式面试专栏前言
实在是没有想到也会准备面试,毕业的时候想着找一个大厂,好好的一辈子都干下去。然而我们最后也不是谁变了心,。到现在她在想着多久删掉我合适,而我必须得开始找备胎了。不然我的对象真的得离我而去了。原创 2024-03-11 15:52:15 · 424 阅读 · 0 评论 -
面试真题 | 招银 C++
该算法通过为不同频率的字符分配不同长度的编码,使得出现频率高的字符使用较短的编码,而频率低的字符使用较长的编码,从而达到压缩数据的目的。我可以利用自己的技术专长,参与到金融产品的研发、系统架构的设计、数据分析与处理等工作中,推动银行业务的数字化和智能化转型。不过,值得注意的是,嵌入式系统本身并不直接包含数据库管理系统(DBMS),但在某些复杂的应用中,可能会使用轻量级的数据库或数据存储方案。此外,为了简化问题,我们假设节点的插入顺序不影响宽度的计算(即不考虑同一层中节点的左右顺序对宽度的影响)。原创 2025-02-15 12:38:18 · 272 阅读 · 0 评论 -
面试真题 | B站C++渲染引擎
深度测试、模板测试、透明度测试的顺序安排是基于它们在渲染管线中的作用和相互之间的依赖关系。这种顺序确保了渲染过程的逻辑性和准确性,使得最终的渲染结果能够正确地反映物体之间的遮挡关系和特定的渲染效果。泛光效果- 请解释一下泛光(Bloom)效果的原理和实现方法。原创 2025-02-12 21:22:22 · 242 阅读 · 0 评论 -
面试真题 | Momenta c++
回答您好,我叫[您的名字],毕业于[毕业院校],专业是[专业名称]。在校期间,我深入学习了C++编程语言、数据结构、算法以及操作系统等计算机基础课程,并积极参与了多个项目开发,积累了丰富的实践经验。毕业后,我加入了[公司名称],担任嵌入式软件开发工程师的职位。在这里,我主要负责嵌入式系统的设计与开发,包括硬件驱动编写、操作系统移植、应用层软件开发等工作。通过参与多个大型项目,我不仅掌握了嵌入式C++编程的精髓,还熟悉了ARM、DSP等嵌入式处理器的架构和编程模型。原创 2025-02-08 23:15:42 · 335 阅读 · 0 评论 -
面试真题 | 超图骏科 C++
在C++中,构造函数是用于初始化对象的特殊成员函数。根据用途和参数的不同,可以将构造函数分为以下几种类型:默认构造函数(Default Constructor)参数化构造函数(Parameterized Constructor)拷贝构造函数(Copy Constructor)移动构造函数(Move Constructor)委托构造函数(Delegating Constructor)追问1:追问2:追问3:::追问1:追问2:追问3:描述指针和引用的基本区别:定义与初始化:空值:操作:内存占用:解释指针和引用原创 2025-02-08 22:46:20 · 234 阅读 · 0 评论 -
面试真题 | 华为 OD C++ [20241229]
问题描述(假设性问题描述,因为“靠谱的车”不是标准算法题名称,这里我们假设它指的是某种基于数字串的筛选或处理问题):给定一个非常长的数字串,需要从中筛选出满足某种条件(比如包含特定数字序列、符合特定数学规律等)的“靠谱的车”(这里用“车”作为比喻,实际可能代表某种数据单元或模式)。优化策略:字符串预处理:滑动窗口:并行处理:算法复杂度分析:面试官追问:追问1:在滑动窗口技术中,如果窗口大小很大,而数字串又非常长,这会对算法效率产生什么影响?如何进一步优化?答案:滑动窗口大小很大时,会导致每次移动窗口都需原创 2024-12-29 14:01:15 · 170 阅读 · 0 评论 -
面试真题 | 快手 C++ [20241229]
和 都是用于动态内存分配的操作符,但它们在使用方式、底层实现和适用场景上有显著区别。语法和返回类型: 是 C++ 运算符,用于分配对象内存,并调用对象的构造函数(如果适用),返回一个具体类型的指针。内存初始化:内存释放: 分配的内存需要使用 或 运算符释放,并调用对象的析构函数(如果适用)。异常安全性: 在分配失败时会抛出 异常,可以使用 版本避免异常,但返回值是 。底层实现:::答案:是的, 和 运算符可以重载。重载 和 运算符允许自定义内存分配原创 2024-12-29 14:00:07 · 162 阅读 · 0 评论 -
ARM/Linux嵌入式面经(六二):诺瓦星云
回答您好,我叫XXX,毕业于XXX大学,专业是电子信息工程。在校期间,我通过参与多个嵌入式开发项目和竞赛,积累了丰富的实践经验。我擅长C/C++编程,熟悉ARM、DSP等嵌入式处理器的架构和编程,同时也对嵌入式操作系统如Linux、RTOS有一定的了解。我具备良好的问题解决能力和团队合作精神,能够在压力下高效地完成工作任务。面试官追问追问一:能具体分享一个你在大学期间参与的嵌入式项目吗?你在其中扮演了什么角色?回答当然可以。原创 2024-12-29 13:58:48 · 359 阅读 · 0 评论 -
面试真题 | 虎牙 C++[20241218]
内存泄漏(Memory Leak)是指程序在运行过程中动态分配的内存没有被适当地释放或回收,导致这部分内存始终被占用,无法再被程序或其他程序使用。在C++中,内存泄漏是一个常见且严重的问题,因为它会导致应用程序在运行时消耗越来越多的内存,直到系统崩溃。智能指针是C++中一种用于管理动态分配对象的指针,它能够自动处理资源的生命周期,从而避免内存泄漏和悬挂指针等问题。智能指针的主要目的是简化内存管理,确保在不再需要对象时自动释放其占用的内存。C++11标准中引入了多种智能指针,包括auto_ptr。原创 2024-12-18 21:18:01 · 489 阅读 · 0 评论 -
面试真题 | 金山 C++ [20241218]
在嵌入式C++面试中,如果面试官提到“循环引用计数最后是多少”这个问题,他可能是在考察对智能指针、内存管理以及循环引用问题的理解。以下是对该问题的完整且有深度的回答,以及几个可能的追问及其答案。原创 2024-12-18 20:40:42 · 620 阅读 · 0 评论 -
ARM/Linux嵌入式面经(六一):联合汽车电子
在嵌入式系统领域,ARM与RISC-V是两种重要的指令集架构(ISA),它们各自具有独特的特点和优势。原创 2024-12-17 22:42:19 · 176 阅读 · 0 评论 -
ARM/Linux嵌入式面经(六零):禾迈
IIC(Inter-Integrated Circuit)通信协议是一种广泛应用的串行通信协议,它采用两根信号线——时钟线(SCL)和数据线(SDA),实现集成电路之间的通信。在IIC通信中,设备分为主设备(Master)和从设备(Slave),主设备负责控制整个通信过程,而从设备则接受主设备的控制并根据需要提供数据。发送起始信号:在SCL为高电平时,SDA由高电平跳变为低电平,这一变化标志着通信的开始。此时,从设备需要准备好接收数据,并等待后续的地址字节。发送从设备地址。原创 2024-12-17 22:42:12 · 158 阅读 · 0 评论 -
ARM/Linux嵌入式面经(五九):海尔
此外,还需要考虑系统的硬件资源和软件支持情况,以确保所选的通信方式能够在系统中得到良好的实现和应用。例如,在开发一个基于ARM Cortex-M系列微控制器的嵌入式系统时,我会根据项目的需求选择合适的微控制器型号,并设计相应的电路和固件。例如,在医疗电子设备中,由于涉及到人体安全,对电气隔离的要求极高,光电隔离可以有效地将不同电位之间的电路进行隔离,防止电流通过,从而保护患者和设备的安全。开关频率的选择会影响电路中的电感、电容等元件的大小和成本,同时也会影响电路的效率和稳定性。原创 2024-12-17 22:41:52 · 238 阅读 · 0 评论 -
ARM/Linux嵌入式面经(五八):英飞源
蓝牙模块型号众多,每种型号都有其独特的特点和适用场景。HC-05成本低廉,易于使用。支持多种蓝牙协议,包括SPP,可以用作一般串口协议的无线传输解决方案。支持从设备模式和主设备模式,灵活性高。常用于机器人、电子秤、智能家居等领域。HC-06基于Bluetooth Specification V2.0 + EDR标准,从机蓝牙串口模块。通常只支持SPP协议,易于集成。只支持从设备模式,适合作为从设备使用。广泛应用于嵌入式系统和无线通信项目中,如智能家居、物联网设备等。原创 2024-12-17 22:41:43 · 245 阅读 · 0 评论 -
ARM/Linux嵌入式面经(五七):东方微电
在嵌入式系统中,低功耗技术至关重要,它有助于延长设备的运行时间,提高能源利用效率。低功耗的三种常见模式主要包括休眠模式、低功耗运行模式和停机模式。以下是对这三种模式的详细解释,以及可能的面试官追问和相应回答。原创 2024-12-15 19:27:56 · 273 阅读 · 0 评论 -
ARM/Linux嵌入式面经(五六):科华数据
进程间通信(IPC,InterProcess Communication)是指在不同进程之间传递数据或信号的一种机制。由于每个进程都有自己独立的地址空间,因此它们之间无法直接访问对方的数据。为了实现进程间的通信,操作系统提供了一系列机制来允许进程之间交换数据。原创 2024-12-15 19:29:08 · 144 阅读 · 0 评论 -
ARM/Linux嵌入式面经(五五):未岚大陆
我们首先根据项目的性能需求确定了所需的读写速度、擦除速度以及功耗等关键指标,并对比了不同品牌和型号的flash和E2存储器在这些指标上的表现。同时,UART通信的硬件连接相对简单,不需要额外的时钟线路,从而降低了硬件成本。但是,PID算法的性能也高度依赖于参数的选择,对于复杂的系统,往往需要进行多次试验和调整才能达到较好的控制效果。此外,还有限幅滤波、中位值平均滤波、限幅平均滤波、一阶滞后滤波、加权递推平均滤波、消抖滤波等多种滤波方法,它们各有特点和使用范围,可以根据实际需求选择合适的滤波方法进行处理。原创 2024-12-15 17:06:26 · 330 阅读 · 0 评论 -
ARM/Linux嵌入式面经(五四):睿联
在嵌入式系统中,系统调用是用户态程序与内核态程序进行交互的一种机制。系统调用允许用户态程序请求内核提供的服务,如文件操作、进程控制、内存管理等。原创 2024-12-15 16:48:53 · 379 阅读 · 0 评论 -
ARM/Linux嵌入式面经(五三):奥比中光
在嵌入式系统中,PWM(脉冲宽度调制)输入捕获定时器是一种重要的外设,它能够测量外部PWM信号的频率、占空比等参数。原创 2024-12-15 16:14:15 · 430 阅读 · 0 评论 -
ARM/Linux嵌入式面经(五二):华为
如前所述,该算法的时间复杂度是O(n),其中n是三位数的数量(900)。然而,需要注意的是,正则表达式的编译时间(即构建正则表达式对象的时间)通常不计入算法的时间复杂度分析中,因为它是一个预处理步骤,与输入字符串的长度无关。在嵌入式系统开发中,硬件改进是一个综合性的过程,它涉及对现有硬件架构、组件、连接方式以及物理布局等方面的优化或升级,旨在提升系统的性能、可靠性、能效比或降低成本。空间复杂度是O(m),其中m是结果列表中的元素数量(即三位偶数的数量,大约是450个),因为我们需要存储这些数。原创 2024-10-23 22:23:20 · 732 阅读 · 0 评论 -
ARM/Linux嵌入式面经(五一):荣耀
文章目录1. **static关键字在C++中的具体作用是什么?**1. 全局变量中的`static`2. 局部变量中的`static`3. 函数中的`static`4. 类中的`static`面试官追问及答案2. **如何实现一个函数只被调用一次,并在后续调用中直接返回结果?**问题回答:面试官追问及回答:3. **在C++中,如何高效地找出1-100以内的所有质数?**暴力解法埃拉托斯特尼筛法面试官追问及答案4. **在嵌入式系统中,内存管理有哪些特殊考虑?**问题回答面试官追问及回答5. **描述一次原创 2024-10-23 22:23:49 · 239 阅读 · 0 评论 -
ARM/Linux嵌入式面经(五十):tp普联
FreeRTOS提供了多种任务间通信和同步的机制,这些机制使得任务之间可以有序地交换信息和协调执行。任务间的通信是指一个任务向另一个任务传递信息,而同步则是指多个任务按照一定的顺序执行。UDP是一种无连接的、不可靠的传输层协议。它主要用于那些对实时性要求高,但对数据可靠性要求不高的场景,如实时视频、音频传输、在线游戏等。无连接:在发送数据前不需要先建立连接,因此传输效率高。不可靠传输:没有重传机制和顺序控制机制,发出的数据包一旦发生丢失就无法恢复,也无法保证接收方接收到数据的顺序一定是发送方发送的顺序。原创 2024-10-23 22:23:16 · 462 阅读 · 0 评论 -
ARM/Linux嵌入式面经(四九):诺瓦星云
如果逻辑分析仪提供的协议解码器无法满足需求,我会考虑编写自定义解码器。这通常需要使用逻辑分析仪提供的脚本或编程接口,根据通信协议的要求编写解码逻辑。原创 2024-10-23 21:13:59 · 315 阅读 · 0 评论 -
ARM/Linux嵌入式面经(四八):tp-link联洲国际
协程(Coroutine)是一种用户空间的轻量级线程,它允许不同入口点在不同位置暂停或开始执行程序。协程具有非常高效的调度切换能力,其执行过程更类似于子例程,或者说不带返回值的函数调用,但相对于子例程来说,协程更为一般和灵活。调度方式协程:由程序员在代码中显式地切换执行,其调度完全由用户控制。线程:由操作系统调度,线程的切换和调度由操作系统内核负责。进程:也是由操作系统调度,但进程是资源分配的基本单位,其切换涉及更多的资源开销。上下文切换开销协程:上下文切换仅仅是保存和恢复栈的内容,开销很小。原创 2024-10-19 23:41:27 · 311 阅读 · 0 评论 -
ARM/Linux嵌入式面经(四七):华为
最后,在测试调试阶段,我参与了系统的集成测试、功能测试和性能测试,发现并修复了多个潜在问题,确保了产品的质量和稳定性。同时,在嵌入式系统的设计中,还需要充分考虑系统的资源限制和实时性需求,以选择合适的隔离机制和调度策略。因此,我们团队决定开发一个智能农业监控系统,通过传感器网络实时采集农田的温湿度、光照强度、土壤湿度等关键信息,并通过嵌入式系统进行处理和分析,最终将监测结果通过无线方式传输给农户,帮助他们做出更科学的农业管理决策。于是,我采用了低功耗传感器和动态调整通信速率的方法,有效降低了系统的功耗。原创 2024-10-19 23:12:04 · 387 阅读 · 0 评论 -
ARM/Linux嵌入式面经(四六):华为
指针:指针是一个变量,其存储的值是另一个变量的内存地址。通过指针,可以直接访问和操作内存中的数据对象。指针可以有多级,例如int**p是合法的,表示p是一个指向指针的指针。引用:引用是一个已存在变量的别名,它与原始变量实质上是同一个对象,不是原始对象的拷贝。引用在定义时必须初始化,且一旦初始化后,就不能再改变其引用的对象。引用只能是一级的,例如int&&a是不合法的。原创 2024-10-19 22:38:42 · 420 阅读 · 0 评论 -
浩鲸科技C++
需求分析与性能指标首先,明确软件的需求,包括功能需求和非功能需求(如响应时间、吞吐量、资源占用等)。根据需求设定具体的性能指标,这些指标将作为性能优化的目标。性能建模与预测在软件开发早期,通过性能建模来预测系统的性能表现。使用仿真工具或理论模型来评估不同设计方案的性能。代码优化优化算法和数据结构,减少不必要的计算和资源消耗。使用高效的C++特性,如内联函数、模板、RAII等。避免内存泄漏和不必要的内存分配/释放。多线程与并发处理在多核处理器上,合理利用多线程来提高性能。原创 2024-10-13 19:10:12 · 140 阅读 · 0 评论 -
好未来-C++客户端开发(实习转正)
多态性是面向对象编程中的一个核心概念,它允许同样的调用语句在不同的情况下有不同的表现形态。在C++中,多态性主要通过虚函数和动态绑定来实现。具体来说,多态性使得基类的指针或引用可以指向派生类的对象,并通过基类指针或引用来调用派生类中的同名函数,从而实现动态绑定和函数重写。继承:多态性发生在有继承关系的类之间。虚函数:在基类中,使用virtual关键字声明函数,使其成为虚函数。这样,在派生类中就可以重写该函数。基类指针或引用指向派生类对象。原创 2024-10-13 19:10:07 · 147 阅读 · 0 评论 -
23届-c++面经(华od)
首先,我们需要定义一些数据结构和全局变量来存储砖块、节点、边以及机器人的状态。// 定义砖块结构体// 砖块的左上角和右下角坐标// 定义节点结构体(图的顶点)int x, y;// 节点的坐标// 从起点到该节点的最短路径成本// 指向父节点的指针,用于路径重构// 标记节点是否已被访问// 构造函数// 定义边结构体(图的边)// 边的起点和终点// 边的权重(距离)// 构造函数// 全局变量// 存储所有砖块// 用于快速查找节点// 存储所有边// 起始节点。原创 2024-10-13 19:10:00 · 117 阅读 · 0 评论 -
中科曙光C/C++研发工程师二面
CNN,即卷积神经网络,是一种专门用于处理具有类似网格结构数据的深度学习模型。它通过卷积层和池化层提取图像特征,并通过全连接层进行分类或回归预测。CNN在图像识别、目标检测和图像生成等领域取得了巨大成功。具体来说,CNN的模型结构包括输入层、卷积层、激活函数、池化层、全连接层和输出层。输入层接收图像数据,并将其转换为CNN可以理解的数字形式。卷积层通过滤波器(卷积核)对图像进行卷积运算,提取图像特征。激活函数如ReLU、Sigmoid等,用于引入非线性,增强模型的表达能力。原创 2024-10-13 19:09:55 · 221 阅读 · 0 评论 -
大华C++ 面试
构造函数委托(Constructor Delegation)是C++11引入的一项特性,它允许一个构造函数在其函数体内调用同一个类中的另一个构造函数,以复用代码并减少冗余。这种特性特别适用于那些具有多个构造函数,且这些构造函数之间有许多共同初始化代码的情况。在C++中,构造函数委托是通过在构造函数初始化列表中使用类名::构造函数名(参数)的语法来实现的。需要注意的是,构造函数委托必须是构造函数初始化列表中的第一个条目,且不能与其他成员初始化器混合使用。double b;原创 2024-10-13 19:09:33 · 139 阅读 · 0 评论 -
科大讯飞 C++开发工程师
因此,在嵌入式系统中使用new操作符时,需要权衡其便利性和潜在的风险,并根据系统的具体需求进行合理的内存管理设计。回答:在嵌入式系统中,选择合适的锁来避免死锁需要考虑多个因素,包括系统的实时性要求、线程的数量和类型、资源的竞争程度等。内存泄漏指的是在程序运行过程中,动态分配的内存没有得到正确的释放,导致这些内存无法被重新利用,从而造成了内存资源的浪费。这样,我们就可以在函数模板中根据参数的类型和值类别进行不同的处理,同时避免不必要的拷贝,提高程序的性能。然而,这种做法并不常见,且通常是不安全的。原创 2024-10-13 19:09:22 · 144 阅读 · 0 评论 -
面试真题 | 百度C++研发工程师面经
智能指针是C++中的一种内存管理工具,它能够在对象不再需要时自动释放内存,从而避免内存泄漏。智能指针通过封装原始指针,并在适当的时候自动删除所指向的对象,简化了内存管理的工作。C++标准库提供了几种类型的智能指针,包括和(但已被C++11弃用,不推荐使用)。独占所有权的智能指针,意味着同一时间只能有一个指向一个给定的资源。当被销毁时(例如,离开作用域时),它所管理的资源也会被自动释放。不支持拷贝构造和赋值操作,但支持移动语义,允许将所有权从一个转移到另一个。共享所有权的智能指针,允许多个。原创 2024-10-13 19:08:54 · 307 阅读 · 0 评论 -
ARM/Linux嵌入式面经(四五):海康威视
局部性原理是计算机科学中的一个重要概念,它指的是处理器在访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。换句话说,处理器在短时间内访问的数据或指令往往具有局部性特征,即它们倾向于在相对较小的内存空间内聚集。时间局部性:如果一个数据项正在被访问,那么在近期它很可能还会被再次访问。这是因为程序在执行过程中,往往会重复访问某些数据或指令,特别是在循环和函数调用等结构中。时间局部性使得处理器可以通过缓存等技术来存储最近访问过的数据或指令,从而提高访问速度。空间局部性。原创 2024-10-13 08:35:18 · 259 阅读 · 0 评论 -
ARM/Linux嵌入式面经(四四):华星光电
选择合适的硬件平台:根据应用需求选择具有足够处理能力和存储空间的硬件平台,例如STM32单片机系列等。这一步骤是移植工作的基础,直接关系到后续步骤的顺利进行。准备必要的工具和软件:包括编译器、链接器、调试器等工具链,以及操作系统源代码和相关库文件。确保这些工具和软件与目标硬件平台兼容。修改操作系统代码:根据目标硬件平台的特点,修改操作系统源代码以适应新的硬件环境。这可能包括修改编译器相关的代码、替换或移植特定软件库等。配置和编译:在目标硬件平台上配置操作系统,并进行编译。原创 2024-10-13 08:34:41 · 125 阅读 · 0 评论 -
ARM/Linux嵌入式面经(四三):重庆移动面经
民航影响程度:最高理由:无线通信在民航领域中的应用至关重要。例如,空中交通管制依赖于无线通信来确保航班的安全和高效运行。飞行员与地面控制塔之间的通信、雷达系统、以及飞机的导航系统都离不开无线通信技术的支持。铁路影响程度:较高理由:现代铁路系统依赖于无线通信来实现列车与中央控制中心的实时通信,以确保列车的安全运行和调度。无线通信技术在铁路系统中的应用包括列车控制系统、信号系统、以及乘客信息系统等。制造业影响程度:中等偏高理由:在制造业中,无线通信技术的应用范围也很广泛。原创 2024-10-13 08:34:04 · 112 阅读 · 0 评论 -
ARM/Linux嵌入式面经(四二):思特威
蓝牙开发需要注意硬件和软件的协同设计,特别是天线布局和蓝牙协议栈的配置。此外,蓝牙通信的可靠性和稳定性也是开发过程中需要重点关注的问题。原创 2024-10-13 08:33:19 · 177 阅读 · 0 评论 -
ARM/Linux嵌入式面经(四一):中兴面经
在嵌入式系统开发领域,我积累了丰富的项目经验,这些经验不仅锻炼了我的技术能力,也让我对嵌入式系统的设计和实现有了更深入的理解。原创 2024-10-13 08:32:02 · 227 阅读 · 0 评论 -
ARM/Linux嵌入式面经(四十):oppo底软面经
回答:VSLAM(Visual Simultaneous Localization and Mapping,视觉同时定位与地图构建)项目是一种基于视觉传感器的机器人自主导航技术。在该项目中,我们利用相机作为主要的感知设备,通过图像处理和计算机视觉算法来实现机器人的自我定位和周围环境的三维重建。原创 2024-10-07 20:16:47 · 205 阅读 · 0 评论 -
ARM/Linux嵌入式面经(三九):中科驭数
数据结构是计算机科学中用于组织和存储数据的方式,以便高效地进行数据访问和修改。它们对于实现算法和软件开发至关重要。在嵌入式系统中,由于资源受限(如处理器速度、内存大小等),选择合适的数据结构尤为重要。原创 2024-09-25 21:24:38 · 371 阅读 · 0 评论