# 110 資工所上榜心得(有補習) ## 背景 國立高雄大學本科系去年畢業。沒考慮過推甄,所以大學時沒什麼在顧排名,系排不清楚,但大概是慘不忍睹。 還在學校時是競技程式選手兼程設助教,平常沒事就喜歡上 OJ 打打比賽和練習題目,線下賽最好的成績是 ACM ICPC 2019 台北新竹區域賽銀牌,CPE 7 題,等等內文也會提到練競程在考研途中所帶給我的優勢。 原先人生規劃就有讀研究所的打算,本來想要在大四下找個實習先進職場看看工作的環境以及發展趨勢再回來讀研究所,無奈遇到疫情,去年被放出來的實習機會變得非常少。 在不想浪費整個大四下時間的前提下,同時自己也覺得在資訊科系的基本能力,像是數學以及 OS、計算機結構等等的基礎都不是非常的紮實,想要學得更完整一點再進入職場,所以一不做二不休就直接報補習班了。 ## 成績 我沒有 +365 的選項,所以能報的學校都報了。 | 學校 | 數學 | 資演 | 計系 | 總分 | 名次 | 最低正取分數 | 備註 | |:--------:|:---------:|:----:|:----:|:-----:|:--------------------:|:-----------------:|:---------------------:| | 台大資工 | 58 | 87.5 | 50 | 200.9 | 備取9 | 205.1 | 英文 54 | | 交大資聯 | 51 | 63.5 | 45 | 171 | 資甲備取 19 數科正取 | 資甲 178.2 數科 ? | 資演計系x1.2 數學x0.8 | | 清大資工 | 61 (計科) | x | 74.4 | 135.4 | 落榜 | 最低備取 136.4 | 最低正取 148.4(聽說) | | 成大資工 | 40 | 68 | 31 | 139 | 正取 33 | 130 | | | 中央資工 | 63 | 50 | 45 | 158 | 備取 46 | ? | | | 中正資工 | 88 | 76 | 60 | 224 | 正取 2 | 178 | | | 中山資工 | 60 | 76 | 73 | 209 | 正取 | 166 | OS 與資演一起考 | | 台科資工 | 64 | x | 84 | 76 | 正取 17 | 72.2 | 計系x0.6 數學x0.4 | + 台大資工第一波備取備到第 8 名 + 於 6/23 備到備取 10(我的名額已經先行放棄了) + 交大資甲 3/24 第三梯次備取備到 + 中央資工於第二梯次備取備到 ## 時間規劃 3 月中報名 TKB,之後沒報題庫班。時間規劃**看看就好**,以自己最能把課程內容吸收的方式為主。 ### 4~5月 因為那時候還在學校,週一到週五只要有課餘時間都排去聽課,除了演算法之外每天都聽不同科一起推進度。這段時間大概聽了整體課程的 1/4,6 月的時候整個月都在趕專題所以整個月都沒去聽課,這段時間裡==我有一點非常不優的是聽課結束後回家沒有即時複習==,導致我在後面繼續聽課時幾乎都忘光了,要花時間去再聽一次前面的課。 ### 7~9月 這時候搬回家裡,開始在家裡附近的 TKB (台南)聽課,這時候開始聽課的方式變成把一科聽完再繼續聽下一科,順序是 離散->OS->計結->資結->演算法->線代。 ### 10~12月 實在沒辦法在家裡讀書,所以每天早上就跑去圖書館,接近晚上讀到累了就回家,基本上每天都有讀到 6+ 小時以上的書。 剩下就是複習複習再複習,把離散的單數題以及線代除了 Hard 的單數題寫完,也把計結的題目能計算的都親自算過一遍。本來想說寫考古的時候還可以來寫偶數題,但發現時間真的不太夠就沒寫了。 ### 1月~考前 寫考古,寫了交大中央 10 年,台大清大 5 年,台大硬體不寫,基本上每天一份,白天寫晚上檢討,因為知道自己計算的粗心率很高,所以每科都計時 80 分鐘,希望能留至少 20 分鐘來驗算。 ## 各科考題 & 心得 這邊其實應該大家都看過很多方法了,這裡只簡述我個人對該科的想法。 ### 線性代數 **教材: 黃子嘉講義上下冊** 大學的時候線代差點被當,曾經以為是最不穩的科目,沒想到最後都靠線代拿分...。 線代主要只看黃子嘉老師的講義,講義裡面的觀念與證明都非常清楚明瞭,這科裡面有非常多定理要記,而且常常前一章的定理會用到下一章,個人認為一定要把**一章精讀並理解大部分之後才可以繼續讀下一章**,且在認識一個定理的同時,一定要去理解這個定理是==怎麼被證明的==或是==需要什麼必要性質來輔佐它==,否則寫到證明題的時候很容易會有亂用定理的情形發生。 基本上我認為沒有任何一章是可以放掉的,有些後面章節的概念學會之後可以幫助更加的了解前面章節的性質。例如 Jordan Form 那邊的冪零算子,代數/幾何重數與 kernel/image chain 等等的觀念都可以更幫助了解矩陣對角化的充要條件等等。 BTW,考試後有看到 [Youtube 上 3Blue1Brown 的線代系列](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab)覺得也很棒,有些卡很久的觀念經過動畫視覺化之後會變得好理解很多。 ### 離散數學 **教材: 黃子嘉講義上下冊** 本科正如其名,所有章節都離離散散的沒有過多的相關。離散最重要的部分就是基本題,諸如集合論,排列組合,生成函數與遞迴,只要考出來就是一定要拿到的分數。 數論與模同餘因為有打競程的關係,以前就知道一些基本的性質,所以準備起來比較輕鬆,在備考的時候也有實作一下程式碼來複習一下。圖論的問題要難可以難到飛天,所以記得類似 HC HP 的必要條件我覺得就足夠了,至於代數結構那邊是用死記的,讀了好多遍真的都沒辦法理解...。 ### 資料結構與演算法 **教材: 洪逸筆記 + 林立宇講義 + [cp-algorithm](https://cp-algorithms.com/)** 同樣因為競程的關係,這兩科準備起來是相對簡單很多,各種的資料結構與演算法實作方式與時間複雜度都算是熟悉,也不會怕要程式碼填空或是要寫 `pseudocode` 的題目。 在準備基礎資料結構上,我覺得在背誦時間複雜度的同時,輔以 `pseudocode` 或是真的去實作像是 `heap` `binary search tree` `linked list` 等等的資料結構,會比較好理解**根據當下現有的資訊,每個操作會帶有怎樣的時間複雜度**,今年台大資工就有一題 `linked list` 是在考驗這個。 對於演算法,林立宇老師的講義已經編得很好了,濃縮了非常多的重點在裡面,但說實在的這科的題目難度上限非常高,可以考個演算法正確性證明,也可以考一種很難的 reduction。這種要準備除了要有很強的數學基底,也要熟讀各種經典問題才行,CP 值並不高。建議把類似推導時間複雜度,算 `max flow`,求出`minimum spanning tree` `shortest path` 等等的基本題搞懂就好了。 ### 作業系統 **教材: 洪逸筆記 + 恐龍本** OS 算是我最沒把握的地方,不敢講太多,我認為讀洪逸筆記就會給你很不錯的基礎了,但建議想要更精讀 OS 的人,可以把恐龍本從頭到尾啃一遍,有很多題目其實都只是恐龍本的習題換個形式考出來而已,如果要再更深入的話,可能就要找 [jserv](https://www.facebook.com/JservFans) 了...。 OS 的考題可以非常多元,可以是尋常的計算一個 process 在不同 scheduler 的 waiting time,也可以是很難的 synchronization 問題,更可以問你一個完整的 system design。把基礎讀好之後,剩下的都是經驗與實務上的問題了。 OS 越讀到後面就越覺得有些部分其實跟現實中的社會結構與人際關係一樣,或許要累積更多人生經驗才能把這科讀好吧。 ### 計算機結構 **教材: 張凡上下冊** 張凡上下冊已經包含大部分的觀念了,把 pipeline 與 memory 那邊的基本題練熟,各種優化 cache 的方式還有各自優化了什麼記起來,計算小心不要出錯就好了。 這科可以考很多後面進階平行化的東西,也可以跟 OS 一樣完全不考教科書內的東西,單純就是考驗有沒有思考一個系統架構的底子,在寫這類型的題目時務必記得答案要寫得有邏輯,把==為什麼及優缺點==寫出來,會比較容易拿到分數。 ## 各校考試心得 以下是一些今年考試的感想 + 交大數學證明怕倒扣不敢寫,計系多選最後一題 True/False 看錯直接倒扣 4 分,一來一往加上加權就差 10 分了。 + 抱怨一下交大桌子好小 + 台大資演本來預估 95 (放掉有限狀態機),但還是不知道錯哪一題。 + 不過整場的考試決勝點應該是數學後面那兩題多選以及計系的最長 stage + 清大機率忘光光直接用猜的 + 成大計系比預期高很多,完全不知道為什麼,我只記得我畫了一個大表格,然後盡量把裡面都填滿 + 中央資演有向交大看齊的趨勢,計系寫得很順但比預期的低很多...。 + 桃園風很大 + 台科數學有一題考 $LL^T$ 分解,但矩陣不是正定,我直接寫因為矩陣不是正定(原因寫其中一個主子行列式 $<0$),所以不能分 $LL^T$。 + 中山希望以後題目能夠多檢查一下,沒答案的,明顯出錯的題目都有,被嘴是猴子在出題真的不是沒有原因的。 + 中正看的出來很想收本科生,資演除了叫考生當人體 `c` compiler 還考了 `C++` 的 static/dynamic binding。 ## 考後心得 & 建議 ### 念書 & 寫考古 + 個人在這裡強烈建議**每次上課後回家一定都要看一下例題或是後面的考古題**,不只可以幫助自己複習今天學到的東西,也可以觀察一下考試究竟是怎麼考這些觀念的。 + 建議在讀書時一定要有一個明確的目標或是進度,**階段性完成目標所獲得的成就感是備考中很重要的一部分**。 + 在研讀某一科的時候要明確的知道自己哪些部分是 ok 的,哪些部分是還需要再讀一遍的,**不要盲目地浪費時間去讀那些你已經會的東西** + 在某個觀念鬼打牆的時候,[PTT 上的 Grad_ProbAsk](https://www.ptt.cc/bbs/Grad-ProbAsk/index.html) 與 telegram 大群是你的好幫手,寫程式寫久了就知道,**有的 bug 自己看 2 個小時看不出來錯在哪,但別人看 5 分鐘就看出來了**。 + 前期寫考古確實是在檢視自己讀書的盲點,但**後期**寫考古的時候除了計時之外,在心態上也要調整成真正在考試的模式,**不要以為這還是考古就覺得寫的當下不會也沒關係**。 + 建議**沒有戰友不知道自己實力的人**可以==先寫中央再寫交大的題目==,這兩間的考題通常都比較考驗基本功的紮實度,但**交大的題目會比中央難一點**。 ### 考試途中 + **作答技巧有時候甚至比讀書的多寡還重要**。 + 倒扣要不要寫,寫了有多少機會得到分數,分配給每一題的時間等等,都是需要考慮的因素。 + 我自己寫數學手寫會先瀏覽整份考卷,**判斷題目的難易度**並且在一定的時間內把基本題解決後,再把難題依照==被解出來的時間與可能性==一題一題解決。 + **保持平常心去應考**,在緊張的狀態下應考只會讓你沒辦法發揮應有的實力 + 這也是練競程的好處之一,平常比賽太多了已經對緊張免疫了XD ### 其他 + 雖然因為晚了一年考研的關係沒有戰友,不過有人一起努力會是不錯的動力來源。 + 盡量去回答或是教導別人,回答問題的同時其實就是在審視自己的觀念正不正確。 + 如果你真的讀通了一個東西,那不管別人怎麼問都不會問倒你的。 + 在家裡會想躺床上或是像我在電腦前一樣不自覺會開始打開 [vscode](https://code.visualstudio.com/) 的人,請往圖書館 or 咖啡廳跑。 + 讀書音樂推薦 [lofi hip hop music](https://www.youtube.com/watch?v=5qap5aO4i9A) + 給自己休息的時間,像我每天都會撥個 15~30 分鐘看看 Twitch 實況或 Youtube 影片,或是花一個小時聽 Podcast。 + Podcast 推薦[好味小姐](https://open.spotify.com/show/1UMD24QF04ivrjyzJhZisE?si=a1IaNAN3QzG2DN6k2fFg2Q) & [呱吉](https://open.spotify.com/show/13bJ4DAZH1QLc1fOmlZI24?si=_zcZpDRAQHy3azAjV9RedQ) & [台灣通勤第一品牌](https://open.spotify.com/show/2Csh9YythT4tGLk0S1vehS?si=KN3DD4zXR8-Znt6ZPwsVAw) + 不要太封閉自己的社交圈,在準備考試時分給社交的時間比例確實要減少,但不能完全沒有。 + **考試結束後可以馬上準備寄給教授的拜訪信以及履歷**,不要像我一樣放榜完才開始寫,會錯失很多面談的機會。 ## 結語 不知不覺打了蠻多字的,感謝看到這裡的大家,以前助教時期上台講課的碎碎念習慣始終都沒改掉XDD。 整體來說,雖然結果離自己期待的還是差一點,但這次考研已經算是我考得最成功的升學考試了,而且也是少數沒有留下遺憾的考試,沒有什麼後悔沒認真讀或是沒讀到的東西,考試中不會的就是真的不會了,最後能去心目中的第一志願真的很開心 ### 關於競程 本來以為考試完可以輕鬆一波來寫個很久沒寫的程式,沒想到放榜完跑了好多趟新竹找教授根本行程大爆炸,大概 4 月就又可以開始練習競程的東西了,附上我的 [codeforces profile](https://codeforces.com/profile/soimportant),歡迎好友++,有興趣與小弟一起練習的也歡迎站內信 :smile:。 ### 關於 TKB 有看到很多心得文說補習班的人員很雷,但我自己倒是遇到很負責的姊姊,陪我聊了很多天然後放榜也有來關心我。 BTW,之前暑假回台南要開始預約 TKB 的時候,就算在 12. 準時打開填完表單還是完全預約不到位子,最後受不了直接寫了一個小 `javascript` 來自動預約位子,不一定每次都成功,但至少會省事一點,有人想要的話可以參考[這篇教學](https://hackmd.io/@soimportant/BJDbpWCN_),有任何問題都可以來信詢問。 :mailbox: soimportant0318@gmail.com ## 感謝 最後,分享一直以來支撐我前進的一句歌詞以及表達感謝。 + 感謝讓我在家當米蟲半年準備考試的家人 + 感謝已經畢業分散在各地的朋友時不時的關心 + 感謝還在學校的朋友讓我隨時想回去就回去聊天 + 感謝 Grad_ProbAsk 的各位大大 + 感謝交大願意收我的教授 *"One day you will leave this world behind, so live a life you will remember." [[Avicii - The nights](https://youtu.be/UtF6Jej8yb4)]*