vivo嵌入式暑期实习面经:题不算多,但问得很实
这场更像典型的嵌入式实习筛选节奏。时间不算长,但问法很实,不太给你空转概念的空间。项目要能往下挖,Linux 基础要能接得住,真碰到问题时你怎么定位,面试官也会顺手看一眼。
一开始不会显得特别凶,可一旦你简历里写了 Linux、驱动、并发、调试、RTOS 这些词,问题就会很快落到细节上。印象比较深的是下面这 10 个。
面试题目
- 从用户态发起一次系统调用,到内核处理完再返回,这条路径里发生了什么
- 匿名页和文件页在内存回收时为什么不会走完全一样的策略
fork之后父子进程看到的地址空间为什么看起来一样,但又不是真的完全一样select、poll、epoll放到高并发场景里,真正拉开差距的点到底在哪- 负载很高但 CPU 使用率并不夸张,这种情况通常先怀疑哪几类问题
- 中断上半部为什么不能什么都做,真正重活一般为什么要往后挪
- 同样是保护共享资源,什么时候该用互斥锁,什么时候更适合自旋锁
- ARM 平台下用了 DMA 以后,为什么有时数据还是会乱,问题常常出在哪
- 设备树已经配了,驱动也写了,但设备就是起不来,排查顺序应该怎么排
- 现场偶发死机、日志还不完整时,第一轮定位最该补什么信息
嵌入式大厂面试题,基础八股文资料合集整理:
https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk
(包含各个大厂秋招春招面经,以及基础八股文资料总结)
这种面试到底在看什么
很多同学会误以为,嵌入式实习就是背八股谁背得多谁赢。真到面试里不是这么回事。尤其是手机厂、终端厂这类岗位,面试官往往在看三层东西。
第一层是你有没有基础框架。进程线程、虚拟内存、调度、锁、中断、驱动模型,这些你不能只会念名词。
第二层是你有没有工程感。不是知道概念,而是知道概念放进真实系统里会出什么问题。
第三层是你有没有可培养性。问到不会的地方,你是乱猜,还是能顺着已有知识一点点推出去。
所以准备的时候,不要把重点放在“多刷几百题”这种很虚的目标上。更有效的是把常见问题背后的主线抓住。
更有效的准备方法
先把项目这一条线打透
如果简历上有项目,项目一定是第一优先级。很多面试并不是先拷打基础,而是先让你讲项目,然后从项目里抽问题。你项目里只要出现过多线程、串口、SPI、I2C、日志、RTOS、驱动、异常处理、性能优化这些元素,后面都可能变成追问入口。
比较稳的准备方式是给自己的项目补一份口头版说明,至少把这几件事讲顺。
你做的模块解决了什么问题。
数据从哪来,经过什么处理,最后到哪去。
系统里哪些部分是你真正改过的。
你遇到过最麻烦的问题是什么,怎么定位的。
如果现在重做一遍,你会改哪几个设计。
很多人项目讲不清,不是做得少,而是没整理过。这个短板在实习面试里特别吃亏。
Linux 不用铺太宽,但要抓住几条主干
准备 Linux 基础时,不建议什么都摸一点,最后什么都说不深。更好的做法是按主线准备。
第一条是进程、线程、系统调用。
第二条是虚拟内存、缺页、页表、fork、mmap。
第三条是并发、锁、竞态、死锁、优先级问题。
第四条是中断、下半部、调度、实时性。
第五条是驱动模型、设备树、总线、probe 过程。
这几条一旦串起来,你会发现大部分题其实都挂在这些骨架上。面试官换的是问法,不是底层逻辑。
调试题一定要单独练
嵌入式面试特别喜欢问“出了问题你怎么查”。这类题很多同学明明做过,但一到面试就只会说“先看日志”。这种回答太薄了。
你最好提前把自己的调试思路练成固定顺序。
先判断是必现、偶现,还是环境相关。
再判断是功能错、时序错、资源错,还是并发错。
然后决定先补日志、抓波形、看寄存器、做最小复现,还是直接上性能工具。
只要你能把排查路径说得有层次,面试官通常会觉得你是真上过板子的人。
别把准备重点放在冷门知识点上
实习面试最常见的问题,不是特别深,而是特别容易在基础处露怯。很多同学花很久看很偏的协议细节、很深的内核实现,结果问到锁为什么不能乱用、缺页异常大概怎么走、驱动为什么要匹配设备树,反而说不明白。
更现实的策略是先把高频主干练熟,再去补个别深入点。顺序不要反。
更像能过面的答题策略
先给结论,再讲原因
很多同学一紧张就开始绕背景,结果讲了半天还没到点子上。面试官其实更喜欢先听你的判断,再看你能不能把这个判断解释清楚。
比如一类问题你完全可以先落一个短结论,然后再讲机制,再补工程里的表现。这样会显得思路很稳。
讲概念时尽量带场景
只讲定义,面试官很难判断你是真的懂,还是单纯背过。最好把概念放回系统里。
比如讲锁,不只是说“互斥锁会睡眠,自旋锁会忙等”,还要能继续说为什么中断上下文不适合随便睡眠,为什么临界区很短时不一定愿意切走。只要一带场景,质感就出来了。
不会的时候不要硬猜细节
有些题你知道七成,不知道三成,这很正常。最怕的是硬补自己并不确定的细节。面试官一般比你更熟那块,一旦你开始胡扯,后面会很难看。
更好的处理方式是先说自己确定的部分,再说哪一段自己没有深入看过,但会怎么验证。这样的回答其实比乱答安全得多。
项目和基础要互相挂钩
最好的状态不是项目归项目,八股归八股,而是能把两边连起来。
问到并发,你能想到自己项目里的共享资源。
问到中断,你能想到采样、通信或者驱动处理链。
问到内存,你能想到缓存、DMA、缓冲区管理。
一旦你能这样回答,面试官会觉得你不是在背题,而是在用知识解释做过的东西。

查看15道真题和解析