华为OD机考的一天

宁O进,为块技。。。od梗,今晚刚看到,不出意外我又挂了!

我只是想找个备胎,毕竟被裁员了,这么大年龄也不确实不好找。

我从周一开始刷题,周五考试,刚开始我每道题在看完题解后都写出来,后来发现效率非常低,因为脑袋的确不好使。连最简单的都不会,可以说没有一道题能自己做出来。看了题解,有的都不理解,这使我越加感叹,我这些年能找到工作简直是太幸运了!截止周四晚上十一点,我居然只写了7道题,看题解看了不到20题,一共76题(C卷),我本以为是,结果我打开hr分享给我的另一个文件夹,那里居然也写的C卷,也有几十道题。我怎么看得那么慢?GPT有一定责任,有些题解我看不懂,在csdn上查都要付费开通,我想着把题目复制给GPT做,让他给我讲讲,结果他写的题解我跑不起来,我花了一些时间给他纠正。看来题目却是描述有问题,比如那个虚拟游戏资产的题。我那股子劲儿上来后,非要给他写对了才罢休,后来确实跑出来了。

今天早上我不到八点就出发了,到公司9点多,早上的地铁很挤,谁让咱是规规矩矩打工人?今天要跟公司签协议,两分钟完事儿了,因为赔偿已经提前通知给我们了,这次就是把纸质的签一下。签完协议,我找了一个会议室,准备开始两个半小时的机考。

一星题两道,全是原题(有一道我准备时候还没来得及看,所以有一点点印象,另一道刚发现是原题),但全是我没遇到过的原题!我花了好久审第一道题,GPU算力分配的题目,半小时过去了,题目就是不理解,放弃是最大的美德!看第二道一星题吧,这道题可以采用暴力枚举,我果断暴力枚举起来,比暴力枚举稍微优化了一点点,自己能感觉到写得很烂,抱着百分之五十的希望提交了,居然过了,心里美滋滋,但是时间已经过去一小时了,只剩下一个半小时了。两星题还没看到呢。OD试卷只能先把两个一星题提交后才能看二星题。二星题价值200分,一星题两道,每题是100分。二星题一般是hard,我没啥希望了,只能把剩下的时间孤注一掷在一星题上了。我喝了口公司3.5一杯的拿铁,回头看第一题,看用例推理推理?GPU每秒的任务是12345,每次执行3个任务,输出6秒,那第6秒的任务是多少个呢?我纠结这个纠结很久,要不先不管这个点,随便写写吧!我思路比较零散,我感觉我一贯是这样,这也是有时候我怀疑自己不适合做测试的原因之一。

还剩半个小时了,我居然两个题目的用例都结果正确了,但是其他用例却错了。正确率60%,问题出在哪呢?这是最难的部分,因为你看自己写的代码,觉得没问题,用例也能过几个,也不知道啥样的用例不能过。后来我发现程序确实有漏洞,赶紧把有个+1去掉了,结果用例正确率40%。无奈,只能60%提交了。

结果回家写出来了。。。不知道当时是什么原因。自己运气是真的挺好,可是没抓住机会,抽的题那么简单,还是写不出来。遗憾。

GPU调度/执行时长

package org.jinwenxin;

import java.util.Arrays;
import java.util.Scanner;

public class GPUCalculation {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        // 每次最大处理任务数
        int taskMaxOnce = Integer.parseInt(sc.nextLine());
        // 任务数组长度
        int taskArrayLength = Integer.parseInt(sc.nextLine());
        // 任务数组
        int[] taskArray = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        int gpuCost = 0;
        int lastRemain = 0;
        for (int i = 0; i < taskArrayLength; i++) {
            // 剩下的和这一秒的恰好能一下处理完
            if (taskArray[i] + lastRemain == taskMaxOnce) {
                // 没处理的清零
                lastRemain = 0;
                gpuCost++;
            } else {
                //如果这一秒的任务这次处理不完,那么把剩下的累加起来
                if(taskArray[i]>=taskMaxOnce){
                    lastRemain+=taskArray[i]-taskMaxOnce;
                    gpuCost++;
                }
            }
        }
        // 加上剩下的任务数执行时间
        gpuCost+=lastRemain;
        System.out.println(gpuCost);
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章