#华为 #面经

作者:7天内只可修改1次
链接:https://www.nowcoder.com/discuss/835466?order=0&pos=29&page=3&source_id=discuss_center_0_nctrack&channel=-1&gio_id=-165****473179
来源:牛客网
https://www.nowcoder.com/discuss/957472
作为华为云大数据 招聘OD的负责人,我发现好多候选人总是挂在机考这一环节。按理来说,我们广大的程序员同学,应该最擅长编码才对。
经过我的实践,发现好多人挂的很冤枉,事先好多事情没给大家沟通清楚导致,这里我从头至尾说一下详细的注意事项和考试环节中的点,供大家做准备用。

  1. 我们需要先获取您的简历和身份证号,以及你计划要做机考的语言,用于在系统中锁定你的机试资格。此时仅是一个资格锁定而已。这个锁定是有有效期的,有效期内,其他部门是不能抢的,如果有效期内,候选人没有参加机考,则有效期过后,其他部门就可以获取了,可以重新安排。
  2. 当你开始练习并联系的没啥问题,感觉可以了,那就联系锁定你的人,给你发机考。机考是发送到你的邮箱的,这个邮件中的机考链接,有效期为7天(大约7天),机考邮件中会有明确说明。7天内任意时间,点击邮件里的考试网址参加考试即可。如果7天内没考,有可能需要隔30天才可以重新发机考,并且据说只可以重发一次(尚未验证),所以建议等你准备好之后再联系发送机考。宗旨就是:要么别发,要么就考。
  3. 在机考前,你可以先到牛客网练习一下,地址是: https://www.nowcoder.com/ta/huawei 。 这个练习的网址,里面是没有原题的。练习的网址主要是让你熟悉一下 ACM模式,即自己写输入输出,使用标准输入输出即可。另外,自己写输入输出,不代表输入全都是字符串。举个例子(鉴于篇幅问题,例子放在最后)
PS: 最近发现这个帖子里贴了好多题目,不确定是否真题,但大家可以去看看,练练: https://www.nowcoder.com/discuss/957472
  1. 考题一共三道,分值是100 100 200,通过多少用例,就得多少分。三道题累计得分, 150分就算通过,但分数越高,对你的定级越有帮助。定级越高 =  薪资越高。 定级分为 D1---D5,对应薪资范围不可在这里讲,但D1到D5对应的 绩效工资是 2k 3k 4k 5k 7k 。哦对了,很多部门在150分这个基础上有加码,150就像是我们高考时的一本分数线,并非你过了一本线,就可以上南大、北大 这种学校了,所以分数是王道,越高事越少。
  2. 考试时,可以用本地的IDE编写代码,然后在复制到机考页面提交。也允许在本地用纸笔辅助自己考试不限制切屏次数。考试时长是150分钟,即两个半小时, 考试通知中也会写。提交时点击 "保存并调试",就可以看到结果,并且不限次数。如果编译有问题,会提示具体编译报错。如果用例没全部通过,会告诉你通过了多少。但不会告诉你哪个用例没过,不然你穷举就把题目做对了。全部做完后,点击提交就行了。
  3. 题目一般不会有太极端的用例,比如 输入的字符串,长度 10个亿,没有。一般题目中都会说明的。如果你看不懂题,那题目下面是有输入输出说明的,仔细看看就可以。
  4. 当你确定要考试了,那么找到邮件中的考试通知, 先点击"确认是否参加考试",跳转到考试系统,然后就是 签字、调试摄像头、开启屏幕录制、提供一个二维码让你拿手机扫一下并保持在那个状态。
这里需要说一下,摄像头不要断,手机充好电,扫完码放一边,点击"点击确认是否参加考试"前,就把没用的网页都关掉(有同学在开考前百度了一下 如何处理字符串,结果被判作弊了,很冤枉)。

根据以往的经验发现常见的几个问题:
1. 总有人问第一题做不出来能不能跳过去,做完后面的再回来?  答案是: 可以,随你怎么跳, 每道题也不限制提交次数,提交次数多了也不扣分。
2. 总有人会出现“手机离开监控 ”的问题。请你到时候把手机卡拔了,连上WiFi和充电器,扫完码之后放一边别动它。
3. 总有人出现“与之前的人代码重复率大于80%”的情况。 你即便刷到过别人发的答案,也不要照抄,改变量名没用。最好抽取个函数什么的,把 for 改为 while 之类的,大改,不然会被判定为作弊,还需要澄清,很麻烦。
4. 总有人出现“摄像头异常关闭”、“屏幕监控异常关闭 ”的情况,大部分是因为你电脑登陆着  微信或QQ,中途弹窗弹语音弹视频导致,请你开考前,把一切无关的东西全关掉。




有些人不知道输入输出怎么写,这里举个例子吧。
ACM模式例子:
1
2
3
4
5
6
输入描述:
输入第一行是一个数字,代表了第二行的数组元素的个数: 3 
输入第二行是一个数组: 3 5 6
---------------------------------------
输出描述:
输出第一行是一个数字:11

那么,输入、输出怎么搞呢?

C语言:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#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++语言:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#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语言:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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语言:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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);
    }
}


JavaScript_V8:
1
2
3
4
5
6
7
8
varappleAmount = readline()
varweightList = readline().split(' ').map(val=>parseInt(val))
functionfunc(arr){
   let sum =0;     //计算过程忽略
   console.log(sum);
 
}
func(weightList)

PHP语言:
1
我不会。。。。

Python 3 语言:
1
2
3
4
5
6
7
8
9
10
#!/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有意向,可以点击下面的广告:
华为自研留学生校招(深圳,C++):







#华为面经#
全部评论
如果已经收到了机试链接,还可以申请改变考试时间是吗?
点赞 回复 分享
发布于 2023-02-24 14:55 广东
请问机试的成绩在哪里可以查询到呢
点赞 回复 分享
发布于 2022-10-16 13:52 江苏
这个帖子真心讲得很细心可惜机试都结束了,不然安利给朋友们了
点赞 回复 分享
发布于 2022-10-15 01:39 福建
请问机试的调试界面和自测输入的界面是跟牛客网上的一样吗
点赞 回复 分享
发布于 2022-10-13 10:14 广东

相关推荐

评论
10
36
分享

创作者周榜

更多
牛客网
牛客企业服务