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

第一次见双机位,整体更像综合面和价值观沟通

这场华为二面是主管面,也是综合面,最开始就先说明了这是最后一次技术相关的实际面试,时间不长,大概半小时左右。上来给我的第一感受不是“拷打技术细节”,而是更像一次比较正式的综合交流,甚至还有点管理面、主管面那种风格。比较好笑的是,这是我第一次遇到双机位的面试,仪式感直接拉满。

开场还是先做自我介绍,不过这次面试官的关注点和前几轮不太一样。他没有一上来深挖具体算子怎么写,而是先听我完整讲了一遍自己的学习背景、实习经历和正在做的事情,尤其强调希望招进来的人后续能做一些“技术创新类”的工作,所以更想知道我到底做过哪些跟技术创新、性能优化、工程落地相关的内容。我这边还是按自己的主线讲了:之前的工程化开发经历、现在在做的算子优化和图优化、以及自己做的量化推理 runtime。

后面他没有继续追某一个具体算子,而是转去问我“你这个专业平时是怎么开展研究的”。这个问题其实挺有意思,不是问你做了什么成果,而是问你做研究的方法论。我当时回答的是:先把导师给的大任务拆成小任务,然后去查论文、找开源项目、看资料、先理解到六七成,再自己上手做一个项目;做的时候遇到具体问题,再回头补知识和找答案。这个问题其实很像主管面会问的那种,不是要听你背一个高大上的研究框架,而是想看你做事有没有自己的节奏,遇到陌生问题的时候是怎么推进的。

中间还问了一个我觉得很典型的“团队协作”问题:有没有在合作过程中,和别人对某个技术观点有分歧,最后你说服了别人,或者被别人说服。我这里举的是之前处理整网 OOM 和随机崩溃问题的经历。当时其实有几个人都在看这个问题,有的人倾向于把有问题的部分先放回 CPU 跑,先把报错压住;但我当时的想法是,我们做这个工作的目标就是让模型稳定、高效地跑在卡上,如果为了不报错直接把关键计算挪回 CPU,那虽然跑通了,但优化本身就失去意义了。后面我提出还是应该从整网角度往回看,既然很多算子都在出问题,那大概率不是每个算子都坏了,而是它们之间有一条共用路径或者公共输入出了问题。最后确实顺着这个思路往下排,定位到了链路上的参数传递问题,再一起修掉。这个问题让我感觉,主管面其实挺看重你是不是能在团队里“讲清楚自己的判断”,而不是只会自己埋头做事。

还有两个问题也很有主管面味道。一个是“你碰到过什么比较难理解、难掌握的技术点,最后怎么克服的”。我这里讲的是刚开始理解算子融合逻辑时其实挺吃力的,因为当时没有特别细的一对一带教,只给了文档和已有逻辑让我去看。我后来是自己边翻代码边问 AI 工具,慢慢把融合逻辑理顺了,而且还顺带发现旧逻辑里有常量节点删不干净的问题。另一个是“讲一个失败经历”。我举的是自己曾经试图把几个 add 系列算子硬合成一个大类,觉得逻辑上统一了会更优,但实际上因为前面做维度和类型判断的开销太大,整网吞吐直接从 9000 掉到 4000,最后只能把代码回退。这个失败经历后来我自己总结成一句话就是:不要因为“看起来可以统一”就贸然大改,先判断这件事为什么以前是这么设计的,再决定要不要动。

这轮给我的另一个感觉是,面试官很在意你有没有从“个人开发”逐渐切到“规范化工程协作”的意识。他专门问了我接触过哪些新技术、新流程,对我有什么启发。我这里讲的不是某个炫技算法,而是像远程服务器、SSH、多用户环境、Docker、Conda、GitLab 到 GitHub 的 CI/CD、团队协作规范这些东西。以前自己做项目,更多是单机单打独斗;真正进到团队里之后,会发现环境隔离、流程规范、代码同步、统一提交流程这些东西都非常重要。这个问题本质上其实在看你有没有“进大团队做事”的意识。

#面试复盘##ai infra##华为##暑期实习#
Ai infra 面试复盘 文章被收录于专栏

12345

全部评论

相关推荐

上周组里招人,我面了六个候选人,回来跟同事吃饭的时候聊起一个让我挺感慨的现象。前三个候选人,算法题写得都不错。第一道二分查找,五分钟之内给出解法,边界条件也处理得干净。第二道动态规划,状态转移方程写对了,空间复杂度也优化了一版。我翻他们的简历,力扣刷题量都在300以上。后三个呢,就有点参差不齐了。有的边界条件没处理好,有的直接说这道题没刷过能不能换个思路讲讲。其中有一个女生,我印象特别深——她拿到题之后没有马上写,而是先问我:“面试官,我能先跟你确认一下我对题目的理解吗?”然后她把自己的思路讲了一遍,虽然最后代码写得不是最优解,但整个沟通过程非常顺畅。这个女生的代码不是最优的,但当我问她“如果这里是线上环境,你会怎么设计’的时候,她给我讲了一套完整的方案——异常怎么处理、日志怎么打、怎么平滑发布。她对这是之前在实习的时候踩过的坑。”我在想LeetCode到底在筛选什么?我自己的经历可能有点代表性。我当年校招的时候,也是刷了三百多道题才敢去面试。那时候大家都刷,你不刷就过不了笔试关。后来工作了,前三年基本没再打开过力扣。真正干活的时候,没人让你写反转链表,也没人让你手撕红黑树。更多的是:这个接口为什么慢了、那个服务为什么OOM了、线上数据对不上了得排查一下。所以后来我当面试官,慢慢调整了自己的评判标准。算法题我还会出,但目的变了。我出算法题,不是想看你能不能背出最优解。而是想看你拿到一个陌生问题的时候,是怎么思考的。你会先理清题意吗?你会主动问边界条件吗?你想不出来的时候会怎么办?你写出来的代码,变量命名乱不乱、结构清不清楚?这些才是工作中真正用得到的能力。LeetCode是一个工具,不是目的。它帮你熟悉数据结构和常见算法思路,这没问题。但如果你刷了三百道题,却说不清楚自己的项目解决了什么问题、遇到了什么困难、你是怎么解决的,那这三百道题可能真的白刷了。所以还要不要刷LeetCode?要刷,但别只刷题。刷题的时候,多问自己几个为什么:为什么用这个数据结构?为什么这个解法比那个好?如果换个条件,解法还成立吗?把刷题当成锻炼思维的方式,而不是背答案的任务。毕竟面试官想看到的,从来不是一台背题机器,而是一个能解决问题的人。
国企上岸了的向宇同桌...:最害怕答非所问了,但是频繁反问确定意思又害怕面试官觉得我笨
AI时代还有必要刷lee...
点赞 评论 收藏
分享
牛客28967172...:跟着卡子哥才是正道,灵茶属实不太行
点赞 评论 收藏
分享
桌子不祁邓紫棋:这跟我有点类似,刚发完转正通过的邮件,隔一天说项目结束,你得走了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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