嵌入式面试资料整理

2023-05-16

第一章进程线程的基本概念

1、什么是进程,线程,有什么区别

2、多进程、多线程的优缺点

3、什么时候用进程,什么时候用线程

4、多进程、多线程同步(通讯)的方法

5、进程线程的状态转换图 。什么时候阻塞,什么时候就绪

6、父进程、子进程的关系以及区别

7、什么是进程上下文、中断上下文

8、一个进程可以创建多少线程,和什么有关

9、进程间通讯:

(1)管道/无名管道(2)信号(3)共享内存(4)消息队列(5)信号量(6)socket

10、线程通讯(锁):

(1)信号量(2)读写锁(3)条件变量(4)互斥锁(5)自旋锁

第二章C/C++面试题

1、new和malloc的区别

2、 malloc的底层实现

3、在1G内存的计算机中能否malloc(1.2G)?为什么?

4、指针与引用的相同和区别;如何相互转换?

5、C语言检索内存情况,内存分配的方式

6 、extern”C” 的作用

7、头文件声明时加extern定义时不要加,因为extern可以多次声明,但只有一个定义

8、重写memcpy()函数需要注意哪些问题,(strcat    strncat    strcmp   strcpy)哪些函数会导致内存溢出

9、 char和int之间的转换;

10 、static的用法(定义和用途)static静态变量,只初始化一次

11 、const的用法(定义和用途)

12、const常量和#define的区别(编译阶段、安全性、内存占用等)

13 、volatile作用和用法

14、有常量指针 指针常量 常量引用 没有 引用常量

15、变量的作用域(全局变量和局部变量)

16、sizeof 与strlen (字符串,数组)

17、经典的sizeof(struct)和内存对齐(一字节对齐)

18、const  *  char  与 const    char    *

19、inline函数

20、内存四区,什么变量分别存储在什么区域,堆上还是栈上。

第三章网络编程

1 、TCP、UDP的区别

2 、TCP、UDP的优缺点

3 、TCP UDP适用场景

4、 TCP为什么是可靠连接

5、OSI典型网络模型,简单说说有哪些;

6、三次握手、四次挥手

第四章常见算法

1、各种排序算法的时间空间复杂度、稳定性

2、各种排序算法什么时候有最好情况、最坏情况(尤其是快排)

3、冒泡排序

4、选择排序

5、插入排序

6、希尔排序

7、归并排序

8、快速排序

9、二分法查找的原理

第五章Linux操作系统常见面试题

1、 Linux内核的组成部分

2、用户空间与内核通信方式有哪些?

3、系统调用read()/write(),内核具体做了哪些事情

4、系统调用与普通函数调用的区别

5、内核态,用户态的区别

6、 bootloader内核 、根文件的关系

7 、Bootloader启动过程:

8、 linux下检查内存状态的命令

1、大小端的区别以及各自的优点,哪种时候用。(判断大小端的三种方式)

2 、一个程序从开始运行到结束的完整过程(四个过程)

3、什么是堆,栈,内存泄漏和内存溢出?

4、堆和栈的区别

5、死锁的原因、条件

6、硬链接与软链接的区别;

7、虚拟内存,虚拟地址与物理地址的转换

8、计算机中,32bit与64bit有什么区别

9、中断和异常的区别

10、中断怎么发生,中断处理流程

11、 Linux 操作系统挂起、休眠、关机相关命令

12、编译优化选项    -o

13、在有数据cache情况下,DMA数据链路为:外设-DMA-DDR-cache-CPU,CPU需要对cache做什么操作,才可以得到数据

14、linux中改变文件属性的命令:chmod

15、linux中查找文件中匹配字符串的命令:grep

第六章 单片机常见面试题

1、ROM与RAM

2、 IO口工作方式:上拉输入 下拉输入 推挽输出 开漏输出

3、请说明总线接口USRT、I2C、USB的异同点(串/并、速度、全/半双工、总线拓扑等)

4、I2C协议时序图

5、单片机的SP指针始终指向:栈顶

6、I2C总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。

7、FIQ中断向量入口地址

8、全双工总线类型

9、SPI四种模式,简述其中一种模式,画出时序图

 第七章 其他面试题

1、讲一讲冯诺依曼和哈佛体系的区别

2、讲一讲二叉树和红黑树

3、http默认端口号:80

4、面向对象编程的三大特性,以及重载的意思。重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

5、linux中mysql数据库默认的端口是:3306

6、反转链表的代码补全

7、判断回文(首尾相同)

输入abcba      返回true

输入abc          返回flase

8、C语言编程中,单片机平台,一般有.c和.h文件,如果一个人在.h文件中定义了一个变量,会有什么后果。(讨论编程习惯的问题,我一般是只在.h文件中声明函数,不会做变量定义;另外,编程中每一个模块都会有对应的.c和.h文件,最终的总程序自己定义一个comm.c和comm.h去调用各个模块,这样的习惯我觉得还行)

9、if语句中如果是或运算( | ),第一个条件满足时,第二个条件还会判断吗。或运算的话,当然不会,因为 0|1=1,中断了

10、IIC、SPI、UART通信协议的作用和区别,以及为什么用这个不用另外一个进行通信

三、经典面试题

1.嵌入式系统中经常要用到无限循环,如何用C编写死循环?

while(1){}或者for(;;)

2.程序的局部变量存在于哪里,全局变量存在于哪里,动态申请数据存在于哪里?

程序的局部变量存在于栈区;全局变量存在于静态区;动态申请数据存在于堆区

3.关键字const有什么含义?

1)只读。

2)使用关键字const也许能产生更紧凑的代码。

3)使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改

4.请问以下代码有什么问题?

int main() {

char a;

char *str=&a;

strcpy(str,"hello");

printf(str);

return 0;

}

没有为str分配内存空间,将会发生异常,问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃

5.已知一个数组table,用一个宏定义,求出数据的元素个数?

#define NTBL (sizeof(table)/sizeof(table[0]))

6.写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个?

#define MIN(A,B) ((A) <= (B) ? (A) : (B))

考点:

1) 标识#define在宏中应用的基本知识。这是很重要的。因为在 嵌入(inline)操作符 变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。

2) 三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优的代码,了解这个用法是很重要的。

3) 懂得在宏中小心地把参数用括号括起来

7.do……while和while有什么区别?

前一个循环一遍再判断,后一个判断以后再循环

8.什么是预编译,何时需要预编译?

1、总是使用不经常改动的大型代码体。

2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置

9.一个32位的机器,该机器的指针是多少位?

指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字节了

10.局部变量能否和全局变量重名?

能,局部会屏蔽全局。

局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。

对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内

11.引用与指针有什么区别?

1) 引用必须被初始化,指针不必。

2) 引用初始化以后不能被改变,指针可以改变所指的对象。

3) 不存在指向空值的引用,但是存在指向空值的指针

12.关键字static的作用是什么?

在C语言中,关键字static有三个明显的作用:

1) 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。

2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。

3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

13.static全局变量与普通的全局变量有什么区别?static函数与普通函数有什么区别?

全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。

全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。

这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。

由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。

从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。

static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。

对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。

14.进程之间通信的途径有哪些?

进程间通信主要通过管道、消息、信号等途径进行。

1、无名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

2、高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。

3、有名管道 (named pipe) :有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。

4、消息队列( message queue ) :消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

5、信号量( semophore ) :信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

6、信号 ( sinal ) :信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

7、共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。

8、套接字( socket ) :套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。

15.产生死锁的原因是什么?

多个并发进程因争夺系统资源而产生相互等待的现象。即:一组进程中的每个进程都在等待某个事件发生,而只有这组进程中的其他进程才能触发该事件,这就称这组进程发生了死锁。

产生死锁的本质原因为:

1)、系统资源有限。

2)、进程推进顺序不合理。

16.死锁的4个必要条件?

1、互斥:某种资源一次只允许一个进程访问,即该资源一旦分配给某个进程,其他进程就不能再访问,直到该进程访问结束。

2、占有且等待:一个进程本身占有资源(一种或多种),同时还有资源未得到满足,正在等待其他进程释放该资源。

3、不可抢占:别人已经占有了某项资源,你不能因为自己也需要该资源,就去把别人的资源抢过来。

4、循环等待:存在一个进程链,使得每个进程都占有下一个进程所需的至少一种资源。

当以上四个条件均满足,必然会造成死锁,发生死锁的进程无法进行下去,它们所持有的资源也无法释放。这样会导致CPU的吞吐量下降。所以死锁情况是会浪费系统资源和影响计算机的使用性能的。那么,解决死锁问题就是相当有必要的了。

17.死锁的处理方式有哪些?

死锁的处理方式主要从预防死锁、避免死锁、检测与解除死锁这四个方面来进行处理。

预防死锁:

1、资源一次性分配:(破坏请求和保持条件)

2、可剥夺资源:即当某进程新的资源未满足时,释放已占有的资源(破坏不可剥夺条件)

3、资源有序分配法:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反(破坏环路等待条件)

避免死锁:

预防死锁的几种策略,会严重地损害系统性能。因此在避免死锁时,要施加较弱的限制,从而获得 较满意的系统性能。由于在避免死锁的策略中,允许进程动态地申请资源。因而,系统在进行资源分配之前预先计算资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程;否则,进程等待。其中最具有代表性的避免死锁算法是银行家算法。

检测死锁:

首先为每个进程和每个资源指定一个唯一的号码;

然后建立资源分配表和进程等待表

解除死锁:

当发现有进程死锁后,便应立即把它从死锁状态中解脱出来,常采用的方法有:

1、剥夺资源:从其它进程剥夺足够数量的资源给死锁进程,以解除死锁状态;

2、撤消进程:可以直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态.消除为止;所谓代价是指优先级、运行代价、进程的重要性和价值等。

18.进程和线程有什么区别?

进程是并发执行的程序在执行过程中分配和管理资源的基本单位。线程是进程的一个执行单元,是比进程还要小的独立运行的基本单位。一个程序至少有一个进程,一个进程至少有一个线程。两者的区别主要有以下几个方面:

1. 进程是资源分配的最小单位。

2. 线程是程序执行的最小单位,也是处理器调度的基本单位,但进程不是,两者均可并发执行。

3. 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据,使用相同的地址空间,因此,CPU切换一个线程的花费远比进程小很多,同时创建一个线程的开销也比进程小很多。

4. 线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也跟着死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

5. 进程切换时,消耗的资源大,效率低。所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程。

6. 执行过程:每个独立的进程有一个程序运行的入口、顺序执行序列和程序入口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

优缺点:

线程执行开销小,但是不利于资源的管理和保护。线程适合在SMP机器(双CPU系统)上运行。

进程执行开销大,但是能够很好的进行资源管理和保护,可以跨机器迁移。

何时使用多进程,何时使用多线程?

对资源的管理和保护要求高,不限制开销和效率时,使用多进程。

要求效率高,频繁切换时,资源的保护管理要求不是很高时,使用多线程。

19. 线程是否具有相同的堆栈?

真正的程序执行都是线程来完成的,程序启动的时候操作系统就帮你创建了一个主线程。

每个线程有自己的堆栈。

20.TCP与UDP有啥区别?

TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于广播和细节控制交给应用的通信传输,两者主要的不同体现在一下几个方面:

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

2、TCP提供可靠的服务。它通过校验和,丢包时的重传控制,序号标识,滑动窗口、确认应答,次序乱掉的分包进行顺序控制实现可靠传输。即通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达; UDP尽最大努力交付,即不保证可靠交付。

3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高要求的通信或广播通信场景。

4、每一条TCP连接只能是点到点的; UDP支持一对一,一对多,多对一和多对多的交互通信方式。

5、TCP对系统资源要求较多,UDP对系统资源要求较少。

UDP有时比TCP更有优势:

UDP以其简单、传输快的优势,在越来越多场景下取代了TCP, 如实时游戏。

(1)网速的提升给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性。

(2)TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP在内置的系统协议栈中,极难对其进行改进。

采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大。

基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题造成的影响。

部分非标准答案。。。仅供参考

1. 讲⼀下stm32的时钟系统

时钟在MCU中的作⽤,就好⽐于⼈类的⼼脏⼀样不可或缺。STM32有多个时钟源可以使⽤。因为STM32拥有丰富的外设资源,不同外设使⽤的时钟也会不⼀样,同时我们要知道时钟越快,功耗就越⼤,抗电磁⼲扰的能⼒就会减弱,因此,⽐较复杂的MCU 都会采⽤多时钟来解决这些问题。

STM32 有5个时钟源:HSI、HSE、LSI、LSE、PLL。

①、HSI是⾼速内部时钟,RC振荡器,频率为16MHz,精度不⾼。可以直接作为系统时钟或者⽤作PLL时钟输⼊。

②、HSE是⾼速外部时钟,可接⽯英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~26MHz。

③、LSI是低速内部时钟,RC振荡器,频率为32kHz,提供低功耗时钟。主要供独⽴看门狗和⾃动唤醒单元使⽤。

④、LSE是低速外部时钟,接频率为32.768kHz的⽯英晶体。作为RTC时钟;

⑤、PLL为锁相环倍频输出。提供2-16倍的倍频输出。

2. C语⾔中堆和栈的区别;推挽输出是什么?

C语⾔中堆和栈的区别:

1. 申请⽅式

栈(satck):由系统⾃动分配。

堆(heap):需程序员⾃⼰申请和释放。

// 待补充

32单⽚机IO⼝8种状态的理解

1、浮空输⼊,据我的理解,就是不接上拉,也不接下拉,外部电路是什么状态,就是什么状态,具有不确定性。

2、上拉输⼊,就是配置好IO⼝后,默认与VDD相连的开关闭合,读状态默认⾼电平,外部有低电平才拉低。

3、下拉输⼊,与上拉输⼊⼀个意思。

4、模拟输⼊,这个我没⽤到,也不太理解,套⽤⼀下前辈的话:模拟输⼊是指传统⽅式的输⼊,数字输⼊是输⼊PCM数字信号,即0,1的⼆进制数字信号,通过数模转换,转换成模拟信号,经前级放⼤进⼊功率放⼤器,功率放⼤器还是模拟的。

5、开漏输出:据我的理解就是要加上拉电阻,才能拿到低电平,(nmos管为0时,才接通),外部的上拉电阻的⾼电平拉到了Gnd,默认输出⾼电平。

6、推挽输出:配置后,输出1,PMOS管接通,外输出⾼点平,输出0,NMOS管接通,外输出低电平,输出1.

7、推挽复⽤输出

8、开漏复⽤输出

复⽤功能就是外设的配置。

引⽤CSDN博主「持续学习中」的原创⽂章:

3. 假如⼀个单⽚机上电之后不运⾏?这是为什么?

1、检查供电:直接⽤万⽤表测量VCC和GND的电平,是否符合要求。如果VCC偏离5V或3.3V过多,检查7805或其他稳压、滤波电路的输出。

2、检查晶振:⼀般是多换⼏个晶振上电试试。

3、检查RESET引脚电平逻辑,注意所⽤机型是⾼电平复位还是低电平复位的,防⽌MCU⼀直处于反复被复位状态。

4、如果设计时,程序是从扩展的外部ROM开始运⾏的,还需检查EA脚。

5、检查MCU是否损坏或flash⽆法下载,最好换块新的芯⽚试试。

6、如果测试程序运⾏正常。那就基本确定是控制程序的问题了。

个⼈经验:⾸先检查MCU供电是否正常,再判断擦除和烧录是否正常,再判断控制程序是否正常,⼀般情况下3、4不会出现,对于

STM32来说可以换内部晶振来排除2。

4. 举你⽤过的单⽚机的型号和它的⼀些主要参数

STM32F103VCT6

内核

-ARM 32位 Cortex - M 3处理器

-⾼达72 MHz

内存

-256 KB 的 Flash

-48 KB 的 SRAM

3个12位AD,外部通道16个,内部通道2个

7个通道DMA

8个定时器

12个通信接⼝

-2个 I 2 C 接⼝

-5 个 UART

-3 个 SPI

-1 个 USB

-1 个 CAN

内置 CRC 计算单元,和96位唯⼀的 ID 号

具体请参考数据⼿册。

5. ⼀个温度传感器模块,按照正确的使⽤⽅式和参数指标,对⼈体⽪肤测量之后,得到的温度⼀直都是35摄⽒度,这是为什么?

猜⼀个:因为该温度传感模块测出的温度为表⾯温度,⽽实际上表⾯温度和实际体温是有差距的。

6.考⼀些结构体、联合体、sizeof⽅⾯的知识

10.485有⼏根线

RS485总线通信的⼀般是两根线,多出的⼀根是公共线,也就是地线G【长距离电缆中的屏蔽层】抑制⼲扰⽤的必需接!总共要接三根,⼀般测试时可以不⽤接。

11.串⼝和并⼝有什么区别

并⾏接⼝是指数据的各位同时进⾏传送,其特点是传输速度快,但当传输距离较远、位数⼜多时,导致了通信线路复杂且成本提⾼;

串⾏接⼝是指数据⼀位位地顺序传送,其特点是通信线路简单,只要⼀对传输线就可以实现双向通信,并可以利⽤电话线,从⽽⼤⼤降低了成本,特别适⽤于远距离通信,但传送速度较慢;

14.局部变量和全局变量分别存放在哪⾥?

C语⾔中局部变量存在栈⾥,全局变量存静态存储区。

15.c语⾔头⽂件的⼯作原理

引⽤头⽂件相当于复制头⽂件的内容,但是我们不会直接在源⽂件中复制头⽂件的内容,因为这么做很容易出错,特别在程序是由多个源⽂件组成的时候。

16.精度和分辨率有什么区别

1、精度是接近真实值的程度, 即绝对误差或相对误差的⼤⼩.精度做到0.01%极其难

2、分辩率是量化刻度的细度⼤⼩。

分辩率⾼是精度⾼的必要条件,不是充分条件;分辩率⾼不等于精度⾼. 认定精度才是王道。

嵌入式软件工程师面试题目整理(一)

Arm有多少32位寄存器?

Arm2440和6410有什么区别

CPU,MPU,MCU,SOC,SOPC联系与差别

上拉&下拉&高阻态

串口协议讲一讲

RS232和RS485通讯接口有什么区别

IIC时序图画一下,IIC有哪些状态,给一个字节,将它发送出去。IIC有什么注意事项?有没有用I/O模拟IIC,如果有需要注意什么?

为什么2440的内存起始地址是3后面7个0呢?为什么6410的内存起始地址是5后面7个0呢?

内存管理有什么看法?(MMU)

锁有哪些?有什么注意事项

信号量和自旋锁区别

中断能不能睡眠,为什么?下半部能不能睡眠?

上下文有哪些?怎么理解?

死锁产生的原因及四个必要条件

触摸屏中断做了什么,LCD中断做了什么?

什么是交叉编译?为什么需要交叉编译?为什么还要主机编译

简述linux系统启动过程

Linux设备中字符设备和块设备有什么主要区别?分别举例。

同步通信和异步通信

Uart和IIC和SPI的区别(提示:关于异步和同步,电子器件上的)?

用串口发送十个字节就丢失一个两个你会怎样检查;发送的时候对方设备不响应你该怎么办

内核链表为什么具有通用性?

分配内存哪些函数?kmalloc有两个参数,各个作用是什么?

有哪些锁,各自的效率问题?自选锁怎样实现的?

Linux内核硬中断 / 软中断的原理和实现

8、请问你对c语言的指针熟悉吗?

19、const 这个东西 你来解释一下

20、讲一下can

21、什么是spi?

22、iic熟悉吗?

23、你会用Linux吗?

24、你有没有写过状态机?

25、你来说一下中断的处理流程是什么样子的?

  1. 你用过什么传感器

1、PPT介绍

2、项目负责哪些软件工作

3、32单片机用过哪些外设

4、IIC通信协议

5、IIC开始通信是由谁发起的

6、IIC协议主设备可以挂载多少个从设备

7、IIC主设备发起通信,如何知道哪个从设备需要通信

8、应答信号是哪个地方发送的

9、IIC驱动是否自己写的

10、编译器用的什么

11、代码量

12、调试器用的什么

13、烧写器用的什么

14、烧录的是什么类型的文件

15、程序编译步骤

16、MCU的中断了解吗

17、看门狗了解吗

18、程序是如何组织的

19、ADC用的多少位的,如何计算采集的真实电压值,基准电压是多少?

20、参加的组织性活动还是技术性活动多

21、竞赛过程,自己的意见和其他人不同时,如何处理

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式面试资料整理 的相关文章

  • win10搭建mysql主从复制的两个测试主从数据库

    mysql主从复制基础 win10电脑设置两个mysql数据库 卸载MySQL数据库 本人只是想把自己的mysql5 7 4升级为mysql8版本 xff0c 这里顺带记录一下 xff0c 以便有需要的人查看备份数据库 本人使用的是sqly
  • mac系统n工具下载node.js速度过慢(导致下载失败)

    n工具下载node js失败 n工具n工具下载node js失败的原因解决注意 n工具 n工具是mac系统用来管理多个node js版本的工具 xff0c 我们如果要使用到多个node js版本 xff0c 那么就可以使用n工具 xff0c
  • 使用Git小乌龟初始化本地仓库并且创建新的分支提交 删除分支(超详细图文教程,手把手教你做)

    前段时间入了小乌龟的坑 xff0c 最近项目需要多人合作 xff0c 就需要使用分支提交项目 xff0c 这里刚好就使用到了创建分支功能 xff0c 就记录一下使用的完整过程 文章目录 第一步 初始仓库 xff1a 1 1 创建完成项目会多
  • opencv笔试面试必背题目

    算法工程师 xff0c 技术软件类求职opencv必背八股文 更多算法 业务 HR面等笔试题面试题 gt 个性签名自取 xff01 1 opencv中RGB2GRAY是怎么实现的 答 xff1a 以R G B为轴建立空间直角坐标系 xff0
  • 我的新地址 http://www.cppblog.com/flyingxu/

    我的新地址 http www cppblog com flyingxu 这里的文章不会移过去 xff0c 也不会继续更新 xff0c 保持现状 以后会不会重新开始更新 xff0c 也不确定
  • px4+ros+gazebo+ORB_SLAM2室内视觉无人机导航

    px4 43 ros 43 gazebo 43 ORB SLAM2室内视觉无人机导航 一 ros 43 px4环境搭建 我用的ORB SLAM2视觉相机跑图首先要安装ros 43 px4环境 xff0c 我用的阿木实验室的镜像 xff0c
  • pc+tx2通信

    https blog csdn net RNG uzi article details 107285113
  • F4烧写PX4固件

    一 硬件准备 一个f4v3pro或者f4v3s飞控 xff0c 一根USB线 xff0c F450机架 xff0c ET07接收机和配套遥控器 xff0c 20A电调 xff0c 电机 xff0c 格式3s电池 1 无人机组装效果图 上 上
  • C++结构体类型变量

    C 43 43 定义结构体类型变量的方法 1 先声明结构体类型再定义变量名 xff0c 在定义了结构体变量后 xff0c 系统会为之分配内存单元 span class token keyword struct span Student sp
  • pycharm中如何安装tensorflow、cv2

    做卷积神经网络时用到了Python xff0c 记录一下遇到的问题 xff0c 首先 xff0c anaconda和pycharm的安装可按照网上的教程来 tensorflow的安装 但是 xff0c 当配置好解释器之后 xff0c 面临的
  • 【vscode和gitee】如何更改VsCode的gitee远程库地址,并提交到新的仓库中

    如何更改VsCode的gitee远程库地址 xff0c 并提交到新的仓库中 1 查看并更换git远程仓库地址 span class token number 1 span 查看当前remotes span class token funct
  • 【软件评测】03程序语言基础

    仅为学习记录 程序设计语言概述 低级语言 机器语言 xff1a 用二进制代码表示的计算机的指令等 xff0c 所有都是二进制表示 xff0c 计算机可以直接执行 xff0c 而不需要再次进行编译 优点 xff1a 执行效率较高 xff0c
  • 【软件评测】06计算机网络基础知识

    计算机网络基础知识 OSI RM七层模型七层模型TCP IP四层协议冲突域和广播域的区别 常见的协议协议族常见协议及对应端口常用的端口号 域名空间万维网Windows网络相关命令IP地址IP地址IP地址的分类IP地址掩码变长子网掩码特殊含义
  • 【软件评测】07安全性基础知识

    安全性基础知识 安全保护等级安全防护体系数据安全策略安全防护策略防火墙包过滤状态检测代理服务 安全协议 病毒与木马病毒木马 网络攻击访问控制访问控制实现方式身份验证方式 加密技术对称性加密技术非对称性加密技术单向加密PKI签名 43 加密
  • 【软件评测】09知识产权和项目管理基础知识

    仅为学习记录 知识产权 著作权概述 著作权 知识产权是指人们基于自己的智力活动所创造的成果和经营管理活动中的经验知识而依法享有的权利 知识产权的特点 xff1a 无形性 双重性 确认性 独创性 地域性 时间性 版权 xff08 著作权 xf
  • 131. Palindrome Partitioning

    文章目录 1 题目理解2 回溯3 动态规划 1 题目理解 输入 xff1a 字符串s 规则 xff1a 将字符串s分割 xff0c 分割后每一个部分都是一个回文串 输出 xff1a 所有的分割方式 Example 1 Input s 61
  • 【软件评测】10数据库技术

    仅记录学习过程 数据库技术相关术语 术语 数据 描述事物的符号 xff0c 是传递信息的载体信息 事物的状态和事物状态变化的反馈数据库 存放数据的地方 xff0c 统一管理 长期存放在计算机内 有组织 相互关联的数据集合 xff0c 特点是
  • 【软件评测】11软件测试理论

    仅为学习记录 软件测试理论 软件测试基础软件测试软件测试验证与确认软件缺陷 测试质量与保证软件质量质量保证 测试用例测试策略测试的原则软件测试模型V模型W模型H模型敏捷测试模型 软件测试分类回归测试按照关联代码划分按实施主体划分按工程阶段划
  • 数学建模-第六章:最优化方法建模

    最优化方法 数学规划 xff0c 是运筹学的一个分支怎样建立最优化问题的数学模型 决策变量和函数约束或限制条件目标函数 连续变量优化模型 线性规划 标准形式的线性规划模型 线性规划问题转为标准形式 max w 61 7x 43 12y s
  • Linux基础命令总结(超全)

    Linux中一些基础命令 1 pwd xff1a 显示当前所在位置的绝对路径 2 cd 43 路径 xff1a 切换当前工作位置 3 cd xff1a 退回到当前位置 4 cd xff1a 退回到上一层 5 ls xff1a 默认显示当前位

随机推荐

  • C#窗体简单应用

    创建登录页面 xff0c 登录成功跳转测试页面 第一步 xff0c VS创建窗体 第二步 xff0c 进入程序 xff0c 开始编辑 第三步 xff0c 从 视图 找出 工具箱 xff0c 拉出对应控件 xff0c 排布登录页面 第四步 x
  • 四旋翼无人机仿真之hector_quadrotor无人机(ROS + Gazebo)(一)

    这里写自定义目录标题 应用环境hector quadrotor 功能包结构简介hector quadrotor 功能包安装1 安装所需依赖库2 下载 安装hector quadrotor参考文章 应用环境 ubuntu16 04 虚拟机实体
  • 四旋翼无人机仿真之hector_quadrotor无人机(ROS + Gazebo)(三)传感器数据读取与复现(IMU、GPS)

    系列文章目录 文章1 xff1a 四旋翼无人机仿真之hector quadrotor无人机 xff08 ROS 43 Gazebo xff09 文章2 xff1a 四旋翼无人机仿真之hector quadrotor xff08 二 xff0
  • 魔霸新锐2021双系统配置

    https blog csdn net FontThrone article details 104282121 主要参考独立显卡部分 https www bilibili com read cv11300312 xff08 主要参考核心显
  • XTDrone vins-fusion+ego-swarm debug(已解决)

    问题描述 xff1a 低优先级无人机 xff08 除0号无人机以外 xff09 运行撞墙 xff1b 启动时低优先级无人机会异常的飘逸一段距离 xff0c 而rviz里显示的b样条曲线的控制点起点没变 这是刚启动的情况 启动大概不到1秒无人
  • cmake find_packages 搜索路径与 opencv版本管理

    find packages搜索路径 xff1a 设定一个project DIR变量来指定路径 xff0c 找到对应库的 cmake xff0c 例如 xff1a set OpenCV DIR usr share OpenCV 多版本proj
  • 小白理解Kubernetes系列

    初识Kubernetes 从本篇文章开始 xff0c 记录Kubernetes的内容 xff0c Kubernetes相关的知识点包括十三个部分 xff0c 分别是前世今生 组件说明 Pod概念 网络通讯方式 集群安装 资源清单 资源控制器
  • Warning: skipping non-radio button in group

    现象 xff1a 当我们加入一组单选按钮 xff0c 并将它们设置为一组互斥按钮 xff0c 然后又添加其他控件 xff0c 这时按F5编译 xff0c 出现如下警告信息 xff1a Warning skipping non radio b
  • ubuntu蓝牙相关问题(ubuntu 18.04 + ax210)

    装驱动 xff08 ax210的驱动好像要内核5 10以上能用 xff0c 可以参考我之前的博客升级 xff09 span class token function wget span span class token parameter
  • 嵌入式软件面试经典问题

    一 进程与线程 xff08 不同的系统资源管理方式 xff09 1 区别 进程 xff1a 资源分配的基本单位 xff0c 由一个或者多个线程组成 线程 xff1a 调度器进行调度的基本单位 xff0c 一个任务 每个进程都有自己独立的内存
  • ESP8266常用API函数总结(vscode+platformIO)

    1 COMMON 1 includePath ctrl 43 shift 43 p进入命令面板输入C C 43 43 Edit Configurations 在包含文件中选择include文件目录 2 输出监视器 在platformio i
  • C++基础总结

    1 引用和指针区别 引用变量是一个别名 xff0c 相当于定义了一个const类型变量 xff0c 但不分配空间 引用定义时必须初始化 xff0c 指针无要求 初始化时引用一个实体后不能再引用其他的 xff0c 指针可以在任何时候指向任一同
  • 局域网共享文件配置

    1 适用范围 可用于同一网络内的设备进行数据共享 xff08 同一WIFI或网线接同一路由器 xff09 2 共享文件配置步骤 xff1a 1 选择你想共享的文件 xff0c 鼠标右键单击属性 xff08 例如我这文件名为Shared xf
  • C语言细节

    C 1 char数组声明时初始化 2 uin8 t属于无符号字符型 typedef signed char int8 t typedef unsigned char uint8 t typedef short int16 t typedef
  • ESP32 stable_v5.0 API简单汇总

    SDK API https docs espressif com projects esp idf 1 GPIO amp EXTI 头文件位置 xff1a components driver include driver gpio h 二选
  • keil5[使用虚拟端口进行软件仿真串口调试]与[使用开发板串口调试]

    前言 xff1a 做串口调试试验 xff0c 写下此文章 介绍两种方式 xff0c 一种软件仿真 xff0c 一种硬件 1 虚拟端口进行软件仿真串口调试 xff1a 无需硬件 开发板 需要虚拟串口驱动 xff08 一个软件 xff09 xf
  • STM32 FreeRTOS学习——任务创建

    任务创建 任务概念 什么是任务 任务函数没有返回值 xff0c 并且参数是指针类型 很少使用 基本可以不管 void entry task void pvParameters 任务主体 xff0c 无限循环且不能返回值 while 1 任务
  • kinect v2 相机标定

    目录 ubuntu删除命令 相机标定 一些快捷键 准备工作 详细步骤 ubuntu删除命令 ubuntu中删除命令一般使用rm xff0c 但是rm误删之后 xff0c 想恢复比较麻烦 xff0c 所以在这里介绍另外一种删除方法 xff0c
  • 研究生如何读论文

    作为一个准研究生 xff0c 马上就要开始加入到读论文的大军中 xff0c 如何读论文是我们共同关心的问题 xff0c 笔者在这方面做了一些小调查 xff0c 发现台湾清华彭明辉教授的研究生手册非常有启发意义 xff0c 现摘录一下对自己很
  • 嵌入式面试资料整理

    第一章进程线程的基本概念 1 什么是进程 xff0c 线程 xff0c 有什么区别 2 多进程 多线程的优缺点 3 什么时候用进程 xff0c 什么时候用线程 4 多进程 多线程同步 xff08 通讯 xff09 的方法 5 进程线程的状态