1.1 华为求职攻略-2024理工科版本
1.1.1 校园招聘时间流程
网申 |
机考 |
面试 |
offer |
7月-10月 |
8月-10月 |
9月-12月 |
11月-1月 |
1.1.2 薪资爆料
岗位 |
地点 |
学历 |
薪资范围(年薪) |
硬件工程师 |
上海 |
硕士 |
20~25K * 14~16 |
硬件工程师 |
上海 |
本科 |
15~16K * 14~16 |
数字芯片 |
成都 |
硕士 |
22k * 15 |
数字芯片 |
上海 |
博士 |
35K * 12+6W+6W |
通信算法 |
东莞 |
硕士 |
25W |
射频 |
上海 |
硕士 |
33-39W |
嵌入式 |
东莞 |
本科 |
19K * 14~15 |
嵌入式 |
上海 |
硕士 |
25K * 15 |
终端 |
上海 |
硕士 |
20~25K * 12~16 |
*数据来源 牛客用户,更多详细信息可到牛客查询
1.1.3 面试真题
硬件工程师
1、差模干扰的消除
【解题思路】
差模干扰(common mode interference)是指同时作用于两个信号线上的噪声,它们的大小相等,方向相反,形成一个共同的信号噪声。差模干扰不仅会影响信号的质量,还会导致系统的稳定性和可靠性降低。
差模干扰的消除可以采取以下几种措施:
- 采用差分信号传输方式:在差分传输方式下,两条信号线之间的差分模式信号可以有效地抵消差模干扰信号,从而使信号传输更加稳定和可靠。
- 添加共模抑制电路:共模抑制电路是一种专门用来消除差模干扰的电路,它可以在输入信号上添加一些特定的电路,以达到抑制差模干扰的目的。
- 加强地线的连接:地线的连接质量直接影响系统中差模信号的抑制效果。加强地线的连接可以有效地降低系统中的差模干扰。
- 优化PCB设计:差模干扰往往与信号传输线的长度、布线方式、PCB层次等因素有关。因此,在PCB设计中,可以采用更加合理的布线方式、减少线长、优化PCB层次等措施来消除差模干扰。
2、AD设计电路全流程
【解题思路】
AD 设计电路全流程通常包括以下步骤:
- 确定设计要求:需要对所需的转换精度、采样率、信号带宽等指标进行明确,同时考虑到所需的功耗、成本、占用面积等因素。
- 选型与方案设计:在确定设计要求之后,需要选定合适的 ADC 芯片,并设计相应的外围电路,如输入放大器、参考电压源、时钟电路、抗干扰电路等。根据具体的应用场景,可以采用不同的 ADC 类型,如 SAR ADC、Σ-Δ ADC 等。
- PCB 布局与布线:对于高速 ADC 设计,需要对 PCB 进行精细的布局和布线,保证信号完整性和抗干扰能力。对于高速 ADC 设计,可以采用差分信号和屏蔽技术来提高抗干扰能力。
- 驱动与测试:在 PCB 设计完成后,需要进行驱动和测试,包括基本的测试和校准,以保证 ADC 的性能符合设计要求。需要特别注意的是,AD 设计电路在测试过程中需要注意抗干扰能力,避免测试结果的误差。
总的来说,AD 设计电路的全流程需要充分考虑设计要求、选型与方案设计、PCB 布局与布线、驱动与测试等多个方面的因素,以确保最终设计的 ADC 能够满足应用需求并具备良好的性能。
3、开关电源的基本框图和 LDO 的基本框图并且描述区别区别
【解题思路】
开关电源的基本组成部分是开关电路,该电路的主要功能是将输入电压通过开关元件转换成高频脉冲,经过滤波和调整后得到需要的输出电压。
LDO(Low Dropout)电源的主要功能是通过电路内部的晶体管来调整输出电压,保证输出电压的稳定性和精度,其中晶体管的控制通过参考电压进行实现。
开关电源和LDO电源的区别主要在以下方面:
- 效率:开关电源的效率高于LDO电源,因为开关电源的开关元件将输入电压转换成高频脉冲,通过滤波和调整后得到输出电压,可以达到较高的转换效率。而LDO电源的效率相对较低,因为晶体管调整输出电压时需要通过一个反馈回路进行控制,这个回路会有一定的功耗。
- 成本:开关电源的成本相对较高,因为开关电路需要比较复杂的电路设计和较高的元器件成本。而LDO电源的成本相对较低,因为电路比较简单,元器件成本也相对较低。
- 稳定性:LDO电源的稳定性相对较高,因为晶体管控制输出电压时可以通过反馈回路进行精确控制。而开关电源的稳定性相对较差,因为开关电路中存在开关元件的导通和截止,会对输出电压产生一定的波动和扰动。
4、了解半波振子吗,如何拓展带宽
【解题思路】
半波振荡器(Half-wave oscillator)是一种产生正弦波信号的电路,由于其简单易用,常被用于实际电路中。
半波振荡器一般由一个放大器(Amplifier)、一个滤波器(Filter)和一个反馈网络(Feedback network)组成。其中反馈网络由一个电感和一个电容串联组成,将一部分输出信号反馈给放大器的输入端,从而形成正反馈。当正反馈增益大于等于放大器的放大倍数时,电路就会开始振荡,产生正弦波信号。
拓展半波振荡器的带宽可以采取以下措施:
- 更改反馈网络元器件的参数,例如改变电感或电容的值,来改变振荡频率和带宽。
- 加入补偿网络(Compensation network),来补偿放大器的频率响应,从而扩展带宽。
- 使用多级放大器,例如级联两个放大器,来增加总放大倍数,从而提高正反馈增益,扩展带宽。
需要注意的是,拓展带宽会牺牲其他方面的性能,例如稳定性和噪声等。因此,在设计时需要综合考虑各种因素,权衡取舍。
5、集成运放参数理解,包括哪几部分,压摆率呢?
【解题思路】
集成运放是模拟电路设计中常用的一种器件,通常用于信号放大、滤波、比较、采样保持等应用。它的参数包括增益、带宽、输入电阻、输出电阻、偏移电压、共模抑制比等。其中,增益和带宽是最为重要的两个参数。
增益表示输入信号和输出信号的比值,一般用分贝(dB)来表示,常用的增益范围为几十到几百倍。带宽表示集成运放在放大范围内能够放大的最高频率,一般用赫兹(Hz)来表示,常用的带宽范围为几百千赫兹到数百兆赫兹。
另外,压摆率是指在输出信号发生跳变时,输出电压上升或下降的速度,一般用伏特每微秒(V/μs)来表示。它是集成运放输出电压的瞬态响应性能指标之一,表示集成运放的电压跟随速度。高压摆率意味着能够快速响应变化的信号,这在高速应用中非常重要。
6、stm32最小系统?
【解题思路】
STM32最小系统是一种包含STM32微控制器、时钟电路、复位电路、调试电路、电源电路等基本元件的硬件电路。它是STM32开发的基础,也是学习STM32的必备知识。
STM32最小系统的组成部分通常包括:一个STM32微控制器芯片、一个外部晶体振荡器(或者是内部RC振荡器)、一个复位电路、一个调试电路(通常是SWD接口)、一个稳压器电路以及一些必要的电阻、电容和连接线等。
在STM32最小系统中,芯片和各种电路的连接方式非常重要。具体来说,STM32芯片的引脚需要和外部电路连接,比如时钟电路、复位电路、调试电路等。在实际设计过程中,还需要注意电路的布局和线路的走向,以最小化信号干扰和噪声。
需要注意的是,不同型号的STM32微控制器的最小系统可能会有所不同,因此在具体设计过程中需要根据具体型号的手册进行参考和设计。
7、电容电阻参数怎么选择?
【解题思路】
在电路设计中,选择电容和电阻的参数需要考虑多个因素,如电路的工作频率、电压和功率等。以下是一些常见的选择方法和注意事项:
- 电容参数的选择:
- 容值:根据电路的工作频率选择合适的电容容值,一般来说,工作频率越高,所需要的电容值越小。
- 电压:电容的电压需大于电路的最大工作电压,一般选择略大于所需电压的电容。
- 温度系数:根据电路的工作温度选择合适的电容温度系数,以保证电容的参数稳定性。
- 电阻参数的选择:
- 阻值:根据电路的工作要求选择合适的电阻阻值,一般来说,所需电阻值与电路的电流和电压有关。
- 精度:根据电路的要求选择合适的电阻精度,一般来说,精度越高的电阻成本也越高。
- 功率:根据电路的功率要求选择合适的电阻功率,以保证电阻在工作时不会受到过大的热损失。
总的来说,选择电容和电阻的参数需要综合考虑多个因素,并进行合理的设计和测试。
8、TCP/IP协议的层数
【解题思路】
TCP/IP协议是一个四层的协议栈,每层负责不同的功能,包括:
- 应用层:应用层协议负责处理用户数据,例如HTTP、FTP、SMTP等。这一层主要是为用户提供服务的,与网络传输本身关系较小。
- 传输层:传输层协议主要是为应用层协议提供端到端的可靠数据传输,包括TCP和UDP协议。TCP协议提供面向连接、可靠的数据传输服务,而UDP协议则提供无连接、不可靠的数据传输服务。
- 网络层:网络层协议负责实现不同网络之间的数据传输,例如IP协议。这一层主要负责数据的路由和转发,使数据能够在不同网络之间传输。
- 链路层:链路层协议主要负责实现数据在本地网络内的传输,例如以太网协议。这一层主要负责数据的封装和解封装,以及网络接口的管理。
这四层协议组成了TCP/IP协议栈,实现了网络数据的传输和交换。
9、材料硬度由什么决定?
【解题思路】
材料硬度通常由以下几个因素决定:
- 晶粒度:晶粒度越细,材料的硬度越高。这是因为细小的晶粒能够抵抗位错的移动,从而使材料更难变形。
- 金属化合物:许多金属硬度高的原因是它们的结构中含有金属化合物。例如,钢中的碳化铁是一种硬度非常高的金属化合物。
- 冷处理:通过冷却材料来改变材料的硬度。在金属加工中,可以通过冷滚压等方式来增加材料的硬度。
- 合金化:将不同的金属元素混合在一起制造出的合金材料通常比单一金属元素的材料更硬。
- 晶体结构:材料的晶体结构也会影响材料的硬度。例如,钻石之所以是地球上最硬的材料之一,是因为其晶体结构非常致密和有序,而且碳原子之间形成了非常强的共价键。
10、BUCK电路损耗有哪些
【解题思路】
BUCK电路损耗主要包括以下几个方面:
- 开关管导通时的导通损耗:由于开关管在导通时存在一定的电阻,导致电流通过时会产生一定的功率损耗。
- 开关管关断时的反向恢复损耗:当开关管关断时,由于管子上存在一定的电荷,这些电荷需要通过反向二极管回流,会产生一定的反向恢复损耗。
- 电感元件的损耗:由于电感元件在变化电流的过程中会产生磁场,而这种磁场又会引起元件本身一定的电阻,从而产生一定的功率损耗。
- 输出滤波元件的损耗:由于输出滤波元件需要滤掉高频噪声,会产生一定的功率损耗。
- 控制电路的损耗:BUCK电路需要通过控制电路来保持输出电压稳定,控制电路本身也会产生一定的功率损耗。
- 为了减小这些损耗,可以采取一些措施,例如合理选择开关管和电感元件、优化控制电路设计、采用合适的输出滤波电容等。
嵌入式硬件
1、你认为最好的排序算法是什么?简述理由。
【解题思路】
在实际的编程中,最好的排序算法要根据实际需求和数据规模来选择,因为每种排序算法都有其优势和劣势。以下是一些常见排序算法及其优缺点:
- 冒泡排序是一种简单直观的排序算法,它的时间复杂度是 O(n^2)。虽然它的时间复杂度比较高,但它的实现方式简单,对于小规模数据排序是非常有效的。
- 快速排序是一种常用的排序算法,它的时间复杂度是 O(nlogn)。它的实现方式比较复杂,需要递归实现,但是对于大规模数据排序效率很高。
- 归并排序是一种时间复杂度为 O(nlogn) 的排序算法。归并排序的实现方式比较简单,但需要额外的内存空间来存储临时数据,对于数据量较大时,空间复杂度比较高。
- 堆排序是一种时间复杂度为 O(nlogn) 的排序算法。它的实现方式比较简单,但是需要额外的内存空间来存储堆,对于数据量较大时,空间复杂度比较高。
- 因此,在实际开发中,根据数据规模和具体需求来选择最优的排序算法。如果数据规模较小,可以使用冒泡排序或插入排序等简单排序算法;如果数据规模较大,可以选择快速排序或归并排序等时间复杂度较低的算法。同时,也要考虑到算法的稳定性、内存占用等因素,综合评估选择最优的算法。
2、树的遍历方式有哪些?是怎么实现的?
【解题思路】
树是一种非线性数据结构,其遍历方式主要有三种:前序遍历、中序遍历和后序遍历。具体实现方式可以使用递归或者栈来完成。
前序遍历:先访问根节点,然后遍历左子树,最后遍历右子树。
void preorder(TreeNode* root) { if (root == nullptr) { return; } // 访问根节点 cout << root->val << " "; // 遍历左子树 preorder(root->left); // 遍历右子树 preorder(root->right); } 中序遍历:先遍历左子树,然后访问根节点,最后遍历右子树。 void inorder(TreeNode* root) { if (root == nullptr) { return; } // 遍历左子树 inorder(root->left); // 访问根节点 cout << root->val << " "; // 遍历右子树 inorder(root->right); } 后序遍历:先遍历左子树,然后遍历右子树,最后访问根节点。 void postorder(TreeNode* root) { if (root == nullptr) { return; } // 遍历左子树 postorder(root->left); // 遍历右子树 postorder(root->right); // 访问根节点 cout << root->val << " "; }
其中,TreeNode是一个二叉树节点的结构体或类,包括左子树指针、右子树指针和节点值。以上实现方式使用的是递归,也可以使用栈来完成遍历。
3、数据结构中图的概念
【解题思路】
在数据结构中,图是由顶点和边组成的一种数据结构。它可以用来表示许多现实世界中的实体和关系,比如地图、社交网络和电路等等。在图中,顶点表示实体,边表示实体之间的关系。
图可以分为有向图和无向图。有向图中,边是有方向的,表示顶点之间的单向关系。无向图中,边没有方向,表示顶点之间的双向关系。
图还可以分为带权图和无权图。带权图中,每条边都有一个权值,可以表示实体之间的某种权重或距离等。无权图中,每条边没有权值,只表示实体之间的关系。
图的表示方式有邻接矩阵和邻接表两种。邻接矩阵是一个二维数组,其中行和列分别表示图中的顶点,数组元素表示相应顶点之间是否存在边。邻接表是由若干个链表组成的结构,其中每个链表表示一个顶点及其相邻的顶点。
图的遍历算法有深度优先搜索和广度优先搜索。深度优先搜索从起点开始,沿着一条路径一直遍历到底,然后回溯到之前的结点,继续遍历其它路径。广度优先搜索从起点开始,先遍历所有与之相邻的结点,然后再遍历与这些结点相邻的其它结点,直到遍历完所有结点为止。
4、输入一个链表,可能有环可能无环,有环的情况下输出入环的第一个节点值,无环的情况下输出-1。
【解题思路】
解决方法是使用快慢指针,如果链表中有环,那么快指针总会追上慢指针,此时就可以确定链表中存在环。接下来,重新定义两个指针,一个指针从头节点开始,一个指针从环中相遇的节点开始,每次移动一个节点,直到两个指针相遇,此时的节点就是入环的第一个节点。
C++代码实现如下:
struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; int findFirstNode(ListNode *head) { ListNode *slow = head, *fast = head; while (fast != nullptr && fast->next != nullptr) { slow = slow->next; fast = fast->next->next; if (slow == fast) { slow = head; while (slow != fast) { slow = slow->next; fast = fast->next; } return slow->val; } } return -1; }
在这个函数中,使用了两个指针slow和fast,它们从头节点开始移动。在while循环中,slow每次移动一个节点,fast每次移动两个节点。如果链表中有环,快指针最终总是能够追上慢指针,此时会进入if语句块中。在if语句块中,重新定义两个指针slow和fast,slow指向头节点,fast指向相遇节点。然后,两个指针每次都移动一个节点,直到它们相遇,此时的节点就是入环的第一个节点。如果链表中没有环,那么while循环会正常结束,返回-1即可。
5、写出计算机网络五层模型,每一层对应的协议
【解题思路】
计算机网络五层模型如下:
物理层:负责物理传输介质上的比特流传输,例如光纤、网线等。常用协议有:RS-232、V.35、10Base-T等。
数据链路层:负责将比特流划分为数据帧并进行差错检测和纠正,同时也进行物理寻址和流量控制。常用协议有:以太网、令牌环、HDLC、PPP等。
网络层:负责数据的路由选择和分组转发,将数据包发送到目标地址。常用协议有:IP、ICMP、ARP、RIP、OSPF、BGP等。
传输层:提供可靠的端到端的数据传输,负责数据的分段、排序、传输错误恢复等。常用协议有:TCP、UDP等。
应用层:为用户提供各种网络应用服务,如电子邮件、文件传输、远程登录、Web服务等。常用协议有:HTTP、SMTP、POP3、FTP、Telnet等。
6、 解释ICMP DHCP
【解题思路】
ICMP (Internet Control Message Protocol) 是一种网络协议,它主要用于在网络中传递控制信息和错误报告。它通常被用来检测网络连接的可用性和测试网络性能,比如 ping 命令就是基于 ICMP 协议实现的。当出现网络故障时,ICMP 可以向发送端发送错误消息,以及向其他网络设备发送请求,以便进行网络故障排查。
DHCP (Dynamic Host Configuration Protocol) 是一种网络协议,它允许网络中的设备自动获得 IP 地址和其他网络配置信息。DHCP 是一种自动化的方式,使得网络管理员可以轻松地管理网络,而无需手动分配 IP
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
牛客独家出品,理工科求职必备攻略,适合岗位: 硬件、通信、电气、电子信息