【暑期实习】华为 AI 工程师 二面复盘
第一次见双机位,整体更像综合面和价值观沟通
这场华为二面是主管面,也是综合面,最开始就先说明了这是最后一次技术相关的实际面试,时间不长,大概半小时左右。上来给我的第一感受不是“拷打技术细节”,而是更像一次比较正式的综合交流,甚至还有点管理面、主管面那种风格。比较好笑的是,这是我第一次遇到双机位的面试,仪式感直接拉满。
开场还是先做自我介绍,不过这次面试官的关注点和前几轮不太一样。他没有一上来深挖具体算子怎么写,而是先听我完整讲了一遍自己的学习背景、实习经历和正在做的事情,尤其强调希望招进来的人后续能做一些“技术创新类”的工作,所以更想知道我到底做过哪些跟技术创新、性能优化、工程落地相关的内容。我这边还是按自己的主线讲了:之前的工程化开发经历、现在在做的算子优化和图优化、以及自己做的量化推理 runtime。
后面他没有继续追某一个具体算子,而是转去问我“你这个专业平时是怎么开展研究的”。这个问题其实挺有意思,不是问你做了什么成果,而是问你做研究的方法论。我当时回答的是:先把导师给的大任务拆成小任务,然后去查论文、找开源项目、看资料、先理解到六七成,再自己上手做一个项目;做的时候遇到具体问题,再回头补知识和找答案。这个问题其实很像主管面会问的那种,不是要听你背一个高大上的研究框架,而是想看你做事有没有自己的节奏,遇到陌生问题的时候是怎么推进的。
中间还问了一个我觉得很典型的“团队协作”问题:有没有在合作过程中,和别人对某个技术观点有分歧,最后你说服了别人,或者被别人说服。我这里举的是之前处理整网 OOM 和随机崩溃问题的经历。当时其实有几个人都在看这个问题,有的人倾向于把有问题的部分先放回 CPU 跑,先把报错压住;但我当时的想法是,我们做这个工作的目标就是让模型稳定、高效地跑在卡上,如果为了不报错直接把关键计算挪回 CPU,那虽然跑通了,但优化本身就失去意义了。后面我提出还是应该从整网角度往回看,既然很多算子都在出问题,那大概率不是每个算子都坏了,而是它们之间有一条共用路径或者公共输入出了问题。最后确实顺着这个思路往下排,定位到了链路上的参数传递问题,再一起修掉。这个问题让我感觉,主管面其实挺看重你是不是能在团队里“讲清楚自己的判断”,而不是只会自己埋头做事。
还有两个问题也很有主管面味道。一个是“你碰到过什么比较难理解、难掌握的技术点,最后怎么克服的”。我这里讲的是刚开始理解算子融合逻辑时其实挺吃力的,因为当时没有特别细的一对一带教,只给了文档和已有逻辑让我去看。我后来是自己边翻代码边问 AI 工具,慢慢把融合逻辑理顺了,而且还顺带发现旧逻辑里有常量节点删不干净的问题。另一个是“讲一个失败经历”。我举的是自己曾经试图把几个 add 系列算子硬合成一个大类,觉得逻辑上统一了会更优,但实际上因为前面做维度和类型判断的开销太大,整网吞吐直接从 9000 掉到 4000,最后只能把代码回退。这个失败经历后来我自己总结成一句话就是:不要因为“看起来可以统一”就贸然大改,先判断这件事为什么以前是这么设计的,再决定要不要动。
这轮给我的另一个感觉是,面试官很在意你有没有从“个人开发”逐渐切到“规范化工程协作”的意识。他专门问了我接触过哪些新技术、新流程,对我有什么启发。我这里讲的不是某个炫技算法,而是像远程服务器、SSH、多用户环境、Docker、Conda、GitLab 到 GitHub 的 CI/CD、团队协作规范这些东西。以前自己做项目,更多是单机单打独斗;真正进到团队里之后,会发现环境隔离、流程规范、代码同步、统一提交流程这些东西都非常重要。这个问题本质上其实在看你有没有“进大团队做事”的意识。
#面试复盘##ai infra##华为##暑期实习#12345

