CVTE第一轮面试八股文拷打
在CVTE第一轮面试中,面试官主要考察了嵌入式基础知识、C语言功底、操作系统原理以及常见软硬件相关问题。以下是部分面试题整理:问的东西还是比较多的,整个过程持续了半小时以上。
C语言与基础语法
sizeof
和strlen
的区别是什么?- 函数指针的定义方式有哪些?如何调用?
- 请解释
volatile
关键字的作用。 - 内存对齐的原则是什么?为什么需要内存对齐?
static
在函数内、文件内、头文件中分别起什么作用?- 堆和栈的区别,分别适合存放什么数据?
- 宏定义和
inline
函数的区别。 strstr
函数的返回值是什么?如何判断一个字符串中是否包含子串?
数据结构与算法
- 链表和数组的优缺点对比。
- 如何实现一个环形队列?
- 快速排序和归并排序的复杂度分析。
- 二叉树的前序、中序、后序遍历实现思路。
- 如何用一个栈实现队列?
操作系统与多线程
- 进程和线程的区别。
- 死锁产生的必要条件。
- 临界区、信号量和互斥锁的区别。
- 什么是优先级反转,如何解决?
vTaskDelay
和vTaskDelayUntil
的区别。
硬件与嵌入式相关
- I2C 与 SPI 的区别。
- 什么是中断优先级?NVIC 是如何管理的?
- 外部晶振和内部RC振荡器的区别。
- 如何调试一个无法启动的单片机程序?
- 看门狗的工作原理。
项目与综合问题
- 介绍一个你做过的嵌入式项目,难点在哪里?
- 如果给你一个新的传感器模块,你会如何驱动并调试?
- 在项目中遇到过哪些内存或死锁问题?如何解决?
- 如何优化嵌入式程序的内存使用?
答案都在专栏了:https://www.nowcoder.com/creation/manager/columnDetail/mPZ4kk