CVTE 第二轮面试回顾:八股文 + 项目深挖 + 算法手撕
在经历了第一轮面试后,我进入了 CVTE 的第二轮面试。相比初面,这一轮更加全面:不仅继续考察基础八股文,还深入追问了我的项目细节,同时让我现场手写了两个基础算法题目。整体感觉这一轮面试更像是“综合能力检测”,既要扎实的基础,也要有动手解决问题的能力。
C/C++ 基础
- 指针和引用的区别?
- 虚函数表的实现机制?
- malloc/free 与 new/delete 的区别?
- const 和 volatile 的用法?
计算机网络
- TCP 三次握手和四次挥手过程?
- TIME_WAIT 状态为什么要存在?
- TCP 和 UDP 的区别?
- 你在项目中是怎么用 socket 的?
嵌入式相关
- 中断的处理流程?
- RTOS 下任务调度的方式?
- STM32 外设驱动开发中 DMA 的应用场景?
面试官有时候会顺着我的回答继续深挖,比如我提到过 DMA,他就问我 DMA 的优缺点,以及在项目中是否遇到过 DMA 和 Cache 一致性问题。
二、项目深挖
在项目部分,面试官并不是让我简单复述,而是不断追问细节:
- 为什么要用这种架构? 有没有考虑过别的方案?
- 遇到过哪些 Bug? 你是怎么定位和解决的?
- 性能优化:有没有做过数据传输效率的优化?
- 团队协作:你在项目中主要负责哪一部分?和硬件同事、算法同事是怎么对接的?
举个例子,我提到在一个项目中用过 双缓冲 DMA 传输,面试官立刻问我为什么要这么做,以及如何保证数据不会丢失。幸好之前自己踩过坑,能结合实际经历回答。
三、手撕算法题
这一轮有两个算法题,难度都不算太高,更像是验证我能不能把基础知识落到代码上:
- 字符串反转输入 "hello world"输出 "dlrow olleh"考察点:指针操作、边界处理。
- 链表去重(未排序单链表,去掉重复结点)输入:1 -> 2 -> 3 -> 2 -> 1 -> 4输出:1 -> 2 -> 3 -> 4要求:在 O(n) 时间复杂度和 O(n) 空间复杂度下完成。
第一个题目比较简单,几分钟就写完了;第二个题目稍微有点思考,因为需要用哈希表辅助去重,但好在最后也顺利写出来并跑通。
四、总结与反思
CVTE 第二轮面试整体感受:
- 八股文问得很细,不仅是死记硬背,更希望你能结合实际场景去解释。
- 项目部分是真正的“深挖”,能看出面试官想考察你是否真的做过,而不是纸上谈兵。
- 算法题偏基础,但写代码的逻辑性、完整性(边界条件、内存释放等)都很重要。
反思下来,我觉得这一轮自己表现还算稳定,但在八股文上个别地方回答得不够深入,比如操作系统调度策略我只说了抢占式和非抢占式,没有展开到具体的调度算法(如时间片轮转、多级反馈队列),这一点有待加强。
答案都在专栏了:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk