ETH官方钱包

前往
大廳
主題

線上程式設(shè)計(jì)考試Codility測試題

Yang | 2022-09-27 17:07:55 | 巴幣 0 | 人氣 2275

有機(jī)會(huì)看到一個(gè)程式設(shè)計(jì)測試題,要通過題目給的測試案例(Example test cases)簡單,要通過正確性測試(Correctness test cases)有點(diǎn)難,要通過效能測試(Performance test cases)很難,在此記錄心得

測試題全測試項(xiàng)目通過會(huì)得到100分

題目:
輸入整數(shù)陣列A(int[] A),找到大於0並且不在A裡面,並且最接近0的正整數(shù),再回傳數(shù)值
A的可能長度,1~100000
A的內(nèi)容值,介於-1000000~1000000之間的整數(shù)
時(shí)間限制,30分鐘

心得:
1.題目和程式碼都能複製貼上,因此能在自己本機(jī)的開發(fā)環(huán)境上先寫程式和測試,再放到Codility

2.Codility上可以邊修改程式碼邊跑測試案例(Example test cases),但正確性測試(Correctness test cases)和效能測試(Performance test cases)是黑箱,是提交(Submit)後產(chǎn)生,無法再修改程式碼,只能看到測試結(jié)果和最後分?jǐn)?shù),不知道Codility實(shí)際做了甚麼測試

3.似乎只能是單執(zhí)行緒環(huán)境,起其他執(zhí)行緒跑測試案例會(huì)提示錯(cuò)誤

4.通過反覆觀察,正確性測試應(yīng)該是測試極限情況,A的長度為題目寫的1或100000,內(nèi)容值為-1000000或1000000,應(yīng)該都會(huì)被測試,因此這部分能在自己的開發(fā)環(huán)境上先模擬測試

5.要通過效能測試有點(diǎn)挑戰(zhàn)性,已知這部分就是要追求最快效能,因此程式碼就不用顧慮記憶體空間的使用或浪費(fèi),用空間換時(shí)間就對(duì)了

6.發(fā)考試的公司應(yīng)該會(huì)對(duì)不同題目設(shè)定不同時(shí)間,時(shí)間很趕,幫自己準(zhǔn)備能專心做答的環(huán)境再上去考試,中間被打斷應(yīng)該就是考試失敗

7.每個(gè)題目都先以完成測試案例為目標(biāo),再測試一下題目給的極值或邊界值,應(yīng)該就能通過正確性測試,效能測試看運(yùn)氣,在有限時(shí)間內(nèi)要立刻想到題目的效能最佳解不太容易,除非平常就在做這方面的工作,或是先找大量題目練習(xí),鍛鍊感覺

8.可以選擇程式語言做測試,常見的語言都有支援,但這部分應(yīng)該是看發(fā)考試的公司有沒有指定要用甚麼語言

以下暴雷測試題100分的程式碼,想自行挑戰(zhàn)的讀者請(qǐng)勿往下看











class Solution {
    public int solution(int[] A) {

        const int arrLength = 1000002; //通過極值測試發(fā)現(xiàn),方便給right = item + 1用

        int[] _a = new int[arrLength]; //空間換時(shí)間

        _a[1] = 1;

        foreach (int item in A)
        {
            if (item <= 0)
            {
                continue;
            }

            _a[item] = 2;

            int left = item - 1;
            int right = item + 1;

            if (left > 1 && _a[left] == 0)
            {
                _a[left] = 1;
            }

            if (_a[right] == 0)
            {
                _a[right] = 1;
            }
        }

        for (int i = 1; i < arrLength; ++i)
        {
            if (_a[i] == 1)
            {
                return i;
            }
        }

        return 1;
    }
}
送禮物贊助創(chuàng)作者 !
0
留言

創(chuàng)作回應(yīng)

相關(guān)創(chuàng)作

更多創(chuàng)作