首页 > 华为OD机考心得
头像
牛客347439639号
编辑于 2022-03-08 10:42
+ 关注

华为OD机考心得 内部员工回复

本人是在一个勉强一本的院校毕业的,学的也并不是计算机软件方向。因为并不太满意所学的专业的就业情况,感觉互联网行业会更加有前途,于是报了个Java的培训班学习了大概一年左右,才投递的简历。本来没想着能有大厂来找,没想着被华为给捞了。虽然OD基本算是外包的形式,但是毕竟是在华为研究所内工作,也能参与到项目的开发,最关键的是钱也能给到位,所以个人觉得算是个不错的机会。

华为OD的面试首先会有一轮机考,机考是在牛客网上做编程题。总共三道题,据说是一道简单两道中等,总分400分,150分以上就算通过。因为及格分数定的不是特别高,而且在培训期间个人也断续在牛客网和力扣上刷过题,所以感觉有机会,便答应了尝试一下。

机考语言是可以自己选的,本人只会Java所以就选的Java。机考与牛可网上的模拟考试差别不大,要开摄像头,不允许切屏(也就是没法用做题的电脑百度),然后要求用手机扫一下码,然后手机就进了一个小程序,估计离开这个小程序就算作弊了。

第一道题非常简单,求括号的最大嵌套深度。也就是会给出一个有效的带括号的字符串,比如"(1+(2*3)+((8)/4))+1",然后求括号的最大嵌套深度,这个例子里就是3。既然都是有效的字符串了,那直接for循环从左到右遍历呗,遇到左括号把答案+1,遇到右括号-1,不断更新最大值就行了。力扣上有一样的题,这里就不多描述了:

https://leetcode-cn.com/problems/maximum-nesting-depth-of-the-parentheses/
AC的代码如下:

第二道题,求解连续数列,题目描述忘了,简单来说就是给一个总和,以及连续正整数的个数,然后求这几个连续正整数的值。比如说和为525,数列个数为6,那么输出应该是85,86,87,88,89,90(85+86+87+88+89+90=525)

这道题也不算难,仔细想想就是一道数学题,假设数列的第一个数为x,那么有(x)+(x+1)+(x+2)+(x+3)+(x+4)+(x+5)=525,化简一下就是6x+(1+2+3+4+5)=525,括号里的数其实就是从1开始,差为1的等差数列,那公式就是(1+2+3+4+5)=(1+5)*5/2=15,当然不知道这个公式也没事,反正让机器遍历计算一下就完了。再根据这个思路一般化,设和为S,数列个数为n,那么有n*x+n*(n-1)/2=S,推出x=(S-n*(n-1)/2)/n(不知道等差数列的求和公式的话就是x=(S-(1+2+…+n-1))/n,其实也复杂不了太多)

第三题,数组去重和排序。简单来说就是给一个乱序的数组,比如1,3,2,3,3,2,4,4,4,5 ,先去掉所有重复数字,然后按去重前数字出现的次数从多到少排序,如果出现次数一样就按第一次出现的顺序来排序。比如上面的例子最后答案就是3,4,2,1,5。个人对这个问题的思路是可以建两个map,一个记录每个数字的出现次数,另一个记录数字第一次出现的位置,完了对去重后的数组按照这两个map的记录进行排序。其实也不算难,但是当时很紧张而且也没什么时间了,就没有写出来,最后直接返回了用例里的答案,管他呢,至少也有个几分吧。

总结一下,OD的机考难度不算特别高,如果经常刷牛客和力扣上的题的话,至少及格肯定是没问题的。考题的偏好的话,基于自己做的和参考其他的OD考试帖子,感觉比较喜欢考数组和字符串的问题,大家刷题可以着重注意一下这种类型的题!

补充一下,考试一定要多点提交,哪怕不能保证AC,只有部分用例通过也要提交,提交了过了多少用例就能拿多少分,有时候离通过可能就差这么几分。
最后,祝大家考试顺利!

--------------------------------------------------------------------------
更新!
感谢各位的关注,前段时间太忙了没空和各位互动,现在更新一下后续:
先回答一下各位问的比较多的问题:
Q1. 华为机考是核心代码模式还是ACM模式:是ACM模式,也就是说需要自己构造输入输出
Q2. 机考需要手机扫码吗:需要,防止利用手机作弊
Q3. 机考可以用本地的ide吗:可以的,不过由于机考会录屏,所以最好不要在ide里套模板

在通过机考后会发一个性格测试,这个没什么好说的,注意选轻松快乐压力小的选项就行,接口人还特地强调了要保持前后一致。
之后就是两轮技术面了,根据接口人说的主要是会面基础知识,项目(工作)经历和手撕代码,基础知识我记得问了Java的常用关键字,接口的用法,还问到了面向对象和面向过程的区别(这个答的不是很好),手撕代码感觉是最重要的环节,两轮分别问了判断回文串和二分法,和机考不同,都是很直白的直接问算法,没有像机考那样,题干都要理解半天。大概的写一下核心代码就可以了。
面试通过后就没什么特别的了,主管聊hr聊最后就是发offer体检和入职,整个过程还是比较顺利的。

最后,希望这篇笔经能对各位有所裨益,也衷心祝愿各位能尽早入职心仪的公司!

全部评论

(25) 回帖
加载中...
话题 回帖