华为od面经
前言:
已经收到offer啦,还未入职。上海终端软开岗,定级d2。在牛客看别人的面经受益颇多,故也写篇面经希望给后来者一些帮助。
非常感谢我的对接人蔡香云(牛客主页: https://www.nowcoder.com/users/408613251),整个面试过程中非常负责、认真仔细且有耐心。在面试过程中如果有新进展,他会很快发消息告知。而且回消息很有耐心。对于面试的每一项流程的注意点,也会叮嘱。如果大家对于华为od感兴趣,非常推荐大家跟这位负责的HR交流并投简历。
个人背景:
2022届,目标院校211本,科班,0工作经验,gap一年(自毕业后无工作)
项目是学校里的。无实习。
技术栈:C++
流程简略版:
8.2 找到蔡香云HR投简历
8.6 进行机考
8.7 进行性格测试(即综测)
8.10 资面
8.14 技术面1
8.16 技术面2
8.22 技术面3(因为1,2轮技术面定级不一致,所以进行了加面)
8.24 主管面
8.24 提交材料,准备审批
8.29 提交材料后还未进入审批通道,HR帮忙催流程
9.4 HR告知审批通过
9.7 offer下发
流程详细版:
8.2 投简历:
投简历前,自己算法刷的差不多,稍有把握。看了牛客上面很多hr发消息,觉得蔡香云hr发消息很积极,而且评论区也常常能看见他的id和头像,于是私信问了自己这种情况是否有机会进入华为OD入职。告知有机会后,便加微信投简历,发身份证号码约机试,然后HR发机考资料叮嘱好好准备机试。因为gap了一年,所以如果机试考高分,便更有利于自己入职,且在部门上有更多选择。
8.6下午 机考
自己的算法准备情况:《剑指offer(专项突破版)》全部刷完,牛客网华为机试刷了10道左右简单题,CSDN上买了华为od机试专栏刷了部分真题
专项突破的练习题类型有:整数、数组、字符串、链表、哈希表、栈、队列、树、堆、前缀树、二分查找、排序、回溯法、动态规划、图
csdn上买了梦想橡皮擦的华为OD机试真题和算法大师的2023华为OD机试(A卷+B卷)
投简历前,主要使用算法大师专栏内的在线OJ,独立思考然后在线评测。(主要还是刷比较擅长的知识点的题,跟leetcode题比起来,很容易有思路,但是实现稍稍麻烦点)
约机考后,时间比较紧,使用梦想橡皮擦的专栏,优先刷高频试题,自己有把握有思路的直接跳过,没思路或不擅长的内容花时间研究。
我的机试成绩是400分。
总的来说,第一题碰到了原题(运气好,此时应注意自己的代码重复率不要过高)。
第二题第三题是简单的动态规划和回溯法(跟leetcode的动态规划和回溯法比起来,难度不大)。
机考时,允许使用草稿纸,允许使用本地ide(我没使用,所以本地通过网页不通过的编译问题我没遇上)。
题不难,所以时间上用了1.5小时,检查后就提交了。
机考第一题:(100分)整数编码
题目
实现一个整数编码方法,使得待编码的数字越小,编码后所占用的字节数越小
编码规则如下:
1.编码时7位一组,每个字节的低7位用于存储待编码数字的补码
⒉.字节的最高位表示后续是否还有字节,置1表示后面还有更多的字节,置0表示当前字节为最后一个字节
3.采用小端序编码,低位和低字节放在低地址上
4.编码结果按16进制数的字符格式进行输出,小写字母需要转化为大写字母
输入描述
输入的为一个字符串表示的非负整数
输出描述
输出一个字符串表示整数编码的16进制码流
机考第二题:(100分)求最小步数
题目
你在一个一维的数轴上,起始位置为0。你每次只能走2步或3步,无论是向左还是向右。有时你可能需要走到负坐标上去,才能最终到达你的目标位置。
任务:
给定一个坐标点,找出到达那里的最小步数。
输入描述
—个整数n,表示目标坐标位置。(1<=n<=109)
输出描述
—个整数,表示从0到达坐标n需要的最小步数。
机考第三题:(200分)代表团坐车
题目
某组织举行会议,来了多个代表团同时到达,接待处只有一辆汽车,可以同时接待多个代表团,为了提高车辆利用率,请帮接待员计算可以坐满车的接待方案,输出方案数量。
约束:
1.一个团只能上一辆车,并且代表团人数(代表团数量小于30,每个代表团人数小于30)小于汽车容量(汽车容量小于100)
2.需要将车辆坐满
输入描述
第一行代表团人数,英文逗号隔开,代表团数量小于30,每个代表团人数小于30
第二行汽车载客量,汽车容量小于100
输出描述
坐满汽车的方案数量
如果无解输出0
8.7日上午,hr告知了机考成绩,并祝贺了我考高分。然后给发资料,叮嘱一定要对性格测试(即综测)上心,综测挂了也是要挂流程的。
8.7下午 综测
华为od的性格测试看了很多,包括以下两篇:
华为OD岗位,说说我的了解,欢迎大家讨论(性格测试篇)(https://www.nowcoder.com/discuss/513660843440066560?sourceSSR=users )
华为OD性格测试解析(https://www.nowcoder.com/discuss/453611382497468416?sourceSSR=users)
8.7日下午进行了综测,网站上偶有抽搐情况的发生,刷新即可解决问题。
8.8 签署了份公司隐私协议
8.9下午 接到了个华为公司的电话,推荐到了终端部门,讲了讲部门的工作方向和新员工的培养。然后开始约此部门的面试。
约面试后,hr发了面试的主要考察点和注意事项。(hr事无巨细)
8.10下午 资格面试
技术方向就问了最近的学习内容,由于还未进行技术面,所以没有过多问技术内容。生活上问了问gap背景(为什么gap,毕业后为啥没找工作,大四找工作情况和大四那年的考研是否参加)、自学能力、为什么选择上海(同学在哪些城市就职,家乡在哪)、期望薪资。
反问:问了部门工作方向、od与正式员工的比例、转正率(面试官回的是od试用期转od正式工的概率很大,我自己问的也不清楚,其实是想问od转内部自有的概率。也不好意思再问一遍。)
时间上用了20多分钟。
8.10下午,hr叮嘱要好好复习,准备算法、八股、自己的项目等等巴拉巴拉巴拉...
期间自己看了很多别人的八股面经,部分链接放下面:
c++ 常用面试题整理(不定时更新)(https://www.nowcoder.com/discuss/454697528508870656?sourceSSR=users$)
华为OD 二面面经 C++(https://www.nowcoder.com/discuss/511663484694769664?sourceSSR=users )
华为OD技术岗面经汇总:软开、算法、测试岗(https://www.nowcoder.com/discuss/516994428653809664?sourceSSR=users)
并把牛客上所有od面经里技术面提到的算法题过了一遍。
8.14上午 技术面1
询问项目->八股->算法
八股:讲讲stl容器(我主讲了序列容器、关联容器及其底层)、讲讲string(代替传统c字符串,接口很好用)、你讲string的时候提到了sort,讲讲逆序怎么对string排序(自写排序函数,lambda表达式,funtional头文件里的greater函数)
算法:leetcode27移除元素,简单题。(我自己用双指针,模仿remove函数,将待移除元素与末尾的进行交换)
算法使用本地ide写。编译成功后,面试官给的几个案例都通过了。(由于很久没有使用本地ide,出现bug时调试花了较长时间)
八股问的不多,回答的7788。算法题比较简单,面试官问有没有更好办法(回答使用remove()和erase()函数)。
总体来说,技术面问的很简单,算法题也简单。后来得知此面评级比二面低,主要问题在于0工作经验。
总用时约50分钟。
8.15上午 hr反馈一面通过了
8.16下午 技术面2
询问项目->算法->八股
面试官先让我讲讲自己的项目,然后基于项目问了点技术问题。
接着让我打开本地ide,然后手撕一道leetcode中等题 ,(剑指offer)字符串的排列
题目
输入一个字符串,打印出该字符串中字符的所有排列的数目。
排列里面不能有重复元素。
示例
输入:s = "abc"
输出:6(["abc","acb","bac","bca","cab","cba"])
没做过这道题,但做过类似题目。
类似题:leetcode46 全排列
根据类似题的思想做出这道题(使用哈希去重),然后面试官给的用例都通过了。使用白板功能给面试官讲解思路。面试官询问了时空复杂度(挺难讲的,最糟糕的情况是n!),又问了圈复杂度(不懂)。面试官说此算法功能没问题,但不够高效。然后面试官讲了他高效的数学方法。(恍然大悟,好牛)
接着面试官分享他的屏幕,叫我做两道题。
第一道:给一段类实现的代码,问代码有没有错误。
知识点相关:拷贝构造函数、深拷贝浅拷贝
没准确回答出。面试官讲解了代码里拷贝构造函数的问题(像上课,面试官老师很耐心)
第二道:给四个关键字private,....,friend,问哪个不是访问控制修饰符。(很简单,是friend)
然后拓展,询问不同的继承方式对访问控制修饰符的影响。
(以自己的理解回答了一部分,回答的有点绕口,面试官尝试理解,并耐心讲解)
很不一样的面试体验,像大学里上课交流的感觉。
用时40多分钟。
8.17日上午 hr反馈1、2面定级不一样,进行加面
hr鼓励如果三面定级高的话,工资会高很多。好好好,继续努力背八股、准备算法、回顾项目。
8.22日晚上 技术三面
八股->算法
因为没有工作经验,所以面试官直接开始问八股。
八股:讲讲关联容器及其底层,vector和list的底层、区别和使用场景,哈希表的底层,条件编译指令的功能,static关键字的作用,讲讲多态性和虚函数,虚函数表,基类指针或引用的静态绑定和动态绑定是什么,讲讲智能指针,讲讲struct和union的区别,讲讲内存对齐,int和char放在union占多少内存,讲讲dfs和bfs,讲讲单调栈
评价是基础挺牢的,看出来有好好准备。然后因为讲八股的时候有提到自己刷算法,最后给出的算法题也不难。
算法:简单题,leetcode141环形链表,判断链表中是否存在环
打开ide,直接手撕了leetcode模式下该算法的实现,没让编译。给了个用例,让我自己判断输出,然后发现了自己return语句的粗心。
评价是算法没啥问题,有小粗心也能很快发现。
用时30多分钟
晚上跟hr反馈了自己的面试经过和体验后,hr开始提醒准备审批材料。
不知道三轮面试具体定级,但最终定级是d2,所以猜测三面应该与二面定级一致。
8.24晚上 主管面+提交审批材料
感觉主管面的压力是最大的,因为面试官只问问题不作评价,气氛有些严肃。不知道自己有没有说错话。
面试官先让我介绍下自己的项目,然后问了gap背景,问了家庭支不支持自己去外地上班,问了问对加班的看法。
总之就是,我表达了自己的稳定性(家庭支持,很想入职,对该岗位很感兴趣)和抗压能力(加班肯定是接受的)。然后忐忑等待结果。(空窗很久啦,很想上班,还是希望顺利过主管面。)
8.24晚,主管面的2小时后收到了提交审批材料的邮件,主管面通过了。
然后也是当晚,把准备好的审批材料提交上去。
hr叮嘱注意作息,不要熬夜,准备体检。
8.25日早上 hr侧面告诉我定级结果(没直接说,我自己猜的定级),然后说我薪资要得有点少,争取帮我要高一点(hr主动提出来帮忙多要薪资,牛,好负责的hr,非常棒)
8.29日晚上 hr反馈说好几天了材料还没到审批通道,帮我催催
9.4日上午 hr反馈审批通过
9.6日晚上,hr反馈offer会在晚上或者第二天发到邮箱,并告诉我入职时间和薪资。在薪资方面,hr确实帮我提高薪资了,而且hr比我自己听到这消息还高兴。(好好好,一时之间分不清是谁的薪资提高了。再次重申,强烈推荐蔡香云hr!)
9.7日上午 offer发到邮件
准备入职的事情啦!非常感谢蔡香云hr全程的跟进与耐心的回复。非常感谢!