【投稿】元戎启行嵌入式软件开发面经汇总
【嵌入式未来】
嵌入式软件开发最强攻略一篇就够了!《嵌入式软件开发笔试与面试手册》:https://blog.nowcoder.net/zhuanlan/jvN8gj
《嵌入式软件笔试-2023年真题汇总》:https://blog.nowcoder.net/zhuanlan/0oDWVm
以下是元戎启行嵌入式面经汇总👇👇👇
一
自我介绍
问了下SPI和I2C的知识
然后就开始做题了,面试网站上有十几道题目,面试官会抽着让你说思路。
第一题:有一个电机可以控制相机移动,相机拍着一个标定板,移动电机找到相机清晰度最高的位置,设计算法实现。
我:????????,怎么从图像数据中找到最清晰的图像,图像相关不了解,没思路。
第二题:两个人同时抛骰子,可以事先看自己的骰子,然后猜对方的点数。两个分同时猜对算成功。在抛骰子前可以商量对策。问怎么提高成功率。
我:我寻思抛骰子不是独立事件吗,在怎么抛成功率不都是1/36 吗。没思路。。。
第三题:3*3的卷积核去卷积128*128的图片,现在有64路运算单元可以并行,怎样运算可以提高效率。
我:。。。。。没思路
二
一轮技术面试,上来就是做题,网站上有十几道题目,面试官会调着题目问你,有代码提、规律题、操作系统题,感觉面试官很看重思考能力, 9/29号二轮技术面试,问了c的很多东西,由浅到深的问,还有数据结构,面试官会引导你思考,面试体验极好。二面通过等待第三轮面试。11月3号hr面问期待薪资。11月5号oc,团队大佬多,技术强,965。
三
一面 20分钟
iic spi can 总线的 时序 数据读写
gpio模拟spi
二面
1.自我介绍
2.项目细节
3.ARM 架构
4.用串口传输数据
5.大小端判断
6.磁盘如何申请一段连续的空间
问的一些底层的多一点
四
一面 90 min最熟悉的项目技术成长路线,手写 io 模拟 uart/spi/ i2c,复盘优化,非阻塞实现函数声明和定义区别,未定义在编译哪个阶段报错stm32 升级,elf, 一个 bin 实现升级
五
一面:
自我介绍
SPI和IIC的相关问题
然后如何给IIC识别不同的设备地址
C++ 的多态底层实现原理
两道题:
1.相机对焦算法,怎么快速进行最清晰的焦距
2.掷骰子,猜点数,一个概率问题
3.一个算法题,f(x)=x^2,求[0,a]区间内,f(x)于x轴围成的图形面积,不能用定积分公式
全程属于引导型面试,每次卡住的时候,面试官会给出一些思考的方向,然后再去想。
虽然感觉难度有点大,但是面试体验还行,态度还可以。就是没开摄像头,只有声音。
二面:
自我介绍
项目碰到的一些问题和解决方法
然后是常规的基础面试:C/C++
1.堆,栈是什么
2.#define 和 const
3.深拷贝和浅拷贝
4.右值引用,move语义
5.进程,线程,多线程
6.模板
7.死锁产生
8.数组,单链表,双链表,删除元素,时间复杂度
9.strcpy函数的功能,如果自己实现一个strcpy怎么实现,然后添加一些条件,又怎么实现
反问结束
1.用的开发环境,技术栈,软件的话,Windows,Linux,C++
2.工作时间比较灵活
三面
还是电话面
自我介绍,项目介绍
1.你在做项目的过程中,你一开始是怎么去设计的?然后碰到一些问题,又是怎么调整的?
2.后面就是探讨项目里面关于雷达算法的一些东西,怎么做的,具体做到什么程度了?
最后基本聊到我不会就差不多结束了。
然后反问,问了两个问题。
1.在公司工作的收获
2.对目前公司从事自动驾驶行业的前景看法?
34分钟,基本结束。
六
1、介绍研究生课题、做的项目2、如果要写一个SPI的驱动,整个流程是怎么样的(瞎说的,不是很懂,没写过)3、一个64位的机器,short ptr[] = {0,1}, sizeof(ptr)和sizeof(&ptr)分别是多大(之前看别人分享过,所以知道 4和8)4、生成的可执行文件,其中每个段存在的位置在ROM还是RAM(代码段应该会从磁盘加载到内存来运行,这里ROM和RAM感觉面试官也挺模糊的,不是很懂)5、C++中纯虚函数和虚函数的区别(一个接口类、一个多态,没得说)6、有没有ROS、控制算法之类的开发经验(估计是做汽车底盘相关的控制,我啥也不懂。。)差不多到这儿不到20分钟。然后一道算法题。题目大概是这样:输入一个字符串表示的整数(很长),去掉K个字符,使得最后得到的字符串表示的整数最小,例如对于“1422219”,K=3,最后输出“1219”,对于“10200”,k=2时,输出“0”。
七
40min, 以为会问些c++八股和手撕,结果全是问的项目底层...没有什么参考价值但还是记录一下,实验室项目里面用了容器,然后全程就是容器原理,容器通信原理。开始还好,后面就开始问命名空间怎么创建,我回答clone函数中有一堆flag,选择对应命名空间的flag就可以创建一个进程,并且运行在这些命名空间中,然后接着问clone函数里是怎么实习命名空间的,这个不知道。然后问我知不知道tun/tab,隧道大致我知道,用于容器跨主机通信的。然后问原理,大致网络原理我知道是进行二次报头封装,然后就问我怎么自己去实验这个东西,给了个通信场景让我说说怎么实现,答不出来,然后又问v2ray用过吧,这个东西让你来实现怎么实现,又答不出来,面试官挺好,还给了我台阶下,说了两个步骤,问我第三步怎么做,但我太菜了确实不知道,没有怎么去看过这个。后面基本就是当场给我上课了,大概意思就是说不要只会用linux上的一些东西,要知道怎么去实现。后面本来还想讲讲iptables的,但看我tuntab都不会就没讲了,提前结束了,(其实iptables我还是知道一点的,但也不是很深,就没敢提)
八
项目(25mins)
1. 进程间通信方式
2. 说说C++多线程
3. C++异步
4. 用多线程实现处理多个文件中的数据,并求和(不会)
5. const
6. C++的数据结构有哪些
7. 手写用两个栈实现队列
八
一面
1、自我介绍2、项目介绍,解释项目中的内容3、SPI,CAN的工作原理4、进程和线程的区别5、进程间通信方式,无名管道和有名管道6、信号量通信7、C与C++中struct的区别,class与struct的区别8、还有一些简单的基础题,忘了。9、一道编程题10、反问
二面
(1)项目介绍以及问题(2)RTOS系统的核心运行方式,相关信号量,互斥量等问题(3)RTOS系统任务是如何调度的,优先级问题(4)中断概念,如何中断,RTOS中的硬中断如何工作,软中断如何工作(5)RTOS系统运行中硬中断发生时,RTOS系统会如何处理(6)RTOS系统中的存在两个软中断时,系统会怎么处理(7)RTOS系统运行的环境是如何?一般在什么样的处理器运行(8)IIC的运行方式?IIC从机地址是如何配置的?主机地址是如何配置的?(9)运行过程中,如果新的IIC设备接入,主机和从机如何交换地址?(10)UART的协议,一共多少根总线,每根线的作用是什么,有什么线是不用接的?(11)UART协议一般是使用什么接口来包装的?(12)RS232和RS485的电气特性?差分电平是多少,分别对应什么逻辑?(13)linux系统中,挂载驱动最核心的东西是什么?(14)linux中,驱动是如何运行的,依赖着什么?(15)linux中如果有一个IIC设备,他的挂载流程是什么?设备树起到了什么作用?(16)你还熟悉哪些片上资源?
简述SPI编程题:一道数学题目附加:(1)如何计算出计算的误差(2)如何减少时间复杂度
#元戎启行校招##嵌入式##面经##秋招##提前批#