前言
刚通过华为22届实习面试, 分享一下面试的经历和准备工作.
首先说是22届实习, 招的其实是23届毕业生. 因此需要在毕业前一年的三四月份投递简历, 等待机试. 我投递的是AI工程师 , 这个岗位一共是一轮机试+一轮专业面试+一轮主管面试.
机试
首先是几个注意点:
- 华为的机试模式和leetcode不同, 是牛客那种需要自己写IO自己include头文件的. 但是不是说leetcode不能刷, 而是在机试前一星期一定要多刷牛客的算法题, 熟悉一种语言的IO.
- 机试过程中会要求开启摄像头和录音, 并监控你的桌面. 允许使用本地IDE进行debug, 但是不能切出其他UI, 比如其他网页, QQ, 微信等
- 所有题在回答完后需要单独提交, 确认所有题目都提交之后, 还需要交卷才算完成考试. 不是说不提交答案, 最后单单点一个交卷就可以的
机试一共有3题, 一共俩小时, 按分值是100+200+300. 最后一题比较有难度, 但是前两题非常简单, 难度不高于leetcode上的中等题. 我抽到的第一题是模拟, 只要照着题干的算法编写程序即可, 不考察数据结构和特定算法. 第二题是一个图的dfs, 找所有路径. 老实说一上来我最先做的反而是第二题, 因为第二题有模板, dfs敲多了熟练之后, 5分钟就能解决. 反而第一题我花了1小时才通过所有测试样例然后提交, 因为题目会给你挖坑, 边界条件会比较难处理. 第三题时间不够我没做出来.
专业面试
机试通过后, 会提前一周给你发专业面试的通知和链接, 点进去下载对应的软件(WeMeeting , 这是华为开发的线上会议软件). 然后准备专业知识即可.
面试官会先问你擅长的语言, 然后根据岗位选择提问的方向. 遇到不会的, 及时回答说不会, 不要和面试官比知识的掌握程度. 除非你是大牛, 一般人很难对所有专业知识都有很深的了解. 总结来说就是需要对80%的专业知识有20%的了解, 剩下的20%的专业知识要有80%的了解. 因为你是靠那20%吃饭的, 这才是你需要重点掌握的部分.
面试官会根据你的简历来提问, 所以可以适当把问题引向你熟悉的领域. 这方面你要尽可能和面试官周旋, 让他多问几次, 一次次往深问, 在回答的时候要留给面试官下一次提问的余地.
我被问到的内容包括以下, 可能是实习的缘故, 问的都不太深, 比较基础:
- Nosql(MongoDB)事务. 我猜测是因为我简历上写了有参与一个这方面的项目, 所以他问了. 但我本身对MongoDB的底层并不太了解, 我就直接说只了解MongoDB基础了, 比如Document, Collection啥的. 你发现面试官问的深了, 你就可以说你还没有这么深的了解, 但是基础的还是了解的.
- Python底层Cython和OOP. 这个没有做太多提问, 只是问我对Cython了解多少, 幸亏看过不少Cython的实现, 能够帮助对Python中class的实现有更深的理解. 面试官只提问了深拷贝浅拷贝, 没有问其他的内容.
- AI框架(tensorflow, Pytorch, LibTorch), 让你选一个回答一些基础的问题. 这个只要用一个框架写过几个项目都能回答上来. 包括API, 以及ANN模型如何调参, 过拟合啥的
- Linux命令. 主要问了关于用户
useradd, usermod 和用户组的命令gruopadd, gruopmod , 以及一个chmod . - 最后让本地IDE手搓一个算法题, 按k个元素一组, 逆转一个链表. 比如链表
1, 2, 3, 4, 5, 6, 7, 8 按k=3 逆转是7, 8, 4, 5, 6, 1, 2, 3 . leetcode上的原题. 因为是本地IDE, 所以也要自己写IO. 我IO出了问题DEBUG十分钟把时间用光了. 然后面试官让我解释解释自己的思路. 最后也给我通过了. 也就是说, 如果你算法题没写出来, 思路是清晰的也是给分的吧. - 具体内容应该是根据岗位提问的, 我面试的是AI岗, 所以会有AI框架. 如果是开发的话, 说不定有Java虚拟机和spring的内容.
主管面试
主管面试问的问题就不是专业性的了, 当天准备以下内容即可:
- 自我介绍
- 项目经历&工作经验
- 自身优点缺点
- 需要注意的是, 自身缺点主管会问你怎么克服, 比如给你一个需求场景, 碰到了你的缺点, 时间很紧, 怎么办
- 对华为的理解, 能否适应华为的环境
- 反问环节
- 这部分你可以问你想问的任何问题. 包括如果确认实习, 可能在哪所城市之类.
|