华为OD面经(C++)
本人某985科班本科,非应届也无工作经验,二战无了后试了华为德科od,给各位同鞋提供些许经验。
一、面试流程
- 机试
- 性格测试
- 技术一面
- hr面(有的同志似乎没有这一步)
- 技术二面
- 综面(主管面)
二、机试
一共3道题,分别100,100,200,共400分,两个半小时。多少分算通过不清楚,每道题大概11个样例,通过每个样例都算分,所以如果只过了一部分也别着急。刷牛客上的华为机试或力扣都可
机试很重要的,满分最好,会影响后续面试官对你的初印象
1. 最大数
https://leetcode-cn.com/problems/largest-number/
2. 乱序数组找出两数之和绝对值最小
没找到力扣原题,给一个乱序数组(里面可能有正数,负数和0,可重复),找出两个数使两数之和的绝对值最小
思路:遍历数组,找出0有几个,所有正数分一个数组,所有负数分一个数组,然后分别按从小到大和从大到小排序。需要考虑两个0、一个0、没有0、正数组为空和负数组为空的情况。
大致是用双指针,具体做法可百度
3. 完成任务的最少时间段
又没找到原题,给一个数组task(task[i]为任务编号,可能有重复的编号,编号范围为1-5000)和时间间隔Time,完成一个编号为J的任务需要一个时间段,但在接下来Time时间段内不可再执行任务J。
例如task为 [1,2,3,3,2,1] ,Time = 3,那么完成任务的顺序可为【1,2,3, ,1,2,3】,任务1之后的3个时间段内不能再执行任务1,因此需要空闲一个时间段。
思路:两个数组,一个存未完成的各任务的数量,一个存各任务的冷却时间,while每个时间段,每个时间段中减少各任务冷却时间,同时找出任务数最多且没在冷却中的任务,执行。
三、性格测试
去百度吧,这个不好说怎么过
四、技术一面
面试官是本部门的技术人员,主要分三步
1. 个人介绍,问简历和项目工作经验,没有的话就只能找本科的各种课程项目了,尴尬
2. 问C++八股文(具体去百度吧,恶补一下就差不多了)
3.手撕代码,删除字符串所有相邻重复字符https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/
由于题目简单,40min就完了
五、资格面试
聊天吧主要,面试官是负责收集你面试资料的人(大概),问问预期薪资啊,这几年干嘛呢,对公司部门了解啊,对OD,加班的看法啊等等吧
六、技术二面
这一步需要向公司报备,可能在资格面试之前。和一面步骤差不多,3步的顺序因面试官而异。由于是在公司角度考察你,所以更严格些(气场真的强,见面就给我一种我要挂的感觉),足足面了一个多小时。
1. 个人介绍,问简历,问项目经历。简历上好多东西都被深挖了(可能是我没工作经历,面试官找不到别的点了),磕磕绊绊半个小时
2、手撕代码,以为是算法题,却是口述题目。对一个m*n数组旋转90度并输出,乍一找规律还挺懵,尤其还特别紧张,搞了20分钟吧好像才调出来了。然后面试官说我给你增加点难度吧,一个
m*n数组按Z字形输出,迷迷糊糊10分钟搞定(幸运的是没bug)
比如【1,2,3,4
5,6,7,8
9,10,11,12】
输出为:
1
2 5
3 6 9
4 7 10
8 11
12
3. 问C++八股文,由于前面时间太长,只问了几个就完事了
七、主管面
聊天式,问对公司和部门的了解,期望薪资,家庭情况,balabala,很快啊,我一个左勾拳就迎上去了,20min不到
八、经验总结
1、多刷题,机试看脸会不会遇到卡壳的困难题,我是力扣400题,周赛前两题,第三题看脸的水平
2、多看看八股文,免得被KO。刷完才知道自己啥也不懂啊
3、有啥说啥,简历和谈话不要过分夸大自己,实在答不出就说自己不知道、不太了解,个别题答不出没事
4、问简历,项目,工作的事可能会有一些奇怪的问题,不要沉默,哪怕有些切入点不对也要有理有据,沉稳的说一些自己的想法,面试官会看你的应变反应的。一定不要慌,不要急,淡定。
5、HR小姐姐很nice,说话又好听,整个流程我用了不到两周(时间可能和你的面试表现还有公司需要新人的迫切程度有关),几轮面试都自我感觉良好,所以面试官也没有卡我。
6、对外包的看法,没办法啊,二战失利,大厂太难,今年又大量裁员,只能找机会以后转华为正式啦,工资还可还要啥自行车啊。
7、正在等offer,有啥问题可问,回复时间不确定
#华为社招OD面经##面经##社招##华为##C++工程师#