好的,华为嵌入式开发岗位(包括软件和硬件方向)的面试经验非常看重扎实的专业基础知识、动手实践能力和项目经验。以下是结合众多面试者反馈总结的关键点和常见考察内容,请针对性准备:
一、面试流程(典型)
- 技术一面:
- 简历深挖: 重点围绕你简历上的项目经验、实习经历、技能描述进行提问。面试官会抠细节,确保你是真的做过、理解原理。
- 基础理论: 操作系统(特别是RTOS)、数据结构、C语言、计算机网络、计算机组成原理等基础知识的考察。
- 编码能力: 极大概率有手撕代码环节,通常是中等难度及以下的算法题或嵌入式相关的数据结构题(如链表操作、字符串处理、简单排序等)。
- 目标导向: 确认你的基本技术栈是否匹配岗位要求,验证项目真实性,评估解决问题的思路。
- 技术二面:
- 深度技术: 在一面的基础上,问题更深、更广、更贴近底层。
- 操作系统/RTOS: 核心概念(进程/线程/协程、调度、同步互斥、内存管理)、常用机制(信号量、互斥锁、消息队列、事件标志)、不同RTOS的对比(如了解FreeRTOS必考)。
- 硬件/驱动: 理解MCU/MPU体系结构(中断、总线、时钟)、常用外设(UART, I2C, SPI, ADC, PWM, GPIO, USB, Ethernet等)工作原理、驱动开发流程。
- 难点/故障排查: 会针对项目经验问技术难点、解决方案、调试过程和遇到的BUG如何定位修复。
- 设计题/场景题: 可能给出一个实际场景要求设计解决方案(如设计一个高可靠性的通信模块)。
- 开放性问题: 探讨技术趋势(如RISC-V)、行业理解等。
- 技术主管面/业务主管面:
- 综合考察: 技术深度广度、学习能力、潜力、项目价值、沟通表达。
- 项目复盘与反思: 再次深挖项目细节,但更关注你对项目的整体把控、技术选型理由、架构设计考量、成果价值。
- 行为问题: 如何处理冲突、团队合作经历、最大的挑战、为什么选择华为/这个岗位、职业规划等。
- 技术视野: 对嵌入式的理解、技术方向看法。
- 文化匹配: 沟通方式、抗压能力、协作性。
- HR面:
- 稳定性/意愿: 为什么选择华为?对华为文化的理解?期望薪资?职业规划?家庭情况/地点接受度?
- 沟通与价值观: 考察沟通能力、价值观是否与公司匹配(如奋斗者文化)。
- Offer沟通: 通常会在这个环节谈薪资。
二、高频考察的核心技术领域与知识点
- 编程语言(重中之重):
- C语言: 绝对核心! 熟练度要求极高。指针(各种复杂应用)、内存管理(堆栈、malloc/free)、结构体、位操作、宏定义、volatile/const/static 等关键字的作用、函数指针、回调函数、大小端、预编译、链接过程、常见陷阱(如数组越界、未初始化)。
- C++: 部分岗位(如涉及更高层应用框架、多媒体)或要求了解面向对象概念、类、封装继承多态(在嵌入式中的应用场景)、虚函数、模板基础。
- 汇编基础: 部分底层岗位可能会问(如Bootloader开发),了解基本指令、寄存器、函数调用约定即可。
- 操作系统/实时操作系统:
- 基本概念: 进程/线程/任务、调度(抢占/非抢占、优先级反转/继承/天花板)、同步互斥(信号量、互斥锁、自旋锁)、临界区、死锁(条件、预防、避免、检测)、中断上下文与任务上下文。
- 内存管理: 虚拟内存(MMU)、分页、分段、堆内存管理(动态内存分配算法、碎片问题)。
- 具体RTOS: FreeRTOS 是高频考点。要求熟悉其任务管理、队列、信号量、互斥量、软件定时器、事件组、内存管理等模块的API和使用场景。也可能问及 uC/OS-II、RT-Thread 或其他。
- 计算机组成原理与硬件基础:
- MCU/MPU 架构: 了解常用架构(如ARM Cortex-M/R/A系列)及其特点(寄存器组织、工作模式、异常/中断处理机制)。
- 总线: 了解 AMBA总线(AHB, APB, AXI)等概念。
- 外设原理与驱动:
- UART: 波特率、起始位/停止位、奇偶校验、流控。
- I2C: 起始/停止条件、ACK/NACK、寻址方式、速率、总线竞争(仲裁)。
- SPI: CPOL, CPHA, MOSI/MISO/SCLK/CS、全双工/半双工、多主模式。
- ADC/DAC: 分辨率、采样率、精度、DNL/INL。
- PWM: 占空比、频率、应用(控制电机、LED亮度)。
- GPIO: 输入/输出模式(推挽、开漏)、上下拉电阻、中断触发方式。
- Timer/Counter: 基本定时、输入捕获、输出比较、PWM生成。
- 中断系统: 中断处理流程(压栈、取中断向量、执行ISR、中断返回)、中断嵌套、中断优先级、中断延迟。
- Bootloader: 启动流程(从复位向量开始)、初始化步骤、加载内核。
- 调试手段: JTAG/SWD、串口调试、逻辑分析仪、示波器使用经验。
- 数据结构与算法:
- 链表(单链表、双链表、循环链表)、栈、队列(环形队列常见)、树(二叉树)、查找(二分查找)、排序(冒泡、选择、插入、快速排序)。重点是 能在C语言环境下熟练实现常用数据结构,并分析时间复杂度/空间复杂度。
- 计算机网络(视具体岗位):
- TCP/UDP 基本区别与特性。
- 协议栈分层(TCP/IP模型)。
- Socket 编程基础。
- HTTP协议基础(对于物联网岗可能要求)。
- 常见网络问题的调试思路(如ping不通)。
- 项目经验:
- STAR法则: 清晰地介绍你负责的项目/模块:Situation (背景), Task (任务), Action (你采取的行动和技术细节), Result (结果、量化指标、你贡献的价值)。
- 深入细节: 面试官会追问技术实现的细节:
- 为什么选这个芯片/方案?有无对比? 通信协议是如何设计的?可靠性如何保证? 关键算法/数据结构是什么?为什么这么选? 遇到过哪些难题?如何定位并解决的? 用了哪些RTOS特性?为什么? 功耗/实时性/稳定性/安全性如何考虑的?
- 体现你的价值: 重点说明你在项目中具体负责什么、解决了哪些关键问题、带来了什么提升(效率、性能、成本、可靠性)。
三、加分项与亮点
- 动手能力 & 实践经历: 自己有动手玩开发板(如STM32、ESP32等)、做过小项目、参加过电子设计竞赛的经历非常加分。
- 系统级理解: 理解嵌入式软件栈(从Bootloader到应用)的整体流程和交互。
- 底层调试能力: 熟练使用调试工具定位问题(内存泄漏、死锁、性能瓶颈)。
- 扎实的硬件基础: 能看懂原理图、了解基本电路知识(如上下拉、开关量/模拟量输入)。
- 稳定性/可靠性意识: 对嵌入式系统的健壮性、实时性、低功耗、安全性(如内存越界、代码注入防御等)有意识和思考。
- 学习能力 & 热情: 展现出对技术的兴趣和学习新技术的能力(如介绍看过哪些经典书籍/文章,跟进新技术动态如RISC-V)。
四、重要的准备建议
- 吃透简历: 对简历上写的每一个技术点、每一个项目细节都做好被深挖的准备。不懂或者只是“了解”的不要写精通/熟悉。
- 夯实基础:
- 猛攻C语言:《C和指针》、《C专家编程》是很好的选择。动手实现各种数据结构,刷常见的嵌入式C语言面试题。
- 精研RTOS: 选择一款(如FreeRTOS),理解其源码和核心机制(任务切换、队列、调度)。
- 理解硬件: 选一块开发板(如STM32F4/F7),实践常用外设的驱动编写和调试。理解芯片手册关键部分。
- 刷题:
- 刷 LeetCode 上链表、字符串、数组相关简单/中等题目(能用C写,考虑嵌入式环境限制)。
- 重点关注涉及 内存操作、位运算、结构体应用 的题目。
- 项目复盘:
- 用STAR法则重新梳理所有项目,整理出每个项目的技术亮点、难点及解决方案、个人贡献。
- 思考如何用精炼、专业的语言描述。
- 了解华为:
- 了解你申请的具体部门(如消费者BG、海思、车BU、2012实验室某个部门)的大致方向,其使用的技术栈(如果能了解一些更好)。
- 了解华为文化(如“以客户为中心,以奋斗者为本,长期艰苦奋斗”),思考如何契合(不要空谈)。
- 模拟面试: 找同学或朋友模拟面试,特别是技术一面和二面,练习表达流畅度和清晰度,适应压力。
五、面试中注意事项
- 态度谦逊诚恳: 知之为知之,不知为不知。切忌不懂装懂,面试官很反感。
- 沟通清晰流畅: 回答有条理(先讲结论或主要观点,再展开细节),用词专业。
- 展示思考过程: 被问到时,先思考清晰再回答。对于设计题/算法题,可以边想边说,展示你的思考逻辑。
- 积极提问: 面试尾声通常会问“你有什么问题要问我?”。准备1-2个高质量问题(如团队当前的技术挑战、新人如何培养、项目用到的核心技术栈等),不要问薪资、加班这些HR环节才问的。
- 保持自信但不自负。
六、常见问题举例(仅供参考)
- C语言中
static关键字的用途? - 解释
volatile关键字的作用?在什么场景下必须用? - C语言中,
const int *p、int * const p和const int * const p的区别? - 解释一下什么是优先级反转?FreeRTOS中如何解决?
- 描述一下中断服务程序(ISR)里需要注意哪些事项?
- 请描述从设备上电到应用启动的大致过程?
- 如何设计一个可靠的数据通信协议(例如通过UART)?
- 如何判断内存泄漏?遇到一个程序崩溃如何排查?(用gdb调试,coredump分析)。
- 手写代码:实现一个链表的反转。
- 手写代码:实现一个环形缓冲区(队列)。
- 讲一下你项目中解决过的最难的技术问题是什么?怎么解决的?
- 项目中为何选择使用FreeRTOS而不是其他RTOS或裸机?
- 遇到过死锁吗?怎么定位和解决的?
- 项目如何保证实时性/低功耗?
核心是:基础、动手、项目深度、思考和表达。 务必围绕这几点进行充分准备。祝你面试成功!
嵌入式开发调试经验分享
嵌入式开发过程中的一点调试经验嵌入式开发最麻烦的在现场调试过程中或实际运营过程中出现问题很难定位。我在实际开发过程中一点经验分享给大家嵌入式开发调试分为开发阶段调试,现场调试,运行调试以STM32为
kevinvind
2021-11-05 08:15:47
嵌入式开发就业方向的问题
近几年来随着物联网的快速发展,嵌入式开发技术在我们的生活中随处可见,目前嵌入式开发工程师在市场上的需求量大,薪资也是水涨船高。上海尚观科技今天主要是想给一些嵌入式开发的初学者们,具体说说嵌入式开发就业方向的问题,大家可以参考下。据悉,目前国内3G核心嵌入式人才不足万人,其中华为约5000-...
河神大人
2021-11-08 07:58:17
嵌入式开发为什么选择C语言?
1、嵌入式开发为什么选择C语言?(面试题!!!)嵌入式开发中操作系统是核心,需要移植,并在上层和底层做开发,而操作系统的核心是内核,所有内核的开发都采用C语言,所以嵌入式开发选择C语言。(嵌入式开发
juju宇哥
2021-12-15 07:45:30
嵌入式开发教程哪家好呢?
嵌入式培训来加入这个行业。那么嵌入式开发教程哪家好呢?市场上需要的嵌入式人才必须具备C语言编程经验、嵌入式操作系统(嵌入式Linux)经验、内核裁剪经验、驱动程序开发经验,比如高级嵌入式软件开发工程师相关...
陈囝囝100
2021-11-08 06:09:02
Linux系统的嵌入式开发是什么
嵌入式开发听起来很高大上,但其实它就在我们身边。 嵌入式开发是指将操作系统、应用程序或数据存储在嵌入式设备中,如手机、平板电脑、智能家居等。 随着物联网时代的到来,嵌入式开发越来越成为一种重要的技术手段。
2023-10-12 15:40:39
嵌入式开发流程是怎样的?
本篇文章整理下嵌入式开发中一些入门的基础技能,都是根据以往的工程经验整理,适用于之前没做过嵌入式开发的新手。嵌入式开发流程一般如下,一般是在PC机的Windows系统下安装Ubuntu虚拟机,搭建
来自南方的狼
2021-11-08 06:24:02
什么是嵌入式开发呢
一直想写一写嵌入式开发这些年的经验,但一直没能下笔,今天终于下定决心,来对这些年的经验心得进行一个总结,所以,先写一个前言吧,来对这些心得进行一个引述。在高考选专业的时候,因为小的时候,家里有
哼小曲
2021-11-05 07:24:09
嵌入式开发前景怎么样?
嵌入式开发前景非常广阔,这主要得益于物联网、人工智能、大数据等技术的快速发展,以及嵌入式系统在各个领域的广泛应用。以下是对嵌入式开发前景的详细分析
2024-07-10 09:00:29
如何看待Java开发和嵌入式开发
首先,Java开发和嵌入式开发都是目前IT行业内比较常见的开发岗位,也都有大量的从业人员,所以从就业的角度来看,学习Java开发和嵌入式开发都是不错的选择。
2019-06-15 10:33:46
Java开发和嵌入式开发该如何选择
首先,Java开发和嵌入式开发都是目前IT行业内比较常见的开发岗位,也都有大量的从业人员,所以从就业的角度来看,学习Java开发和嵌入式开发都是不错的选择。
2019-06-10 11:37:47
嵌入式开发的流程_嵌入式开发的前景
当前,嵌入式开发已经逐步规范化,在遵循一般工程开发流程的基础上,嵌入式开发有其自身的一些特点。主要包括系统需求分析(要求有严格规范的技术要求)、体系结构设计、软硬件及机械系统设计、系统集成、系统测试,最终得到产品。
2020-07-30 11:23:57
嵌入式开发要学什么
[td] 最近遇到很多处于迷茫中的新手,在纠结要不要去学嵌入式,主要问题在于嵌入式的门槛非常高,经验少、或者非电子专业投身嵌入式行业能否发展下去。现在嵌入式开发行业的确发展很好,大多数从业者都是
xzx1
2021-01-18 06:36:18
单片机开发和嵌入式开发的区别
单片机开发和嵌入式开发都是针对嵌入式系统的应用领域,但是两者有着不同的特点和应用场景。在本文中,我们将探讨单片机开发和嵌入式开发的区别,并介绍它们的应用场景和技术特点。
2023-04-14 16:36:43
蓝桥杯嵌入式开发经验分享
参考资料:蓝桥杯嵌入式备赛手册蓝桥杯嵌入式开发经验分享(3.LED的配置)总目录:目录文章目录驱动文件的编写与存放LED硬件连接驱动文件的编写与存放以后此步骤不再单独说明,直接编写了点击新建文件保存
三心四意
2021-12-16 07:46:39
嵌入式开发的应用重点是什么
尽管物联网,嵌入式视觉,机器学习和其他新兴技术在开发组织中的重要性日益提高,但C和C ++仍是嵌入式开发人员中占主导地位的编程语言。
2019-12-27 16:17:33
嵌入式开发是什么意思
嵌入式开发就是指在嵌入式操作系统下进行开发,包括在系统化设计指导下的硬件和软件以及综合研发。除暂且分离硬件的EDA研发以外,侧重的就是在一定硬件条件下的系统化设计和软件研发。定义嵌入式开发是指利用
hdfsf
2021-10-28 08:35:47
嵌入式软件面试资料大合集
背景先说说本人的背景,我,一个大专人,从事嵌入式开发两年了,之前在一家公司是负责单片机和物联网开发的。2020年年底我选择了裸辞(主要想出去玩)。知道春节结束后,出来找工作。我的技术栈:单片机(51
tulin
2021-10-28 08:14:01
究竟什么是嵌入式开发
嵌入式开发早在10年之前笔者就读本科时,就炒得火热的概念,当时说嵌入式开发将是得到大力发展的行业。一直到最近又有物联网IoT,智能硬件的发展,嵌入式开发再次被推向风口浪尖。下面我们就简单说一下究竟
哎呀2015
2021-11-08 06:13:20
嵌入式开发通常采用哪种编程语言
目前在嵌入式开发领域比较常见的编程语言是C,另外C++、Python、JavaScript等语言也可以进行嵌入式开发。总的来说,这几门编程语言并不难学。
2019-06-18 16:59:51
嵌入式开发者必备的基础硬件知识
做嵌入式系统开发,经常要接触硬件。做嵌入式开发对数字电路和模拟电路要有一定的了解。这样才能深入的研究下去。下面我们简单的介绍嵌入式开发中的一些硬件相关的概念。
2019-06-18 17:02:53
嵌入式开发可以分为哪几类
嵌入式开发从大类上来说,主要分为两类:1)嵌入式硬件开发;2)嵌入式软件开发。对于嵌入式硬件开发而言,硬件是必须要懂得,因为涉及到电路原理图的设计。对于嵌入式软件而言,如果细分的话,又可以分为驱动开发和软件开发。这两者都需要一定的硬件知识,所以,嵌入式开发有必要学习硬件。
2020-08-24 14:29:39
什么是嵌入式?单片机开发与嵌入式开发的区别在哪
一、初识嵌入式1.1 什么是嵌入式?1.1.1单片机开发:1.1.2嵌入式开发:1.2 单片机开发与嵌入式开发分区别1.2.1单片机开发1.2.2嵌入式开发1.3 嵌入式操作系统1.3.1什么是开源
cherr番茄
2022-02-24 06:29:14
Java开发和嵌入式开发
首先,Java开发和嵌入式开发都是目前IT行业内比较常见的开发岗位,也都有大量的从业人员,所以从就业的角度来看,学习Java开发和嵌入式开发都是不错的选择。Java语言的应用领域包括Web开发
泡芙奶昔
2021-11-05 08:02:10
嵌入式开发的核心竞争力有哪些?
,针对一个具体的产品,能够将不同的技术应用在同一个产品上,做到技术的综合应用。深入的行业经验和扎实的原理技术,使得嵌入式开发在整合产品中的技术时,优势尽显。以嵌入式平板电脑为例,一个优秀的嵌入式开发
cdhqyj
2020-11-27 15:00:42
面试嵌入式工作,会被问什么问题?
面试嵌入式工作时,面试官可能会从多个方面考察应聘者的知识、技能和经验。以下是一些常见的嵌入式工作面试问题,这些问题涵盖了基础知识、专业技能、项目经验和个人能力等方面
2024-07-17 09:26:53
小白必读嵌入式开发学习的基础课程分享
嵌入式开发时当前的热门职业之一,可以说“钱途”无限,作为新一代信息技术的三大代表,物联网、云计算和移动互联网的核心组成部分,都包含了大量嵌入式系统。。在嵌入式人才稀缺的现在,身价自然水涨船高,有三年经验以上的工程师年薪可以达到20-50W。对于想学嵌入式开发的人来说,除了了解嵌入式的就业前...
shsfsdfsg
2021-11-08 07:16:23