小鹏汽车嵌入式面经

投的是小鹏的嵌入式软件岗,base 广州,整体感受是问得偏底层 + 车相关的东西穿插着问,没什么花活,但是抠细节,答得浅了会一直追问。

一面 技术面 大概50min

面试官应该是组里的开发,全程对着我简历问,最后留了几分钟反问。

  1. 自我介绍,挑一个你觉得最有挑战的项目讲一下
  2. 你这个项目里用的是什么 MCU?为什么选这一款,没选别的?
  3. C 语言里 volatile 关键字什么场景下要用?只在多线程里用吗?
  4. static 修饰局部变量、全局变量、函数分别是什么效果?
  5. 结构体内存对齐讲一下,为什么要对齐,不对齐会怎么样?
  6. 写一个宏,求两个数中的较大值,注意副作用问题
  7. 函数指针和指针函数的区别,分别怎么写?
  8. malloc 出来的内存在哪?free 之后指针要不要置 NULL,为什么?
  9. 你了解 CAN 通信吗?CAN 的帧结构说一下
  10. CAN 和 SPI、IIC 比,优势在哪?车上为什么用 CAN 多?
  11. UART 的波特率怎么算的?两边波特率不一致会怎么样?
  12. 中断里能不能用 printf?为什么?中断里应该尽量做什么、不做什么?
  13. 你简历上写了用过 FreeRTOS,任务调度是怎么调的?优先级反转听过吗?
  14. 怎么解决优先级反转?优先级继承和优先级天花板的区别
  15. 写一道题:反转一个单链表,要求递归和非递归都写一下
  16. 反问环节

写代码这块我递归版本写得磕磕巴巴,非递归倒还行,面试官没说啥就让我下一题了,当时心里没底,结果还是过了。

二面 技术面 大概1h10min

二面感觉是更资深的,问得比一面深,开始往操作系统和驱动那块挖了。

  1. 上来先让我讲项目,但是问得很细,追到一个具体的 bug 是怎么定位的
  2. Linux 下进程和线程的区别?从内核角度看它们到底有啥不同?
  3. fork 之后父子进程共享什么、不共享什么?写时复制是怎么回事?
  4. 进程间通信方式都有哪些,你项目里实际用过哪种,为什么选它?
  5. 共享内存为什么快?它和消息队列比,劣势在哪?
  6. mmap 内部是怎么工作的?和 read/write 比有什么不一样?
  7. Linux 的虚拟内存了解吗?页表是几级的?TLB 是干嘛的?
  8. 缺页中断的整个流程讲一下
  9. 一个程序从执行 a.out 到 main 函数被调用之前,系统都做了哪些事?
  10. GDB 你常用哪些命令?core dump 文件怎么用 gdb 分析?
  11. 一个程序跑着跑着 CPU 占用 100% 了,你怎么排查?
  12. 一个进程内存一直涨,你怎么定位是哪里泄漏的?
  13. 写一道题:实现一个简单的环形缓冲区(ring buffer),考虑多线程读写
  14. 上面那道题的写指针和读指针怎么判断空和满?
  15. 如果要做无锁的怎么改?知道 CAS 吗?
  16. 反问

环形缓冲区那道题我写的有锁版本,无锁那个只说了个思路,没真的写出来。面试官还行,没揪着我不放。

三面 应该算交叉面 大概45min

三面感觉是别的组的,问得反而没二面深,但是问得杂,车的东西问得多了一些。

  1. 你为什么投嵌入式?为什么投车这个方向?
  2. 你对智能驾驶/智能座舱了解多少?平时关注吗?
  3. AUTOSAR 听过吗?了解 CP 和 AP 的区别吗?
  4. 功能安全 ISO 26262 知道吗?ASIL 等级是分几级的?
  5. 车上一个 ECU 死机了会怎么样?有什么机制能让它恢复?
  6. 看门狗了解吗?独立看门狗和窗口看门狗的区别?
  7. 你做过 bootloader 吗?说一下 bootloader 大概干了哪些事
  8. OTA 升级你的理解,A/B 分区是干嘛的?
  9. C++ 你熟吗?讲一下虚函数表是怎么实现多态的
  10. 智能指针 shared_ptr 内部是怎么计数的?循环引用怎么解决?
  11. 你以后想做底层驱动还是应用?为什么?
  12. 你有没有别的 offer,怎么排序的?
  13. 期望薪资多少?base 能接受哪些城市?
  14. 反问

三面整体氛围比较轻松,就是聊聊,但是 AUTOSAR 和功能安全那块我答得不太行,本科确实没接触过太多车规的东西,就老老实实说了不太熟,面试官也没为难,说没事儿可以入职再补。

整体下来感受是:

面经看再多也只是看个题型,但是底子打好了,临场推一推也能答个七七八八。当年我也是刷了一堆面经心里还是没底,真正救命的还是基础,多刷题不如把一个知识点彻底搞透。

顺嘴说一句啊。

我自己春招那会儿也是面经看了一堆心里还是没底,后来索性把自己面过的厂、踩过的坑都整理出来,慢慢就攒成了一个专栏。

现在 32 篇 / 12w+ 字,还在更新。C 语言陷阱、操作系统、RTOS、Linux 驱动、通信协议、硬件基础——嵌入式面试基本会问的方向都有。

4.7w+ 同学看过,3300+ 订阅,数据摆这儿。

如果你也是那种面经基础有点薄、想一次性系统梳理一遍的,可以去看看。早订便宜,内容只会越加越多,价格后面也会涨。

🔗 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM

全部评论

相关推荐

xdm 早上喝奶茶差点喷出来。事情是这样的,我们班有个哥们儿,简称 L,去年秋招拿了字节sp,专业方向是后端。我们当时都震惊:这哥们儿平时课上从来不发言,期末小组作业基本是划水的那种,刷题平台 commit记录我点进去看过,绿格子稀稀拉拉。但他面试一路绿灯。一面二面三面 hr 面,全过,给的还是sp。当时班级群里恭喜他的、问他经验的、约饭的,热闹了一周。他说自己"运气好,准备充分"。我们都信了,直到三月初他入职。入职第二周开始,班里另一个进字节的同学W(在隔壁组的)开始跟我他的不对劲。一开始是写代码慢,后来写不出来,再后来是组里 mentor 让他fix 一个简单 bug 都搞了一下午没动静。最离谱的是上周。W 说他们大部门搞了个新人分享会,让新人讲一下自己负责模块的设计思路。L 上去讲了 20分钟,全程念稿子,问答环节别人随便问一个"那你这里为什么用 Redis 不用 Memcached",他直接卡 30秒说"这个我回去再确认一下"。会后他 mentor 直接找 leader 谈,leader 找 hr 谈,hr调出了他面试录像,全程对比口型和回答节奏,发现他二三面有大量时长在偷偷看屏幕外(推测开了双机位 AI 答题)。(这段是 W后来转述给我的,他自己也是听他组里同事八卦来的)昨天下班前,W 告诉我L 被辞退了,让他自己走,不走就走仲裁但会发函到学校。L 现在已经回学校了,朋友圈仅三天可见。我说真的,我不是个心眼小的人,但是我看到这个消息的时候真的有种"嗯,挺好"的感觉。去年秋招我投字节后端,简历挂。我准备了八个月,背 八股 + 刷 500 题 +项目改了三版,连面试机会都没拿到。班里这哥们儿凭着一个外挂上岸,最后还是被甩出来了。不是说作弊就一定会被发现,但是当面试拿到的 offer远远超出真实能力的时候,迟早会有这一天。试用期三个月不是给你过家家的,是真的要写代码、要在会议上回答问题、要扛需求的。我现在反而有点同情他。同情他相信"上岸就是终点"。发出来不是为了嘲笑谁,就是想说给那些正在被身边作弊上岸的同学搞得很 emo 的 uu 们听——别急,回旋镖很长,但它一定会回来。你继续刷你的题,写你的项目,背你的八股。该是你的迟早是你的,不是你的早晚还得还回去。xdm 共勉。
牛客12588360...:我不想评论面试方式,作弊是绝对不对的,但是你八股加刷题也不过是个做题小子,他穿帮纯粹是他菜,你也没有高明到哪里去
点赞 评论 收藏
分享
1. 自我介绍2. 项目都是自己写的吗?3. 我看你用 koa2 写后端,为什么选择它,能讲讲吗?4. 那你提到 koa2 它是不提供中间件的,你是怎么解决的?5. 中间件的原理是什么?(洋葱模型)6. 你刚刚说碰到 next() 就进入下一个中间件,那 next 只能执行同步,如果是异步的话,你是怎么处理的?(async/await,但是我发现,有的中间件需要在异步中间件之前执行,所以我用 try/catch 来处理异步中间件的异常)7. JS 异步发展史,以及它们的优缺点说一下 (回调函数--Promise--Generator--async/await)8. 你刚刚说 Promise 状态不能更改,那如果我要设计一个能修改 Promise 状态的函数,你会怎么设计?9. CSS 水平垂直居中的方法(flex、grid、绝对定位 + margin:auto、绝对定位 + 负 margin、绝对定位 + transform、table-cell)10. 你刚刚说到 flex 布局,那 flex:1 是什么意思?(flex: flex-grow  flex-shrink  flex-basis;等价 flex:1 1 0%表示元素可以均分剩余空间,可拉伸、可压缩,不依赖内容宽度,自动自适应填充布局。)11. 父容器宽是 500px,然后它左右各有两个子容器是 100px,如果设置 flex: 1,那它的宽度是多少?(500-100-100=300px)12. 说说你对浏览器缓存的理解(强缓存、协商缓存)13. 如果一个用户,他怎么去刷新都无法刷到最新版的代码,你能说下可能的原因吗?(版本号、hash等)还有吗?(我说我不知道了,面试官说还有 CDN 没有同步,我说企业才会这么干,自己写项目一般不会,我知道 cdn 是用来解决高并发的手段)14. React你熟吗?说下 React 函数组件和类组件的区别15. 怎么避免 Hooks 导致组件重新渲染?(使用 useCallback、useMemo、React.memo、useRef等等)16. 谈一下我对 React 的状态管理的理解(Redux、Mobx、Zustand,我说 Zustand 用的最多)17. React 常见的 hooks 有哪些?(useState、useEffect、useRef、useCallback、useMemo、useReducer、useContext、useImperativeHandle、useLayoutEffect、useDebugValue)18. TS 你熟吗?我们引进 TS 的目的是为什么?19. interface 和 type 的区别20. 说下 TS 里的泛型21. 我现在有十个字段,比如十个字段就要 A B C D E F G 这种。那我现在另有另外一个方法,这个方法接受的参数呢,必须是这个 interface A 里面的这个 K。就比如说你可以是 A B C 可以 A B C D 任何组合都可以,但是必须是这个 interface 里面的 A 里面的定义的。这个 K 这种类型的话是怎么去定义呢?(说实话我有点不太理解啥意思,反正我说了 keyof)``` TypeScriptinterface Obj {A: stringB: stringC: stringD: stringE: string// 其他字段...}```22. vite 用过吗?说说和 webpack 的区别。vite 的优缺点是什么23. 说说 Tree shaking(树摇) 和 Code Splitting (代码分割)的区别24. Git 你熟吗?说说 git merge 和 git rebase 的区别,什么时候用 git merge,什么时候用 git rebase?25. web3 你熟吗?(不太熟,听说过而已)26. 我看你自我介绍说了 AI,你是怎么用的?27. 除了提示词,还有什么能让 AI 更聪明?28. AI 的优缺点你说一下29. AI 发展这么快,你觉得我们以后会扮演什么角色?30. 反问基本都答上来了。面了我80分钟,我还以为稳过的
查看29道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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