目录
- 一、先介绍一下华为OD是个什么鬼?
- 1、华为OD背景
- 2、华为OD现状
- 3、华为OD趋势
- 4、华为OD介绍
- (1)人力外包
- (2)员工关系
- (3)工作关系
- (4)薪酬福利
- (5)工作时间
- 二、面试流程
- 1、机考
- 2、综测
- 3、业面×2
- 4、HR面
- 5、主管面
- 三、华为OD薪资待遇?
- 四、华为OD晋升空间?
- 五、举个例子,刷一道2023Q1 200分的题【快速开租建站】
- 1、题目描述
- 2、输入描述
- 3、输出描述
- 4、解题思路
- 5、Java算法源码
- 6、效果展示
- 1、输入
- 2、输出
- 3、说明
- 六、华为OD去哪刷?
昨天群里有人问我,华为OD怎么样,好过吗?在哪刷题。
最近感觉华为OD很火啊,我来分享一下华为OD的机试题,争取做到有详细的解题思路,100%通过的详细代码,关键代码有注释。
王婆卖瓜,自卖自夸,很多小伙伴,通过刷我的这个题,通过华为OD的,真的为大家开心。
还有的小伙伴,把这个题全部都打印出来了,那么厚一本,我也是佩服,有此决心,何愁大事不成?
大家对华为OD还不是很了解。
一、先介绍一下华为OD是个什么鬼?
1、华为OD背景
过往“项目外包”主要针对非核心业务岗位,人员交付能力有限且稳定性不高。
19年开始探索并实行新的研发“人力外包”模式,按正式员工标准进行招聘(话虽如此,实际要求没那么高),由业务部门负责培养和管理,解决更为核心的业务问题,对于绩效优秀且能力突出的人才提供转正式员工通道。
2、华为OD现状
目前只开放软件研发岗位(含开发、测试、算法、大数据等),硬件岗位2022年起已停招,在职人数3W+,20年下半年-2022年底,转正人数已经超过3000人(入职人数和转正人数每月都是滚动变化的)。
从实际接触的部门情况来看,每个产品线严格来说每个部门的比例不尽相同,有些是在20%以下的,有些可以到50%,更高的能到80%以上(跟部门招聘要求、指标数量、OD基数等都有关)。
3、华为OD趋势
随着传统“项目外包”人员(如某软某通)无法进行华为工作级可信认证提交code,大批量被释放出华为项目;以及华为对OD招聘质量要求的提高。
同时外部经济环境持续不乐观,社招及校招HC收紧等因素,未来“招高质量OD转华为”会成为一种确定性的常态。
4、华为OD介绍
(1)人力外包
签约方为外企德科/科锐国际(人力服务公司),劳动合同期为4年,试用期6个月。
(2)员工关系
合同管理、五险一金、考勤发薪由外企德科/科锐国际负责;定级定薪、员工培训、工作安排、绩效评比和晋升等由华为负责。
(3)工作关系
和正式员工一起在华为研究所办公,工作内容基本没有差异。
当然也见过有些人进来做OD吐槽不用怎么写代码学不到东西的,这个其实跟你当时选择了什么部门什么团队有关系,部门和团队的项目定位决定了你的工作性质、学习资源和发展空间。
不存在核心非核心区别对待,主管和导师都是华为正式员工。
(4)薪酬福利
薪资结构:
- 基本工资+绩效工资+年终奖(2-4个月,一般绩效A-4个月,B-2个月);
- D1-D5分别对应华为13-17级,参考范围10-40K;
- 试用期内(6个月)工资不打折,按B绩效发绩效工资,转正时重新评绩效,一般分A、B、C三档(主要A或B,C概率较小),和正式员工分开评,半年评一次;
- 五险一金基数按基本工资,公积金比例5%-12%,具体看base地。
- 福利补贴:带薪年假、入职&年度免费体检、免费夜宵、班车/加班打车免费、下午茶、节假日礼品等。
(5)工作时间
- 上班8:0-9:00弹性(根据地域不一样有稍许差别),午休12:00-14:00,下班17:30-18:30(上下班时间一般跟所在项目组走);
- 一般一二四属于补工时到晚上20:30左右,三五正常时间下班(确保工时平均每天够8h,工时不需补且无加班需要,自己灵活安排下班时间,重点看产出);
- 周末双休,月末周六固定加班双倍工资,其他因业务需求指令性加班情况,可申请加班,按国家规定支付加班费。
二、面试流程
1、机考
可提供刷题资料/个别部门提供机考辅导。
2、综测
必须通过机考+综测才可以安排面试。
3、业面×2
围绕计算机/编程基础+项目经历+代码能力进行考察。
4、HR面
围绕求职动力、稳定性、薪酬情况等进行考察。
5、主管面
围绕综合素质如沟通表达能力、培养潜力、团队/业务匹配度、项目经历等进行考察。
备注:全流程线上进行,一般机考通过后2-3周内出offer。
三、华为OD薪资待遇?
在华为od岗的薪资问题,并没有比市场上多多少,具体根据个人职级和绩效而定,初入职场的应届生薪资大概在20K-30K左右,相对于其他行业来说,华为的起薪是比较高的。
此外,华为的薪资结构包括基本工资、年终奖、分红等多个部分,其中年终奖的比例一般在15%以上,具体数额因个人绩效而定。此外,华为还有一些股票和期权等长期激励方式,可以让员工分享公司的成长红利。
总的来说,华为的薪资待遇相对较好,但是具体的薪资水平还是要根据个人的职级和绩效而定。
四、华为OD晋升空间?
华为OD岗位的晋升空间取决于个人的能力和表现,以及公司的发展战略和需求。根据华为公司的招聘信息和应聘者的反馈,OD岗位的晋升通常有以下几个方向:
- 技术专家:可以继续深入学习和研究技术,成为该领域的专家,具备带领团队的能力。
- 管理岗位:可以从技术专家向管理方向发展,承担更多的管理工作,带领团队完成项目。
- 跨部门转岗:有些候选人可以通过在不同部门的工作经验,积累跨部门工作的经验,然后转到其他部门,进行业务拓展或管理。
- 内部培训和发展:公司会定期组织内部培训和发展计划,为员工提供提升自身能力的机会,支持员工在公司内部寻找更适合自己的发展道路。
总的来说,OD岗位的晋升空间相对较广,但是需要候选人不断提升自身能力,积极参与公司的内部培训和发展计划,才能在职业生涯中获得更好的发展机会。
五、举个例子,刷一道2023Q1 200分的题【快速开租建站】
1、题目描述
当前IT部门支撑了子公司颗粒化业务,该部门需要实现为子公司快速开租建站的能力,建站是指在一个全新的环境部署一套IT服务。
每个站点开站会由一系列部署任务项构成,每个任务项部署完成时间都是固定和相等的,设为1。部署任务项之间可能存在依赖,假如任务2依赖任务1,那么等任务1部署完,任务2才能部署。任务有多个依赖任务则需要等所有依赖任务都部署完该任务才能部署。
没有依赖的任务可以并行部署,优秀的员工们会做到完全并行无等待的部署。
给定一个站点部署任务项和它们之间的依赖关系,请给出一个站点的最短开站时间。
2、输入描述
第一行是任务数taskNum,第二行是任务的依赖关系数relationsNum接下来 relationsNum 行,每行包含两个id,描述一个依赖关系,格式为: Di Dj,表示部署任务部署完成了,部署任务j才能部署,IDi 和IDj 值的范围为: [0,taskNum)注:输入保证部署任务之间的依赖不会存在环。
3、输出描述
1个整数,表示一个站点的最短开站时间。
4、解题思路
- 创建map,用于存储任务之间的依赖关系,key为任务编号,value为依赖该任务的任务列表;
- 循环读取num数据,将依赖关系存储map;
- 创建一个长度为n的数组,存储每个任务的最小启动时间;
- 创建变量time,用于记录最短开站时间;
- 递归调用,计算任务的最小启动时间;
- 如果当前任务没有依赖,表示该任务可以立即启动,将其最小启动时间设置为1,并返回1,停止递归;
- 遍历当前任务依赖的任务列表,递归调用getMinTime函数来获取依赖任务的最小启动时间,取其中的最大值作为当前任务的最小启动时间minDependTime;
- 当前任务的最小启动时间为依赖任务的最小启动时间加1,将该值记录到timeArr数组中,并返回该值;
- 输出最短开站时间time;
5、Java算法源码
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
int num = Integer.parseInt(sc.nextLine());
// 1、创建map,用于存储任务之间的依赖关系,key为任务编号,value为依赖该任务的任务列表
Map<Integer, List<Integer>> map = new HashMap<>();
// 2、循环读取num数据,将依赖关系存储map
for (int i = 0; i < num; i++) {
String line = sc.nextLine();
String[] arr = line.split(" ");
int left = Integer.parseInt(arr[0]);
int right = Integer.parseInt(arr[1]);
List<Integer> list = map.getOrDefault(left, new ArrayList<>());
list.add(right);
map.put(left, list);
}
// 3、创建一个长度为n的数组,存储每个任务的最小启动时间
int[] timeArr = new int[n];
// 4、创建变量time,用于记录最短开站时间
int time = 0;
for (int i = 0; i < n; i++) {
// 5、递归调用,计算任务的最小启动时间
int needTime = getMinTime(i, map, timeArr);
time = Math.max(time, needTime);
}
// 9、输出最短开站时间time
System.out.println(time);
}
/**
*
* @param index 当前位置
* @param map 输入的数据集合
* @param timeArr 任务时间
* @return
*/
public static int getMinTime(int index, Map<Integer, List<Integer>> map, int[] timeArr) {
List<Integer> list = map.getOrDefault(index, new ArrayList<>());
// 6、如果当前任务没有依赖,表示该任务可以立即启动,将其最小启动时间设置为1,并返回1,停止递归
if (list.size() == 0) {
//最小启动时间
timeArr[index] = 1;
return 1;
}
int minDependTime = Integer.MIN_VALUE;
// 7、遍历当前任务依赖的任务列表,递归调用getMinTime函数来获取依赖任务的最小启动时间,
// 取其中的最大值作为当前任务的最小启动时间minDependTime
for (int taskNum : list) {
// 通过递归取最小启动时间
if (timeArr[taskNum] == 0) {
timeArr[taskNum] = getMinTime(taskNum, map, timeArr);
}
minDependTime = Math.max(minDependTime, timeArr[taskNum]);
}
// 8、当前任务的最小启动时间为依赖任务的最小启动时间加1,将该值记录到timeArr数组中,并返回该值
int needTime = minDependTime + 1;
timeArr[index] = needTime;
return needTime;
}
6、效果展示
1、输入
5
5
0 4
1 2
1 3
2 3
2 4
2、输出
3
3、说明
有5个部署任务项,5个依赖关系,如下图所示。我们可以先同时部署任务项0和任务项1,然后部署任务项2,最后同时部署任务项3和任务项4。最短开站时间为3。
六、华为OD去哪刷?
华为OD的真题确实不好找,网上的资源鱼龙混杂,难以分辨,而且一般都没有解题思路,有的代码都跑步起来,哎,一地鸡毛…
我正好也考过华为OD,我把之前刷过的题,分享给大家,大家做个参考。
1、华为OD机试真题 Java 实现【最多提取子串数目】【2023Q1 100分】
2、华为OD机试真题 Java 实现【不爱施肥的小布】【2023Q2 100分】
3、华为OD机试真题 Java 实现【猜字谜】【2023Q1 100分】】
4、华为OD机试真题 Java 实现【微服务的集成测试】【2023Q1 100分】
5、华为OD机试真题 Java 实现【字符串重新排序】【2023Q1 100分】
6、华为OD机试真题 Java 实现【知识图谱新词挖掘1】【2023Q1 100分】
7、华为OD机试真题 Java 实现【寻找关键钥匙】【2023Q1 100分】
8、华为OD机试真题 Java 实现【静态代码扫描服务】【2023Q1 100分】
9、华为OD机试真题 Java 实现【新员工座位安排系统】【2023Q1 100分】
10、华为OD机试真题 Java 实现【贪心的商人】【2023Q1 100分】
🏆本文收录于,华为OD机试(JAVA)(2022&2023)
本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。