Try   HackMD

111年度資工所心得

1.簡介

個人背景: 116 理工科系畢業,約三年程式經驗,考試六科沒修過,沒補習,沒戰友

準備時長: 2021/8-2022/2 約6個月

心得簡介: 這裡不寫啥雞湯或心路歷程,主要是把自己準備的方法跟資源提供給可能有需要自學的人

2.成績

硬體 軟體 數學 英文 總分
台大 79 80 100 66 265.6(正)
交大 61 67.5 59 201.4(正)
清大 86 60 146(正)
成大 58 77 66 201(正)
中央 69 52 67 188(正)

3.各科準備

順序的話從硬體、軟體、數學這樣寫,內容會包含看的書跟部份的ocw

硬體

1. 作業系統

參考書: Operating System Concepts 10/e, Operating Systems : Three Easy Pieces

OCW: 周志遠教授作業系統

我自己是一口氣把周志遠教授的作業系統聽一遍,然後就覺得自己超屌,殊不知只是他教得好,結果過幾個禮拜就忘光了。接下來就是直接開始看恐龍本,我個人覺得恐龍本讀起來蠻有趣的,準備方法大概如下:

  1. 先聽一章周的線上課程
  2. 仔細看那一章對應的恐龍書
  3. 把書翻到那章的intro然後開始順著他的簡介補充書裡細節的內容

這樣的loop大概有輪過3次左右(周的ocw我只看了兩次)。另外我想補充的是第二本書(這本書作者有公開線上閱讀),對於恐龍本有些比較潦草帶過的細節這本書寫得非常詳細,主要是用說引導的方式引領我們一步一步過關斬將解決問題。作者會先拋出一個問題,討論解決方法。如果沒有時間看完的話建議可以參考這本書的部分實作,以及hard/soft link、lottery scheduling、和最後NFS的章結,保證有幫助。

作業系統這科最後近考試前我是直接看著目錄然後開始想這章在講啥,腦裡有一個關聯圖很重要。

另外附上一些當時有點困擾我的觀念的youtube小影片(之後有想到會再補充)

1. File Fragementation
2. Overprovisioning
3. Stateful & Stateless
4. NAS vs SAN

2. 計組

參考書: Computer Organization and Design MIPS 6e, Computer Architecture 6e, An Introduction to Parallel Programming 2e

OCW: 單智君教授計算機架構,High Performance Computer Architecture(Udacity), 周志遠教授平行程式, Onur Mutlu Lectures

計組我覺得超級有趣所以就看得蠻多蠻雜的,正常來說看白算盤就很夠了。這裡想特別補充一下第一章的ISA跟第四、五章的Pipeline、Memory,強烈建議看完白算盤要去看柱子本(Architecture那本),搭配單智君教授的線上課程(上課例題計算的部分可以跳過沒關係),會對整個概念更加熟悉。

另外如ALU那章的CLA我建議去看網路上印度人的影片,我推薦那個大鬍子哥不推薦那個每個尾音都會勾起來的女的。然後浮點數加法的硬體設計,LL/SC的用法以及Hamming Code的部分則大推雲科大朱宗賢老師。

想要快速且不失深度的了解或複習計組大推Udacity上面High Performance Computer Architecture這個免費課程,真的舒服

最後我覺得不能放的第六章的準備方法大概如下:

Vector/Array Processor 以及 Multithreading 看 Onur Mutlu,GPU看周志遠教授的平行程式以及上面推的Parallel Programming(簡單看過),Cache Coherence的部分快速了解可以看我上面推薦的Udacity,若想要比較深入理解還是推單智君教授,把那兩張圖推一推就可以了,最後的Network Topology等等直接看白算盤就夠了。

一樣附上一些我記得的連結,有想到會再補充

1. High Performance Computer Architecture
2. 朱宗賢教授的Youtube
3. Onur Mutlu Lectures
4. 大鬍子哥CLA
5. ALU,Adder紅鼻子哥
6. 單智君教授Youtube

軟體

資料結構與演算法

: Introduction to Algorithms 3e (第四版4月要出了快買起來), ptt資結筆記

OCW: MIT 6.006, Tim Roughgarden Lectures, Abdul Bari, Jenny's lectures

這兩個一起準備,所以就寫在一起。對於剛開始準備,演算法重點可能會擺在會操作,例如知道怎麼手動算shortest path,怎麼華麗的使用四則運算算出Floyd Warshall。在剛開始學習時大推Adbul Bari大神的線上課程,講的超級前顯易懂,會讓你覺得演算法阿不就這樣。

然後當你覺得你已經是演算法操作之神,然後寫題目發現喔靠背這是啥雞雞時就會默默翻開楓葉本了。我只能說楓葉本真的是宇宙無敵霹靂好書,紙摸起來很爽,排版又漂亮,題目又寫不出來。我個人覺得重點還是擺在Graph跟NP這兩章。Graph的部分如了解為何BFS算出來能確保V.d = δ(S,V),SCC的正確性,為何跑Dijkstra加入的邊集就會是shortest path,又為何Max flow = Min cut。許多考題都是Graph這章的延伸變形,我認為投資時間搞懂這些是有效的。

DP的部分我個人是有去刷LeetCode相關題目,這裡還是大推Blind 75,不必去做太鑽牛角尖的題目,我認為把握楓葉課本內容的題目以及部分延伸的題目即可,不必太執著於此畢竟如果真的出了要你當場想,在時間壓力下我認為很難想得出來,而要用瘋狂刷題記題型的方式解決又很低能。

至於NP的觀念我覺得基本的部分不會太難,只需搞清楚誰reduce to誰就可以了,但各式的reduction千變萬化,我覺得是準備不完的。最後我找到最適合的只有Tim Roughgarden Lectures中的reduction教學了,他影片中有一個超大的Big Picture,其中有些比較簡單的他會口頭上快速講過大概思路(但大部分其實都還是聽不懂要去Google,如SAT跟3-Coloring的Reduction等等),比較難的也有詳細的說明跟驗證,個人認為是值得一看的。

最後關於資結我認為看筆記就非常足夠了(可能跟我寫過三年程式有關),但對於一些冷門資料結構如Deap、SMMH等等真的是看了筆記也看不懂,就必須用心查Google了。Leftist tree 跟 B-tree, B+ tree等等在Youtube都有非常好的操作影片。

1. Abdul Bari
2. Tim Roughgarden
3. Jenny's lectures

數學

書: 子嘉大神線代、離散

我也不知道這科要說啥欸,河內塔好煩,想到再補充

3.總結

我認為每個人考研的原因,目的,背景都不同,但一樣的一定是大家都很努力。我對於資工領域的知識非常感興趣,讀這些書的過程也覺得每天都在進步,非常的享受,也希望這些資源能幫助到有需要的人。

以下是一些過去大大分享的考古題與詳解等等資訊,付在下方,若有任何問題也可以留言討論

1. 106-109資工成績紀錄表
2. 部分考古題
3. 部分考古題
4. 電資人