关于华为OD机考的注意事项
https://www.nowcoder.com/discuss/957472
那么,输入、输出怎么搞呢?
JavaScript_V8:
PHP语言:
作为华为云大数据 招聘OD的负责人,我发现好多候选人总是挂在机考这一环节。按理来说,我们广大的程序员同学,应该最擅长编码才对。
经过我的实践,发现好多人挂的很冤枉,事先好多事情没给大家沟通清楚导致,这里我从头至尾说一下详细的注意事项和考试环节中的点,供大家做准备用。
- 我们需要先获取您的简历和身份证号,以及你计划要做机考的语言,用于在系统中锁定你的机试资格。此时仅是一个资格锁定而已。这个锁定是有有效期的,有效期内,其他部门是不能抢的,如果有效期内,候选人没有参加机考,则有效期过后,其他部门就可以获取了,可以重新安排。
- 当你开始练习并联系的没啥问题,感觉可以了,那就联系锁定你的人,给你发机考。机考是发送到你的邮箱的,这个邮件中的机考链接,有效期为7天(大约7天),机考邮件中会有明确说明。7天内任意时间,点击邮件里的考试网址参加考试即可。如果7天内没考,有可能需要隔30天才可以重新发机考,并且据说只可以重发一次(尚未验证),所以建议等你准备好之后再联系发送机考。宗旨就是:要么别发,要么就考。
- 在机考前,你可以先到牛客网练习一下,地址是: https://www.nowcoder.com/ta/huawei 。 这个练习的网址,里面是没有原题的。练习的网址主要是让你熟悉一下 ACM模式,即自己写输入输出,使用标准输入输出即可。另外,自己写输入输出,不代表输入全都是字符串。举个例子(鉴于篇幅问题,例子放在最后)
PS: 最近发现这个帖子里贴了好多题目,不确定是否真题,但大家可以去看看,练练:https://www.nowcoder.com/discuss/957472
- 考题一共三道,分值是100 100 200,通过多少用例,就得多少分。三道题累计得分, 150分就算通过,但分数越高,对你的定级越有帮助。定级越高 = 薪资越高。 定级分为 D1---D5,对应薪资范围不可在这里讲,但D1到D5对应的 绩效工资是 2k 3k 4k 5k 7k 。哦对了,很多部门在150分这个基础上有加码,150就像是我们高考时的一本分数线,并非你过了一本线,就可以上南大、北大 这种学校了,所以分数是王道,越高事越少。
- 考试时,可以用本地的IDE编写代码,然后在复制到机考页面提交。也允许在本地用纸笔辅助自己。考试不限制切屏次数。考试时长是150分钟,即两个半小时, 考试通知中也会写。提交时点击 "保存并调试",就可以看到结果,并且不限次数。如果编译有问题,会提示具体编译报错。如果用例没全部通过,会告诉你通过了多少。但不会告诉你哪个用例没过,不然你穷举就把题目做对了。全部做完后,点击提交就行了。
- 题目一般不会有太极端的用例,比如 输入的字符串,长度 10个亿,没有。一般题目中都会说明的。如果你看不懂题,那题目下面是有输入输出说明的,仔细看看就可以。
- 当你确定要考试了,那么找到邮件中的考试通知, 先点击"确认是否参加考试",跳转到考试系统,然后就是 签字、调试摄像头、开启屏幕录制、提供一个二维码让你拿手机扫一下并保持在那个状态。
这里需要说一下,摄像头不要断,手机充好电,扫完码放一边,点击"点击确认是否参加考试"前,就把没用的网页都关掉(有同学在开考前百度了一下 如何处理字符串,结果被判作弊了,很冤枉)。
根据以往的经验发现常见的几个问题:
1. 总有人问第一题做不出来能不能跳过去,做完后面的再回来? 答案是: 可以,随你怎么跳, 每道题也不限制提交次数,提交次数多了也不扣分。
2. 总有人会出现“手机离开监控”的问题。请你到时候把手机卡拔了,连上WiFi和充电器,扫完码之后放一边别动它。
3. 总有人出现“与之前的人代码重复率大于80%”的情况。 你即便刷到过别人发的答案,也不要照抄,改变量名没用。最好抽取个函数什么的,把 for 改为 while 之类的,大改,不然会被判定为作弊,还需要澄清,很麻烦。
4. 总有人出现“摄像头异常关闭”、“屏幕监控异常关闭”的情况,大部分是因为你电脑登陆着 微信或QQ,中途弹窗弹语音弹视频导致,请你开考前,把一切无关的东西全关掉。
有些人不知道输入输出怎么写,这里举个例子吧。
ACM模式例子:
输入描述: 输入第一行是一个数字,代表了第二行的数组元素的个数: 3 输入第二行是一个数组: 3 5 6 --------------------------------------- 输出描述: 输出第一行是一个数字:11
C语言:
C++语言:
#include <stdio.h> int main(){ int input = 0, i = 0; scanf("%d",&input); unsigned int my_list[20000]; for(i = 0;i < input;i++){ scanf("%d",my_list+i); my_list[i] = (unsigned int)my_list[i]; } //输出: unsigned int output = 0; //计算过程省略 printf("%d",output); return 0; }
C++语言:
#include <iostream> #include <vector> using namespace std; int main (){ //接收输入n int n; cin>> n ; //接收n个数字输入并保存到rVec中。 vector<int> rVec; while (n){ n--; int temp; cin>>temp; rVec.push_back(temp); } //处理输出 int output; //这里有一大堆计算逻辑 cout << output << endl; return 0; }
GO语言:
package main import "fmt" func main() { for { var num int _, err := fmt.Scan(&num) if err != nil { return } code := 0 min := 10001 total := 0 for i := 0; i < num; i++ { var tmp int _, err = fmt.Scan(&tmp) if err != nil { return } } //处理输出: if code != 0 { fmt.Println(-1) continue } fmt.Println(total - min) } }
JAVA语言:
import java.util.Scanner; import java.util.Arrays; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int num = in.nextInt(); int[] arr=new int[num]; int i=0; while (in.hasNextInt()) { arr[i++]=in.nextInt(); } int sum=0; //去掉计算逻辑 System.out.println(sum); } }
var appleAmount = readline()
var weightList = readline().split(' ').map(val=>parseInt(val))
function func(arr){
let sum =0; //计算过程忽略
console.log(sum);
}
func(weightList)
我不会。。。。
Python 3 语言:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2022/8/16 19:31 # @Author : 华为云大数据开发工程师 # @File : test.py number = int(input()) data = map(int, input().split(' ')) #忽略计算过程,打印data里面所有数字的和 print(sum(data))
如果关于机考还有更多疑问,欢迎留言评论。
如果对于华为OD有意向,可以点击下面的广告:
华为自研留学生校招: