✨职位信息概览
华为技术有限公司校招应届软件开发岗位,20-35K·14薪,工作地址:北京海淀区华为公司北京研究所(环保园)M园区,面向本科及以上学历在读毕业生
📋岗位职责
参与5G并行软件系统架构设计,验证和性能优化; 研究5G关键网络模型和算法; 综合面向未来NFV架构实现与5G控制面和数据面网关研发; MEC边缘计算相关业务研究与开发。
✅任职要求
熟悉C语言,C++,GO,Python,Java语言其中一种即可; 有较好的软件开发经验,有云计算或网络安全相关经验者优先; 熟悉网络协议和网络知识者优先; 热爱编程,数据结构和算法基础知识扎实,学习能力强。
加分项:
有云计算相关经验 有网络安全相关经验 熟悉网络协议和网络知识
📸招聘详情

💡应聘技术问题
问题:"请解释5G网络中控制面与数据面分离的架构设计,以及这种分离对网关性能的影响"
参考答案:
5G网络采用了控制面(Control Plane)和数据面(User Plane)分离的架构,这是相比4G的一个重大变化。控制面负责信令处理、连接管理、移动性管理等逻辑功能,数据面负责用户数据的实际转发。
这种分离的好处在于:控制面可以集中部署,数据面可以分布式下沉。控制面网元(如AMF、SMF)集中在核心机房处理信令,数据面网元(UPF)则可以灵活部署在边缘机房或MEC平台,缩短数据传输路径,降低端到端时延。
对网关性能的影响比较直接。因为两面解耦了,扩容可以分开做——数据流量涨了就多加UPF实例,不需要同步扩控制面组件。转发效率也上去了,数据面只管转发数据包,可以跑DPDK、SR-IOV这些加速方案,转发能力比耦合架构强很多。NFV部署也因此变简单了,每个面能独立虚拟化,不再绑死在专用硬件上。
问题:"如何在大型网络流量中实时检测异常流量?请描述你选择的算法和数据结构"
参考答案:
实时异常流量检测需要兼顾准确性和处理速度。实际工程中通常采用多级检测方案。
第一级用布隆过滤器(Bloom Filter)做快速初筛。把已知的正常流量特征(如白名单IP、合法端口)存入布隆过滤器,每个数据包到达后先查布隆过滤器,命中的直接放行。布隆过滤器的查询复杂度是O(k),k是哈希函数个数,速度非常快,适合线速处理。
第二级用哈希表维护连接状态计数。对五元组(源IP、目的IP、源端口、目的端口、协议)做哈希,维护每个连接的包计数和字节计数。设定阈值,超过阈值的连接标记为可疑。这里可以用Cuckoo Hashing替代传统链地址法哈希表,查找时间更稳定。
第三级对于已标记的可疑流量,用滑动窗口统计单位时间内的流量分布。用环形缓冲区(Ring Buffer)实现时间窗口,统计Syn包比例、包大小分布等特征,与正常基线对比。偏离基线超过一定范围则判定为异常。
如果需要更精细的检测,可以在可疑流量上运行基于熵的方法——计算源/目的IP地址分布的信息熵,DDoS攻击时熵值会出现明显变化。
问题:"什么是NFV?它与传统专有硬件网络设备相比有什么优势和挑战?"
参考答案:
NFV(Network Functions Virtualization,网络功能虚拟化)说白了就是把防火墙、负载均衡、DNS、DPI这些跑在专用硬件上的网络功能变成软件,跑在通用的x86/ARM服务器上。ETSI定义了NFV的架构,分VNF(虚拟网络功能)、NFVI(基础设施)和MANO(管理和编排)三块。
好处主要有两个。一是省钱,不用买专用设备,通用服务器就行。二是部署快,新的网络功能通过软件镜像下发,不用跑到机房去插设备。流量高峰时自动扩VNF实例,低谷时缩回来。
但问题也不少。最头疼的是性能——通用服务器处理数据包的能力跟专用硬件差得远,得上DPDK、智能网卡这些来补。可靠性也是问题,软件实例跑在服务器上,服务器挂了功能就断了,得做高可用。厂商锁定也让人头疼,理论上NFV应该是开放的,但实际上各家VNF实现和编排接口经常对不上。
问题:"描述一个你参与过的软件开发项目,你在其中承担什么角色,遇到最大的技术挑战是什么?"
参考答案:
这类问题考察的是项目经验的真实性和深度。回答时要具体,避免泛泛而谈。
建议按照这样的结构组织回答:
先交代项目背景:项目是什么、解决什么问题、团队规模。然后说明自己的角色和职责:负责哪些模块、参与了哪些阶段。
重点讲技术挑战。举一个具体的例子:比如在做某个网络服务时遇到了高并发下的性能瓶颈,QPS上不去。排查过程是怎样的——通过性能分析工具(如perf、火焰图)定位到热点函数,发现是锁竞争导致的。解决方案是怎样的——比如把全局锁改成细粒度锁或者无锁队列,改造后QPS提升了多少。
最后讲项目成果和自己的收获。成果要有量化数据(延迟降低了多少、吞吐提升了多少),收获要讲技术认知上的成长。
关键是整个过程要讲得连贯,面试官可能会针对任何细节追问,所以一定要是自己真实经历的事情。
问题:"如果需要为一个实时视频分析应用设计MEC边缘计算方案,你会如何考虑计算卸载策略?"
参考答案:
实时视频分析对时延要求很高,把全部计算放在云端会引入较大的网络往返延迟,所以MEC边缘计算是合理的选择。但边缘节点的计算资源有限,需要设计合理的卸载策略。
先看任务拆分。视频分析流水线通常包括:视频采集→解码→预处理(缩放、裁剪)→推理(目标检测/分类)→后处理→结果聚合。解码和预处理是计算密集型但逻辑简单的任务,适合放在边缘;推理阶段取决于模型大小——轻量模型放在边缘,大模型可以考虑分层卸载,前面的层在边缘执行,后面的层在云端执行。
卸载决策主要看三个条件。时延要求:如果应用要求端到端100ms以内,大部分计算只能在边缘跑。带宽限制:原始视频流上传到云端很吃带宽,在边缘做完预处理再上传推理结果能省不少。还有边缘节点本身的资源余量——CPU/GPU利用率、内存占用、当前负载,这些决定边缘还能吃下多少任务。
可以做成动态卸载。跑一个决策模型,根据实时的RTT和带宽情况、边缘负载来决定每一帧在哪处理。网络稳的时候多往云端卸,算力更强;网络抖的时候就在边缘本地跑,保证时延。
🎯应聘面试准备
问:想应聘上述岗位,需要做哪些准备?
答:
简历优化
1.核心信息前置
学历写本科及以上,专业是计算机、通信、电子信息、软件工程这些都可以。有软件开发项目经验就写上去,实习和课程项目都算。技术栈突出自己最熟的那门语言。意向岗位写5G软件开发工程师。
2.匹配岗位关键词
简历里要有意识地带上这些词:C/C++/Go/Python/Java、数据结构与算法、TCP/IP协议。工程能力方面提到系统架构设计、性能优化、并行计算。工具写Linux开发环境、Git。5G通信、边缘计算、云计算、网络安全这几个标签能贴就贴。
技能梳理
编程语言能力:选一门主力语言深挖,C/C++跟5G系统开发关联最紧。内存管理、指针、多线程、编译链接这些基础概念要能讲清楚。
数据结构与算法:JD明确提了这个要求。数组、链表、栈、队列、哈希表、树(二叉树、红黑树、B树)、图这些要过一遍。排序、查找、动态规划、贪心、BFS/DFS也要练。LeetCode中等难度别卡壳就行。
网络知识:JD写了"熟悉网络协议和网络知识者优先"。TCP/IP协议栈是基本功——三次握手、四次挥手、拥塞控制这些要熟。HTTP/HTTPS、DNS也看看。5G那边至少了解核心网、接入网、控制面/数据面分离这些概念。
5G相关领域:NFV、MEC、SDN的基本原理要能说个大概。不要求深入,但面试官问到"NFV是什么"别答不上来。知道它们之间的关系就行:NFV管虚拟化、SDN管控制转发分离、MEC管边缘计算下沉。
面试准备
经典问题
如何判断一个链表是否有环?找到环的入口节点? TCP三次握手为什么不能是两次?四次挥手中TIME_WAIT状态的作用是什么? 进程和线程的区别?什么场景下用多线程,什么场景下用多进程?
系统设计
如何设计一个高并发的消息队列系统? 如果要实现一个简单的负载均衡器,你会怎么设计? 如何为一个视频直播平台设计CDN分发方案?
项目经验准备
准备1-2个核心项目的详细介绍,包括: 项目背景和目标 使用的技术和方法 遇到的挑战和解决方案 项目成果和收获 准备相关论文的复现经验或研究经历 准备开源项目贡献经历
夜雨聆风