首页 / 嵌入式投递
#

嵌入式投递

#
29734次浏览 374人互动
此刻你想和大家分享什么
热门 最新
地平线-嵌软(基础通路)-一面
📍面试公司:地平线🕐面试时间:9.26💻面试岗位:嵌软❓面试问题:1.项目拷打(20min),系统思考、原理分析等2.系统安全考虑,芯片加密存储key等的校验方式,密钥存储到启动校验3.用户侧core原理和调试和内核panic原理4.GPS底层驱动遇到的问题排查,DMA驱动适配,串口使用DMA会出现的问题,排查手段,GPS解析出现问题的排查手段5.V4L2框架,用户侧实现流程,相机驱动移植,USB/MIPI移植用的哪些工作,pipeline6.I2C开发可能出现的问题,硬件驱动排查原理,I2C基础知识掌握(地址7和10位使用场景,总线仲裁原理等)7.图像像素占用大小,YUV422和444区别,为什么使用YUV4228.用户态和内核态的通信方式,通信不是切换9.驱动中poll、中断、异步机制的实现原理,详细讲解poll、select、epoll再内核层面的实现原理10.驱动加载实现用户接口的原理,netlink机制到UDEV实现的过程,和传统的设备加载机制的区别11.内核实现调度的机制(主动和被动的场景),被动触发的机制(触发和执行的流程,实际举一个其中的定时器中断实现调度的全流程),多核调度均衡的原理,CFS的原理,使用了preempt_rt的调度优先级在用户到内核统一同一个数轴的详细原理12.还有好多场景问题,想不起来了13.反问🙌面试感想:面试总时长1小时30分钟,地平线考查的很深,面试时间也很长,还有好多场景题目,对于知识的理解和问题的排查更为关注,也有一两个没有回答上,面试官也主动解答,面试体验很好,等待通知
点赞 评论 收藏
分享
地平线-二面-嵌入式软件开发
📍面试公司:地平线🕐面试时间:10.10💻面试岗位:嵌入式软件开发❓面试问题:1.系统选型针对时延、精度、功耗等的考虑,相机硬件选型在系统设计的考虑(帧率、曝光),相机软件技术方案在系统设    计的考虑2.针对模型做的量化和裁剪的工作,基于什么设计考虑需要进行量化和裁剪,对模型的精度验证和最后的指标是怎么定的3.你在这个项目中,针对具体的项目组成,多做出的突出贡献是什么,你是怎么进行项目中硬件选型、技术选型、精度验证    等工作的4.项目中如何对缓存失效问题进行考虑,如何去提高缓存的命中率,顺便说一下缓存cacheline在linux中的具体实现原理5.线程池、进程间通信、零拷贝在项目中对系统的作用6.为什么要使用socket进行进程间通讯,为什么要使用共享内存进行进程间通讯7.linux的v4l2子系统的框架,核心层中注册的流程(v4l2_device、v4l2_subdev等),linux的v4l2的media拓扑的实现,    对于设备树中如何进行关联,link、pad具体实现8.进程调度的时机,其中进程抢占的两个部分,举例一个具体的例子(systick)9.算法业务是调用的库还是自己写的,自己做的算法的区分度,精度、时延的考虑10.对地平线业务的看法,对智驾的看法,对未来职业生涯的规划11.反问🙌面试感想:地平线的面试官真的很专业,对系统设计有自己的看法,喜欢深入交流为什么要这样做,主要还是考察对项目的理解深度,后面反问环节也是很有激情的在讲解未来怎么去发展的建议,深受鼓舞
查看10道真题和解析
点赞 评论 收藏
分享
双非本 想找 嵌入式软件开发
苦学编程30年:嵌入式软件秋招笔记希望对你有帮助https://www.nowcoder.com/creation/manager/columnDetail/jLwqDm
点赞 评论 收藏
分享
嵌入式校招准备指南
2025秋招已经开始,本文注重嵌入式嵌入式软件、linux、驱动岗位面试重点、核心、精简内容。(没有废话、全是干货)同时,本人接受嵌入式求职咨询,大家有什么求职问题可以私信我。一、明确目标与定位首先,你需要明确自己的职业目标和定位。嵌入式系统岗位广泛,包括但不限于嵌入式软件开发、Linux驱动开发、硬件接口设计等。在准备过程中,要根据自己的兴趣和优势,选择合适的岗位方向进行深入研究。1.1 嵌入式软件工程师嵌入式软件工程师主要负责嵌入式系统的应用程序开发,需要熟练掌握C语言、了解MCU(微控制器)的工作原理、具备一定的操作系统(如FreeRTOS、ucOS、Linux)开发经验。1.2 Linux驱动开发工程师Linux驱动开发工程师则更侧重于Linux环境下的硬件驱动开发,需要深入理解Linux内核机制、掌握设备驱动开发流程、熟悉Linux设备模型等。二、嵌入式核心知识点准备2.1 C语言C语言是嵌入式开发的基础,几乎所有的嵌入式系统都会用到C语言。你需要熟练掌握C语言的基本语法、指针、数组、字符串、结构体、联合体等知识点。同时,对于内存管理、堆栈原理、大小端字节序等底层知识也要有深入的理解。•指针:掌握一级/二级指针、指针数组、数组指针、指针函数、函数指针等。•数组与字符串:熟悉一维/二维数组的使用,了解字符串操作函数如strlen、strcmp、strstr等。•内存管理:理解堆栈的概念,掌握malloc、free等内存分配函数的使用,了解大小端字节序。•关键字:熟悉#define、assert、const、static、volatile、extern、sizeof、typedef等关键字的用法。•函数:strlen、strcmp、strstr、memcpy、sprintf等常用函数。•变量:变量类型、占用字节数、局部/全局/静态变量、形参/实参。•结构:结构体、联合体、枚举类。2.2 STM32STM32是主流的MCU之一,学习STM32可以帮助你了解嵌入式系统的硬件架构和编程方法。在准备过程中,应重点掌握以下内容:•启动流程:单片机从启动到进入main函数的流程。•中断机制:中断向量表、中断函数、中断现场保护、PC指针的变动。•定时器与PWM:定时器的使用、PWM(脉冲宽度调制)的生成。•IO口:输入输出模式及操作。•通讯协议:串口、I2C、SPI通讯协议的时序与实现。•看门狗:看门狗的工作原理与应用。2.3 FreeRTOS/ucOS与LinuxFreeRTOS/ucOSFreeRTOS和ucOS是轻量级的实时操作系统,适用于资源受限的MCU平台。在准备过程中,可以重点学习其中一个系统,了解任务调度、同步机制(如信号量)等基本概念。LinuxLinux是嵌入式开发中的重要操作系统,需要掌握以下内容:•进程与线程:进程、线程的概念与区别,进程、线程的同步方式(互斥锁、自旋锁等)。•用户空间与内核空间:理解用户空间与内核空间的区别与通信方式。•系统调用:常见的系统调用及其作用。•设备驱动:了解Linux设备驱动的开发流程,熟悉字符设备、块设备等驱动框架。2.4 裸机外设与Linux驱动裸机外设开发是嵌入式开发的基础,而Linux驱动开发则是对这一基础的深化。在准备过程中,应重点掌握以下内容:•裸机外设开发:了解并实践基本的裸机外设开发,如GPIO、UART等。•Linux驱动开发:掌握Linux设备驱动的开发流程,熟悉设备树、驱动与设备的匹配等。三、加分技能与综合素质提升3.1 学历与考研对于本科生来说,提升学历是一个不错的选择。考研不仅可以提升个人素质,还能增加就业竞争力。特别是在嵌入式领域,一些大型企业对学历有明确要求,因此,考研是一个值得考虑的选择。3.2 数据结构与算法嵌入式工程师虽然不像软件工程师那样需要深入掌握各种数据结构和算法,但基本的数据结构和算法知识是必不可少的。在准备过程中,可以通过刷题(如LeetCode)来提升自己的编程能力和算法思维。3. 3 C++基础虽然嵌入式开发主要使用C语言,但掌握一些C++基础也是很有帮助的。特别是在面试大厂时,C++的容器类使用能够大大提高编程效率。3.4 计算机网络与ARM体系架构了解计算机网络的基本原理和ARM体系架构的基本知识也是嵌入式工程师的加分项。这些知识点有助于你更好地理解嵌入式系统的整体架构和网络通信机制。四、项目实践与实习经验在招聘过程中,项目经验和实习经验是非常重要的。因此,在准备过程中,你需要尽可能地参与一些实际的项目开发或实习工作。•项目实践:可以自己动手做一些小项目,如基于STM32的单片机开发、Linux驱动开发等。这些项目不仅可以巩固你的知识点,还可以作为简历上的亮点。•实习经验:如果有机会的话,可以参加一些实习项目或兼职工作。通过实习,你可以接触到真实的项目开发和工作环境,提升自己的实践能力和团队协作能力。
点赞 评论 收藏
分享
玩命加载中
牛客网
牛客网在线编程
牛客网题解
牛客企业服务