## 前言 :::success **提醒**:**文章很長很長,建議用電腦觀看,排版會好很多。** 由於這篇主要是給自己紀錄用的,難免會有碎碎念的部分,若只是路過想看備考建議的同學,可以挑自己有興趣的部分閱讀即可! ::: 這篇文章是想給去年的自己一個交代,看似空白的 2023 年,其實還是有點收穫的! 我肯定不是最認真的考生,但也覺得自己是真的盡力了,幸好結果看起來是好的。 備考期間前輩們的心得文幫助我很大,如今終於上岸,也想寫些東西回饋給大家。 如果你是正在備考的考生,我的方法不一定適用每個人,但希望能給你一些幫助! *考研的那年,是我人生中最黑暗的日子。* *不過,即使當時覺得一切都看不到盡頭,終究都會過去的!* *無論如何,希望上天看得到我們每個人的努力,也能給我們應有的結局。* [TOC] ## 考試成績 我總共報五間學校,今年清大和成大撞我選清大,還好清大是第一天考,不然考完台交應該一堆人心態崩掉(包括我==),然後我的中興硬體不知道發生什麼事⋯⋯。 | 校系 | 數學 | 軟體 | 硬體 | 英文 | 加權總分 | 名次 | 正取最低 | 備取最低 | |:--------:|:----:|:----:|:----:|:----:|:----------------------:|:----------------------------------------------:|:------------------------:|:-------------------------:| | 台大資工 | 60 | 31 | 43 | 66 | 140.6 | **<div style="color:green">落榜</div>** | 159.6 | ??? | | 清大資工 | 76 | 86 | 67 | - | 229 | **<div style="color:red">正取</div>** | 200? | 167 | | 交大資聯 | 55 | 33 | 29 | - | 148<br>117<br>88<br>99 | **<div style="color:green">資甲備86</div><div style="color:green">網工備4</div><div style="color:green">多工備3</div><div style="color:red">數據正取</div>** | 168<br>118<br>88<br>93.6 | 124.5<br>94<br>71<br>73.4 | | 中央資工 | 69 | 64 | 73 | - | 206 | **<div style="color:red">正取6</div>** | 182 | 143 | | 中興資工 | 80 | 76 | 47 | - | 203 | **<div style="color:green">備取8</div>** | >203 | 109 | ### 補充 - 台大英文分數要 * 0.1 - 交大 113 年各所採計科目與加權比例 - 資甲:軟 1.5 / 數 1 / 硬 1.5 - 網工:軟 1 / 數 1 / 硬 1 - 多工:軟 1 / 數 1 - 數據:軟 1 / 數 1.2 - 最低錄取分數有些是參考[資工所統計資訊(最後遞補、分數表、考試時程)](https://docs.google.com/spreadsheets/d/1BO87kDeaHOyQA4pOiaQyozgMVx96k67AS0jqimHU1Bw/edit#gid=163447820) ### 各校科目名稱 | 學校 | 數學 | 軟體 | 硬體 | | ---- |:------------------ | ---------------- | ---------------------------------- | | 台大 | 數學(A) | 資料結構與演算法 | 計算機結構與作業系統 | | 清大 | 計算機數學 | 計算機科學 | 計算機系統 | | 交大 | 線性代數與離散數學 | 資料結構與演算法 | 計算機系統(含作業系統及計算機組織) | | 成大 | 計算機數學 | 程式設計 | 計算機組織與系統 | | 中央 | 離散數學與線性代數 | 資料結構與演算法 | 作業系統與計算機組織 | | 中興 | 離散數學與線性代數 | 資料結構與演算法 | 計算機組織與作業系統 | --- ### 113 年各校報考人數與正取率 每次看各校的報考人數,根本不需要看是什麼系所,一排看下來報考人數最多的就是資工所,但放在這裡並不是要嚇大家,雖然每間的正取率都是 3%~4% 左右,但若是台清交成一起看,考慮重榜人數的話,四大整體的錄取率是可以將近 10% 的! :::info **亂算一下** 今年清成撞,所以假設`清大 + 成大`是今年所有考生,扣掉可能重複報名 `100` 人,粗估 113 年總考生是 `1400+1463-100=2763`,而台清交成總錄取人數為 `297` 人,得四大總錄取率為 `297/2763=10.7%`。 ::: | 校系 | 招生人數 | 報考人數 | 正取率 | |:------------------:|:--------------------------------------:|:--------:|:------:| | 台大資工 | 60 | 1684 | 3.56% | | 台大網媒 | 17 | 441 | 3.85% | | 清大資工 | 61 | 1400 | 4.35% | | 交大資聯 | 54+18+18+16<br>(資甲+網工+多工+數據) | 2448 | 4.33% | | 成大資聯 | 53 | 1463 | 3.62% | | 中央資工 | 44 | 2340 | 1.88% | | 中興資甲 | 28 | 1383 | 2.02% | ## 個人背景 116 本科非應屆,大學成績滿慘烈的,畢業後先去軟體業做了幾年工程師才回來考研,程式底子應該還行,六科大學都有修過(有些還修過不只一次:upside_down_face:),算是都有點基礎,線代除外,我們系的線代我真的不知道在幹嘛== 大概是典型填:duck:式教育下的產物,從小讀書考試還算順利,上大學放飛自我後成績變滿慘的。自認算是個選擇題選手,考試很吃題型,選擇題寫起來滿得心應手(今年清大中央都全選擇),但碰到考得靈活一點或申論手寫題就躺在那邊了(例如今年台交:weary:)。 目標是台清交正取。 由於非應屆又二十好幾了,我完全沒有給自己留退路、沒有 +365 的選項,沒考上也不會有吉普車來載我,妥妥的背水一戰。而且雖然我報了五間學校,但心底其實很清楚就算最後只有考上台清交以外的學校,我也不會去唸,一路上是抱著這樣的信念努力下去的。 ## 關於補習與做筆記 我是有補習的(**只補正課/沒補題庫班/有買題庫書**),全部都是數位課,我比較喜歡依自己進度學習,而且數位課可以按暫停抄筆記!可以重複看!可以快轉! 撇除掉學費很貴的部份,其實我滿喜歡去上課的,趁考研這個機會,把大學沒學好的科目再完整學一遍,我覺得很值得。補習對我的好處是可以比較快抓到重點,上課我都直接帶筆電去,筆記就打在前人流傳下來的掃描筆記上,**上課遇到理解關卡,就會把老師講的話一字一句全部打下來。**(這很重要!是跟某位前輩學的) 當下聽得懂,不見得一個禮拜一個月後還懂,要記得,筆記不是上完課當下要看的,筆記是做給一個月後的自己看的,剛上完課看什麼都懂很正常,要假設一個月後你什麼都忘了,看自己的筆記就能回想起老師當時在講什麼,這樣的筆記才有價值! 我沒有補題庫班,一來不想再花錢了,二來覺得自己後期需要的是多寫題目多複習。但我有買前人的題庫書來練習,超厚一疊題庫只是嚇人用的,**挑自己需要的單元寫就好**,甚至我後來覺得直接寫考古應該也可以,題庫的好處是有很多考古的答案。 --- 後期我有開始整理自己的筆記,越精簡越好,主要是 SOP 題,考前可以快速翻一下用的。考試有很多題目我不會說是基本題,但我會稱之為 **SOP 題**,即遵循固定流程就可以解出來的題目,例如線代的各種分解、Gram-Schmidt、Jordan Form、SVD,資結各種樹的插入刪除之類的。 《倚天屠龍記》中,張三丰用一炷香的時間教張無忌太極劍法,對戰趙敏的手下。 > 張三丰一招一式地給他演示了一遍太極劍。 > 張三丰:「看清楚了嗎?」,張無忌:「看清楚了。」 > 張三丰:「還記得嗎」,張無忌:「已經忘卻了一小半。」 > 張三丰:「現在呢?」,張無忌:「已經忘了一大半。」 > > 於是張三丰又使了一遍劍法,這次所使的招數和第一次竟然沒一招相同。 > 張三丰:「怎麼樣?」,張無忌道:「還有三招沒忘記。」 > 張三丰:「不壞不壞,忘得真快,那麼現在呢?」 > 張無忌沉思一會兒,「已經全都忘了,忘得乾乾淨淨。」 > 張三丰把木劍遞給張無忌:「好了,你上吧。」 考研也是如此,到後期應該是無書勝有書的境界,讀熟之後厚重的參考書跟筆記都可以丟掉了,內化成可以自己運用的東西,就不容易忘了,不太可能把所有東西都塞在腦袋裡面的。 ## 進度安排 我在 8/1 開始使用 YPT 記錄讀書時間,到考試前總共紀錄了 1166 小時(含上課),若加上八月之前的上課與讀書時間,這次考研總共花了 1500 小時左右。 ![img1](https://hackmd.io/_uploads/r1Du2HFAp.png) 以下是我補習的各科進度折線圖: x 軸是日期、y 軸是累計分鐘數。可以看到我前年 10 月報名完其實荒廢滿久,2~6 月開始各科並進,暑假後改成兩科兩科輪流,7 月集中上數學、8 月軟體、最後到 9 月中是硬體。 最末端標記的數字就是那科我總計上課分鐘數,六科加起來總上課時數是 28100 分鐘 ≈ 468 小時。 ![upload_3a582263d70549800100ce4e949b5144](https://hackmd.io/_uploads/HkYc2SF0p.png) ### 2022 Oct. ~ 2023 Jan. 佛系兼職考生時期 這個階段由於還有正職的工作在身,報名完補習班後,其實也沒有太多時間念書,頂多周末去學堂上上課,回來也沒怎麼複習。離考試還有一年多,如果你像我這麼早開始準備的話,可以不要像我這麼早開始準備,留個一年左右認真唸,肯定沒問題。記得黃老師說過:***`人是惰性的動物,這是最大的公設。`*** ### 2023 Feb. ~ 2023 Jun. 基礎期,好像有認真但其實不太認真 辭職之後變成全職考生,學習模式變為去學堂上課兩三天,再自己複習幾天,除了演算法之外的五科輪著上,不過這時上課其實也滿佛系的,有時候兩個禮拜一個月才上一次,自己還在抓上課跟複習間的平衡。由於五科輪著上,各科進度都緩慢推進,不過這個階段是打基礎很重要的時期,現在時間還足夠,記得不能急、不用急,不能得過且過,遇到不懂的部分要好好把它想通,再繼續,特別是數學,線代就我修過兩遍的經驗,三、四章之後難度會三級跳,好好把每個證明想通,課本蓋起來自己推導一次。如果進度落後也不要緊張,有時候你唸了一整天只讀了幾頁,都是很正常的,只要有花時間下去,一定會有進步的。 基礎期另一個重要的任務是,**找到每個科目適合你的學習模式**,心得文你一定看了很多,十個人大概會有十一種上榜方式,有些人用平板、有些人用筆電、也有人暴力手抄,有人在家裡唸、有人去圖書館,沒有最好的,只有最適合的,花點時間摸索,你會有自己的答案。 ### 2023 Jul. ~ 2023 Sep. 強化期,狂暴上課模式 時間來到暑假,如果你前面都在混,要開始集中精神了,這是你最後開始的機會。六月底時,我各科上課進度大概 30%,突然發現再這樣下去會上不完,有鑑於之前五科輪著上覺得進度太慢,而且同一科很久才會碰到一次,學習效率不太好,這個階段我改成兩科兩科輪著上,先全力把數學上完、再來軟體、再來硬體,上課天數也改成幾乎天天去,一天 300~400 分鐘,上課回來能複習就盡量複習,直到覺得腦袋真的塞不下,再休個兩天去圖書館把腦袋記憶體的東西 swap out 到 disk 儲存。 這個階段每天都連續上 5~7 小時的課,中間可能只休兩分鐘換個位置上個廁所嗑個麵包,每天都在想自己會不會暴斃在補習班,每天都把自己榨乾,有時候上完課都呈現癡呆狀態,連話都不太會講了,覺得腦袋空空又滿滿的。 不過兩科輪著上的策略滿奏效的,資工的各科間都有重疊跟互補的部分(像是軟體的複雜度分析、圖論演算法或 OBST,離散的遞迴,硬體的 memory、RAID 之類的),把相似的部分一起上,不同科目的切入角度不同,可以加深不少印象。 ### 2023 Oct. ~ 2023 Nov. 二刷,在挫折與焦慮中前行 九月中左右把課程全部結束了,算是一刷完畢,這時候你會覺得學了一堆東西,但如果偷瞄一下考古題,會發現很多都寫不出來,這是很正常的,你的努力並沒有白費,只是需要學習怎麼運用所學。這個階段開始花比較多時間寫課本後面的題目(主要是數學、計組、演算法),我每個章節的複習順序是:**前人筆記(計組、演算法我沒有看筆記)⟶補習班課本⟶寫範例與習題**,推薦可以讀到半生不熟就開始寫題目,寫到卡住就回去複習相關觀念,會比較知道重點在哪裡、那個知識點到底要怎麼運用,**我們的大腦是很聰明的,用不到的東西它不會幫你記住**。 OS 和資結的話因為補習班課本是公認的爛,我這兩科主要以筆記為主,OS 花了滿多時間看恐龍書,資結則是把一些常見的 code 自己寫一寫,然後刷一刷 LeetCode 上的類題。 十一月時焦慮來到一個高峰,迷失在知識的深淵,書越讀越多,開始擔心如果考不上怎麼辦,大家是不是都很強啊,各種亂七八糟的想法浮現,一切都看不到盡頭。別擔心,這是考研必經的路程。感到焦慮時,可以看看[這篇](https://www.dcard.tw/f/graduate_school/p/253859303),謝謝原 po 給當時的我不少力量,每次看都很想哭。 ### 2023 Dec. ~ 2024 Jan. 考古之所以叫考古因為真的會考 我 12/4 開始寫第一份考古,之後就題庫跟考古交錯,碰到不熟的才回去複習該單元,比較沒有地毯式複習了。這是我到考前所寫過的所有考古,標<span style="color:#1dab6f">綠色</span>代表那張考卷完全搞懂了,<span style="color:#FFC300">黃色</span>則是有寫完,但可能沒有完全檢討完,<span style="color:red">紅色</span>則是沒寫。 ![螢幕擷取畫面 2024-03-20 231518](https://hackmd.io/_uploads/Sk2a3rKCp.png) 考古我先以交大為主,因為題目最多、詳解最好找,後期則是台大清大以及其他輪流。我有個戰友跟我一起寫考古,二到三天一份,我們會先約好同一天寫同一份考古,當天晚上或隔天就可以互相檢討錯的題目、以及交流找到的詳解資源。 每間學校寫的順序大概是: 1. 108~110 年 2. 還有時間的話,從 107 往回寫 3. 一月接近考試時,寫 111 和 112,熟悉近年題型,並當作最後驗收 我寫考古的方法: - 計時 90 分鐘 - 我會在寫考古時盡量模擬真實考試,以及各種極限情境,看起來滿好笑的,不過可以讓你及早習慣瞬息萬變的考場:joy:,不用每次都這樣啦,大部份還是在舒適的環境下寫的 - 印出紙本題目來寫 - 在小小的桌子寫 - 在嘈雜的咖啡廳寫 - 在想尿尿的時候寫 - 在考卷的小空間做計算 - 碰到看過的考古,即使知道寫不出來還是會花時間想一下(例:四柱河內塔) - 選擇題會模擬畫卡,像這樣 ![upload_3ac490a586edfd71668ee2ee37ed1b53](https://hackmd.io/_uploads/BJxkpBYCa.jpg) 一開始寫考古會滿不適應的,因為過往都是一章一章唸,寫考古則是大雜燴,全部混在一起考,要早點習慣這種感覺,你的腦袋提取答案的速度會越來越快。 :::info 以作業系統來比喻,一章一章寫題目的話,知識都還存在腦袋的 cache,很容易就可以提取出來使用;但假如寫考古,範圍很大,你可能沒辦法全部載入 memory,而且題目都是 random access,沒有 spatial 或 temporal locality,就容易產生 cache miss 甚至 page fault,需要更長的時間去 disk 找資料。 ::: 寫題目的時候要在腦中對題目做分類,這是哪科哪章的內容?這個題目想問什麼?這題屬於簡單還是難?多寫幾份之後,你會找到你的弱點,這時再回去針對該重點複習或寫題庫即可,這就是寫考古的目的。 - 考古是用來抓漏的,不是用來打擊信心的 - 學會去辨識基本題,全國都會的題目你不能寫錯 - 學會去辨識難題,考試時間有限,勇敢地跳過它 - 寫一寫你會發現,你之前花時間糾結很久看不懂的地方,根本就不會考 就算你已經唸了上千個小時,到考試前一天一定都覺得書還沒唸完,不要緊的。大家都一樣,沒有人考資工所敢說自己已經唸完的,要相信自己,會的都考出來,不會的其他人肯定也不會。 ## 各科準備細節 ### 線性代數 > 課堂筆記、線性代數及其應用(上)(下)、[3Blue1Brown](https://www.youtube.com/watch?v=fNk_zzaMoSs&list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab)、[線代啟示錄](https://ccjou.wordpress.com/) 線代最重要就是觀念!老師說得很好,***`前兩章給你工具、第三章給你一個平台、第四章之後教你蓋房子`***。線代是個連貫性非常高的科目,前面地基沒打穩,後面蓋的房子就容易倒,這是我認為線代既難學又好學的原因,難學是因為前期需要花大量時間打基礎;好學也是因為後面的章節會不斷用到前面的內容,你會需要一直往前翻,一次兩次三次,到最後哪個定理在哪一頁的哪個位置都記起來了,學到後面不太會忘,也不太需要複習。 <!-- 線代有些觀念真的很重要,下面這兩頁我大概看了十次有了,不同時期看都會寫新的理解上去,很常出在是非題。(出處:wjungle 大大線代筆記) <p float="left"> <img src="https://hackmd.io/_uploads/B1ev6BmRp.png" width="350" style="display:inline-block;"> <img src="https://hackmd.io/_uploads/SkqraBXR6.png"width="350" style="display:inline-block;"> </p> --> 記得我大一第一次學線代的時候,覺得這到底是什麼天書,有夠抽象,學完行列式之後就完全迷航了;直到我這次跟著老師好好學過一遍,才總算比較理解線代到底在做什麼。等你學到一個階段,你會發現線代其實就是由幾個觀念貫穿起來:**列運算、行列式、反矩陣、線性獨立、線性轉換、rank、特徵值、對角化、投影、各種矩陣分解**,觀念就那幾個,串起來就很強了,考試怎麼考都不會倒。 線代我主要以筆記為主,複習時會把筆記上的題目自己算一遍,老師上課滿多口述的重點記得抄下來,下課後一定要練題目,幾題就可以了。課本內容算是筆記的加強版,可以在讀完筆記後快速 run 過,有些筆記上沒有的證明可以看一下,每章後面的精選範例我都有寫,題目真的不錯也不簡單,分類題庫我幾乎只寫上冊 Easy,下冊寫完範例就沒空了。 寫考古的時期,不熟的單元我有把題庫寫一寫,詳解很不錯,且題庫比較符合近年趨勢。課本的題目畢竟久沒更新,我覺得很多滿難的要自己斟酌,特別是數研所的題目,資工不會考這麼難。 寫線代題目細心很重要,不管是反矩陣、QR 分解或是一題動輒半小時的 SVD,基本上都是一步錯步步錯,而細心來自於平常大量的練習,寫題目寫到變反射動作,才能在考試時間壓力下算得又快又準(我這邊唬爛一堆今年交大四階反矩陣還是算錯了==) 最後推一個 YT 頻道[漫士沉思录](https://www.youtube.com/@manshi_math/videos),在我們這年考試一個月前,這個頻道突然出了一堆線代影片,算是中文版的 3Blue1Brown,超讚! ### 離散數學 > 課堂筆記、離散數學(上)(下) 離散跟線代就差很多了,真的就是離離散散,各章之間關聯度沒這麼高,就算前一章沒學好,這章又是嶄新的開始。跟線代比我真的比較喜歡離散,有時候讀一讀都覺得自己好像什麼酷酷的數學家(並沒有)。 讀這科我很喜歡在網路上找些有趣的科普影片,讀累的時候休息看看也很不錯,我考研的時候 YT 首頁全部都是這些東西:joy: 以下隨便列一些,不見得跟考試有關係,可是真的很有趣 - [【毕导】这个视频里说的都是真的,但你却永远无法证明 | 4K](https://www.youtube.com/watch?v=W4rw_kFswj4)(推爆,超好看) - [哥德尔不完备定理到底说了啥?为什么希尔伯特的数学梦因此破灭?](https://www.youtube.com/watch?v=FVZaOTi6ZbE) - [Why is 0! = 1?](https://www.youtube.com/watch?v=X32dce7_D48) - [In 2003 We Discovered a New Way to Generate Primes](https://www.youtube.com/watch?v=OpaKpzMFOpg) - [The RSA Encryption Algorithm (1 of 2: Computing an Example)](https://www.youtube.com/watch?v=4zahvcJ9glg) - [掀翻數學的第三次危機為什麼讓所有數學家都瘋了?數學到底是什麼 | 雅桑了嗎](https://www.youtube.com/watch?v=innTVh4I6FY) - [《火柴人vs数学》深度解析(一)欧拉公式](https://www.youtube.com/watch?v=1R3P3DLTlWE) - [Understanding the Halting Problem](https://www.youtube.com/watch?v=Kzx88YBF7dY) 離散上冊幾乎占了考試 70% 的題目 - Ch1: **集合論、費馬小定理、中國餘式定理、Euclidean algorithm** - Ch2: **關係**要會算各種 **relation 個數**,**函數**的話記得下面這個圖 ![螢幕擷取畫面 2024-03-18 000524](https://hackmd.io/_uploads/Hkf-TSFC6.png) ,**鴿籠**很多考法我有自己整理常見題型,要先找出誰是鴿子誰是籠子;**計數問題**中央交大都會考,掌握觀念就好拿分,我是這樣記: $$|Z^+|=|Z|=|Q^{+}|=|Q|<|\overline{Q}|=|R|=|C|<|P(R)|<|P(P(R))|$$ - Ch3: 高中有好好學的話**排列組合**不是問題,台大愛考**組合證明**([這份](https://www.sec.ntnu.edu.tw/uploads/asset/data/6256406a381784d09345bb95/04-101027-%E5%B9%BE%E5%80%8B%E6%81%86%E7%AD%89%E5%BC%8F%E7%9A%84%E7%B5%84%E5%90%88%E8%A8%BC%E6%98%8E(%E6%9C%88%E5%88%8A).pdf)很棒)跟**二項式定理**要會,後面看似很多有的沒的公式,**onto func.、2nd Stirling num.、亂序、禁位**,其實都是**排容原理**的推廣,我一個公式都沒背,用排容想就好 - Ch4: **生成函數**,應該是外星人發明的,考試的話會用就好,題目變化不大,一定要拿分,如果不確定有沒有學會的話,請去寫清大 108 第一題,可以用生成或特徵方程式都解看看(記得留一個小時來寫^^)。本章最重要的公式: $$(1-x)^{-n}=\sum^{\infty}_{r=0}\binom{n+r-1}{r}x^{r}$$ - Ch5: 資工各科都看得到的**遞迴**,可以用各種方法互相驗算,也是一定要拿分的一章 - Ch6: **圖論**,名詞很多的一章,各種定義都要很熟,跟其他章很不一樣,有時候整題看下來一個數字都沒有。圖論證明都是講道理式的,我會先看一次詳解,再自己寫一次,久了之後會比較知道那些小定理要怎麼用,不過我自己覺得這邊沒學很好就是了 - 下冊我沒怎麼看,寫考古有碰到再複習即可,跟資演滿多重複的。**布林代數**跟**邏輯**要會,因為我們學校的離散是從這邊開始教,所以還滿熟的。**偏序、全序、絡**要看,滿簡單的也很常考。**有限狀態機**如果有修過計算理論或 compiler 應該沒問題,不過考試極少出現(今年清大有一題文法),有空再看 ### 資料結構 > 課堂筆記、[LeetCode](https://leetcode.com/)、原文書(Fundamentals of Data Structures in C, 2nd Ed.) 主要就是各種**樹的定義、操作跟複雜度**,各種**排序的複雜度跟 stable/unstable**。 **Quicksort** 必考,avg. case 的時間複雜度要能夠自己推出來,排序好的 input 是 worst case。 <style type="text/css"> th { text-align: center; } </style> <table style="text-align:center"> <tr> <th rowspan="2" colspan="2"></th> <th colspan="3">Time</th> <th rowspan="2">Space</th> <th rowspan="2">(Un)Stable</th> </tr> <tr> <th>Best</th> <th>Avg.</th> <th>Worst</th> </tr> <tr> <th rowspan="3">初等</th> <th>Insertion</th> <td style="color:red">O(n)</td> <td>O(n<sup>2</sup>)</td> <td>O(n<sup>2</sup>)</td> <td>O(1)</td> <td>S</td> </tr> <tr> <th>Selection</th> <td>O(n<sup>2</sup>)</td> <td>O(n<sup>2</sup>)</td> <td>O(n<sup>2</sup>)</td> <td>O(1)</td> <td>U</td> </tr> <tr> <th>Bubble</th> <td style="color:red">O(n)</td> <td>O(n<sup>2</sup>)</td> <td>O(n<sup>2</sup>)</td> <td>O(1)</td> <td>S</td> </tr> <tr> <th rowspan="3">高等</th> <th>Quick</th> <td>O(nlgn)</td> <td>O(nlgn)</td> <td style="color:red">O(n<sup>2</sup>)</td> <td>O(lgn)~O(n)</td> <td>U</td> </tr> <tr> <th>Merge</th> <td colspan="3">O(nlgn)</td> <td>O(n)</td> <td style="color:red">S</td> </tr> <tr> <th>Heap</th> <td colspan="3">O(nlgn)</td> <td>O(1)</td> <td>U</td> </tr> <tr> <th rowspan="2">線性</th> <th>Radix</th> <td colspan="3">O(d*(n+r))</td> <td>O(n*r)</td> <td>S</td> </tr> <tr> <th>Counting</th> <td colspan="3">O(n+k)</td> <td>O(n+k)</td> <td>S</td> </tr> </table> > Radix sort: d(位數、回合),r(base、基數) > Counting sort: k(鍵值範圍) 暑假比較有空的時候我有手刻過各種高等樹的 code 並視覺化,真的寫 code 會發現一堆細節,寫完就不太會忘了。我實作過的樹: BST, AVL, heap, min-max heap, deap。 ![upload_6184c6c6c8349af1492fd27d39d43a23](https://hackmd.io/_uploads/HygmprYCT.png) 另外資結跟演算法我有刷一些 LeetCode,主要是練解題思路,用 python 寫起來我覺得跟寫 pseudocode 差不多,如果寫 code 會花太多時間就不建議了,畢竟考研還是手寫為主。我寫過的題目列在最後面的附錄。 ### 演算法 > 老師自編講義、[LeetCode](https://leetcode.com/) 老師的講義很神,小小一本內容很豐富,口語化的敘述不會有教科書的生硬感,我上課筆記就直接抄在書上。**DP** 只要把遞迴式寫出來就解完了,我寫滿多 LeetCode 練 DP 的,以前都暴力亂解的 Medium 題,學過演算法後用 DP 解開會滿有成就感的。常見的 DP 複雜度跟遞迴式我有自己整理後背起來,考試很好用。(**Rod-cutting, fractional/0-1 knapsack, Matrix chain, OBST, LCS, LIS, Min-edit distance, KMP**) 各種 **shortest path, max-flow, MST** 演算法的複雜度,也要熟到可以直接背出來,考交大是沒有時間給你思考的。很多東西在考試能快速反應是因為你已經推導過無數次變成像用背的一樣,跟直接死背不太一樣。 今年台大清大都有考**近似演算法**,可以多注意一下。 **P/NP/NPC** 幾乎都考觀念,掌握觀念就好拿分,考試時腦中會一直浮現這兩張圖:(src: [wiki](https://zh.wikipedia.org/zh-tw/NP%E5%AE%8C%E5%85%A8)) <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/P_np_np-complete_np-hard.svg/1280px-P_np_np-complete_np-hard.svg.png" width="350"> 不過我的讀法也頂多掌握基本題而已,今年台交的考法我就很不擅長,分數滿難看的。 ### 作業系統 > 課堂筆記、原文書(Operating System Concepts, 10th Ed.)、[清大周志遠 OCW](https://ocw.nthu.edu.tw/ocw/index.php?page=course&cid=141)、維基百科 這科我主要以筆記搭配原文書來學習,老師的補充 PPT 都是原文書的內容,所以我選擇直接看恐龍書,1~10 章我幾乎都有看。原文書滿好看的,有助於我把整個來龍去脈補起來,不會像上課有時候只有結論,而且其實很多考題是直接挖恐龍的句子放在選項裡,有讀過會比較知道在講什麼。不過這科沒有實作過的話會很像背科,有時候考題會滿主觀或靠想像,我基本上也是死讀書:weary:。 恐龍書作者有時候滿好笑的: ![螢幕擷取畫面 2024-03-19 223506](https://hackmd.io/_uploads/rJKN6rFCp.png) ### 計算機組織 > 計算機組織與結構重點直擊(上)(下)、原文書(Computer Organization and Design, 5th Ed.)、維基百科 這科我主要是讀藍色的上下冊,基本上也是原文書的中文精簡版,老師上課都是講課本內容跟習題,所以這科我就沒有帶電腦上課了,筆記都直接抄在課本上。 號稱比學生還認真的老師,PPT 很用心做,課後複習很方便,看 PPT 就能大概想起老師當時在講什麼,我真的無法想像做那些 PPT 要花多少時間⋯⋯,能把他給的資源全部讀完是絕對沒問題(台大除外)。老師教得很細很完整,而且常常同一句話會重複講兩三遍,有時候還以為自己聽錯:joy:。 大學修課時有用 [MIPS simulator](https://courses.missouristate.edu/kenvollmar/mars/) 實際跑過 MIPS code,也有用 Verilog 寫過 single-cycle CPU,對於 register 那些要怎麼用以及資料流的熟悉很有幫助,學完可以自己默背畫出整個 datapath,畫的過程就會發現自己哪裡還不熟悉。Memory 的章節跟作業系統滿多重疊的,計組這邊感覺講更細一些,也多了 cache 的部份。 ## 針對考試去準備 一開始接觸考研教材的時候,我都想說為什麼題目後面都要標這是哪年哪個學校考的,這很重要嗎?全部都弄懂不就好了。現在回過頭看當時的自己實在太天真了:joy:。 雖然很不想承認,但是必須先認清一個殘酷的事實,**考試跟做學問是兩回事。考試的時間跟範圍都是有限的**,準備時間給再多都嫌不夠,每個學校都有偏好的出題特性;而**做學問的時間跟範圍是無限的**,就算現在考完試了,進入碩班又是新的開始,在知識面前我們依然渺小。 所以,要針對考試去準備,一刷的時候可以不用管考試盡情吸收,二刷三刷時就要針對考試的方向去收斂與重點加強。 **考試時我們要打敗不是那張考卷,而是你隔壁那個戴眼鏡的。 考研最大的秘密就是,高分的上榜、低分的落榜。** 附上黃老師在線代最後一堂課下課前的逐字稿: > 記得就是說,考研究所就是考很基本的東西,不需要有什麼偉大的智慧來解決這些問題,只要夠用功,一定都考得上。智慧是反映在你學習的時間,以及你學習的反應力,比較聰明的人學習時間就可以拉很短,考試的時候反應時間也比較短,差別只是在這裡。畢竟是考試,如何改善這一點,就是平常花兩三倍的時間準備,才能跟那些所謂很聰明的人去比高下,只能這樣子了。 > 那個是訓練出來的,自認沒有別人聰明,平常就要把那個反應時間訓練出來,那個只能靠平常訓練出來。智商只能影響到這裡,並不會影響你去學這門學問能不能學得懂,就是你一定要花時間下去,但有些人真的就是比較聰明,他一下就學得起來。這也 depends on 你高中學的數學,因為你有些人就連開根號都有問題,他是花很多時間在彌補那一塊。你考試就只能考一次而已,報十八間只是考十八個一次,只是永遠在高手下面,每間都備取就很痛苦,看人家臉色就很痛苦,人家不要的才輪到你,只能想辦法跳到高手那個行列。暑假很重要,再沒有拚就沒了。 ## 各校考試心得 ![螢幕擷取畫面 2024-03-20 112610](https://hackmd.io/_uploads/SJ9STrFCT.png) ### 清華大學(2/1) 考清大那天,看到台達館塞滿滿的都是人,當時就在想,大家都這麼認真,就錄取那幾十人,到底憑什麼是我? 第一天上考場緊張爆,整天都處在超緊繃的狀態,每節中間休息都在教室外面的椅子狂看筆記,中餐吃最熟悉的全家美式+麵包+香蕉。今年三科都全選擇,每科進去看到桌上有答案卡都偷偷開心一下,印象中沒有特別難的題目,寫起來沒有台交那種崩潰感。今年第一次考線代,簡單到懷疑有沒有陷阱,只記得做了一堆列運算,判斷是否線性獨立。 我當天考完的小記錄: > **計科**:5題單選(3 分/題),17題多選(5 分/題,各選項單獨計分,答錯倒扣 0.5) > **計系**:40 題單選(2.5 分/題,答錯倒扣 0.5) > **數學**:25 題單選(4 分/題,答錯倒扣 2) ### 陽明交通大學(2/2) 今年交大,我願稱之為 113 慘案,大屠殺等級。考完第一節資演整個人傻在位置上,開始想是不是可以收一收回家準備台大了。算分方式回到 108/109 年,題組式變態給分,錯一個選項整題組沒分,寫起來偏不爽,硬體被倒扣到懷疑人生;數學計算量很大,算到一半都想說要把它算完還是先算下一題,最後連四階反矩陣也算錯,整張考卷最有把握的是女護士:syringe:。我考完真的覺得不會上,感覺大家分數都壓很低,不過後來成績出來有比我自己算的高一點,不確定是不是有送分或改計分方式。我應該是靠數學上的,交大名額較多且各所的採計加權科目不同,若有單科突出還是有機會上榜。 ### 台灣大學(2/3) 資演很難,真的很難,幾乎沒有基本題。硬體夢迴 109 年,計結又回到以前的出題模式,整整兩面的英文閱讀測驗,我以為我在畫卡原來是在簽樂透;OS 題目完全是拿 109 年來改的,即便如此我還是不會寫。數學是這兩天我唯一一科覺得自己有唸書的科目,離散全對,線代只對一題。英文跟去年比難滿多的,寫完在位置上補眠還流口水。 ### 中興大學(2/6) 資演有考 C 的指標跟 `++` 那些,就是給一段 code 裡面一堆 `++`,問你 output 是多少,很像面試會出的題目,還有一題三層巢狀 for loop 問複雜度;硬體有考 RAID 要算 parity;數學離散前兩題考完全沒看過的名詞、一題要寫矛盾證明、一題考 huffman code、一題凱薩加密。整體不難,但硬體配分很重,我好像被倒扣爛了。 ### 中央大學(2/18) 隔了好久才考的最後一間,一如往常的考古大學,寫硬體前的下課我同學跟我說去年某一題會考,結果真的在考卷看到我直接笑出來。硬體題目超少一下就寫完了,大概前後檢查了五遍,收卷時教室剩五個人。 ## 心態上的建議 這個本來要放在文章開頭的,後來考量閱讀的流暢度才放在這裡。因為我覺得考研期間心態比什麼都重要,沒有好的心態,前面講這麼多也是一點用也沒有。 學會處理自己的情緒是考研的第七科,備考期間大部份都要一個人面對,會多出很多自己的時間,會變得很容易東想西想。 考研是場長期抗戰,最難的不是那些艱澀的題目,而是心態。把心態養好了,不要太玻璃心,不要容易受他人影響情緒,避免情緒上的大起大落,不一定要把自己變成無情的刷題機器,但保持穩定的情緒這條路會走得比較順。 說教意味好像太濃厚了🫠,不過我主要是講給自己聽的,與其全力燃燒三天,一天唸十二小時以上,接著耍廢兩天;不如一天唸八小時,穩穩地唸五天。 我自己有一個考研專屬歌單,讀書的時候點開很容易進入狀態,讀到心情很差的時候聽聽歌也會好一點。 ``` 〈天空沒有極限〉- 鄧紫棋 🎶多少次我心裡浮現失控的畫面 多少冷言冷語洶湧地來到耳邊 多少夜失眠 你是否也曾度日如年 差一點淪陷 當我落寞地遙望著再來的春天 當我默默地把眼淚流在心裡面 當一切違願 誰不曾埋怨 進退都在一念間 ... 前方路若遙遠 回頭看看從前 看看鏡子裡的你帶著曾經的我 已走了多遠🎶 ``` ## 感謝 謝謝戰友施,畢業多年剛好一起準備考研,感謝有個戰友可以讓我這個社恐人有問題時可以隨時問,不用一直去大群吵大家。兩人小戰隊終於一起上榜了,以後還是清交好夥伴。 謝謝林,考研期間一直借我蹭新竹住處,考清大那天載我到校門口跟我說的ㄅㄨˊㄚˋ理論,讓我考試期間安心了不少。還有考試前三天你們從新竹開車下來,只為了給我考研小禮物,真的經歷過的才知道考研生最需要的是什麼:sob:,阿兩的必勝護身符我每場考試都帶在身上。 謝謝吳,原本是學妹但變考研前輩,跨考資工四大正取的刷榜傳說:laughing: 當年的心得文到現在還在我的第一個書籤每天膜拜,是我準備考研的最高指導原則。 謝謝孫跟狗,考研期間群組的大家都是我的精神支柱,還借我台北的住處跟機車,考台大那天一大早騎車 15 分鐘就快速抵達考場。 謝謝邱,在我考研前期給我很多鼓勵,即使知道我很爛還是一直相信我會考上,我終於完成當時的約定了。 謝謝蘇,在我考研中期,每天把自己鎖在房間、補習班、圖書館的時候,還是會把我抓出門運動,陪我聊天幹話。 謝謝家人們,考研後期窩在家裡當米蟲,脾氣還變很差,雖然我平常不太會表示,但我都有感受到你們在背後默默支持,並且相信我所做的一切決定。 還要謝謝很多朋友們,很怕考不上所以其實有點秘密準備。 考研期間各種約一直拒絕🥲,還是有人記得我,關心我有沒有活著。 謝謝 TG、DC、還有鯊大的賴群,雖然我很少講話但會躲起來看大家聊天很抒壓。 謝謝清大土地公、交大土地公,還有文昌帝君,一直以來都很照顧我。 最後謝謝自己,戰鬥到最後一刻,終於沒有再讓自己失望了。 ## 附錄:我寫過的 LeetCode 題目 ### Data Structure **Ch3 Stack & Queue** - [224. Basic Calculator](https://leetcode.com/problems/basic-calculator/) ==Hard== - [227. Basic Calculator II](https://leetcode.com/problems/basic-calculator-ii/) ==Medium== - [232. Implement Queue using Stacks](https://leetcode.com/problems/implement-queue-using-stacks/) ==Easy== - [225. Implement Stack using Queues](https://leetcode.com/problems/implement-stack-using-queues/) ==Easy== - [1441. Build an Array With Stack Operations](https://leetcode.com/problems/build-an-array-with-stack-operations/) ==Medium== monotonic stack - [496. Next Greater Element I](https://leetcode.com/problems/next-greater-element-i/) ==Easy== - [2104. Sum of Subarray Ranges](https://leetcode.com/problems/sum-of-subarray-ranges/) ==Medium== - [907. Sum of Subarray Minimums](https://leetcode.com/problems/sum-of-subarray-minimums/) ==Medium== **Ch5 Tree** - [501. Find Mode in Binary Search Tree](https://leetcode.com/problems/find-mode-in-binary-search-tree/) ==Easy== - [98. Validate Binary Search Tree](https://leetcode.com/problems/validate-binary-search-tree/) ==Medium== - [2265. Count Nodes Equal to Average of Subtree](https://leetcode.com/problems/count-nodes-equal-to-average-of-subtree/) ==Medium== - [100. Same Tree](https://leetcode.com/problems/same-tree/) ==Easy== - [101. Symmetric Tree](https://leetcode.com/problems/symmetric-tree/) ==Easy== - [105. Construct Binary Tree from Preorder and Inorder Traversal](https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) ==Medium== - [106. Construct Binary Tree from Inorder and Postorder Traversal](https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) ==Medium== - [938. Range Sum of BST](https://leetcode.com/problems/range-sum-of-bst/) ==Easy== - [700. Search in a Binary Search Tree](https://leetcode.com/problems/search-in-a-binary-search-tree/) ==Easy== --- ### Algorithm **Ch2 Divide and Conquer** - [53. Maximum Subarray](https://leetcode.com/problems/maximum-subarray/) ==Medium== - [215. Kth Largest Element in an Array](https://leetcode.com/problems/kth-largest-element-in-an-array/) ==Medium==(Selection Problem) - [973. K Closest Points to Origin](https://leetcode.com/problems/k-closest-points-to-origin/) ==Medium== **Ch3 Dynamic Programming** - [121. Best Time to Buy and Sell Stock](https://leetcode.com/problems/best-time-to-buy-and-sell-stock/) ==Easy== - [122. Best Time to Buy and Sell Stock II](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/) ==Medium== - [123. Best Time to Buy and Sell Stock III](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/) ==Hard== - [509. Fibonacci Number](https://leetcode.com/problems/fibonacci-number/) ==Easy== - [343. Integer Break](https://leetcode.com/problems/integer-break/) ==Medium== (Rod-Cutting) - [416. Partition Equal Subset Sum](https://leetcode.com/problems/partition-equal-subset-sum/) ==Medium== (0-1 knapsack) - [518. Coin Change II](https://leetcode.com/problems/coin-change-ii/) ==Medium== (0-1 knapsack) - [494. Target Sum](https://leetcode.com/problems/target-sum/description/) ==Medium== - [1143. Longest Common Subsequence](https://leetcode.com/problems/longest-common-subsequence/) ==Medium== - [583. Delete Operation for Two Strings](https://leetcode.com/problems/delete-operation-for-two-strings/) ==Medium== (Longest Common Subsequence) - [1035. Uncrossed Lines](https://leetcode.com/problems/uncrossed-lines/) ==Medium== (Longest Common Subsequence) - [62. Unique Paths](https://leetcode.com/problems/unique-paths/) ==Medium== - [63. Unique Paths II](https://leetcode.com/problems/unique-paths-ii/) ==Medium== - [300. Longest Increasing Subsequence](https://leetcode.com/problems/longest-increasing-subsequence/) ==Medium== - [718. Maximum Length of Repeated Subarray](https://leetcode.com/problems/maximum-length-of-repeated-subarray/description/) ==Medium==(Longest Common Substring) - [72. Edit Distance](https://leetcode.com/problems/edit-distance/description/) ==Medium== - [97. Interleaving String](https://leetcode.com/problems/interleaving-string/description/) ==Medium== **Ch 4 Graph** - [207. Course Schedule](https://leetcode.com/problems/course-schedule/) ==Medium==(Topological Sorting)