V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
YadongZhang
V2EX  ›  职场话题

试了一下华为 od 机试题

  •  1
     
  •   YadongZhang · 2023-01-05 09:03:12 +08:00 · 8155 次点击
    这是一个创建于 667 天前的主题,其中的信息可能已经有所发展或是发生改变。

    杭州前端岗

    总共 3 道题,限时 150 分钟

    1

    题目描述

    给出一个整数数组,找出出现频率最多的数字,输出该数字在数组中最后一个下标与第一个下标之差,如果有多个频率最高数字,输出最小下标之差。

    测试用例:

    [1, 2, 2, 3, 3, 4, 3, 1, 1],频率最高的有数字 1 和 3 ,但是 3 构成的数组 [3, 3, 4, 3] 长度 ( 4 )最小,所以输出 4 。

    解法:

    HashMap ,根据 value 排个序,找出频率最高 key, lastIndexOf - indexOf, 然后 Math.max(ans, tempMax)

    总结:

    这道题耗时最长,以前从未做过 HashMap 排序,最后转成数组排序的

    测试通过率✅: 80%(应该是有 edge cases 没考虑到)

    2

    题目描述

    双人自行车限重 m ,给出一组公司员工体重,每个人的体重都小于限重,求最少需要多少辆双人自行车。

    解法:

    排序 + 双指针

    总结:

    有思路了就直接 AC 了

    测试通过率✅: 100%

    3

    题目描述

    连续子列问题,一个整数数组,数据规模较大,输出和( sum )相等的连续子列构成数组的最大长度。

    测试用例:

    test cases

    解法:

    每一个元素看做一个子序列,遍历一遍

    总结:

    原题中文描述的,太抽象了,也没掌握过什么高级数据结构和算法,暴力解了

    测试通过率✅: 56.36%(数据规模较大,算法复杂度太高,应该是超时了)


    当天下午在牛客上刷了 5 道题,熟悉了一下输入输出,晚上题目发过来就做了

    机考是用牛客的 ACM 模式,每道题只能提交一次,90 分钟交卷,最后得分 260

    运气还算比较,基础数据结构里没有二叉树相关题目

    小技巧:草稿纸上演算一次效率超高

    以前面试都是盯着屏幕傻看。。。


    因为简历上有超过半年空窗期,后面流程也就没往下走了,另外,因为身体原因,不大能适应加班。

    有需要的就当经验帖了

    35 条回复    2023-01-11 09:12:34 +08:00
    ajaxgoldfish
        1
    ajaxgoldfish  
       2023-01-05 09:14:46 +08:00
    前端难度和 cpp 难度相差大吗,我现在算法大约也就这个水平。
    BanGanExpert
        2
    BanGanExpert  
       2023-01-05 09:31:05 +08:00
    前端都这样了?这个是面试几年的?我是没有大厂面试经历,还是大厂都是这风格吗
    这难度虽然其实并不算难,就我作为 Java 工程师来看,我估计很多 3 年水货工程师是过不了的
    TuneG
        3
    TuneG  
       2023-01-05 09:38:03 +08:00 via iPhone
    华为笔试题不区分年份的,都是一样的题,不管你是几年,都是一个系统考试,难度基本就是 leetcode 中等难度题,年份只是面试和定级的时候有用
    hidemyself
        4
    hidemyself  
       2023-01-05 09:39:43 +08:00
    od 就这样,机试稍微难一点,不分前后端,题都一样的。
    几轮面试的题目会简单一点。
    tialias
        5
    tialias  
       2023-01-05 09:47:34 +08:00
    我当时面 od-测试,第一道就是接雨水,第二道是什么小岛动态规划的
    muntoya
        6
    muntoya  
       2023-01-05 09:48:23 +08:00   ❤️ 2
    @BanGanExpert #2 哈哈,要有自信,做出这些题不需要是工程师,工程师也不会用到这些,好多应届生刷了几百题就能过了
    mingszu
        7
    mingszu  
       2023-01-05 10:01:29 +08:00
    @BanGanExpert 跟几年经验没关系,刚毕业的甚至算法能力更强,毕竟人在学校没事就刷
    chendl111
        8
    chendl111  
       2023-01-05 10:11:32 +08:00
    校招刷个 200 到 leetcode 水平
    jincan39
        9
    jincan39  
       2023-01-05 10:58:24 +08:00
    小兄弟 为啥最近半年空窗?
    mmmfj
        10
    mmmfj  
       2023-01-05 11:04:38 +08:00
    之前问过 od 招聘的有空窗也没事,为什么你不继续面了
    A555
        11
    A555  
       2023-01-05 11:31:50 +08:00
    一题不会 😅
    daliusu
        12
    daliusu  
       2023-01-05 11:36:35 +08:00
    @ajaxgoldfish 华为 od 是玄学招聘,我前端同事之前做了一次瞎做也过了,感觉这个就是流程,而且都是一样的难度,只是根据实际岗位肯定会有放水情况
    YadongZhang
        13
    YadongZhang  
    OP
       2023-01-05 13:21:31 +08:00
    @ajaxgoldfish

    cpp 是指 c++ 吗?
    以前还会写 hello world ,现在都不会了,不知道难度差别大不大


    @jincan39

    Freelance Web3 太爽了


    @mmmfj

    因为 od 招聘说有事,微信突然不回,问了才知道。另外,有加班,身体原因顶不住。。。
    Promtheus
        14
    Promtheus  
       2023-01-05 14:33:05 +08:00
    @BanGanExpert 如果没有刻意刷过题的话,大多数十年的都不见得会做。这和年限都没关系。毕竟实际开发中很少用到算法
    jedihy
        15
    jedihy  
       2023-01-05 14:36:10 +08:00
    @BanGanExpert 算法题不是你工作几年就会做的。刷三个月题比三十年工作经验管用。这种 LC easy-medium 的经典题直接可以默写。
    YadongZhang
        16
    YadongZhang  
    OP
       2023-01-05 14:41:08 +08:00
    @jedihy 太强了,羡慕可以直接默写的,我差点写哭了,写不出来嘛
    7911364440
        17
    7911364440  
       2023-01-05 15:47:15 +08:00   ❤️ 1
    @YadongZhang 你刷下 leetcode 就知道了,很多题都是有套路的,想不出来也很正常。
    tonytonychopper
        18
    tonytonychopper  
       2023-01-05 22:32:52 +08:00   ❤️ 1
    OP 有空可以刷下 lc ,这几道题都算比较经典的
    zanx817
        19
    zanx817  
       2023-01-05 22:52:07 +08:00
    第三题有没有第二个参数 K ,要求 sum=k 的子数组?
    此时引入 prefix sum 可解。

    如果没有 k 的话,这个题是 hard 难度了。目测要用 hash 。
    zanx817
        20
    zanx817  
       2023-01-05 22:56:06 +08:00
    目测:第一题是典型的滑动窗口题。 OP 的解法应该是不佳的。 应引入 hash 记录频率。
    zanx817
        21
    zanx817  
       2023-01-05 22:56:41 +08:00
    笔试 2.5 小时,比考博时间还要长了
    yifangtongxing28
        22
    yifangtongxing28  
       2023-01-05 23:45:11 +08:00   ❤️ 1
    大家的重点为什么都在题目上,不应该是 od 对空窗半年的人直接拒绝吗?
    netabare
        23
    netabare  
       2023-01-06 04:30:39 +08:00   ❤️ 1
    手写还是 OJ 还是指定机器?
    光看描述感觉没什么难的……?看起来都是很基础的算法题。一道题 50 分钟,很宽裕了。当然也要看数据集怎么样,如果是类似 ACM 那种数据集的话估计还是有点压力。
    JasonLaw
        24
    JasonLaw  
       2023-01-06 08:26:58 +08:00
    ```python
    from math import inf

    arr = [2, 5, 9, 4, 3, 3, 6, 1, 7, 4, 1, 2]
    d = {}
    for i, n in enumerate(arr):
    if n not in d:
    d[n] = [0, i, i]
    d[n][0] += 1
    d[n][2] = i

    max_freq, index_diff = -inf, inf
    for n, v in d.items():
    if v[0] > max_freq:
    max_freq = v[0]
    index_diff = v[2] - v[1]
    elif v[0] == max_freq:
    index_diff = min(v[2] - v[1], index_diff)
    print(index_diff)
    ```
    JasonLaw
        25
    JasonLaw  
       2023-01-06 08:30:01 +08:00
    第一题

    JasonLaw
        26
    JasonLaw  
       2023-01-06 08:40:08 +08:00
    第二题

    JasonLaw
        27
    JasonLaw  
       2023-01-06 08:46:13 +08:00
    不是很理解第三题。

    “连续子列问题,一个整数数组,数据规模较大,输出和( sum )相等的连续子列构成数组的最大长度。”

    sum 指的是什么,一个参数吗?是要我们找出总和等于 sum 的最长的连续子数组的长度吗?
    YadongZhang
        28
    YadongZhang  
    OP
       2023-01-06 10:47:24 +08:00
    @zanx817

    没有 k ,第二个参数是数组长度

    用了 hashmap ,我上面描述应该写了

    @netabare
    OJ ,ACM 模式,没有报错提示,而且只能提交一次
    我记得只有最后一题数据量比较大


    @JasonLaw

    sum 任意,不是参数,看我上面那个例子
    JasonLaw
        29
    JasonLaw  
       2023-01-06 11:25:12 +08:00 via iPhone
    @YadongZhang #28 完全不理解那个例子,可以的话,解释一下?
    YadongZhang
        30
    YadongZhang  
    OP
       2023-01-06 13:30:41 +08:00
    @JasonLaw

    以第一个数组来例

    8 8 9 1 9 6 3 9 1 0

    连续子列的和可以是任意单独元素

    假设是 8 ,那么构成最终数组的连续子列分别为
    [
    [8],
    [8],
    ]
    该数组长度为 2

    第二个元素结果相同,直接跳过

    遍历到第 3 个元素 9

    [
    [9],
    [9],
    [6, 3],
    [9]
    ]
    该数组长度为 4 ,更新结果 Math.max(2, 4) = 4

    继续遍历,和为后面元素的连续子列构成的数组长度均为 1

    所以最终输出 4

    原题描述是挺抽象的,我是看题目标题和测试用例推出来的,不知道我理解对不对
    asensio
        31
    asensio  
       2023-01-06 15:52:19 +08:00
    op 是目标院校么,非目标院校的要 300 多分额
    asensio
        32
    asensio  
       2023-01-06 16:12:17 +08:00
    求分享下做 Freelance Web3 的经历,😄
    hardto
        33
    hardto  
       2023-01-08 21:34:34 +08:00
    同求分享一下 freelance 的经历吧
    ccc825
        34
    ccc825  
       2023-01-09 00:19:38 +08:00
    22 年上半年做的笔试题,如果不涉及比较难的动态规划、滑动窗口这类题,用 php 感觉很简单,做了 320 分。
    然后现在入职了尝试考了一次专业级 c 的算法题,0 分……
    c 真的太难了,排序和哈希都得自己去实现。还好 od 要求转正前过工作级就可以,努力学下 c 和算法应该没什么大问题。主要是不知道能不能干到转正,入职两个月已经想跑路了,做的东西有一点兴趣但是太难学,而且以后跳槽方向很小
    UN2758
        35
    UN2758  
       2023-01-11 09:12:34 +08:00
    之前做过 od 的机试,只记得有道二维矩阵搜索,那时候题目比较简单,只有一道题目用例不是百分百,现在应该变难了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   949 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 20:31 · PVG 04:31 · LAX 13:31 · JFK 16:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.