华为od面试
现在22岁,成专学历正在升成本,前端培训完干了两年外包,17k.
简历包装了下学历,写的是本科..
性格测试已经过了,想问下这个硬件水平能审批过吗,能的话我就稍微准备下一面了..
顺便分享下机试题和思路.
1.整理下题干就是给定一个的字符串,如:2,3,4,6,9; 找出存在几个最小公约数.
我的思路是:
转换成数组,写一个双循环,举例:如果2被%等于0并且两个数不相等,那就把2塞进一个新数组.
再对质数做单独处理直接扔进新数组.
然后再给新数组去重,获取新数组长度.
结果挺凄惨 30%左右的通过率.
2.整理下题干给三个参数a,b,c;
a:3;
b:[10,20,25,50,60];
c:2
长度为3的窗口在b数组中从左到右移动2位,找到移动过程中窗口包含的3个数字总和最大的数是多少.
我的思路是:
用splice来截取数组.
用参数c做限制写一个循环 b.splice(i,3).再把截取后的数组累加后扔进一个新数组.
需要注意的是splice会改变原数组,所以我每次循环会新深拷贝一个数组
然后用sort给新数组排个序,取第一位就好了.
结果同样不理想 35%的通过率..
3.给一个字符串伪数组 [ [20,16], [15,11], [10,10], [10,9], [3,4] ].
描述是长为数组第一位,宽为数组第二位的书,要从大到小垒起来.书不能旋转,并且长宽都要比另一本大才可以
要返回[ [20,16], [15,11], [10,10], [3,4] ]的数组长度4
我的思路是:
先JSON.parse转成数组.
考虑到给定数组不一定从大到小排列,先按数组第一位大小给数组排个序. arr.sort((a,b)=>b[0]-a[0])
用排序后的数组做个循环,如果数组当前元素的长宽比下一个元素的长宽都大的话就把当前元素push进一个新数组.
因为数组最后一位没有元素比较了,所以新数组长度加1可以了
通过率91%.