嵌入式软件开发面试题总结二#面试宝典#

嵌入式软件面试经典问题 嵌入式软件面试题汇总 阅读详情

1.为什么需要Cache(高速缓冲存储器)?

我们都知道CPU处理数据的速度非常快,虽然内存的读写速度也不慢,但是相对于CPU它的速度就显得太慢了,所以如果单纯地让CPU对内存进行读写,所消耗的时间绝大部分是在内存对数据的处理上,而这时候CPU就在空等,浪费了资源,因此就需要在CPU与内存之间连接一个Cache来作为缓冲。

2.谈一谈什么是系统声明周期,说说你对敏捷开发的理解以及和SDLC的关系

解题思路

SDLC:sdlc(系统生命周期,系统生存周期)是软件的产生直到报废的生命周期,是软件工程中的一种思想原则,包括: 问题定义及规划、需求分析、软件设计、程序编码、软件测试、运行维护 敏捷开发的核心是迭代开发(iterative development)。敏捷一定是采用迭代开发的方式。迭代开发将一个大任务,分解成多次连续的开发,本质就是逐步改进。一般采用“增量开发”(incremental development)划分迭代。所谓"增量开发",指的是软件的每个版本,都会新增一个用户可以感知的完整功能。虽然敏捷开发将软件开发分成多个迭代,但是也要求,每次迭代都是一个完整的软件开发周期,必须按照软件工程的方法论,进行正规的流程管理。也就是说,敏捷开发的每一次迭代都需要一个完整的SDLC。

3.说说对MMU及TLB的理解

解题思路

MMU是内存管理单元,它是一种负责处理中央处理器(CPU)的内存访问请求的计算机硬件。它的功能包括虚拟地址到物理地址的转换(即虚拟内存管理)、内存保护、中央处理器高速缓存的控制,在较为简单的计算机体系结构中,负责总线的仲裁以及存储体切换(bank switching,尤其是在8位的系统上)。TLB(Translation Lookaside Buffer)传输后备缓冲器是一个内存管理单元用于改进虚拟地址到物理地址转换速度的缓存。TLB是一个小的,虚拟寻址的缓存,其中每一行都保存着一个由单个PTE组成的块。如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址和取数据。TLB( Translation Look- aside buffer)专门用于缓存内存中的页表项,一般在MMU单元内部。TLB是一个很小的 cache,TLB表项( TLB entry)数量比较少,每个TLB表项包含一个页面的相关信息,例如有效位、虚拟页号、修改位、物理页帧号等。当处理器要访问一个虚拟地址时,首先会在TLB中查询。如果TLB表项中没有相应的表项,称为TLB Miss,那么就需要访问页表来计算出相应的物理地址。如果TLB表项中有相应的表项,那么直接从TLB表项中获取物理地址,称为TLB命中。

4.芯片选型考虑哪些因素?

解题思路

1.根据功能设计需求、成本、供应商等主要因素初步确定几款合适的芯片。2.普通I/O口,考虑数量、负载能力,还需要保证裕量,如果有迭代升级,还需要考虑兼容性 3.片上存储和外围存储,保证bootloader和程序image的容量;内存支持,由程序的RAM需求决定 4.主频及时钟,决定芯片的运行效率,响应和处理速度 5.电源及功耗,由板上电源和承载能力决定 6.如果是CPU芯片,考虑多核和多线程并发能力;如果是FPGA芯片,考虑逻辑单元资源数;如果是DSP芯片,考虑浮点计算能力 7.工作环境,如辐射、单粒子和温度范围 8.芯片成本和交付日期,是否可以购买到,以及购买周期与开发周期的平衡 总结,与软件相关的因素:I/O,内存,外存,处理器核和多线程,系统可移植性等

5.有cache的CPU上使用DMA如何保证数据的一致性

解题思路

Cache是CPU和主存之间的缓冲,DMA是为了主存和I/O数据交互设计的,期间CPU不参与控制。那么如果数据在主存中被CPU修改但是仍在cache中,即尚未更新主存,此时DMA获取的将是旧的数据,导致数据的不一致性。因此DMA在访问主存时,应当先检查cache是否命中,如果命中的话,DMA需要从Cache读取数据而非内存。在设计时可以使用总线监视技术或者nocache机制解决非一致性问题,在软件层次上,当DMA往主存写数据时,在DMA传输之前,可以invalid DMA Buffer地址范围的高速缓存。在DMA传输完成后,程序读取数据不会由于cache hit导致读取过时的数据。相反,DMA将数据输出时,在DMA传输之前,可以clean DMA Buffer地址范围的高速缓存,clean的作用是写回cache中修改的数据。在DMA传输时,不会把主存中的过时数据发送到I/O设备。

6.简述字节对齐?

解题思路

内存空间按照字节划分,理论上可以从任何起始地址访问任意类型的变量。但实际中在访问特定类型变量时经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序一个接一个地存放,这就是对齐。如果不按照平台要求对数据存放进行对齐,会带来存取效率上的损失。比如32位的Intel处理器通过总线访问(包括读和写)内存数据。每个总线周期从偶地址开始访问32位内存数据,内存数据以字节为单位存放。如果一个32位的数据没有存放在4字节整除的内存地址处,那么处理器就需要2个总线周期对其进行访问,显然访问效率下降很多。因此,通过合理的内存对齐可以提高访问效率。为使CPU能够对数据进行快速访问,数据的起始地址应具有“对齐”特性。比如4字节数据的起始地址应位于4字节边界上,即起始地址能够被4整除。此外,合理利用字节对齐还可以有效地节省存储空间。但要注意,在32位机中使用1字节或2字节对齐,反而会降低变量访问速度。因此需要考虑处理器类型。还应考虑编译器的类型。在VC/C++和GNU GCC中都是默认是4字节对齐。字节对齐最主要反映在结构体对齐,对齐的原则如下:
1) 数据类型自身的对齐值:char型数据自身对齐值为1字节,short型数据为2字节,int/float型为4字节,double型为8字节。2) 结构体或类的自身对齐值:其成员中自身对齐值最大的那个值。
3) 指定对齐值:#pragma Pack (value)时的指定对齐值value。
4) 数据成员、结构体和类的有效对齐值:自身对齐值和指定对齐值中较小者,即有效对齐值=min{自身对齐值,当前指定的pack值}。

7.宏函数和内联函数的区别

解题思路

内联函数是代码入到调用者代码处的函数。如同 #define 宏,内联函数通过避免被调用的开销来提高执行效率,尤其是它能够通过调用(“过程化集成”)被编译器优化。宏定义不检查函数参数和返回值,只是展开,相对来说,内联函数会检查参数类型,所以更安全。内联函数和宏很类似,而区别在于,宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开销。你可以像调用函数一样来调用内联函数,而不必担心会产生于处理宏的一些问题。

8.虚拟地址怎么转换到物理地址

解题思路

地址转换(Address Translation)负责将虚拟地址转换成物理地址。现代操作系统有很多实现手段: 最简单的base+bound技术,进程通过寄存器base和bound来转换内存,不能保证安全性,程序的不同内存区需要连续,不能动态管理。段技术:硬件为每个进程分配一组Base和Bound寄存器,每一对Base和Bound控制虚拟地址空间的一部分内存,称为段。每一段的虚拟地址空间是连续的,转换得到物理地址空间也是连续的,各个段之间不需要连续。这个技术可以很好的管理不同内存区,但是对于长度掌控的管理开销较大,寻找一段长度适合的物理地址需要额外开销。页技术:将虚拟内存空间和物理内存空间皆划分成大小相同的页面,例如4KB、8KB和16KB等。并将页作为内存空间的最小分配单位,一个程序的一个页面(虚拟页面)可以存放在任何一个物理页面中。一个程序发出的虚拟地址由虚拟页面号和页内偏移值两部分组成。快表TLB通常和处理器在一起,查找速度非常快,包含多级TLB,第一级TLB容量小、速度快,第二级TLB容量大、速度比第一级慢一些。可以大大提高虚拟地址转换为物理地址的效率

9.进程A执行,发生一个中断,中断发了一个信号,会让更高优先级的进程B执行,这时候中断结束,应该返回进程A还是进入进程B,并解释理由

解题思路

返回进程A。操作系统中中断优先级高于普通的进程,中断发生时,将保护进程A的现场并进入中断上下文,此时进程A仍然是执行态;中断结束后,操作系统将恢复进程A的现场并执行剩下的时间片,进程B的优先级虽然提高了,但需要等待A执行结束后下次调度时才可以执行,如果系统中没有其他中断或者更高优先级的进程的情况。

10.如果两个进程,都要去调用一个设备驱动,设备驱动里面定义的变量是在内核态吗?如果进程A访问并改变了这个变量,那么进程B再访问,是不是读到改变之后的值?

解题思路

驱动程序中的变量是在内核态中,因为操作系统只有内核态可以访问到硬件设备,驱动程序从内核态像用户态输出API以便调用和间接访问硬件设备。进程B访问的是改变后的值,只有在没有考虑并发编程的驱动程序中才可能发生数据的不一致性。内核驱动程序开发必须考虑并发的问题,因为驱动程序将会被一个或者多个进程访问,对于共享的变量,需要加入互斥锁、自旋锁、信号量或者原子操作等同步技术保证数据的一致性。

11.两个进程的内核空间是共享的吗

解题思路

用户空间中,每个进程的用户空间是互相独立的,互不相干。内核空间中,绝大部分是共享的,并不是完全共享,因为内核空间中,不同进程的内核栈之间是不共享的。之所以使用进程的内核栈而非"用户栈",是避免用户态下进程被抢占改变引发内核崩溃,因此每个进程在内核中有一个独立的内核

12.三次握手为什么ACK信号是SYN信号值+1

解题思路

为什么三次握手过程中,比如第一次握手,A向B发了seq=x,B给A回的ack是=x+1呢?如果有数据的话,那理应等于x+LEN。如果没有数据,那就应该保持不动就等于x才对。其实不然,服务器端回复的这个+1,是代表他收到了SYN标示。也就是说由于SYN或者FIN的存在,即使没有数据传输,但服务器端仍然需要通过+1来回应一句“我收到了”。因此握手过程中seq=x的话,ack = x+1。其他几次握手挥手也是同样道理。

13.驱动程序里面,如果有一个buffer,在不同场景下需要定义不同大小,怎么办?

解题思路

可以预先定义一个结构体,包含长度变量和一个指针,长度标志由ioctl函数从应用程序输入,并动态申请和释放内存。也可以在模块加载时预先申请不同大小的缓存。另一种办法是动态检测程序所需要的缓存数量,采用多级缓存的方式,根据所需传递数据的大小动态申请分布式缓存。

14.传引用和传指针区别

解题思路

指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。

15.请你说一说cache的作用

解题思路

Cache存储器,电脑中为高速缓冲存储器,是位于CPU和主存储器DRAM(动态随机存取存储器)之间,规模较小,但速度很高的存储器,通常由SRAM(静态随机存取存储器 静态存储器)组成。它是位于CPU与内存间的一种容量较小但速度很高的存储器。CPU的速度远高于内存,当CPU直接从内存中存取数据时要等待一定时间周期,而Cache则可以保存CPU刚用过或循环使用的一部分数据,如果CPU需要再次使用该部分数据时可从Cache中直接调用,这样就避免了重复存取数据,减少了CPU的等待时间,因而提高了系统的效率。Cache又分为L1Cache(一级缓存)和L2Cache(二级缓存),L1Cache主要是集成在CPU内部,而L2Cache集成在主板上或是CPU上。

嵌入式软件开发就业面试题。2022最新,最全总结。 总结了网上大多见过的没见过的面试题,倾向嵌入式软件开发,与其他不同,更符合嵌入式岗位。 阅读详情

相关推荐

嵌入式软件面试题

嵌入式软件校招常见面试题

林君的博客 4万+

什么是软件开发生命周期?

软件开发生命周期 (SDLC)(也称为应用程序开发生命周期)是规划、创建、测试和部署软件系统的过程。系统开发生命周期框架为系统设计人员和开发人员提供了一系列可遵循的活动。它由一组步骤或阶段组成,其中 SDLC 的每个阶段都使用前一个阶段的结果。 SDLC 遵循对开发人员至关重要的重要阶段,例如规划、分析、设计和实施。就像在装配线上制造的任何东西一样,SDLC 旨在根据客户的要求,通过在预定的时间框架和成本估算内交付经过每个明确定义的阶段的系统,生产满足或超出客户期望的高质量系统。 传统 / 瀑布 /

Warren Lynch 的博客 6595

嵌入式软件面试常见问题及答案

干了多年的嵌入式,被面试过,也面过不少新人,下面这些是面试中很常见的一些问题及答案,答案可以根据自己的经验自己思考下。--持续补充并更新

weixin_37553721的博客 6022

软件测试必问必背面试题

因为此时单元测试和集成测试已完成,能够对软件所有功能进行功能测试,能够覆盖系统所有联合的部件,是针对整个产品系统进行的测试,能够验证系统是否满足了需求规格的定义,因此我认为。这些测试步骤分别在软件开发的不同阶段对软件进行测试,我认为对软件完整功能进行测试的。和开发过程相对应,测试过程会依次经历单元测试、集成测试、系统测试、验收测试。,我之前用的是jmeter,开发会提供一个接口文档,我们根据文档,填写。,然后点击执行,在结果树里查看返回结果,是否跟接口文档一致。有:功能测试,性能测试,界面测试。

fhl13017599952的专栏 652

嵌入式软件开发工程师 ——“面经宝典“ 面试神器 (持续更新..)

本文总共分,c语言,数据结构,linux系统,计算机网络,ARM体系架构**这五个模块,当然每次面试过程中主要考的还是**c语言和linux相关知识**,在学习linux方面未触及到内核和驱动,后续还会进行补充,也当是给自己的一个总结。所以本文阐述c语言知识和linux知识居多。

weixin_44278698的博客 7128

经典30个嵌入式面试问题

这些问题涵盖了嵌入式系统的基本概念、硬件和软件开发技术、通信接口、调试和测试技术等方面,希望对你的面试准备有所帮助。4. 嵌入式系统的设计流程是什么?25. 请解释一下嵌入式系统中的看门狗定时器(Watchdog Timer)。19. 请解释一下嵌入式系统中的模拟和数字信号处理(DSP)。9. 请解释一下嵌入式系统中的闪存和EEPROM的区别。30. 嵌入式系统中的电磁兼容性(EMC)有什么重要性?21. 请解释一下嵌入式系统中的PWM(脉宽调制)。18. 嵌入式系统中的固件和驱动程序有什么区别?

单片机一哥的博客 6439

【嵌入式面试】嵌入式经典面试题汇总(C语言)

在实际使用时,需要根据具体的需求和平台环境,实现相应的线程池类并提供适当的方法来创建、销毁和执行任务。平衡二叉搜索树(Balanced Binary Search Tree):平衡二叉搜索树是在BST的基础上进行了优化,以确保树的高度保持平衡,从而提供更稳定的性能。散列表具有快速的查找和插入性能,适用于大规模数据集。这个布尔表达式的含义是,如果地址段1(起始地址为a,长度为b)的结束地址大于地址段2(起始地址为C,长度为d)的起始地址,并且地址段1的起始地址小于地址段2的结束地址,则说明两个地址段有重叠。

weixin_42163707的博客 1万+

软件工程导论考试通关秘籍:太原理工大学历年真题解析(附答案)

本文为太原理工大学《软件工程导论》考试提供高效备考指南,通过解析近六年真题,揭示高频考点如软件生命周期、UML建模和结构化设计等核心模块的命题规律。文章提供真题拆解、实战策略和避坑指南,帮助考生掌握图形转换题和简答题的应答技巧,助力考试通关。

weixin_29233333的博客 222

嵌入式软件常见面试题

答:面试官您好,我叫王君华,目前是一名电子信息工程专业的大四学生,我对嵌入式系统设计和软件开发有浓厚的兴趣。曾经参与过几个项目,比如烟雾报警器设计,首先,这是我的毕业设计,在这个项目中,我参与了系统架构的设计和嵌入式软件的开发,通过ARM微处理器,我成功地实现了高效的数据处理和快速响应的报警机制,这个项目锻炼了我的技术能力,也提高了我解决复杂问题的能力。对于这次面试机会,我感到非常兴奋,我相信我的技能可以为贵公司带来更多的价值,同时我也期待在工作过程中进一步提升自己的技术水平和职业技能。

wangjh11234的博客 6402

Windows环境下DataEase一站式安装指南(含WSL2+Docker配置)

本文详细介绍了在Windows环境下通过WSL2和Docker快速部署DataEase的完整教程。从WSL2配置、Docker环境搭建到DataEase离线安装,逐步指导用户完成一站式部署,特别适合需要快速搭建数据分析平台的开发者。教程包含常见问题解决方案和性能优化技巧,帮助用户高效使用这款国产开源数据可视化工具。

weixin_42526166的博客 392

H.264 入门篇 - 09 (帧间预测 - 参考帧列表)

短期和长期的关系和区别:在一个解码器中的 DPB(参考帧缓存)大小总是有限的,所以引入一个问题,什么样的参考帧会被保存到 DPB 中,什么样的参考帧会被移除出去,因此将分为长期和短期参考帧,所谓短期参考帧是这帧不会长期驻留在DPB中,如果参考帧缓存已满或者有其他特定的条件,那么短期参考帧就会被从DPB中移除;与之相对的长期参考帧,只要没有遇到某个指定的条件,遇到某个IDR帧, 遇到了清空整个DPB的指令等等,那么长期参考帧会长期在DPB中,不会因为有新的参考帧而被冲刷掉;(P帧是按照编码顺序)

StephenZhou 5101

二、嵌入式面试经验总结

适用于嵌入式面试

weixin_70651650的博客 6401

oscp备考,oscp系列——Djinn3靶场:ssti漏洞,pkexec提权

oscp备考,oscp系列——Djinn3靶场:ssti漏洞,pkexec提权难度简单偏上对于低权限shell获取涉及:ssti漏洞对于提权:pkexec提权。

2202_75361164的博客 633

面试葵花宝典--嵌入式软件:系统移植实战与避坑

这是一份嵌入式软件系统移植面试指南,涵盖核心概念、实战步骤和避坑技巧。主要内容包括:系统移植的定义与核心工作(引导程序、内核、根文件系统和驱动移植)、Bootloader启动流程、设备树作用、内核裁剪方法等。实战部分提供环境准备、Bootloader移植、内核移植和根文件系统制作的具体流程与常见问题解决方案。面试建议强调项目经验分享和系统性思维,遇到问题应分层分阶段排查,并善用调试工具。指南强调硬件与软件的综合能力,以及解决实际问题的Debug能力是面试成功的关键。

上市公司前技术负责人,20 年软硬件深耕 + 百人研发团队管理经验,名校理工科背景加持。从技术攻坚到团队掌舵,沉淀海量项目实战与管理心得,专注分享软硬件干货、疑难问题解决方案,既是靠谱知识传播者,也盼链接优质项目共成长。 714

单片机应用案例:ESP32 搭配 BH1750 光强传感器和 Web 服务器

在该应用案例中,我们将使用 ESP32 开发板作为主控制器,BH1750 光强传感器用于采集环境光强度数据,并通过 Web 服务器展示采集到的数据。步骤一:购买材料步骤二:连接硬件步骤三:编写代码我们将使用 Arduino IDE 编写代码,以下是主要代码:// WiFi 设置const char* ssid = “你的 WiFi 名称”;const char* password = “密码”;// Web 服务器实例// BH1750 实例// 获取当前光强度数据。

RlDart的博客 812

基于Jeecgboot3.9.0的flowable7.2.0流程增加一个OA请假单功能例子(二)

基于Jeecgboot3.9.0的flowable7.2.0流程增加一个OA请假单功能例子(二)

宁波阿成的博客 198

嵌入式软件面试问题总结

嵌入式软件面试问题总结

SudekiMing的博客 4503

YOLOv11 改进 - 注意力机制 | GC Block(GlobalContext Block)全局上下文块:三重变换捕获全局依赖,提升复杂场景鲁棒性

本文介绍了全局上下文块(GC Block)及其在YOLOv11中的集成应用。GC Block是GCNet的核心组件,结合了NLNet和SENet的优势,通过上下文建模、特征变换和特征融合三个模块,高效捕获特征图中的全局依赖关系,在提高模型性能的同时降低计算成本。我们将GC Block引入YOLOv11,在检测头部分的不同尺度特征图上应用该模块。实验表明,改进后的YOLOv11在目标检测任务中表现良好,展现了GC Block在实际应用中的价值。

魔改工程师的博客 949

嵌入式工程师常见面试题(持续更新版本)

嵌入式工程师常见的高频面试题(持续更新版本)

black_sneak的博客 5万+

国科大学习资料--计算机网络--历年考题1

国科大学习资料–计算机网络–历年考题1 1、假定有一个通信协议,每个分组都引入100字节的开销用于头和成帧,现在使用这个协议发送1M字节的数据(为方便计算,1M=10^6),然而在传递的过程中有一个字节被破坏了,因而包含该字节的那个分组被丢弃并重传。(1)当数据的分组大小为1000、5000、20000和40000字节时,计算相应(包括开销)的传递字节总数目。(2)计算分组大小的最优值是多少,即分组的大小为何值时总的传输字节数最少。(提示:最优值不是1000、5000、20000和40000字节中的一个)

无名何许人的博客 1180

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

嵌入式软件工程师面试题收录(1)

嵌入式软件工程师面试题分享(1)

weixin_47077788的博客 9151

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

c/c++面试题

c/c++

weixin_46144018的博客 594

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

面试葵花宝典--嵌入式软件:调试排查实战与避坑

这份"嵌入式软件调试排查面试宝典"系统性地总结了调试思维、工具链和典型问题解决方案。核心内容包括:1.调试哲学与黄金法则,强调科学方法、分治策略和现场保留;2.工具链实战技巧,覆盖printf调试、逻辑分析仪、JTAG/SWD和示波器等工具;3.典型问题分析,如系统崩溃、内存问题和并发竞态条件;4.高级调试技术与案例分析,包含性能监控和真实故障排查案例;5.面试技巧,指导如何结构化回答调试类问题。宝典强调系统性思维与软硬结合能力,帮助面试者展示完整的问题解决方法论。

上市公司前技术负责人,20 年软硬件深耕 + 百人研发团队管理经验,名校理工科背景加持。从技术攻坚到团队掌舵,沉淀海量项目实战与管理心得,专注分享软硬件干货、疑难问题解决方案,既是靠谱知识传播者,也盼链接优质项目共成长。 1096

二十万字C/C++、嵌入式软开面试题全集宝典六

目录 101、 字节对齐有什么作用? 102、 C语言中#pragma用法 103、 new和malloc的区别? 104、 malloc/calloc/realloc三者之间的区别? 105、 delete p;与delete[]p,allocator 106、 new和delete的实现原理,delete是如何知道释放内存的大小? 107、 malloc申请的存储空间能用delete释放吗 108、 函数参数入栈的顺序 109、 堆和栈区别 110、 堆与栈的优点和缺点 111、

qq_41687938的博客 1062

【嵌入式面试】嵌入式笔试与面试宝典(offer必来)

📚 本文为嵌入式开发者提供全面的面试指南,涵盖C语言、数据结构、RTOS、硬件、通信协议等核心领域。重点解析200+高频面试题。

欢迎来到兰舟比特的博客! 3589

【嵌入式软件面试】(2023)经典题汇总(C语言)【一】

嵌入式软件工程师面试经典题目汇总。寻找嵌入式软件工程师的工作需要具备的知识非常多,现如今嵌入式相关岗位的竞争非常激烈,一场的优秀的面试可以提升面试官对自己认可度,提升自己拿offer的几率。根据经验总结了如下20个题目有需要的同学可以酌情参考。

weixin_43157355的博客 1万+
上一篇: 嵌入式软件开发就业面试题。2022最新,最全总结。
下一篇: 嵌入式软件开发面试题总结三.
Execution_
博客等级 码龄5年 1605粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值