• 2024华为OD机考面试经验分享


    什么是华为OD

    华为OD因为还是外包性质,相对正编来说要轻松一些。(前提是你不想去卷A绩效),一般情况可以八九点就溜下班。然后工作环境的话,和正编一样。

    很多小伙伴其实都是从大城市想回老家,所以才选的华为OD吧,东莞/西安/成都 这几个地方超级卷。

    面试流程

    机考

    (三道编程题150分钟/两道简单题(每道100分)+一道中等难度题(200分))
    考试在牛客网答题,按照HR发你的考试攻略,在牛客网刷刷输入输出类的题目。

    北京地区要求300分过线,其他地区200多分就可以去干外包项目了。

    性格测试

    机考过了HR第二天就会联系你,给你发性格测试攻略。

    牛客网做题攻略

    参加考试前,需要充分了解牛客网答题的方式,如何测试,提交代码等等,否则你直接去考试会很懵逼。

    下面提供一些示例:

    题库连接

    牛客题库

    牛客网输入输出问题

    • 题目提到的输出需要使用console.log(),多行输出只要循环console.log()即可。
    • 特定行数的输入,需要自己用变量记录,然后使用变量编程实现
    • 程序readline读到的行内容是字符串,需要自己转换为number
    • 可以使用自测输入,来调试并且查看用例通过数量

    输入为一行

    输入:为一行,只包含小写字母的字符串
    输出:该字符串反转后的字符串

    const readline = require('readline');
    
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    });
    rl.on('line', function (line) {
        // 使用 console.log() 代替 return
        console.log(line.split('').reverse().join(''))
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    有确定行数的输入

    描述
    写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)

    数据范围:
    1 ≤ n ≤ 1000

    输入描述:
    第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。

    输出描述:
    输出输入字符串中含有该字符的个数。(不区分大小写字母)

    const readline = require('readline');
    
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    });
    const arr = []
    rl.on('line', function (line) {
        arr.push(line)
        if (arr.length === 2) {
            const obj = {}
            arr[0].toLowerCase().split('').forEach(item => {
                if (obj[item]) {
                    obj[item] += 1
                } else {
                    obj[item] = 1
                }
            })
            console.log(obj[arr[1].toLowerCase()] || 0)
        }
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    输出为间接确定行数

    输入:
    3
    2
    2
    1

    输出:
    1
    2

    说明:
    输入解释:
    第一个数字是3,也即这个小样例的N=3,说明用计算机生成了3个1到500之间的随机整数,接下来每行一个随机数字,共3行,也即这3个随机数字为:
    2
    2
    1
    所以样例的输出为:
    1
    2

    const readline = require("readline");
    
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout,
    });
    
    let lineNum = 0;
    let count = null;
    const result = [];
    rl.on("line", function (line) {
      if (lineNum === 0) {
          lineNum++;
          count = parseInt(line);
      } else {
          result.push(line);
          if (result.length === count) {
            function unique(arr) {
                let result = [];
                for (let i = 0; i < arr.length; i++) {
                    if (result.indexOf(arr[i]) === -1) {
                        result.push(arr[i]);
                    }
                }
                return result;
            }
            const uniq = unique(result).sort((a,b) => a-b);
            uniq.forEach(item => console.log(item))
          }
      }
    });
    
    • 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

    规定好方法名和变量名的

    JZ69 跳台阶

    选择JavaScrip Node环境

    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param number int整型 
     * @return int整型
     */
    function jumpFloor( number ) {
        // write code here
        if (number <= 2) return number
        return jumpFloor(number-1) + jumpFloor(number-2)
    }
    module.exports = {
        jumpFloor : jumpFloor
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    二叉树前序遍历

    https://www.nowcoder.com/practice/5e2135f4d2b14eb8a5b06fab4c938635?tpId=295&tqId=2291302&ru=/exam/company&qru=/ta/format-top101/question-ranking&sourceUrl=%2Fexam%2Fcompany

    输入:{1,#,2,3}
    返回值:[1,2,3]

    输入会为你构建成树。

    /*
     * function TreeNode(x) {
     *   this.val = x;
     *   this.left = null;
     *   this.right = null;
     * }
     */
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @return int整型一维数组
     */
    function preorderTraversal( root ) {
        // write code here
        let result = []
        function traverse(node) {
            if (!node) return
            result.push(node.val)
            traverse(node.left)
            traverse(node.right)
        }
        traverse(root)
        return result
    }
    module.exports = {
        preorderTraversal : preorderTraversal
    };
    
    • 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
  • 相关阅读:
    c++ ,python监控 进程 状态 fork
    iOS如何通过在线状态来监听其他设备登录的状态
    零基础学Java(1)初识Java程序
    【限定词习题】no / none / any
    SpringCloud Alibaba —— nacos集群设置
    Apache Flume
    评:MD制裁芯片,信息产业要回“石器时代”
    【自然语言处理】【实体匹配】用于实体匹配中blocking环节的深度学习:一个设计空间的探索
    python爬虫request和BeautifulSoup使用
    区分bug 前后端归属之后,我再也不背锅了
  • 原文地址:https://blog.csdn.net/IICOOM/article/details/136657218