【暑期实习】华为 AI 工程师 一面复盘

项目深挖很多,最后还有一道“手写”代码题

这场华为 AI 工程师暑期实习的面试,整体节奏比较完整,基本就是“自我介绍—项目深挖—反问—代码题”这一套。刚开始先让我共享桌面,结合简历做自我介绍,讲自己的学习背景、做过的项目,以及现在的方向。前面这部分我还是按自己的主线来讲:山大本科电子和计算机双修,港中深硕士,方向慢慢转到 AI Infra、异构计算和性能优化;实习这边讲了之前做过的通用软件工程工作,以及现在做的算子优化和图优化相关内容。面试官前面没有特别打断,但后面几乎每一段都会继续往下追。

项目里问得最多的,一个是我自己做的量化推理 runtime,另一个是现在在做的算子/图优化相关工作。量化项目这块,对方比较关心的是:你到底做了什么,哪些部分是自己改的,哪些是开源项目原本就有的;你开发了哪些算子;这些算子在英伟达卡上怎么验证正确性和性能;量化之后怎么保证结果可信。这里我讲的是,自己主要围绕 AWQ 做了一些修改,开发和测试了 GEMV、GEMM 这类算子,正确性会先用 CPU 结果去对,再看 GPU 上的输出是否一致,性能上再结合 profiling 工具去看有没有真实收益。对方其实一直在确认一件事:你是不是只是“把项目跑起来了”,还是你真的知道这里面的算子、输入输出、量化流程和验证方法。

这一块也暴露出一个很真实的问题,就是有些地方自己平时觉得“差不多知道”,真正被面试官顺着问具体实现时,就会发现表达还不够稳。比如 AWQ 算子的输入输出、量化和反量化到底在哪一步做、精度验证具体怎么做,这些问题不是说完全不会,但如果没有提前按“能给别人讲清楚”的方式整理过,就会很容易说散。尤其对方会不断追问“你具体做了什么”,所以光说“我做了这个项目”其实远远不够,必须能拆到算子、流程、测试方法这一层。

另一条主线是我现在在做的算子优化和图优化工作。这里面试官让我把自己在摩尔线程做的事情完整讲一遍,不用提客户名字,但要把工作内容和技术逻辑讲清楚。我主要讲了四件事:第一是接入高性能库里的已有算子,并修正它在当前生态里的接入和融合逻辑;第二是定位并修复一个整网长跑中的随机崩溃和 OOM 问题;第三是自己做了一个轻量级 timing 宏,用来做粗粒度性能定位;第四是针对热点算子做专门的性能优化,比如标量广播这种特殊路径。对方其实很在意“你具体做了什么”,尤其是那种你简历上写一句话,但背后到底是接入、注册、测试、融合,还是重新手写 kernel,这些区别他都想听明白。

我印象最深的是他追着问融合算子那一段。不是只问“你会不会融合”,而是一直问:你这个融合具体融合了什么,旧链路和新链路的关系是什么,你做的工作到底是注册新算子、打通输入输出、修复识别逻辑,还是重写整个实现;还有“整网 11 个都融合了”这句话,到底是什么意思,提升的是哪部分性能。这个地方能明显感觉出来,面试官不是在听一个“项目故事”,而是在确认你有没有真正参与具体实现。其实这种问法挺典型的,尤其如果你简历上写了“fusion”“算子优化”“性能提升”这些词,对方一定会继续问到实现层。

除了项目细节,这场面试还有一个特点,就是比较在意你做事的流程感。比如量化项目里,他会问你算子开发之后怎么验证;在实习项目里,他会问你怎么判断优化是不是成功;在图融合里,他会问你怎么决定能不能融;这些问题表面上都不难,但其实是在看你的工程习惯是不是成熟。我的感觉是,这一面不太像刷八股,也不是特别偏概念考试,更像是在判断你是不是一个“能把东西做出来并且知道怎么验证”的人。

最后还有一道手写代码题。形式上不是共享在线编辑器,而是面试官把题发过来,让我自己抄到纸上、手写伪代码、签名、拍照发回去。题目本身是经典的 Two Sum,用哈希表做就行,所以难度不大。这个部分更像是确认一下基本代码能力,不是这场的主要难点。整体下来,我觉得这场华为暑期实习的技术面,重点还是在项目真实性、工程细节和表达能力,代码题反而是最轻的一部分。

如果回头总结这场的感受,我会觉得它非常看重“你到底做没做过”。你可以项目没有那么大,也可以论文还没发,但只要你能把自己做过的东西讲清楚,知道问题是什么、怎么定位、怎么验证、效果怎么样,面试官是愿意继续听的。反过来,如果只是简历上写得很好看,往下一问就开始发散,体验就会立刻变差。这场之后我自己的一个明确感受是:以后凡是写在简历上的项目,都得准备到能讲“输入是什么、输出是什么、流程是什么、验证怎么做、你自己到底改了什么”这个粒度。

#面试复盘##暑期实习##华为##我的求职进度条#
Ai infra 面试复盘 文章被收录于专栏

12345

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务