嵌软秋招总结及两万字八股文汇总

投票
寄完了,只剩实习转正保底。主要是linux+soc方向岗位,少量mcu+rtos方向,少量算法方向。
面筋
1、嵌入式linux的启动过程?想linux启动之后执行一些服务的话,能通过什么方式?
2、为什么要用uboot,不能直接启动linux内核吗?
3、Select和epoll的区别?
4、TCP和UDP的区别?TCP\UDP报文头部开销为多少?
5、什么叫面向连接和面向非连接?
6、介绍一下TCP的拥塞控制机制?
7、说一下自己熟悉的排序算法,讲一下其中的一个复杂度?
8、二叉树、平衡树、红黑树怎么理解?
9、树的平衡有什么用?
10、堆和栈的区别?
11、进程和线程的区别?
12、进程/线程具体是怎么实现的?
13、介绍SPI,怎么给某一个地址发数据?
14、设备和驱动是如何匹配的,匹配后做什么?
15、写一个通用的字符设备驱动程序,需要实现哪些接口?
16、主次设备号是什么?
17、Linux虚拟内存管理,虚拟地址如何转化为物理地址?
18、fopen和open的区别?
19、讲一下什么是交叉编译?
20、讲一下中断流程,区分硬件中断和软件中断。
21、IIC原理,如何保证数据的准确性,最多挂载多少个设备,为什么要接上拉电阻?
22、串口通信原理,如何保证串口通信成功,如何修改波特率,说一下串口的缓冲区管理?
23、发生死锁的条件、怎么避免死锁?
24、DMA配置过程,如何通过DMA实现高效的SPI数据传输?
25、什么是中断优先级?如何在嵌入式系统中管理中断优先级?如何防止中断嵌套导致系统死锁?
26、如何调试和优化一个性能较差的Linux驱动程序?
27、解释RTOS中任务调度器的作用?
28、如何编写一个Linux应用程序来读写GPIO输入输出?
29、如何使用epoll实现高效的IO多路复用?
30、如何在Linux应用中处理信号和中断?信号和中断的区别是什么?
31、如何在Linux上实现守护进程?
32、如何调试在Linux上崩溃的嵌入式应用程序?
33、http和https的区别?
34、进程间通讯的方式有哪些,有什么优缺点,适合什么场景?
35、数据结构有哪些?
36、数组和链表的区别?什么时候用数组,什么时候用链表?
37、经常要进行增删改查的数据用什么存储?
38、如何理解操作系统?
39、两个线程操作同一个变量多次后会发生什么情况?
40、为什么要用RTOS?有什么意义?为什么能加快效率?
41、fork()如何创建子进程?什么是写时复制?什么是零拷贝?
42、define\const\typedef的区别?
43、GPIO的模式有哪几种?
44、Linux内存分配的几个函数(kmalloc()\kzalloc()\vmalloc())?
kzalloc 是强制清零的 kmalloc 操作;(以下描述不区分 kmalloc 和 kzalloc)
kmalloc 分配的内存大小有限制(128KB),而 vmalloc 没有限制;
kmalloc 可以保证分配的内存物理地址是连续的,但是 vmalloc 不能保证;
kmalloc 分配内存的过程可以是原子过程(使用 GFP_ATOMIC),而 vmalloc 分配内存时则可能产生阻塞;
kmalloc 分配内存的开销小,因此 kmalloc 比 vmalloc 要快;
45、wait()/waitpid()的区别?
46、什么是 inode、block、sector?
47、Linux常见的信号有哪些?接收到信号后怎么处理?
48、什么是线程池?
49、Linux网络编程流程,讲一下服务端与epoll结合的编写流程。
50、讲一下FreeRTOS的内存管理。
51、讲一下FreeRTOS的启动流程。
禁止全局中断: 通常会调用一个与平台相关的函数来禁止全局中断,例如 portDISABLE_INTERRUPTS()。 这是为了防止在初始化 FreeRTOS 的内部数据结构时发生中断,导致数据不一致。
设置系统时钟: 初始化 FreeRTOS 的系统时钟,通常会调用 xPortSysTickHandler(),并将其与 SysTick 中断关联。
创建空闲任务 (Idle Task): 空闲任务是 FreeRTOS 中优先级最低的任务,当没有其他任务可以运行时,空闲任务就会运行。空闲任务的主要作用是回收被删除的任务所占用的内存。
创建第一个任务: 选择就绪列表中优先级最高的任务,并将其状态设置为运行状态 (Running)。
启动 PendSV 中断: 配置 PendSV 中断,并触发它。 PendSV 中断用于进行任务切换。
恢复中断: 启用全局中断,例如 portENABLE_INTERRUPTS()。
进入第一个任务: 通过某种方式(通常是汇编代码),将 CPU 的控制权交给第一个任务。 这涉及到加载任务的栈指针、程序计数器等寄存器。
52、DMA和cache一致性问题怎么解决?
Cache Flush 操作: 指的是将 CPU Cache 中的数据写回主内存,并使相应的缓存行无效。
dma_sync_single_for_cpu(): 在 DMA 传输完成后,将 DMA 操作影响的内存区域中的数据从设备缓存同步到 CPU Cache。 适用于 DMA 写入内存 (从设备到内存) 的情况,确保 CPU 可以读取到 DMA 写入的最新数据。
dma_sync_single_for_device(): 在 DMA 传输开始前,将 CPU Cache 中的数据写回主内存,并使相应的缓存行无效。 适用于 DMA 从内存读取数据 (从内存到设备) 的情况,确保 DMA 设备读取到最新的数据,而不是过时的 Cache 数据。
Cache 一致性管理: 一些 IOMMU 可以通过硬件方式来管理 DMA 设备和 CPU Cache 之间的数据一致性。 例如,IOMMU 可以监听 DMA 设备的内存访问,并自动使 CPU Cache 中相应的缓存行无效。
53、在驱动中,物理地址向虚拟地址的转换接口是什么?
ioremap()传参为实际物理地址起始地址和地址范围大小
54、ioremap和iommu的区别是什么?

55、讲一下硬件i2c和软件i2c。
56、模块状态是什么?
未加载;加载中(modprobe);初始化;运行中;卸载中(rmmod);已卸载
57、静态加载和动态加载的区别?
58、Uboot怎么配置的?
59、知道uboot之前还有一段流程吗?
基本的硬件初始化:
时钟初始化: 设置 CPU 和外设的时钟频率。
电压调节: 调整 CPU 和内存的电压。
DRAM 初始化: 初始化 DRAM 控制器,以便后续的内存访问。 这通常是极其关键的一步。
最小化的存储器访问: 可能需要配置 SPI Flash 或其他类型的存储器,以便从那里加载后续的引导加载程序。
安全启动 (Secure Boot): 验证 U-Boot 镜像的签名,防止恶意代码启动。 (如果使能了安全启动)
选择启动设备: 确定从哪个存储设备 (例如 Flash、SD 卡、网络) 启动。
加载 SPL (Secondary Program Loader): 将 SPL 从存储设备加载到 RAM 中。
跳转到 SPL: 将 CPU 的执行权交给 SPL。
60、内核为什么存放在0x30008000中呢,而uboot存放在0x0000处,其中这些地址存放了些什么?

字数限制,还有很多下一次更新写上来#牛客创作赏金赛##面试问题记录#
全部评论
同学,瞅瞅我司,医疗独角兽, 因为新业务扩展,11月校招HC暴增! 我的主页最新动态,绿灯直达,免笔试~
1 回复 分享
发布于 2025-11-18 09:23 广东
直接高通把,平台的,行业链的上游
点赞 回复 分享
发布于 2025-12-14 13:36 陕西
请问是本科还是硕士呀
点赞 回复 分享
发布于 2025-12-10 00:34 湖南
高通断档领先啊xm 当时有面高通可惜没通过但是高通是我今年从找实习到秋招面试体验最好的一家公司了
点赞 回复 分享
发布于 2025-11-19 03:33 广东
你这整理的,有驱动,有应用的,内容挺多的
点赞 回复 分享
发布于 2025-11-13 20:18 陕西

相关推荐

2025-12-22 12:20
已编辑
南昌大学 嵌入式软件开发
基本是围绕项目问的,参考价值有限1. 请大概说一下CAN总线的仲裁和通信逻辑。2. CAN总线的显性电平跟隐性电平是怎么区分的?3. CAN总线的通信波特率是多少?4. 实际传输过程中是否遇到过CAN总线错误(如发送或接收错误、数据丢失等)相关问题?5. 如何对不同ID的CAN消息做过滤?6. CAN消息过滤器的屏蔽规则(过滤规则)是什么?7. IMU模块通过什么方式通信?8. 从IMU获取数据的整个流程是什么?9. IMU数据多久同步一次?10. 接收IMU数据是在任务中周期性地查询吗?11. 查询IMU数据的频率是多高?12. 任务是通过OS delay来实现延时的吗?13. 创建task后,task里面都会做哪些处理,任务运行的结构是什么样的?14. 读取IMU数据时,查询过程中会发什么指令,IMU如何回应?15. IMU发送数据的触发动作是什么?16. IMU的发送频率是多少?17. 在不清楚IMU发送频率的情况下,如何决定接收任务的周期以避免丢包?18. 接收IMU数据时,buffer是怎么设置的?如果一包数据接收完但未处理,后续再来数据会怎么处理?19. FreeRTOS的任务调度机制是什么样的?20. task有几个状态?21. 任务从运行态切到就绪态的切换条件是什么?22. 任务从运行态到阻塞态的情况中,等待的资源有哪些?主动进入阻塞态的方式有哪些?23. 通过消息队列传输数据时,接收端是怎么处理的?24. 就绪态的任务是通过什么方式管理的?25. 任务上下文切换的过程是什么?会保存哪些变量?26. ARM架构的通用寄存器有哪些?27. 任务栈空间是怎么分配的?28. 是否对栈的使用率(使用了多少)做过检测?29. 电机控制是通过什么方式实现的(如何控制电机的转速和方向)?30. 电机转速调节的具体实现方式是什么?31. 实现DMA功能需要配置哪些内容?32. DMA从外设(如IMU数据接收)搬运到RAM时,源地址和目的地址配置的差异(尤其是增长方向方面)有哪些?33. 给了一段数组和指针运算的代码,给出输出结果并说明推导过程。题目还行,没有手撕
点赞 评论 收藏
分享
评论
24
114
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务