鼎信 嵌入式软件 面经

一面
一、自我介绍
二、C 基础
1. 全局变量和局部变量的区别
2. 编译过程 .c到可执行文件
3. 为什么要进行链接?
4. 什么是野指针?
三、简历、项目相关问题
5. IIC协议了解吗?能说一下吗?
6. SPI工作模式(CPOL时钟极性和CPHA时钟相位)。
7. 你觉得哪个项目最拿手?(大概这个意思)应用背景、具体实现,介绍的详细一点
四、反问

二面
也是技术面
一、自我介绍
二、项目
哪个项目印象最深?项目中遇到了什么问题,如何解决的?
有没有考虑过项目哪里又可以改进的地方?
主要是拷打项目
全部评论
哥你是啥项目呀,面试官这么感兴趣吗
点赞 回复 分享
发布于 2023-09-21 16:53 北京
想咨询一下楼主一面后到二面通知要多久啊?
点赞 回复 分享
发布于 2023-09-15 21:41 天津

相关推荐

海能达 嵌入式软件开发 13k 底薪 本科其他
点赞 评论 收藏
分享
🌟 个人背景:985硕,无大厂实习,但有两个车载嵌入式项目,刚通过文远知行4轮技术面,分享一手经验!📌 面试流程速览笔试:3道编程题(C/C++为主,涉及链表和内存管理)。技术一面:手撕代码 + 硬件基础(50分钟)。技术二面:系统设计 + 多线程实战(40分钟)。技术三面(交叉面):项目深挖 + 行业场景(30分钟)。HR面:离职原因/职业稳定性。时间线:2周速通(面试官效率高,但手撕题难度陡增)。💻 技术面真题回忆1. 手撕代码题题目1:反转链表的指定区间(如反转第m到第n个节点),要求空间复杂度O(1)。坑点:头节点可能被反转,需用dummy节点占位。楼主评价:“写过N遍的题,但现场卡在指针判空边界,被面试官连环追问” 😅题目2:设计一个线程安全的环形缓冲区(Circular Buffer),支持多线程读写。考点:互斥锁、条件变量、内存对齐优化。2. 系统设计 & 硬件基础问题1:如何设计车载CAN总线通信模块?帧ID分配策略、错误处理机制怎么实现?延伸:CAN vs CAN FD的区别、DBC文件解析工具的原理。问题2:在资源受限的嵌入式系统中,如何优化AI模型的推理速度?(如文远知行用的L4级计算平台)参考思路:量化、层融合、利用硬件加速指令(如ARM NEON)。3. 操作系统 & 实战场景灵魂拷问:“Linux内核的实时性差,如何为自动驾驶传感器数据采集设计实时线程?”“SPI通信中遇到时钟信号抖动,如何用示波器定位问题?”楼主答案(仅供参考):实时性方案:Preempt-RT补丁 + 线程优先级绑定 + 内存锁页。SPI调试:查时钟频率是否超设备上限,检查地线环路干扰。🔍 项目深挖高频问题车载项目1:基于STM32的ADAS预警系统“如何解决毫米波雷达数据与视觉时间戳不同步?” → 答硬件中断+PTP协议同步。“滤波算法选型?为什么不用卡尔曼滤波改用滑动窗口均值?” → 答资源消耗与实时性权衡。行业场景:“自动驾驶嵌入式系统为什么倾向用ROS 2替代ROS 1?”(答:DDS协议支持分布式实时通信)💥 避坑指南手撕代码:嵌入式必刷**《程序员面试宝典》**指针题,尤其链表/位操作。多写裸机代码(不依赖IDE调试),面试官可能要求白纸手写。项目复盘:准备数据对比图(如优化前后内存占用),展示量化结果。解释清楚为什么用某款MCU/传感器(成本?性能?供应链?)。八股文重点:熟读《ARM Cortex-M权威指南》、Cache一致性协议(MESI)。掌握RTOS调度机制(如FreeRTOS的优先级反转解决方案)。🚀 内推内推链接: 🎯内推码:DS17ugTB(填码简历优先审!)欢迎提问/补充!祝大家offer拿到手软!     #实习# #春招# #面经# #内推# #文远知行# #嵌入式开发工程师#
点赞 评论 收藏
分享
1.Linux系统的组成部分有哪些?Linux内核、Linux文件系统、Linux shell、Linux应用程序。  2.Linux内核的组成部分有哪些?(1)第一种分类方式:内存管理子系统、进程管理子系统、文件管理子系统、I/O管理子系统。 (2)第二种分类方式:进程调度(SCHED)、进程间通信(IPC)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)。 3.Linux内存管理模块MMU的作用是?(1)地址映射。 (2)内存分配和回收。 (3)内存保护。 (4)内存扩充。 4.操作系统调度策略有哪些?答案:(1)先来先服务(FCFS)。 (2)短进程优先(SPF)。 (3)高响应比优先(HRN)。 (4)时间片轮转(RR)。 (5)多级反馈队列(RRWMF)。 (6)最高优先权优先(FPF)。 解析:(1)先来先服务(FCFS):每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。 (2)短进程优先(SPF):从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。 (3)高响应比优先(HRN):在短作业优先的基础上,使作业的优先级随着等待时间的增加而以速率a 提高,则长作业在等待一定的时间后,必然有机会分配到处理机。 (4)时间片轮转(RR):将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU 分配给队首进程,并令其执行一个时间片,时间到了之后将它送往就绪队列的末尾。接着调度下一个队首进程……如此循环。 (5)多级反馈队列(RRWMF): ①设置多个就绪队列,并为各个队列赋予不同的优先级。第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小。例如,第二个队列的时间片要比第一个队列的时间片长一倍,第i + 1个队列的时间片要比第i个队列的时间片长一倍。 ②当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行;如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三队列,如此下去,当一个长进程从第一队列依次降到第n队列后,在第n 队列便采取按时间片轮转的方式运行。 ③仅当第一队列空闲时,调度程序才调度第二队列中的进程运行;仅当第1~(i-1)队列均空时,才会调度第i队列中的进程运行。如果处理机正在第i队列中为某进程服务时,又有新进程进入优先权较高的队列(第1~(i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先权进程。 (6)最高优先权优先(FPF):把处理机分配给就绪队列中优先权最高的进程,这时,又可进一步把该算法分成如下两种: ①非抢占式优先权算法:系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成;或因发生某事件使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最高的进程。这种调度算法主要用于批处理系统中,也可用于某些对实时性要求不严的实时系统中。 ②抢占式优先权调度算法:系统同样是把处理机分配给优先权最高的进程,使之执行。但在其执行期间,只要又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,重新将处理机分配给新到的优先权最高的进程。  5.满足短作业优先又不会发生饥饿现象的操作系统调度策略是哪种?高响应比优先。  6.Linux I/O子系统的层次结构是怎样的?从上到下依次是用户层I/O软件,设备独立性软件,设备驱动程序,中断处理程序。  7.逻辑地址、线性地址、物理地址、总线地址、虚拟地址有什么区别?(1)逻辑地址:与内存段相关的偏移地址部分。例如,在C语言获取指针变量的值,就是逻辑地址,不和绝对的物理地址相关。 (2)线性地址:线性地址 = 逻辑地址 + 基地址。 (3)物理地址:如果启用了分页机制,那么线性地址使用页表项变换后就是物理地址。如果没有启用分页机制,那么线性地址就是物理地址。 (4)总线地址:x86下的I/O地址,ARM下的物理地址。(在x86下,外设的I/O地址是独立的,即有专门的指令访问外设I/O,I/O地址就是"总线地址",而RAM地址就是"物理地址"。在ARM下,I/O和RAM统一编址,但linux为了统一各个平台,仍然保留这个概念,总线地址其实就是物理地址。) (5)虚拟地址:MMU虚拟出来的地址。  8.你了解操作系统的内存分配方式吗?(1)分页存储管理:优点是不需要连续的内存空间,且内存利用率高(只有很小的页内碎片);缺点是不易于实现内存共享与保护。 (2)分段存储管理:优点是易于实现段内存共享和保护;缺点是每段都需要连续的内存空间,且内存利用率较低(会产生外部碎片)。 (3)段页式存储管理:优点是不需要连续的内存空间,内存利用率高(只有很小的页内碎片),且易于实现段内存共享和保护;缺点是管理软件复杂性较高,需要的硬件以及占用的内存也有所增加,使得执行速度下降。以上内容摘自专刊《嵌入式岗位笔试面试真题讲解》,该专刊不仅有真题讲解,还有经验分享,不清楚嵌入式该学什么的同学,想找嵌入式实习/正式工作的同学,都可以来看看:  https://blog.nowcoder.net/zhuanlan/v0ELPM#牛客AI配图神器#
查看8道真题和解析
点赞 评论 收藏
分享
评论
5
29
分享

创作者周榜

更多
牛客网
牛客企业服务