
嵌入式最全面试题-Offer直通车
文章平均质量分 87
17年+码农经历了很多次面试,也多次作为面试官面试别人,多次大数据面试和面试别人,深知哪些面试题是会被经常问到,熟背八股文和总结好自己项目经验,将让你在面试更容易拿到Offer。长期更新大数据面试题,分享面试技巧和推荐嵌入式的就业机会,不定时在线答疑。
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
大模型大数据攻城狮
在阿里巴巴等多种类型公司工作过,第一份工作是在大厂做移动开发,后来在创业公司由于团队需要做后台开发、嵌入式开发等几乎全栈开发,最近这些年还保持必要全栈开发,精力更多在大数据、大模型等领域。
展开
-
《嵌入式最全面试题-Offer直通车》目录
嵌入式领域蓬勃发展,嵌入式工程师成为众多科技企业争抢的热门人才。如果你渴望在嵌入式面试中脱颖而出,成功斩获心仪的 offer,那么《嵌入式最全面试题 - Offer直通车》将是你的绝佳选择。本专栏是CSDN是热门专栏,100多篇文章,总字数过百万。每月新增订阅用户过百,现在是优惠价9.9元,后面要逐渐恢复原价,早订阅早受益。本专栏精心整理了众多超万字的精华内容,总计达数十万字的嵌入式面试题总结。涵盖从嵌入式基础知识到各大厂面试真题,从驱动开发到操作系统,从硬件到软件等各个方面。原创 2024-10-19 22:21:22 · 1161 阅读 · 0 评论 -
嵌入式大厂校招网申地址及面试题最全集合(持续更新)
企业 招聘地址 面试题 华为 华为应届生_实习生_留学生_海外本地最新招聘信息-华为校园招聘 华为嵌入式面试题及参考答案(持续更新) 大疆 校园招聘 - DJI 大疆招聘 大厂面经:大疆嵌入式面试题及参考答案(4万字长文:持续更新) 海康 校园招聘 海康威视嵌入式最全面试题及参考答案(3万字长文) 大华 大华股份招聘官网 大华嵌入式面试题大全及参考答案(2万字长文) 中兴 中兴通讯招聘 中兴嵌入式面试题汇总及原创 2024-09-24 00:02:15 · 479 阅读 · 0 评论 -
6万字嵌入式最全八股文面试题大全及参考答案(持续更新)
进程上下文定义:进程上下文包含了进程执行时所需的所有信息,包括 CPU 寄存器的值、内核栈、任务控制块(TCB)等。作用:当进程被切换时,需要保存当前进程的上下文,并恢复下一个将要运行进程的上下文。中断上下文定义:中断上下文是指处理中断时 CPU 所处的状态,包括中断发生时的寄存器值等。作用:当中断发生时,CPU 会自动保存当前的上下文信息,并跳转到相应的中断处理程序。示例表格上下文描述进程上下文包含进程执行时的所有相关信息中断上下文处理中断时 CPU 所处的状态线程同步定义。原创 2024-07-31 08:07:58 · 2510 阅读 · 0 评论 -
大厂面经:大疆嵌入式面试题及参考答案(4万字长文:持续更新)
目录Linux 系统调用的过程,中间发生了什么?表格总结Linux 中断流程,谈谈你对中断上下文的理解中断流程中断上下文理解Linuxschedule()函数的原理和调用的时机schedule()函数原理调用时机页表实现机制,分页的缺点?页表机制分页的缺点介绍操作系统的多级反馈调度策略,时间片轮转,在项目中如何指定优先级来调度进程完成快速响应(nice命令)多级反馈队列调度时间片轮转使用nice命令聊内存分配,进程内存分配,段页式存原创 2024-07-29 19:42:21 · 1266 阅读 · 0 评论 -
FreeRTOS必考面试题及参考答案
然而,在FreeRTOS这样的RTOS中,任务实际上扮演着类似线程的角色,但通常每个任务都拥有独立的堆栈和优先级,它们之间通过消息传递和同步原语进行通信。上下文切换是指在RTOS中,当调度器决定从一个任务切换到另一个任务时,保存当前任务的状态(如程序计数器、栈指针和其他寄存器的值)并恢复下一个要执行的任务的状态的过程。当一个更高优先级的任务变为就绪状态时,调度器会立即保存当前任务的上下文(即CPU寄存器状态),并恢复新任务的上下文,从而实现任务之间的切换。信号量是一种计数器,用于跟踪资源的数量。原创 2024-06-22 18:37:05 · 6668 阅读 · 1 评论 -
嵌入式UART协议面试题及参考答案
UART 的握手信号用于在数据传输过程中协调发送方和接收方的工作,确保数据的可靠传输,常见的握手信号分为硬件握手和软件握手。硬件握手主要通过两根额外的信号线来实现,即请求发送(RTS)和清除发送(CTS)。RTS 是发送设备向接收设备发出的信号,当发送设备准备好发送数据时,会将 RTS 信号置为有效状态,以此请求接收设备允许发送数据。接收设备接收到 RTS 请求后,会检查自身的接收缓冲区是否有足够空间来接收新数据。若有足够空间,接收设备会将 CTS 信号置为有效状态,通知发送设备可以开始发送数据。原创 2025-02-07 00:16:50 · 674 阅读 · 0 评论 -
理邦仪器嵌入式(C/C++开发)开发面试题及参考答案
排查内存泄漏是一个比较复杂的过程,需要综合运用多种方法和工具。首先,可以使用内存检测工具。如前面提到的 Valgrind,它可以在程序运行时检测内存泄漏问题。将程序在 Valgrind 下运行,它会详细记录内存的分配和释放情况,当发现有内存泄漏时,会给出具体的泄漏位置和相关信息。另外,还可以通过分析程序的内存使用情况来排查内存泄漏。在程序运行过程中,定期打印内存使用量,观察内存的变化趋势。如果发现内存持续增长,而程序的逻辑并没有要求这么多的内存,那么很可能存在内存泄漏。代码审查也是一种有效的方法。原创 2025-02-05 07:15:24 · 680 阅读 · 0 评论 -
360嵌入式开发面试题及参考答案
NBIoT(窄带物联网)、LoRa(长距离无线电)和 GPRS(通用分组无线服务技术)都是物联网中常用的通信技术,它们在多个方面存在区别和各自的优势。在覆盖范围方面,NBIoT 和 LoRa 都具有很强的覆盖能力,NBIoT 借助运营商的基站网络,能实现较广的覆盖,信号可穿透建筑物等障碍物,在地下停车场、地下室等环境中也能有较好的通信效果。LoRa 采用扩频技术,通信距离可达数公里,尤其在农村、山区等偏远地区具有明显优势。而 GPRS 的覆盖主要依赖于移动网络基站,在一些偏远地区可能存在覆盖不足的情况。原创 2025-01-30 07:42:31 · 1126 阅读 · 0 评论 -
斩获大厂Offer:详解Linux Bootloader 助您面试通关
当计算机系统通电或重启,在操作系统内核运行之前,Bootloader 就开始忙碌起来。它执行一系列初始化操作,加载操作系统内核,为后续操作系统的顺畅运行创造必要条件。打个比方,如果把计算机系统比作一场盛大演出,那么 Bootloader 就是开场前的舞台搭建者和准备工作组织者,确保演出(操作系统运行)能顺利开始。原创 2025-01-21 00:13:24 · 979 阅读 · 0 评论 -
2万字长文看懂蓝牙低能耗(BLE)及开发优化
蓝牙低能耗(BLE),是一种短距离、低成本且具备可互操作性的无线技术 ,专为满足低功耗设备的通信需求打造。作为蓝牙 4.0 规范的关键构成部分,它在传统蓝牙基础上优化升级,以契合物联网时代对低功耗、高效能通信的严苛要求。低功耗:运用先进的节能机制,像自适应跳频、快速连接建立以及间歇性通信等手段,极大地延长了电池的使用时长。举个例子,常见的一颗纽扣电池,就能支撑 BLE 设备稳定运行数年之久。这一特性使得 BLE 设备在一些对电池续航要求极高的场景,如可穿戴设备中得以广泛应用。原创 2025-01-17 15:10:44 · 529 阅读 · 0 评论 -
AUTOSAR 全面概述和知识要点(2万字长文)
AUTOSAR,即 Automotive Open System Architecture,是汽车开放系统架构的英文缩写 ,它是一项对汽车软件发展有着革命性意义的标准。其核心目的在于提升汽车电子系统的互操作性和可重用性。简单来说,就是让不同厂家生产的汽车电子部件,能够像搭积木一样,方便地组合在一起使用,并且这些部件中的软件可以在不同的汽车电子产品中重复利用,大大提高了开发效率。原创 2025-01-14 00:10:34 · 671 阅读 · 0 评论 -
整理字节腾讯阿里等数百份大厂面经:C++高并发多线程和线程安全最高频面试题及参考答案
C++ 中的多进程通信方式有哪些?在 C++ 中,常见的多进程通信方式有以下几种:管道(Pipe)管道是一种半双工的通信方式,它主要用于具有亲缘关系的进程之间通信,比如父子进程。其原理是在内核中开辟一块缓冲区,一个进程向这块缓冲区写入数据,另一个进程则从缓冲区读取数据。在实现上,通过pipe系统调用创建管道,会返回两个文件描述符,一个用于读操作,一个用于写操作。例如,父进程利用fork函数创建子进程后,子进程会继承父进程打开的文件描述符。父进程可以往写文件描述符写入数据,像要传递原创 2025-01-11 00:01:59 · 347 阅读 · 0 评论 -
联想嵌入式面试题及参考答案
一、概念虚拟内存是一种计算机系统的内存管理技术。它为每个进程提供了一个假象,即每个进程都拥有一块连续的、独立于其他进程的内存空间。这个虚拟的内存空间通常比实际的物理内存要大得多。例如,在 32 位系统中,理论上每个进程可以拥有 4GB 的虚拟内存空间。虚拟内存是一种抽象概念,它将程序使用的内存地址与实际的物理内存地址分离开来。这使得程序可以在一个看似连续的、足够大的内存空间中运行,而不必担心物理内存的实际大小和分配情况。二、工作原理地址转换。原创 2025-01-08 12:44:54 · 625 阅读 · 0 评论 -
从上千份大厂面经呕心沥血整理:大厂高频手撕面试题(数据结构和算法篇 ,C++实现亲试可跑)
判断两个链表是否相交可以采用多种方法。一种方法是使用双指针。首先分别遍历两个链表,得到两个链表的长度。然后让长链表的指针先走两个链表长度差的步数。之后,同时移动两个链表的指针,每次比较两个指针是否指向相同的节点。如果指向相同节点,那么这两个链表相交;如果直到指针都走到链表末尾还没有相同节点,那么这两个链表不相交。例如,有链表 A 长度为 m,链表 B 长度为 n(假设 m > n)。先让链表 A 的指针先走 m - n 步,然后同时移动 A 和 B 的指针。原创 2025-01-06 00:00:57 · 943 阅读 · 0 评论 -
商汤嵌入式开发面试题及参考答案
链表是一种常见的线性数据结构,它由一系列节点组成,每个节点包含数据元素以及指向下一个节点(对于单向链表)或前后节点(对于双向链表)的指针。链表与数组不同,它不需要连续的内存空间来存储数据,而是通过指针将各个节点串联起来,这使得链表在插入和删除元素时相对更加灵活,不需要像数组那样移动大量元素。链表可以分为单向链表、双向链表和循环链表等不同类型。单向链表每个节点只有一个指向下一个节点的指针,只能沿着一个方向遍历链表。原创 2025-01-02 00:05:53 · 481 阅读 · 0 评论 -
大厂高频总线协议面试题及参考答案(几百家面试题挑选最高频精华)
SPI 是一种高速、全双工、同步的通信总线协议,主要应用于微处理器与外围芯片之间的短距离通信。其工作原理是主设备通过时钟信号(SCK)控制数据传输的节奏,在时钟的上升沿或下降沿将数据从主设备发送到从设备,同时在相反的时钟沿从从设备接收数据到主设备,实现数据的双向传输。模式 0时钟空闲时为低电平,数据在时钟的上升沿采样,在下降沿输出。模式 1时钟空闲时为低电平,数据在时钟的下降沿采样,在上升沿输出。模式 2时钟空闲时为高电平,数据在时钟的下降沿采样,在上升沿输出。模式 3。原创 2024-12-31 00:06:07 · 838 阅读 · 0 评论 -
C++ 内存管理:原理、技巧与实战
C++ STL 默认的标准 allocator 追求效率与通用,提供allocateconstructdestroy核心函数,无缝对接 STL 容器,管理各类对象内存,但面对特殊性能、资源约束时力不从心。开发者按需定制分配器,如处理小对象用内存池分配器优化。实现要点:规划内存分配策略(固定、空闲链表等);多线程环境保障线程安全;运用缓存、预取等优化手段;设内存泄漏检测防护。//... 自定义分配器完整实现,适配特定场景内存管理。原创 2024-12-25 00:03:21 · 578 阅读 · 0 评论 -
海格通信嵌入式面试题及参考答案
计算电路的最高工作频率如何计算?计算电路的最高工作频率主要考虑电路中的关键路径延迟。关键路径是指在整个电路中,信号传播延迟最长的路径。电路的最高工作频率的倒数就是时钟周期,而时钟周期必须大于关键路径的延迟时间。首先要确定电路中各个模块的延迟。比如对于组合逻辑电路,可以通过查看芯片手册获取门电路的延迟参数。以一个简单的与门、或门、非门组成的组合逻辑为例,每个门都有自己的传输延迟,把信号从输入到输出经过的所有门的延迟相加,就得到这部分组合逻辑的延迟。对于包含寄存器的电路,还需要考虑寄原创 2024-12-23 00:01:29 · 829 阅读 · 0 评论 -
英飞源嵌入式面试题及参考答案
STM32H750 是意法半导体(ST)推出的高性能微控制器。高性能内核:它基于 ARM® Cortex® - M7 内核,具有很高的处理能力。该内核采用了哈佛架构,拥有独立的指令总线和数据总线,能够实现高效的指令预取和数据访问,其工作频率可以达到很高,比如 480MHz,这使得它能够快速地处理复杂的计算任务和多任务处理。丰富的存储资源:它配备了大容量的闪存和 SRAM。闪存用于存储程序代码,大容量的闪存可以让用户存储更复杂、更庞大的程序。原创 2024-12-19 00:04:25 · 601 阅读 · 0 评论 -
康冠科技嵌入式面试题及参考答案
LCD 驱动你自己做了哪些内容?在 LCD 驱动开发中,首先是硬件层面的理解。需要仔细研究 LCD 的数据手册,明确其引脚定义,包括电源引脚、数据引脚、控制引脚等。比如,对于常见的 RGB 接口 LCD,要清楚哪几个引脚是用于传输红、绿、蓝三种颜色的数据,以及像 VSYNC(垂直同步信号)、HSYNC(水平同步信号)这些控制显示同步的引脚功能。在软件层面,初始化工作是关键。要设置合适的寄存器来配置 LCD 的工作模式。例如,设置显示分辨率,这决定了屏幕上像素点的排列方式。对于一个 1280x原创 2024-12-18 13:13:37 · 917 阅读 · 0 评论 -
大厂面试智力题大全(详细解题思路,持续更新)
初赛:4组,每组5支队伍,单循环比赛,总共20场比赛,约需要4天。淘汰赛:8支队伍进行4场交叉淘汰赛,约需要1天。决赛:4支队伍进行2场半决赛和1场决赛,共3场比赛,约需要1天。6天。原创 2024-12-15 18:30:44 · 885 阅读 · 0 评论 -
韶音科技嵌入式面试题及参考答案
Bootloader 的启动流程是什么?Bootloader 是在操作系统内核运行之前运行的一段小程序。它的启动流程主要分为以下几个阶段。首先是硬件初始化阶段。这个阶段会对处理器以及一些关键的硬件设备进行初始化。比如,会配置处理器的工作模式、设置堆栈指针等。以 ARM 处理器为例,会设置处理器进入 SVC(管理)模式,这是因为在这个模式下能够访问系统的所有资源,方便后续对硬件进行初始化。还会初始化一些基本的存储设备接口,像 Flash 的读取接口等。接着是加载内核镜像阶段。Boo原创 2024-12-11 00:10:28 · 749 阅读 · 0 评论 -
阳光电源嵌入式面试题及参考答案
讲一讲声明变量的时候应该注意哪些内容。在声明变量时,首先要考虑变量的类型。不同的数据类型有不同的用途和占用的存储空间大小。例如,基本数据类型如整型(int)通常占用 4 个字节,用来存储整数;而浮点型(float)用于存储带有小数部分的数字,占用 4 个字节,双精度浮点型(double)占用 8 个字节,能提供更高的精度。变量的命名也非常关键。变量名应该具有描述性,让人一眼就能看出变量的用途。比如,用 “studentAge” 来表示学生的年龄,而不是使用一些模糊的名称如 “a” 或 “原创 2024-12-10 00:19:21 · 821 阅读 · 0 评论 -
青岛鼎信嵌入式面试题及参考答案
链表是一种常见的数据结构,它是由一系列节点组成的。每个节点包含两部分,一部分是数据域,用于存储各种类型的数据,比如整数、字符、结构体等;另一部分是指针域,用于存储下一个节点的地址,从而将各个节点连接起来形成一个链状结构。从存储方式来讲,链表与数组不同。数组在内存中是连续存储的,而链表的节点在内存中的位置可以是不连续的。这使得链表在插入和删除节点操作上具有一定的优势。例如,在需要插入一个新节点时,对于链表只需要修改相关节点的指针即可。原创 2024-12-06 00:04:58 · 449 阅读 · 0 评论 -
linux进程和线程面试题最强集合及参考答案
进程是什么?进程是计算机中正在运行的程序的实例。它是操作系统进行资源分配和调度的基本单位。从资源角度看,进程拥有独立的内存空间,包括代码段、数据段、堆和栈。代码段存放程序的可执行代码,数据段存储全局变量和静态变量,堆用于动态内存分配,栈则用于函数调用的局部变量存储以及函数调用的上下文信息。例如,当运行一个文本编辑器进程时,它的代码段包含了编辑器软件的所有执行指令,数据段可能有默认的字体、字号等设置相关的数据,堆会在用户打开新文件等操作时动态分配内存来存储文件内容,栈用于处理函数调用,像保存打原创 2024-12-05 00:10:24 · 315 阅读 · 0 评论 -
乐鑫科技嵌入式面试题及参考答案(3万字长文)
嵌入式开发为什么用 C 语言,而不用 C++ 语言?在嵌入式开发中,C 语言被广泛使用而 C++ 相对少用有以下一些原因。首先,C 语言具有更高的效率。嵌入式系统通常资源受限,包括处理器速度、内存容量等。C 语言的代码生成效率高,能够生成紧凑的机器码,占用较少的内存空间和处理器资源。例如,在一个简单的微控制器系统中,C 语言可以精准地控制内存分配,避免不必要的内存开销。而 C++ 由于其语言特性如类的封装、继承和多态等机制,会带来一定的额外开销。其次,C 语言的可移植性强。嵌入式系统原创 2024-12-04 00:17:31 · 749 阅读 · 0 评论 -
长安汽车嵌入式面试题及参考答案
数据结构中的堆栈和编程中的堆栈有什么区别?在数据结构中,堆栈是一种抽象的数据类型。它遵循后进先出(LIFO)的原则。从操作角度来看,有入栈(push)和出栈(pop)操作。例如,想象有一个装有盘子的栈,只能从栈顶放入和取出盘子。数据结构中的堆栈主要关注其逻辑结构和操作规则,用于组织和管理数据元素。在编程中,堆栈通常是通过编程语言提供的特定数据结构或者利用内存区域来实现的。在编程语言中,如 C 语言可以使用数组来模拟一个堆栈。编程中的堆栈与数据结构中的堆栈在概念上是一致的,但在实现细节上会原创 2024-12-03 00:05:45 · 801 阅读 · 0 评论 -
联合汽车电子嵌入式面试题及参考答案
Linux 中 socket 通信的流程及函数作用在 Linux 中,socket 通信主要有以下流程:首先是服务器端。服务器要先通过socket()函数创建一个套接字,这个函数返回一个套接字描述符,它就像是一个通信端点的标识。这个函数的参数可以指定通信的域(比如 AF_INET 用于 IPv4 网络通信)、套接字类型(如 SOCK_STREAM 表示面向连接的字节流服务,常用于 TCP 通信;SOCK_DGRAM 表示无连接的数据报服务,常用于 UDP 通信)和协议类型(通常为 0,表原创 2024-12-02 00:01:09 · 599 阅读 · 0 评论 -
linux内核面试题精选及参考答案
Linux 内核简介Linux 内核是操作系统的核心部分,它负责管理系统的各种资源并为应用程序提供运行环境。它就像一个管理者,掌控着计算机的硬件资源,包括 CPU、内存、磁盘、网络等。例如,内核通过进程调度算法来合理分配 CPU 时间片,让多个进程能够并发执行,从而提高系统的整体效率。同时,它还提供了文件系统、设备驱动程序等功能,使得应用程序能够方便地与硬件设备进行交互和数据存储。与用户空间的关系资源分配与隔离。原创 2024-11-29 00:02:19 · 845 阅读 · 0 评论 -
C++虚函数面试题及参考答案
虚函数是在基类中使用关键字virtual声明的成员函数。当在派生类中重写(override)这个函数时,会根据对象的实际类型来调用相应的函数版本,而不是仅仅根据指针或引用的类型来决定调用哪个函数。其主要作用是实现多态性。多态允许不同的对象对同一消息做出不同的响应,增强了程序的灵活性和可扩展性。例如,有一个基类Shape,它有一个虚函数draw(),然后派生出Circle和Rectangle等子类。每个子类都可以根据自身的特点重写draw()函数。当通过基类指针或引用调用draw()原创 2024-11-28 00:03:56 · 538 阅读 · 0 评论 -
东方微电嵌入式面试题及参考答案
例如,在一个工业控制系统中,对紧急故障处理的任务设置较高优先级,当故障发生时,该任务能够立即抢占 CPU 资源进行处理,而不管当前正在运行的是什么任务。例如,在一个工业控制系统中,对紧急故障处理的任务设置较高优先级,当故障发生时,该任务能够立即抢占 CPU 资源进行处理,而不管当前正在运行的是什么任务。例如,在一个工业控制系统中,对紧急故障处理的任务设置较高优先级,当故障发生时,该任务能够立即抢占 CPU 资源进行处理,而不管当前正在运行的是什么任务。系统的状态被保存,以便在唤醒后能够快速恢复。原创 2024-11-27 00:02:52 · 915 阅读 · 0 评论 -
极智嘉嵌入式面试题及参考答案
IIC(Inter-Integrated Circuit)即集成电路总线,是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。它仅使用两根线,即串行数据线 SDA 和串行时钟线 SCL,就能实现多个设备之间的通信,具有简单、高效、占用资源少等优点,广泛应用于各种嵌入式系统中。原创 2024-11-26 00:05:21 · 597 阅读 · 0 评论 -
新华三嵌入式面试题及参考答案
哈希表是一种数据结构,它通过一个哈希函数将键映射到表中的一个位置来存储和查找数据。其原理是根据给定的关键字,通过哈希函数计算出对应的哈希地址,将数据存储在该地址对应的位置上。这样,在查找数据时,只需再次使用相同的哈希函数计算出哈希地址,就能快速定位到数据的存储位置,大大提高了数据的查找效率。然而,由于哈希函数的映射可能不是一对一的,不同的关键字可能会计算出相同的哈希地址,这就导致了哈希冲突。锁,然后进行修改操作,修改完成后再释放锁。在 C 和 C++ 等编程语言中,是用于动态分配内存的函数。原创 2024-11-25 00:02:13 · 727 阅读 · 0 评论 -
海信嵌入式开发面试题及参考答案
指令格式设计自定义控制指令的格式通常包括指令头、指令码、操作数和校验位等部分。指令头用于标识指令的开始,一般是一个固定的字节序列,以便接收端能够识别出指令的到来。指令码是指令的核心部分,用于指定具体的操作,如读取传感器数据、设置设备参数等。操作数则是根据指令码的要求,提供具体的操作参数,如要设置的参数值、要读取数据的地址等。校验位用于对指令进行错误校验,确保指令在传输过程中的准确性。功能控制实现指令解析。原创 2024-11-24 00:01:38 · 552 阅读 · 0 评论 -
TCL嵌入式面试题及参考答案
在 C 和 C++ 等编程语言中,函数内用static定义的变量存储在静态存储区。当在函数内部定义一个普通的局部变量时,该变量存储在栈上,它的生命周期随着函数的调用开始而开始,函数调用结束而结束。然而,当使用static关键字修饰变量时,情况就有所不同。static变量在程序的整个运行期间都存在,它的存储位置被分配在静态存储区。静态存储区的特点是在程序开始运行时就被分配内存空间,并且在程序的整个生命周期内都保持不变,直到程序结束才会被释放。这就意味着,无论函数被调用多少次,static。原创 2024-11-23 06:37:17 · 439 阅读 · 0 评论 -
Momenta嵌入式面试题及参考答案(2万字长文)
select、epoll 区别select 和 epoll 都是用于 I/O 多路复用的机制。select 的原理是通过一个 fd_set 结构体来存放需要监视的文件描述符集合。在调用 select 函数时,它会遍历这个集合,检查其中的文件描述符是否有可读、可写或异常事件发生。select 有几个比较明显的缺点。首先,它能够监视的文件描述符数量是有上限的,通常是 1024 个左右,这个限制由 FD_SETSIZE 决定。其次,select 每次调用都需要线性遍历文件描述符集合,当文件描述原创 2024-11-21 00:16:24 · 499 阅读 · 0 评论 -
linux命令面试题及参考答案
在Linux中,有多种方式可以查看文件的最后修改时间。一种常用的方法是使用“ls -l”命令。当执行这个命令后,对于每个文件和目录,输出的信息中有一列是修改时间。它的格式通常是“月 日 时:分”。例如,执行“ls -l test.txt”,在显示的内容中会包含类似“-rw-r--r-- 1 user group 100 Nov 14 10:30 test.txt”的信息,这里的“Nov 14 10:30”就是文件“test.txt”的最后修改时间,表示11月14日10点30分进行了最后一次修改。原创 2024-11-20 00:02:44 · 660 阅读 · 0 评论 -
黑芝麻嵌入式面试题及参考答案
请详细描述二叉树的深度优先搜索(dfs)流程。深度优先搜索是一种用于遍历二叉树的重要算法,主要有先序遍历、中序遍历和后序遍历三种方式。先序遍历的流程是,首先访问根节点,然后递归地遍历左子树,最后递归地遍历右子树。这就好比是在探索一个家族树,先拜访家族中的长辈(根节点),再去拜访长辈的左侧晚辈(左子树),最后拜访长辈的右侧晚辈(右子树)。比如对于二叉树的节点为 1(根)、2(左子树)、3(右子树),先序遍历的访问顺序就是 1 - 2 - 3。中序遍历的过程是先递归地遍历左子树,然后原创 2024-11-19 00:12:20 · 814 阅读 · 0 评论 -
小鹏汽车嵌入式面试题及参考答案
static 变量放在哪个段中?在 C 和 C++ 等编程语言中,static 变量根据其定义的位置不同放置的段也不同。对于全局的静态变量(在函数体外定义的静态变量),它会被放在数据段(.data 段或者.bss 段)。如果这个静态变量被初始化了非零值,那么它会被放在.data 段,这个段存储的是已经初始化的全局变量和静态变量。因为这些变量有初始值,所以编译器会为它们分配实际的存储空间来存储这些特定的值。如果是未初始化的全局静态变量,那么它会被放在.bss 段。.bss 段通常用于存储那原创 2024-11-18 00:12:32 · 959 阅读 · 0 评论 -
长江存储嵌入式面试题及参考答案
构造函数最好不要是虚函数。原因如下:从对象的生命周期角度来看,虚函数的调用是通过虚函数表(vtable)来实现的。而在构造函数执行的时候,对象还没有完全构造好,vtable 可能还没有被正确地初始化。如果构造函数是虚函数,在调用构造函数时就去查找虚函数表,可能会导致未定义的行为。并且构造函数的主要作用是初始化对象的数据成员,在派生类对象构造时,会先调用基类的构造函数来初始化基类部分的数据成员。如果基类构造函数是虚函数,会使构造过程变得非常复杂和难以理解。原创 2024-11-17 08:12:55 · 587 阅读 · 0 评论