我敢說這是本版今年最奇葩的心得文
沒 有 之 一
準備時間: 4-5天 (欸欸, 先別急著噓我, 能看完再噓嗎?
前言
====
我知道4-5天的準備大概跟裸考有87%像, 所以為了避免本篇變成
廢文, 我將為各位帶來以下重點:
i. 平常實力培養: 如何在平時練出能夠短時間考上台大的實力
對於準備時間長的人, 甚至可以把我給平時的建議直接
拿來用. 當然, 這邊指的實力不只是考試適用.
ii. 考前幾天的最後複習: 4-5天大概跟一般考生的最後複習差不多
iii. 如何讓台大的CA/OS降落: 台大的計結作業系統一直起飛,
台大是國立台灣大學, 又不是國立台灣大航空公司, 這樣
一直飛一直飛我怎麼受得了?
成績
====
英文(A): 88
數學: 60
計算機結構與作業系統(B): 73
資料結構與演算法: 84
總分: 225.80 錄取最低分數: 149.20
錄取名次: 正取一
是的, 我只報了台大資工一間, 因為報名費好貴RRRRRRRR~
背景
====
118資工雙主修電子, 輔修機械跟企管. 另外因為某些原因有一張
黨校學生證. 所以如果你要說我是黨校的學生我也不反對, 不過
我在黨校沒待多久就是了. 總之我雙重學籍, 一個是技職, 一個是
文組, 在八卦版都是弱勢.
曾經在118拿過書卷, 不過最近三四年都沒拿了. 有延畢, 今年
在118要畢業. 曾經休學過, 還差點搞到退學, 但是我沒種...
最近兩三年我都在搞電力電子(柔切的Buck, 最近很夯的GaN MOS,
還有各類Inverter), 資工最近碰的少很多.
各科心得
========
以下是各個科目我的心得, 由於我來自技職體系, 所以其中會提
到不少實作的部份. 我個人認為, 如果要讓這些理論有意義, 讀
的時候有感覺, 這些實作是不可必免的.
另外, 我不太相信筆記這種東西, 抄了讀了都沒有用. 只有程式
碼寫過Trace過Debug過, 那些概念才是你的.
(如果是數學科目就當我沒說, 繼續抄筆記吧)
1. 計算機結構
先說我計結很強, 不知道這樣會不會變成台科計結王 (誤
(幫中原單操王Q_Q一下)
這個版上流傳著台大的計結不要唸, 因為沒有人會考高分.
然而我這不就考了高分, 還靠這科拿了榜首嗎?
可見這科是可以唸的起來的. 我甚至懷疑, 計結大家普遍都
低分很有可能是因為大家都覺得沒C/P所以沒唸, 沒唸就低分.
首先我要說明一下計算機結構跟計算機組織到底有什麼不一樣:
- 計算機組織 - Computer Organization
- 計算機結構 - Computer Architecture
前者的課本是知名的白算盤本, 也就是:
Computer Organization and Design: The Hardware/Software
Interface by David A. Patterson, John L. Hennessy
而後者, 作者同樣是Hennessy跟Patterson, 但是不同本書:
Computer Architecture: A Quantitative Approach by
Jonh L. Hennessy, David A. Patterson
前者算是基礎, 後者是建築在前者上面. 一般大學部上課是
教前者, 到了研究所, 高等計算機結構這門課才會教後者.
所以, 如果看台大考試科目名稱, 是寫計算機結構, 因此實際
上考的內容是計算機結構, 不是計算機組織. 只唸計算機組織
當然考不好. 其實這件事情我也是考前四天才發現的, 所以
這本計結其實沒有看得很熟.
再來, 要把這兩個科目都唸好, 我個人覺得數位邏輯的基礎
打好. 因此我會建議多寫Verilog, 然後自幹一顆CPU, 對於
實際釐清這兩個科目裡面的一些概念會比較有幫助.
自幹CPU如果不知道怎麼下手, 可以考慮去下載Xiline ISE
WebPACK (我個人是Xilinx的用戶, 不過學界好像Altera比較
常見), 然後用Verilog去敘述計組裡面那個MIPS CPU的各個
部份, 最後再跑模擬. 如果真的有$$, 可以去買一片Spartan6
的開發版來玩.
除了自幹CPU以外, 還可以自幹Compiler(lex+yacc), 還有熟
一下x86組語, 拿他寫寫程式當練習, 應該對整個電腦的運算
模型會更有清楚, 念起這兩本課本時會更有感覺. 如果沒有
這些實作的經驗, 很有可能真的把CA/CO/OS這三科當成背科
來唸, 那就不好了.
2. 作業系統
如果要對作業系統的實作有一定的熟悉度, 可以閱讀並修改
一些教學用的作業系統(例如: NachOS), 甚至是真正的作業
系統. 我是聽說台大是拿Linux教, 交大是拿Windows教.
我個人當初在這部份則是看Windows, 不過相較於交大有拿到
原始碼, 我是直接請IDA吃ntoskrnl.exe跟ntdll.dll. 另外再
搭配Mark Russinovich的Windows Internal一起服用.
這條路比較硬一點, 所以時間多再來玩.
另外OS也有一部份是應用的實作部份, 反正就寫寫multi-thread
的程式, 用用mutex這樣. 這些平常在寫程式的時候應該就會
用到了. 記憶體管理方面, 一般程式可能比較少用到, 所以
有空可以自己玩玩VirtualAlloc()跟mmap()系列API, 另外也
可以開OllyDbg來看各個Process的Memory Mapping, 應該會
比較有感覺吧.
另外也可以把自己電腦灌成Linux, 畢竟資工系的沒用過Linux
就太誇張了.
當然, 恐龍本要唸完是一定的, 畢竟裡面有一些理論是實作上
比較少見到的, 而且考試會考, 所以整本唸完是很合理的.
3. 資料結構/演算法
這科的課本應該不用說了, Cormen本跟Horowitz.
這科我一樣建議要實作才會強. 就是課本裡面的每一個資料
結構跟演算法都把他寫一遍, 要實際自己生測試資料去測他
(當然如果你懶, 也可以去一般ACM題庫找用到該演算法/資料
結構的基本題來玩到AC為止)
另外, 前一陣子有個要跨考的妹子(NTU Fin)來問我資工所的
考題時, 我發現教不會或他理解得很慢是因為程式語言的基礎
缺乏, 尤其是指標的概念, 因此, 我建議, 這科要唸好, C的
指標概念一定要熟. 指標概念不是講得出指標是什麼就是熟,
而是實際寫程式時能靈活應用. 如果不確定, 試試LeetCode OJ
206. 如果用C作答, 20分鐘內解出拿到AC, 那指標的概念就算
OK了. 另外遞迴的概念也是不少人缺乏的, 一樣, 上面那題
可以試試看用遞迴解來測試自己. 如果以上那題有問題, 那
建議先加強程式基礎再來唸DS/Algo.
玩完實作之後, 考試還有不少理論會考, 所以Cormen本裡面的
證明也要看完.
實際最後半天複習演算法時, 就是只看課本的Psuedo-code做
一個恢復記憶的動作即可.
最後, 台大每年都會考三題遞迴的Big O計算, 值15分. 建議
考前花1小時把這種題型練順, 不要像我一樣在考場推了半個
小時, 浪費時間最後考卷還寫不完.
4. 線性代數
這科我真的很差, 今年第一題高斯消去找Inverse我竟然沒寫
完, 考完才被別人告知先拿第三行減第一行就會很簡單. (崩潰
所以這科我的準備方式就加減看吧.
我課本是看Gilbert Strang的. 然後看課本之前, 先把3b1b的
線性代數介紹看一遍, 會比較有感覺:
https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab
至於課本, 就是看完一大章節隨機挑五題Review來寫.
5. 離散
我覺得把DS/Algo看完之後離散也差不多了, 剩下幾個議題再
看看即可:
- 數論
- 排列組合/機率
- Binary Relation
- Boolean代數
課本我是看Rosen那本, 不過台大幾乎每年都會出個10分左右
不在課本裡面的題目, 這點我不知道怎麼應付.
心得
====
整個唸下來, 我發現4-5天準備台大資工所的考試時間還是太短,
我一開始其實是規劃考前約7~10天左右準備, 不過考前是過年,
過年看書實在太不人道, 過完年, 我爸又抓了全家去花蓮玩了
兩天, 回來就只剩下4天了, 所以就這樣了. 最終以四天的規劃,
考古題最多就是看個一兩年的, 實際上來說沒時間寫. 後果就是
沒有熟練, 答題速度很慢, 三科考卷都是寫不完的狀況.
整體來說, 我覺得一天唸一科, 然後再來兩天寫考古題, 總共
8天, 應該是一個比較適當的準備/複習節奏.
還有, 千萬別讓任何人告訴你你不行. 之前就有人(j6cl3)在那邊
推文說今年台大資工一堆純種本科系的來考, 要大家小心, 還說
本科系的考試很難輸, 如今看看誰沒穿褲子? 強弱不是你的科系
學校決定, 而是你自己決定. 共勉之.
最後謝謝某交大應數正妹借我991計算機, 還有幫我送鐘... 阿,
不是, 我是說借我時鐘讓沒有手錶的在考場上能看時間.