Skip to content

歷屆試題頁面

這是本 web app 的核心功能,以全新的方式展示歷屆試題。

題本清單

用來展示收錄的所有題本。

App 頁面網址:#/exam

功能:

  • 縱軸為年份降序排列、橫軸為學校的表格。
    表格元素包含學校和年份,可以很快速的找到想要的題本,
    點擊後進到題本閱讀器
  • 滑鼠移動到學校縮寫上時,會顯示學校全名。

題本閱讀器

App 頁面網址 ( 範例 ):#/exam/ntu-114

左側的資訊欄:

  • 回到題本選單的連結。
  • 題本資訊,包含學校、年份、科目、來源連結。
  • 顯示更多資訊的按鈕,包含科目編號、系所。
  • 測驗模式,啟用後會隱藏答案,並啟用下方的計時器。
  • 下載題本 (未實作)。

右側的考卷:

  • 檢視考題。
  • 測驗模式關閉時,可以查看答案。
  • 測驗模式關閉時,點選 "詳解" 按鈕可以進到詳解頁面
  • 測驗模式開啟時,會遮蔽考題,並有 "開始作答" 按鈕。
  • 測驗結束後,會隱藏考卷。

詳解頁面

App 頁面網址 ( 範例 ):#/exam/ntu-114/2

左側的資訊欄:

  • 回到題本閱讀器的連結,跳轉後會自動滾動到該題。
  • 上一題和下一題的連結。
  • 題目的標籤,點擊標籤會直接跳至搜尋頁面搜尋該標籤。

右側的題目:

  • 查看題目和解答。
  • 摺疊的詳解。

初衷

我在備考的最後階段,急需大量考古題用於培養手感、增加訓練集,
考古題的來源如下表:

來源花費題本量題目品質
補習班
(題庫班)
附贈或花數千報名涵蓋很多學校,
甚至 30 年前也有
有解說,排版印刷,
有些直接複印原始題本
私人自編一本幾百元,
全買約 2 千左右
幾乎都是四大四中,
大約 10 年內
有答案,不一定有詳解。
排版印刷,有些直接複印原始題本
網路資源尋找的時間成本很散亂,又少,
特定學校可能找不到
字體潦草的手寫詳解、答案錯誤率偏高、
補習班盜印、直接用手機拍原始題本、
網站租了忘記繳費就掛了、
xxx drive 連結容易失效

對我來說,題本沒答案有寫等於沒寫,經歷了沒有好題目可以寫的痛苦之後,
於是立志(?)考完之後要弄個考古資源給後人,一定要屌打所有人的那種。

放榜到一半時,五間學校不是備取就是沒上,我甚至開始覺得:
「 我連一間正取都沒有,我有資格寫這些詳解嗎? 」,
幸好後來交大正取,爽。( 中央落榜生 )
於是又興致勃勃的繼續趕工。

設計目標

為了解決上述痛點,我設了幾個目標:跨平台、電子化、統一樣式、以及題目模塊化。

跨平台

這樣大家都能隨時隨地用,很方便,那就用 web。

由於我大二摸過 Vue,就決定用 Vue 來寫 web app。

電子化

電子化並不只是單純去蒐集網路上的資源,然後建個 db 全丟進去。

現有的電子檔題本圖片和 pdf 居多,尤其是那種假裝是 pdf 實際上裡面還是泛黃的手機相片。
這會導致整份題本的容量過大 (用一堆圖片儲存文本顯然不太合理)。

我需要一種儲存題本的方式,最好像 markdown 那樣用 code 存,
我向 server 請求 code 到 client 再編譯,可以節省很多網路資源。

既然決定用 Vue 開發,那乾脆用 .vue 存題本資訊,全部變成動態組件。

我只要需要寫一套編譯流程就可以了。

統一樣式

剛才提到,品質最差的題本甚至不是手機相片,
還有那種影印品質很爛的考卷,被掃描過後出現很多噪點、資訊缺失。

最難受的是,每間學校使用的字體跟格式都不一樣,甚至有些教授懶的用 LaTex 語法。
我實際檢查過,還有題目出錯。(教授阿你出完後請自己寫一遍好嗎)

而 Vue 可以用 CSS 統一字體、用組件統一排版,搭配 KaTex 高效的渲染,
至於 LaTex 語法修正跟題目糾錯就我來做吧。

題目模塊化

網路資源都是「 題本 」為單位 (一個一個檔案),
因為我想做搜尋題目的功能,所以必須找出一個方法將題本切割成很多題目,
這樣做的話:

  • 可以單獨檢視某一題,以及解答,閱讀較舒適。
  • 幫題目貼標籤,優化搜尋。
  • 一份題本的文字量基本都幾百行,切分成多個題目容易撰寫和維護。