大疆一面 面筋

9.13面的,嵌入式开发岗,今天挂~不过也不丧气,双非本能有个面试也算是验证简历写法了。没挂的xdm加油,以下是我滴面筋:

自我介绍

  • 讲你觉得比较有价值的项目或者说比较有趣的项目(基于v4l2驱动框架的摄像头驱动移植项目)
  • 怎么显示出一帧图像(v4l2应用层框架开发流程)
  • V4l2的设备节点是什么样的?
  • (继续讲v4l2驱动框架,主要还是介绍我所了解的内核层面的逻辑)
  • 用什么去显示摄像头画面的(QT写的)
  • 为什么你讲你不擅长C++,又用了QT呢,有没有其他的方法可以显示出图像?
  • 总结一下你在这个项目产出,就是开始是什么情况,到最后又是怎样的效果?
  • 为什么要实现驱动模块?是什么目的?对你这个驱动的开发有帮助吗?
  • (mark,这里个人觉得答得不太好,我有点紧张没有想到面试官背后想考察的东西,我回答了是老板要求这样做的,老板觉得有这个机制应该实现出来。后来我一想,感觉面试官是希望我从驱动模块1.内核镜像轻量化2.开发编译效率 这两个方向来回答,有点可惜当时没想到。)
  • 讲一讲实现驱动模块的缘由是什么?
  • (因为我实习公司的内核版本比较特殊,它v4l2驱动框架是不能以内核模块形式加载摄像头,后来我改了之后才行的,我讲了原来内核层面的流程,再讲了我修改后的流程。)
  • 介绍一下你对这个ov5645的认识?
  • 摄像头MIPI-CSI数据流是什么图像格式?
  • 你应用层取到的图像数据是什么格式?最后显示的时候是什么格式?
  • 你在调这个摄像头的时候,有遇到传输不正确的情况吗?或者说其他spi或者i2c接口时候,数据不正确的情况?
  • (讲了另一个项目的调spi的例子)
  • SPI的时序?
  • (我讲了QPI的时钟极性/相位极性的配置,以及其内涵,口述了一下时序)
  • 你喜欢底层还是应用层?为什么,你对两者的看法是什么?
  • Linux中,设备和驱动是怎么找到对方的?
  • 你觉得你对linux驱动掌握的怎么样?
  • 现在要你来开发一个led,实现流水灯你会怎么做?
  • (mark一下,这个我感觉当时光顾着体现“驱动实现机制,应用实现策略”的思想了,脑子抽了答了那种最low的字符设备驱动写法,字符设备框架部分没啥问题,但是在硬件的处理上答得不太好,我答的是控制led,用ioremap去映射寄存器地址然后操控gpio,或者像是之前比较老的内核,用平台的函数去控制gpio。我后来一想其实新的内核,就是为了解决平台代码、硬件信息过多地嵌入驱动的问题,从而来实现彻底的软硬件分离。更恰当很符合linux思想的做法应该是,在设备树描述gpio,然后驱动用of函数得到硬件信息,用pinctrl子系统的接口控制gpio,这样写出来的led驱动才真正做到了软硬件分离。面试官还问我,应该说是提醒,用ioremap有什么缺点??我当时确实是没想起来,可惜)
  • 介绍下另外一个项目?
  • 讲一下你在这个项目里做了些什么,有哪些产出?
  • flash接口是什么?
  • 可编程大小是指什么?
  • 讲一下这个eepc软件框架是怎么构建的?
  • 外部flash有多大?Cpu的flash有多大,ram有多大?
  • flash的操作流程?
  • 你构建的参数都维护在ram中,参数有400多k,你的ram有这么大吗?
  • (这里再次mark一下,我当时也是有点呆了,一时间没反应过来,我还顺着思路想,对啊!怎么tm在外部flash占400多K,怎么维护到ram中的???后来面试结束我还深深自我怀疑,因为我做的时候一切都是尽量去弄清楚的,这一下反而给他问到了。然后半夜的时候突然想通了,不对啊,因为flash最小可编程是4k,所以一个参数占4k总的才会有400多k,但是我在ram中是用结构体来维护的,实际上一个参数远没有4k大小,平均下来一个参数所有信息也就占20多B,所以我的192KB的SRAM和cpu flash完全能够容纳的。这个也是没有答好的点。)
  • 要不要再介绍一下你其他的项目?比赛什么的?或者你觉得比较有意思的?
  • 讲一下你工作这些天有什么体会?或者学习上有什么收获?
  • 对多线程有了解吗?线程和进程的区别?
  • 有做过多线程的东西吗?多线程开发要注意什么?
  • (这里也答得不太好,我说我做的不多,其实我在学校的课程有做过一个tcp服务器,多线程的,但是太久了一时忘记了。然后要注意什么,无非就是数据一致性还有资源保护,要做临界处理,当时是用的原子锁,其实就是一个二进制锁,我也是一时忘记这个叫什么名字了,我说了“原子变量”哈哈给)
  • 有做过一些应用层的东西吗?
  • (这个也答得一般,我讲了之前做过的web服务器和手机tcp连接控制开发板的东西,很久之前在学校做的小项目,其实项目效果和技术含量还是有一些的,只是太久了没答好)
  • 反问:
  • 怎么快速地去学习一个比较复杂的东西?
  • 面试官回答:多实践

结束。

感慨:能进大疆的确实很强,我感觉自己大学四年也没有很荒废,但是捏还是一面都没过,还是要继续加油,继续学习。

#大疆 #嵌入式软件

全部评论
很强了,加油
2 回复 分享
发布于 09-20 09:39 广东
太强了佬
1 回复 分享
发布于 09-19 18:20 湖南
为何8.28面的都还没信😭
点赞 回复 分享
发布于 09-23 10:06 广东
我靠佬,咱俩估计是一个面试官,问的几乎一样
点赞 回复 分享
发布于 09-29 01:06 陕西

相关推荐

好像是有一个考试的,考完了之后很早就进入面试中的流程了,到9.23左右才约面,最后约的9.26一面:1. 自我介绍2. IIC总线3. UART、IIC、SPI、CAN的对比4. 为什么要有Linux系统,怎么看到总线驱动设备这么一套框架5. Linux是怎么去找驱动的6. Linux驱动具体做过些什么7. 具体怎么做Linux驱动开发8. Linux和RTOS的内存管理9. 具体Linux里面是怎么分配内存的10. 怎么映射地址的11. TLB知道吗,具体的虚拟地址到物理地址,怎么找到的,怎么分配的12. 内存分配的算法13. 知道best fit吗?14. 怎么看待内存碎片,怎么合并15. 怎么减少内存碎片的出现16. 是否有办法做到内存碎片不出现17. Linux怎么做内存管理的,跟RTOS有什么区别18. Linux对内存是否有优化的管理算法19. 文件系统20. 进程线程21. 锁的简单理解22. 中断里能不能用互斥锁(这个不太会,但答案是知道的是不行,可以用自旋锁)23. volatile关键字(这个被拷打了很久,我记得是直接从内存读取,但面试官说我说反了,这个我纠结了很久)24. CPU怎么调用函数的25. 函数如何传参26. 内存怎么分配的,会分配成什么样子27. 变量会存在内存的哪里28. 有用过yolo,知道些什么,是否考虑做算法29. 系统启动的具体流程(最后说了STM32的启动过程)30. ST从FLASH启动,为什么是0x08000000(留给SRAM和其他内部RAM)31. 经典反问业务就是做一些芯片的底层开发,也有协议开发,是一个非常大的部门,跟硬件相关的都在这个部门内去完成。一共三面,然后等通知。#秋招##嵌入式##通信硬件人笔面经互助#
查看31道真题和解析 通信硬件人笔面经互助
点赞 评论 收藏
分享
11 31 评论
分享
牛客网
牛客企业服务