2024华为 od 社招面试题
今年的春招形式严峻,作者从去年底离职一直到今年4月初正式投递简历找工作,中间 gap 了3个月,到五一前拿到心仪的正式 offer,中间历时4个月。整个找工作的过程有着历时长、机会少、竞争激烈的特点,不过好事多磨总算是入职心仪的公司了。在这里秉着分享的精神,也为了更好地记录生活,今天记录下华为 OD 社招的面试过程,给大家的求职过程一些参考。
作者面试的岗位是安卓开发,考试的题库是 D 卷,应该是24年最新的题库。机试后两轮面试,作者加面一轮,不过那时入职新公司取消了三面。机试部分还是熟悉的三道大题,前两道各100分,最后一道200分,考试时间是150分钟。具体的题目我也记不清了,前面两道题目简单,对应 leetcode 上的简单难度。刷刷网上的华为真题差不多都能做出来。
之后的二面三面技术面都是上来甩一道笔试题,让面试者在本地的 ide 下敲代码,成功通过面试官给的几个测试用例即成功。笔试时间半个小时,过了之后问一些安卓Java 八股文。
一面:
实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。
如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。
必须 原地 修改,只允许使用额外常数空间。
示例 1:
输入:nums = [1,2,3]
输出:[1,3,2]
示例 2:
输入:nums = [3,2,1]
输出:[1,2,3]
示例 3:
输入:nums = [1,1,5]
输出:[1,5,1]
示例 4:
输入:nums = [1]
输出:[1]
提示:
1 <= nums.length <= 100
0 <= nums[i] <= 100
代码
public class ForWork {
public static void main(String[] args) {
System.out.println(Arrays.toString(ans(new int[]{3,2,1})));
}
public static int[] ans (int[] test){
int n = test.length;
boolean flag = false;
//反向遍历数组,一旦找到满足 test[i] > test[i-1] 则交换位置,即可满足变成下一个更大排序
for (int i = n-1;i >0;i--){
if (test[i] > test[i -1]){
int tem = test[i];
test[i] = test[i-1];
test[i-1] = tem;
//找到下一个更大排序则把标志位赋值为 true
flag = true;
break;
}
}
//如果没进行交换则把数组原地交换排序成最小排列,即升序
if (!flag){
int start = 0,end = n-1;
while(start < end){
int tem0 = test[start];
test[start] = test[end];
test[end] = tem0;
}
}
return test;
}
}
二面
给定一个包含正整数的数组 nums ,返回可以组成三角形三条边的三元组个数,时间复杂度尽可能低。 triangleNumber({2,2,3,4})=3, triangleNumber({4,2,3,4})=4
public class ForWork {
public static void main(String[] args) {
System.out.println(ans(new int[]{4,2,3,4}));
}
public static int ans(int[] test){
//该题目的重点在于需要先对数组排序
Arrays.sort(test);
int count = 0;
for (int i = 0;i < test.length-2;i++){
//从小到大遍历,a 为三角形的一条短边
int a = test[i];
for (int j = i+1;j < test.length-1;j++){
// b 为三角形的另一条短边
int b = test[j];
for (int k = j +1;k < test.length;k++){
//题目的另一个重点,组成三角形满足的条件——两条短边之和大于第三边
if( test[k] < a +b){
count ++;
}
}
}
}
return count;
}
三次便利时间复杂度 n*3,还能采用双指针继续优化,不过我当时没优化出来。
两个题目都不算难,大家平时有刷题目的话基本都没什么问题。现在的就业形势严峻,大家都困难,也希望我的记录能帮到大家。目前很多年轻人嘴上说着躺平,其实内心都比较焦虑,这种情况主要还是社会经济不景气,给到大家的压力太大了。不过找工作是一个双向匹配的过程,慢慢找总有一个岗位合适你。退一步讲,没有工作就会过不下去吗?工作只是生活的一部分,社会的不景气也只是暂时的。最后借用鲁迅先生的名言鼓励大家——愿中国青年都摆脱冷气,只是向上走,能做事的做事,能发声的发声。