華爲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);
    }
}

 

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