字节 嵌入式软件开发二面 我人麻了

二面强度非常大,面试官很nice,但问题一个比一个狠。项目聊了将近20分钟,然后直接进入硬核八股,最后手撕。整体节奏很快,八股没答好直接挂,手撕写出来了但没解释清楚,属于死在细节上。

题目如下,附个人分析,希望对备战字节的同学有帮助。

题目列表

  1. 自我介绍
  2. 项目深挖20分钟(重点问了架构设计和技术决策)
  3. FreeRTOS调度器的实现原理,抢占和时间片轮转的本质区别
  4. FreeRTOS有哪些同步原语,互斥量和二值信号量的区别
  5. 同优先级任务是怎么调度的
  6. 优先级反转的完整场景,FreeRTOS怎么解决,能完全解决吗
  7. 死锁的四个必要条件,嵌入式系统里怎么预防
  8. ARM Cortex-M中断处理,硬件自动压栈了哪些寄存器
  9. 原子操作的本质,LDREX/STREX是怎么工作的
  10. 内存屏障DMB/DSB/ISB分别是什么,什么时候用
  11. Linux虚拟内存机制,缺页中断处理流程,写时复制怎么实现
  12. 静态链接和动态链接的区别,PLT/GOT延迟绑定是怎么工作的
  13. TCP流量控制和拥塞控制的区别
  14. 项目里遇到过最难定位的bug,完整说排查过程
  15. 手撕:线程安全的懒加载单例,说说潜在问题

核心嵌入式面试八股文总结:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk

(涵盖大厂面试题+重点八股文)

题目分析

项目部分是重头,聊了将近三分之一的时间。字节二面不是考你做了什么,是考你为什么这么做、有没有考虑过其他方案、方案的瓶颈在哪。每个技术决策背后都要有对比思考,不能说"当时就这么做了"。

FreeRTOS部分问得很细,不是背概念,是要说清楚底层机制。调度器怎么选任务、上下文切换怎么发生、PendSV的作用,这些都要能说清楚。互斥量和二值信号量的区别是高频考点,核心是优先级继承和所有权概念,很多人只知道"互斥量用于保护资源",但说不清楚为什么不用二值信号量。

ARM底层问得比较硬,LDREX/STREX是多核原子操作的硬件基础,内存屏障是ARM弱内存序模型的核心,这两个点在嵌入式面试里不常见但字节会问。

Linux部分的写时复制和PLT/GOT是操作系统原理的深水区,很多嵌入式同学平时不关注这块,容易翻车。

手撕单例本身不难,C++11的局部静态变量方案三行搞定,但面试官追问了DCLP在C++11之前为什么是错的,这个点需要理解C++内存模型,只会写代码不够。

整体来说字节二面的节奏很快,八股要答得有深度,项目要能说清楚技术决策背后的逻辑。手撕不难但要解释清楚,写出来说不清楚和没写出来差不多。

备战的同学重点准备:FreeRTOS底层机制、ARM架构细节、Linux内存管理、C++内存模型,这几块是字节嵌入式的高频深挖方向。

全部评论

相关推荐

03-27 16:49
门头沟学院 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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