關於Coding Test的幾點建議
2021-04-25 19:25 1,697

有幾個建議我認為考生可以事先準備

  1. 熟練使用Unit Test
    Coding Test也許會提供一些題目附帶的Test Case讓你驗證自己的答案,但它不帶Debug功能,不要倚靠它。
    當你的答案是錯時,假如你在用自己的IDE寫代碼,意味著你的testing和development將會分開兩個頁面進行(IDE和coding test頁面),你在IDE debug卻看不到題目test case所用的input,一切都變得困難。
    我只用Visual Studio所以用它來示範。
    第一步,public class內右鍵 -> Create Unit Test

    選擇Test Project,命名方式等等,都選Default就對了,Test Project都選同一個

    系統會為該Class內的每一個public method產生一個test case,然後我們可以多複製幾個來試不同的Test Case,用Assert.AreEquals(正確答案, 跑你的答案)來驗證答案。如果答案是Collection,要改用CollectionAssert才能驗證到。

    打開Test Explorer視窗,在上面右鍵按Run或Debug即可。
    這種方式比起在直接執行寫好的Function進debug mode,好處是方便管理、自動紀錄、有Duration紀錄、還可以用[TimeoutAttribute(100)]這些Testing專用的功能。
  2. 熟練你的語言
    每種語言都有其獨特的功能,比如在其他語言中要將一個Array分類可能要寫很長的for loop,但在C#裡其實用linq groupBy再Select就能處理到,而且90%比你自己寫Loop效能更好。
    Array.GroupBy(a => a).Select(group => group.Key).Where(key => key > A.Length / 2);
    
    from a in A 
    group a by a into aGroup 
    where aGroup.Count() > A.Length / 2 
    select aGroup;
    
    var dict = A.GroupBy(a => a).OrderByDescending(a => a.Count()).ToDictionary(o => o.Key, o => o.Count());
  3. 學習Binary
    一般來說Binary這種東西是非常地不常見的,偏偏Coding test就特別喜歡抽這種問題來問,不懂的話就要花很多時間理解題目,最好預先準備一下。
  4. 多做練習
    除了LeetCode之外,還可以到Codility Lesson做練習題,它把各種技巧分門別類,挺不錯。
Category: Coding
Prev Article
Dart / flutter筆記
Next Article
Task實測紀錄