华为OD上岸全流程分享:从机考到谈薪,我的完整面试经历
Part1. 面经
时间线
- 机考:11月16日
- 性格测试:11月19日
- 资格面试:11月21日
- 技术一面:11月24日
- 技术二面:11月26日上午
- 主管面试:11月26日下午
- 谈薪资:11月26日面试主管面一个小时之后,通了电话
机考
找终点(你们能在OJ上做到这个题有我很大功劳😎,我机考最后半小时手抄到草稿纸上了,所以这道题放心做)
考勤信息(做过的滑窗原题)
学生方阵(这个题我也手抄到草稿纸上了,也反馈给了天哥,但是OJ上还没有上新,应该是天哥还在构造测试用例,相信很快可以做到)
许老师注:本题在我们的OJ上是这题【模拟】2024E-最大相连男生数
更多机考经验见Part2
性格测试
性格测试没什么太多好说的,Windows分屏,起!洞!两个浏览器标签页,一个放天哥文档,一个做性格测试。碰都不会选的,Ctrl + F搜索一下。碰到没见过的也已经反馈给了天哥。但是天哥说这个也没太大的反馈必要,因为性格测试总不能做满分吧……
资格面试(25min)
问了这些:请自我介绍。在校期间印象深刻的经历。对华为公司的印象(你眼中的华为公司)。你预期中,来华为后的工作模式与工作状态。你认为从学生到职场人的转身,应该注意什么。
技术面试
我一共有两个在校期间的小项目,一个毕设,一个是课设。
技术一面(25min)
项目八股环节(15min)
0八股,真的一道都没问。一直在问我的项目,这个面试官好像对我的毕设很感兴趣,毕设问的很细。还有一个关于openEuler的项目,我大概说了一下。然后面试官问我说你自己做的话(因为我有提我是跟着教程做的),能做到什么水平。
我:Makefile都不一定能写下来,但是教程里涉及的指令我都学会了,你愿意考的话可以考考我。
面试官:小伙子有什么说什么挺好的,我们直接手撕吧
手撕代码(10min)
一道很简单的题,10分钟搞定。就是原题没记下来,我大概回忆一下,不保证准确:
给定字符串,统计其中出现次数最多的字母,并输出。如果出现次数最多的字母有多个,那么输出这些字母中字母序最小的。
技术二面(45min)
项目八股环节(20min)
这个面试官首先问了我的课设(openEuler那个),然后问了一个相关的问题:如果你负责开发操作系统的文件系统,你会如何优化大文件的读写速度?(我说我不懂,我猜了三个cache, 并行读取,元数据。面试官说我大方向猜对了)
然后问了我的课设,并问了一个相关的问题:LSTM和BiLSTM的区别?(因为我的毕设是深度学习的)
然后是一道八股:
- 面试官:是否使用过装饰器?
- 我:没怎么用过,写记忆化搜索会用@cache偷懒
- 面试官:他有什么作用?
- 我:(内心OS:我靠,这个天哥的文档里有,我那部分正好没看)啊……,我不太懂这个的实现,我可以猜一下……。应该是Python解释器会开内存维护一个数据结构来记录函数的各级传参和返回值。如果传参相同就直接返回吧?我也不太明白……
- 面试官没说什么,所以我也没底
手撕代码环节(25min)
仍旧是没有记录原题,凭记忆回忆一下:
给定一个有序的数组,数组中的数可正可负。返回每个数的平方组成的新数组,要求新数组仍保持升序。(面试官特别强调不能调用Python的排序相关API,并且提示不用自己首先一个排序算法,因为那样不健康)
我读完题直接给他讲了思路:从第一个非负数开始,用背向双指针归并排序即可。但是实现的时候有一些边界条件写错了。最后没撕出来,但是面试官看我写的基本对,就打断了。让我讲了一下,结束了。
结束之后自己看代码,发现归并时候的>写成<了。唉,很低级的错误,不知道有什么影响。但是这个给大家的经验就是,手撕代码有思路可以先讲出来,能讲多少是多少。这样即使有意外,也问题不大。
主管面(15min)
- 我看到你去年考研,考研失败才来找工作,请问后续是否有深造打算?
- 在校期间,参加过什么开源项目?
- 你简历上的项目,做项目中遇到什么问题?如何解决的?
Part2. 机考备考过程
这个不属于面经的部分,是水群等Offer期间友友们问的一些问题,大多已经在群里回复,这里做一个记录,同时对于部分问题,更详细的解释了自己的情况。
- 备考时间:110+天
- 机考成绩:400分
备考状态时间线
7月21回家,玩到8.1。开始每天学一学,跟家里人吵吵架。然后每天晚上emo一下:为啥没考上研,为啥大三没出国(学校有那种联培),总之这段时间状态不是很好。到9月初,家里人逐渐支持我。但是此时吹牛说下个月就要去上班了,搞得自己每天很焦虑。效率比之前略好,但也不很好。这期间磨完了动态规划之前的内容。
10月黄金周,狠狠摆了几天。黄金周回来重做了之前做的题,然后开始50天的劳逸结合的良好生活状态。
这里的状态小记主要是给大家一个时间安排的参考,我觉得如果能投入的学2个月,就足够稳机考满分+手撕熟练。但是大多数人其实都做不到高考考研那种投入水平,那拉长战线,休息休息,也不要太焦虑。
备考经验小记
我如何使用吴师兄+天哥的资料
因为是科班的,之前多少也做过算法题,只是没有系统性的学过。(算法设计课系统的带过,但是自己不练,很快就忘了。也就是学校的课几乎没发挥什么作用。)刚开始的大多数题都是看懂例题的飞书题解,然后自己在IDE里按照思路重写一次。然后去挑战作业题,一般5,6道可能会卡1道。然后卡的题再去看题解,看懂后按照思路在IDE里复现即可。(这里一定不要照抄!照抄很快就会忘!)
视频几乎没有看过,在飞书看不懂,网上查不到的时候,会看天哥的视频课。不看视频的原因主要是天哥的视频都比较长。我一看长课就困……。这个因人而异,我只是提供一个没怎么看课,也拿到不错结果的样本,不具有普遍代表性。有了我这个样本,或许你时间紧张就也能放心地只看题目,不看视频了。
课外资料推荐及我的使用方法
这里向大家Notion系笔记软件:Notion, FlowUS, SiYuan, 飞书文档
20节班课,每一节我都创建了这种Markdown页面,并将OJ链接嵌入题目标题中。这样点击就可以直达OJ了。然后每一道题的自己解法贴在下面就OK了。这样可以记录自己的解法,如果备考周期很长,记录自己的解法还是有利于复习的,同时,OJ链接也能让你快速重做一道题目。(不过我这种行为也是为了满足我的收集癖,这样可以督促我做题)
对于0x3f的讲解,树形DP机考很少考察,单调队列机考并不考(但我也学了,有余力就学吧)。
0x3f留的作业,和天哥这边的例题作业互有重叠。如果你也用Notion系笔记软件这样整理过,那么很快会根据这些重叠得出哪些题是种子题目,种子题目需要烂熟于心。
一些想说的话
我觉得大家做会天哥的例题+作业题和0x3f的所有例题(不包括0x3f的作业题,这组题被我称为例题组),就可以冲机考了。并没有必要把每一道出现过的真题都做一次。我其实真题没有做多少,差不多做了整个OJ(300-400题)的三分之一(150题上下)就去考了,也很幸运的遇到两道OJ里没有的题(对于我这种做题少的来说当然是幸运了)。因为类型就是那些,我觉得如果真的做好这些具有代表性的题目,遇到新题触类旁通也是自然而然的。如果真的不放心,例题组二刷+7-8次模拟机考之后,就上考场吧。不要让自己陷入无止境的备考,长时间抗压不利于身心健康……
解释一下7-8次模拟机考怎么来的,我参加了3次天哥的,然后剩下都是我按照分值在OJ里抽题,自己卡时间做的。天哥的三次:340,400,160。自己的4次:400,250,400,400。我所有的模拟机考都是在最后三周进行