115 高普考高考三級 電信工程 計算機概論 考古題詳解
第 一 題20 分
(一) 使用筆電透過家裡或 hot spot 的 WiFi 上網,如果碰到卡卡的不太順的時候,檢查相關的軟硬體或設定均沒問題,那可能會有其他什麼原因?請列舉兩個常見的可能原因,說明為何會造成網路卡卡的,那又分別該如何解決這些因素。(10 分)
(二) IEEE 802.11 的標準,RTS/CTS 主要解決了什麼問題?為什麼它可以解決這個問題?請說明之。(10 分)
登入後即可作答並保存紀錄。
(一)Wi-Fi 上網不順的常見原因與處理方式
核心觀念
筆電到無線基地台之間的 Wi-Fi 連線正常,不代表整段上網路徑都沒有壅塞。網路傳輸可能受無線電干擾、周遭使用者競爭頻寬,或外部網路壅塞影響。本小題要從「無線區域網路」與「基地台以外的網路」兩個方向找原因。
解題方法
題目已說明相關軟硬體或設定均無問題,因此可列舉下列兩個常見原因,並分別說明成因與改善方式:
-
無線電干擾或無線網路壅塞 附近的 Wi-Fi 網路若使用相同或重疊的頻道,裝置便須競爭共享的無線傳輸時間;微波爐、藍牙裝置等也可能在相近頻段造成干擾。結果是傳輸重試增加、可用頻寬下降,使用者感覺延遲變高或網路卡頓。 **處理方式:**將基地台移到較開放、接近使用位置的地方,避開大型障礙物與干擾源;使用 Wi-Fi 分析工具選擇較不壅塞的頻道,並視設備與環境改用較不擁擠的頻段。
-
尖峰時段的網路壅塞 即使 Wi-Fi 連線正常,家中其他裝置同時串流、下載,或網際網路服務供應商(ISP)在尖峰時段的線路負載過高,都會使可分配給單一裝置的頻寬降低,或使封包排隊、延遲增加。 **處理方式:**暫停或錯開其他裝置的大量下載與串流;若是 ISP 線路尖峰壅塞,可向 ISP 查詢線路狀況,並評估升級方案或更換服務。
解題技巧
題目限定「軟硬體或設定均沒問題」,作答時應把重點放在外部環境與網路負載,並且每個原因都要配對說明「為何變慢」及「如何改善」。只寫「訊號不好」或「網路壅塞」而未交代機制與對策,說明不完整。
(二)IEEE 802.11 的 RTS/CTS
核心觀念
第 二 題20 分
(一) 請問下列的 C 語言函式 xxxSort() 是在執行那種排序演算法?請說明理由。(10 分)
void xxxSort(int arr[], int n) { int i, j, key; for (i = 1; i < n; i++) { key = arr[i]; j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } }
(二) 費氏數列的定義為:
假設我們要寫一個程序來算出 ,可以用遞迴(recursive)方式,也可用迭代(iterative)方式來寫程式。請問這兩種方式的優缺點為何?(10 分)
登入後即可作答並保存紀錄。
(一)排序演算法
核心觀念
此題考查排序演算法的程式碼辨識。插入排序(Insertion Sort)的作法是:從左至右逐一取出尚未排序的元素,將它插入左側已排序區段的正確位置。
解題方法
在程式中,i 從 1 開始,每回合取出 arr[i] 存入 key,並以 j = i - 1 往左檢查已排序區段:
- 當
arr[j] > key時,將arr[j]向右移至arr[j + 1]。 j每次減 1,直到到達陣列左端,或找到不大於key的元素。- 將
key放入arr[j + 1],完成插入。
例如,若陣列為 [5, 2, 4]:第一回合取出 2,將 5 右移後放入 arr[0],得到 [2, 5, 4];第二回合取出 4,將 5 右移後放入 arr[1],得到 [2, 4, 5]。
解題技巧與複雜度
判斷插入排序的關鍵,是看程式是否以 key 暫存目前元素,再把左側較大的元素逐一右移,最後將 key 放入空出的位置。外層迴圈每次擴大左側的已排序區段。
最壞及平均時間複雜度為 ;若輸入已排序,內層移動幾乎不執行,最佳時間複雜度為 。此程式僅使用固定數量的額外變數,空間複雜度為 。由於只在 arr[j] > key 時移動元素,相等元素不會彼此越過,因此此排序具穩定性。
【答案】 xxxSort 執行的是插入排序(Insertion Sort)。
(二)遞迴與迭代計算費氏數列
核心觀念
費氏數列符合遞迴關係式:
遞迴是由函式呼叫自身,直接依照定義拆解問題;迭代則透過迴圈逐步計算並保存中間結果。
解題方法
第 三 題20 分
(一) 與 均為 1-bit 的輸入端,設計一個 1-bit 的互斥或(XOR)線路,判斷 是否與 一樣,若一樣則輸出 0,否則輸出 1。而且只能使用 AND、OR、NOT 邏輯閘(Gate)。(10 分)
(二) 與 均為 1-bit 的輸入端,設計一個 1-bit 相等(EQUAL)的線路,判斷 ,若 true 則輸出 1,否則輸出 0。而且只能使用 AND、OR、NOT 邏輯閘(Gate)。(10 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查互斥或閘(XOR)與相等判斷(EQUAL)的真值定義,以及如何只用 AND、OR、NOT 閘實現邏輯功能。
- XOR 在兩輸入不同時輸出 ,相同時輸出 。
- EQUAL 在兩輸入相同時輸出 ,不同時輸出 ,因此它是 XOR 的反相輸出。
解題方法
先列出兩個輸入的真值表,再依輸出為 的列寫成最小項,最後改寫成題目允許使用的 AND、OR、NOT 運算。
| XOR | EQUAL | ||
|---|---|---|---|
| 0 | 0 | 0 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
(一) XOR 線路
XOR 在 或 時輸出 。這兩列分別對應 與 ,將它們以 OR 合併:
線路做法:
- 用 NOT 閘產生 與 。
- 用兩個 AND 閘分別計算 、。
- 用 OR 閘合併兩個 AND 閘的輸出。
第 四 題20 分
在多執行緒(multithread)的作業系統,可能會有飢餓(starvation)或死結(deadlock)的問題,請問它們各自是怎樣的情況會造成這樣的問題。請各提出一個解決的方法,並說明為何可以解決問題。
登入後即可作答並保存紀錄。
核心觀念
本題考查作業系統中的飢餓(starvation)與死結(deadlock)。兩者都會使執行緒長時間無法前進,但成因不同:
- 飢餓:某執行緒因排程或資源分配不公平,持續被其他執行緒超越,長期得不到所需的 CPU 時間或資源。
- 死結:一組執行緒各自持有部分資源,並等待其他執行緒持有的資源,形成循環等待;循環中的執行緒都無法繼續執行。
解題方法
作答時先分辨問題來源:飢餓的關鍵是不公平分配造成等待無限延長;死結的關鍵是資源互相等待形成循環。接著各提出一項能對應成因的方法,並說明方法如何切斷成因。
一、飢餓的成因與解法
成因: 若排程器採用嚴格優先權排程,低優先權執行緒每次都被新到達的高優先權執行緒搶先,低優先權執行緒便可能一直得不到 CPU。鎖或其他資源若採不公平分配,也可能造成同一執行緒長期無法取得資源。
解法:優先權老化(aging)。 讓等待中的執行緒隨等待時間逐步提高優先權。低優先權執行緒等待越久,優先權越高,最終能取得 CPU 或資源,不會永遠被新到達的高優先權執行緒壓過。
二、死結的成因與解法
成因: 死結須同時具備四項必要條件:
第 五 題20 分
(一) 請將下列中序式(infix)的表示式,轉成前序式(prefix)。(10 分)
(二) 下列兩個 IP,根據它的遮罩,請判定是否屬於同一個子網路(subnet)?(10 分)
與
登入後即可作答並保存紀錄。
(一)中序式轉前序式
核心觀念
運算優先順序由高至低為:括號、乘法、加法;同一優先順序的加法採由左至右結合。前序式(prefix)將運算子寫在運算元之前,不需再用括號表示優先順序。
解題方法
先依優先順序將原式分組:
將最外層的加法及其左右運算式改寫為前序式:
- 最外層:,左邊為 ,右邊為 。
- 左邊的加法:,左運算元為 ,右運算式為 。
- 乘法:,左運算元為 ,右運算式為 。
- 括號內減法:,運算元為 與 。
依序將運算子放在其運算元之前:
解題技巧
每遇到一個二元運算子,依「運算子、左運算元、右運算元」的順序輸出。括號內的減法必須先處理;乘法的優先順序高於加法,因此 要整體作為加法的右側運算式。
(二)判斷是否屬於同一個子網路
核心觀念
/27 表示前 個位元為網路位址,子網路遮罩為: