今天正式確定正取了, 來把之前甄試的心得分享一下

初試

因為還沒去念, 不敢說中央軟工到底好不好 不過就推甄來說, 他確實是國內排名較前面的資工相關系所中, 比較重視實作的 甚至主動提供程式代表作的上傳 讓學生作為備審資料

以我自己的例子來說 歷年成績排名大約只有在 50% 左右而已, 想說有一些校外比賽的獎項, 所以還是抱持著希望去推甄 很慘痛的直接被兩個所刷掉, 清大資工則在備取末段班 但中央軟工所給的備審資料成績卻挺漂亮的, 讓我收到初試成績單時有點感動

複試

中央軟工所這屆開始, 以 上機程式考試 作為推甄複試項目 因為是第一次辦, 除了主辦者沒人知道會怎麼考

首先程式語言的部分, 提供以 C, C++, Java, C# 四種語言作答 不過部分題目只能用 C/C++ 雖然就我個人的標準而言, 只給這四種語言有點太少了, 但相較其他比賽也算很不錯了 (如果之後我能加入幫忙準備測驗的團隊的話, 會很想再加入 Ruby, Python, Scheme, JS…之類的選項吧

開發環境算是友善, 雖然作業系統為 Windows 7 有點遺憾 但考前一小時開放安裝自己需要的 Editer/IDE 算蠻貼心的

Online Judge 編譯器則有 VS C#, Java, GCC 4.7 比較遺憾的是不開 C++11 & Boost ( 題外話: 這時候我大約已經有一年沒寫 C/C++ 了..

題目

英文出題 之前主辦說不會以演算法為主, 會偏向業界考法(聽說有請 jserv 大大出題) 但大概沒人看懂到底會怎麼考 :P

以下是這次題目的概要

有兩題非常簡單, 會給你一些有低級 bug 或設計不良的程式碼 請你改善這些程式 (像是 C 的 malloc/free 錯誤、 macro 錯誤之類的

一題要解決 C++ std::vector<> v(N), 當 N 過大時會出現錯誤的問題 不過禁止使用 if 判斷, 我馬上想到有兩種解法: 1. 用 switch 或 while 來避掉 if, 但實質意義不大 2. 我想應該是出題者想要的: 利用 C++ 例外處理機制解決

一題是請你改善一個原本設計不良, search 需要 O(n) 的 map 資料結構 我很懶就直接把 std::map 裝進去了, 另外用 set 解決另外一個額外的函式

另外有三題我沒寫出來, 主要原因是時間管理不當, 又花太多時間翻書看 C++ 該怎麼寫 實際上這三題雖然會花較多時間, 但也並不困難 (一年前的我應該可以在時限內解完兩題吧

  1. 告訴你一個記憶體管理的方式, 請你模擬在一系列的操作之後, 記憶體會被如何分配
  2. 讀入一個由16進位數字表示的圖檔, 告訴你檔案格式(幾byte表示檔名, 幾byte表示大小, 實際記憶體位置需要某些順序調換…), 請你以 0101 的形式表示這個圖形
  3. 不使用內建函式庫, 實作 linked-list 部分功能

大致上是屬於實際應用, 需要一些實力又不會太困難的題目 除了要寫出程式通過測資之外, 提交的程式碼也會被 Review 評分

也因為這個原因, 讓我在寫的時候有點太糾結於結構設計和程式碼品質, 多花了不少時間 orz

雖然我還沒去念, 不敢保證好不好 但至少這個甄試的制度, 對於平常愛寫程式卻不太管課業成績的人是個很好的管道 有一定的實績和實力, 基本上不用擔心和做其他額外的準備, 只要實力夠真的不難上


創用 CC 授權條款
本著作由TeenSuu Lin製作,以創用CC 姓名標示-相同方式分享 3.0 Unported 授權條款釋出。

見人言某語言優雅有感

有些語言可能可以說是好用.靈巧.在programmer能力值高的情況下能產出好的程式但卻很難被歸類為 “優雅”##比如說這麼一個語言混淆應屬於物件的 method 或獨立的 function甚至狂熱試圖把一切都當成物件然後鼓勵一堆人寫出 `3.times do` 這種念起來很順 …… Continue reading

[Note]Setup SSH on Fedora in VirtualBox

Published on January 30, 2015