(诺瓦星云)一面:八股文拷打的真实体验
提到诺瓦星云,很多人第一反应就是“嵌入式大厂,面试难度高”。而实际经历下来,的确如此——第一轮技术面试几乎是纯八股文拷打,考察的就是基础是否扎实,回答是否系统。
面试形式
- 时长:约 50 分钟
- 面试官:一位研发工程师
- 形式:视频面试
- 风格:几乎全程都是问答,几乎没有写代码,偶尔会追问实现细节
面试问题汇总
答案都在专栏了:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk
C 语言 & 嵌入式基础
sizeof
和strlen
的区别?在什么情况下会出错?const
、volatile
、static
的作用,分别举例。- 内存对齐为什么要存在?对性能有什么影响?
- 结构体中位域(bit-field)的作用,编译器是如何存放的?
- 指针和数组的区别,函数传参时是如何处理的?
- 函数指针的使用场景?写一个简单的声明。
- 内存分配
malloc
和free
的底层机制?
操作系统相关
- 中断和轮询的区别?
- 内核态与用户态的切换过程。
- 任务调度策略有哪些?实时系统通常采用哪种?
- 死锁的四个必要条件,如何避免?
通信与总线
- I2C、SPI、UART 的区别与典型应用场景。
- I2C 的仲裁机制是如何实现的?
- CAN 协议的优点,和 UART 相比为什么更适合车载?
网络与协议(偏 Linux 嵌入式方向)
- TCP 和 UDP 的区别,应用场景?
- TCP 的三次握手、四次挥手,TIME_WAIT 的作用。
- 如果
connect
阻塞,原因可能是什么?
其他高频八股
- 常见的内存错误有哪些?如何定位?
- Linux 驱动中常见的 IO 控制方式?
makefile
中的隐式规则和常见变量。
追问环节
面试官会根据回答深挖,比如:
- 我答
volatile
主要用于防止编译器优化,他追问“编译器优化具体会做哪些操作?举一个寄存器变量的例子”。 - 我答中断和轮询的区别,他追问“那如果一个按键输入既可以用中断又可以用轮询,你会怎么选?为什么?”
- 我答 TCP 的 TIME_WAIT 是为了保证数据可靠传输,他追问“那为什么是 2MSL 而不是 1MSL?”
感觉就是一层一层把你往深处拷,直到你答不上为止。
我的感受
- 基础一定要牢固:这类面试几乎不看项目吹水,基础没过关就是白搭。
- 八股文要系统复习:尤其是 C 语言、操作系统、网络协议、嵌入式总线。
- 答题要有条理:遇到不会的也别慌,先说思路,再承认不足。