關於Coding Test的幾點建議
2021-04-25 19:25
2,063
有幾個建議我認為考生可以事先準備
- 熟練使用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專用的功能。 - 熟練你的語言
每種語言都有其獨特的功能,比如在其他語言中要將一個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());
- 學習Binary
一般來說Binary這種東西是非常地不常見的,偏偏Coding test就特別喜歡抽這種問題來問,不懂的話就要花很多時間理解題目,最好預先準備一下。 - 多做練習
除了LeetCode之外,還可以到Codility Lesson做練習題,它把各種技巧分門別類,挺不錯。
Prev Article
Dart / flutter筆記
Dart / flutter筆記
Next Article
Task實測紀錄
Task實測紀錄