面经——2022vivo秋招 c/c++嵌入式

测评

笔试

三个题目一小时,下午三点统一开始。
第一题是贪心,写起来有点麻烦,没时间做了;第二题dfs全排列,100%;第三题额能是个排序没输出了一种特殊情况,30%。
已过

一面

主要问简历相关,穿插八股文,常量与变量的区别;Linux中pcb都包含那些数据;指针传参与引用传参;进程与线程的区别。

已挂

本压缩包文件集锦了嵌入式C/C++开发编程技巧,高效编程技术探索,C/C++语言相关技术问题的深层探索,并且对嵌入式C/C++程序员应聘常见面试题进行了深入剖析,对嵌入式C/C++开发者编程修炼,提升自身的相关能力具有很要的作用。 文档包含如下内容: struct 深层探索. C++中extern "C"含义深层探索. C 语言高效编程的几 想成为嵌入式程序员应知道的 0x10 个基本问题 C 语言嵌入式系统编程修炼之一:背景篇 C 语言嵌入式系统编程修炼之二:软件架构篇 C 语言嵌入式系统编程修炼之三:内存操作 C 语言嵌入式系统编程修炼之四:屏幕操作 C 语言嵌入式系统编程修炼之五:键盘操作 C 语言嵌入式系统编程修炼之六:性能优化 C/C++语言 void 及void 指针深层探索 C/C++语言可变参数表深层探索 C/C++数组名与指针区别深层探索 C/C++程序员应聘常见面试题深入剖析(1) C/C++程序员应聘常见面试题深入剖析(2) 一道著名外企面试题的抽丝剥茧 C/C++结构体的一个高级特性――指定成员的位数 C/C++中的近指令、远指针和巨指针 从两道经典试题谈 C/C++中联合体(union)的使用. 基于 ARM 的嵌入式Linux 移植真实体验 基于 ARM 的嵌入式Linux 移植真实体验(1)――基本概念 基于 ARM 的嵌入式Linux 移植真实体验(2)――BootLoader 基于 ARM 的嵌入式Linux 移植真实体验(3)――操作系统 基于 ARM 的嵌入式Linux 移植真实体验(4)――设备驱动 基于 ARM 的嵌入式Linux 移植真实体验(5)――应用实例 深入浅出 Linux 设备驱动编程 1.Linux 内核模块 2.字符设备驱动程序 3.设备驱动中的并发控制 4.设备的阻塞与非阻塞操作
<think>好的,我现在需要处理用户的查询,用户想查找关于嵌入式系统的面试经验和常见问题。首先,我要分析用户的需求。他们可能在准备嵌入式相关的面试,需要了解常见的面试问题以及如何回答,同时可能也想知道一些面试经验。 接下来,我需要查看提供的引用资料。引用1提到了车路协同V2X和嵌入式开发的面试准备,引用2是深圳嵌入式软件岗的经,引用3关于STM32的培训课程,引用4提到了const的面试问题,引用5关于微处理器的定义。这些引用中,引用2和4最相关,因为它们直接涉及面试问题和经验。 然后,用户的需求可能包括几个方:常见问题、解答技巧、项目经验、技术点准备。我需要将这些内容组织起来,确保结构清晰。根据引用2,面试中常问基础知识和项目细节,而引用4中的const问题是一个典型例子,说明面试官会深入考察基础知识。 用户可能还希望得到具体的例子,比如代码或问题解答,所以需要包含像const、volatile这样的关键字解释,以及RTOS、调试经验等。此外,项目经验部分需要引导用户准备项目描述,突出难点和解决方案,引用3中的课程可能对项目准备有帮助。 还要考虑用户可能的深层需求,比如如何展示实际操作能力,如何应对技术难题,所以需要包含调试技巧、协议栈问题等。同时,引用5提到的微处理器定义可能用于基础知识部分。 最后,生成相关问题时要覆盖用户可能关心的其他方,比如职业规划、公司业务了解、薪资谈判等,这样能全帮助用户准备面试。确保回答符合系统指令,使用正确的中文和LaTeX格式,引用标识自然添加。</think>### 嵌入式系统面试经验与常见问题解答 #### 一、基础技术问题 1. **C语言核心知识点** - **const与volatile的区别** - `const`表示“只读”,用于定义常量或保护指针指向的数据不被修改,例如: ```c const int *p; // 指针指向的内容不可修改 int* const p; // 指针本身不可修改 ``` - `volatile`告知编译器变量可能被外部因素修改(如硬件寄存器),需直接访问内存而非优化缓存[^4]。 - **内存对齐与大小端** - 内存对齐通过`#pragma pack(n)`控制,用于优化访问速度。 - 大小端问题需在跨平台通信时处理,例如: ```c uint32_t swap_endian(uint32_t data) { return (data >> 24) | ((data >> 8) & 0xFF00) | ((data << 8) & 0xFF0000) | (data << 24); } ``` 2. **嵌入式硬件基础** - **微处理器与微控制器区别** 微处理器(如x86)侧重通用计算,需外接外设;微控制器(如STM32)集成CPU、内存、外设,适合嵌入式系统[^5]。 - **中断处理流程** 包括中断触发、现场保存、ISR执行、中断返回,需注意**可重入性**和**优先级配置**。 #### 二、项目经验与实战能力 1. **项目描述框架** - **核心功能**:例如:“基于STM32U5的智能手表项目,实现心率监测与蓝牙通信”[^3]。 - **技术难点**:如低功耗优化(使用HAL库的休眠模式)、实时性保障(RTOS任务调度)。 - **调试方法**:逻辑分析仪抓取SPI时序、内存泄漏排查(通过`free()`前后对比)。 2. **RTOS相关问题** - **任务通信方式**:消息队列、信号量、邮箱。 - **优先级反转解决方案**:优先级继承(如FreeRTOS的互斥锁)。 #### 三、进阶问题与解答技巧 1. **协议栈与驱动开发** - **CAN总线配置**:波特率计算($T_q = \frac{1}{BRP \times f_{osc}}$),同步段占比调整。 - **TCP/IP协议栈移植**:需适配LwIP的`netif`结构体与PHY驱动。 2. **代码优化实例** - **空间优化**:使用位域(`struct { uint8_t flag:1; }`)替代布尔数组。 - **时间优化**:查表法替代浮点运算(如正弦函数预计算)。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清欢_小铭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值