1(a)物件導向程式設計的三個特性
考點:OOP 基本概念:封裝、繼承與 Class/Instance Variable 定義、OOP 多型:Overloading 與 Overriding 比較,及 SOLID 五大原則
封裝:資料與方法包在類別內,以存取修飾字隱藏實作,只透過公開方法存取。
繼承:子類別沿用父類別的屬性與方法並可擴充或覆寫,表達 is-a 關係、重複使用程式碼。
多型:同一方法呼叫依實際物件型別表現不同行為(覆寫加動態繫結),呼叫端不必隨子類別增加而修改。
考點:OOP 基本概念:封裝、繼承與 Class/Instance Variable 定義、OOP 多型:Overloading 與 Overriding 比較,及 SOLID 五大原則
封裝:資料與方法包在類別內,以存取修飾字隱藏實作,只透過公開方法存取。
繼承:子類別沿用父類別的屬性與方法並可擴充或覆寫,表達 is-a 關係、重複使用程式碼。
多型:同一方法呼叫依實際物件型別表現不同行為(覆寫加動態繫結),呼叫端不必隨子類別增加而修改。
考點:Deadlock 處理策略總覽:Prevention/Avoidance/Detection/Recovery
(一)死結是一組行程中,每個行程都持有部分資源、又在等待其他行程持有的資源,以致所有行程都無法繼續執行。死結發生必須同時滿足四個必要條件:
| 必要條件 | 意義 | 防止方法(打破該條件) |
|---|---|---|
| 互斥(Mutual Exclusion) | 資源一次只能被一個行程使用 | 資源改為可共享,例如唯讀檔案;不能共享的資源(如印表機)做不到 |
| 持有並等待(Hold and Wait) | 行程持有資源的同時再等待其他資源 | 執行前一次取得全部所需資源,或要申請新資源前先釋放已持有的資源 |
| 不可搶占(No Preemption) | 資源只能由持有者自行釋放 | 行程申請不到資源時,強制收回它已持有的資源 |
| 循環等待(Circular Wait) | 存在 P1 等 P2、P2 等 P3、…、Pn 等 P1 的等待環 | 為所有資源編號,規定只能依編號遞增的順序申請 |
(二)防止死結的做法:
考點:演算法基本概念:定義特性與流程圖/虛擬碼表示法比較
演算法:解決問題的明確、有限步驟,具輸入、輸出、明確性、有限性、可行性,與語言無關。
程式:以程式語言寫成、可由電腦執行的指令,是演算法的實作。
差別:演算法抽象、須在有限步驟內結束;程式是特定語言的實作,不一定會結束(如作業系統)。
考點:軟體測試:黑箱測試、白箱測試與邊界值分析
白箱測試:依程式內部結構與邏輯設計測試案例,需要知道程式碼,重點是敘述、分支、路徑是否都被執行且正確。
黑箱測試:只依規格的輸入與預期輸出設計測試案例,不看程式內部,重點是功能是否符合需求規格。
差別:是否需要知道程式碼,以及測試重點是程式邏輯還是功能。
考點:Switch、Router、Gateway 三種網路設備比較
Switch:第 2 層,依 MAC 位址在同一 LAN 內轉送 frame,轉發表自我學習建立。
Router:第 3 層,依 IP 位址與路由表在不同網路之間選路轉送封包。
差別:層級、位址、表格建立方式不同;Switch 轉送廣播,Router 隔開廣播域。
考點:4 種 Cloud Computing 服務模式:IaaS/PaaS/SaaS/DaaS
| 比較項目 | 自建 Client-Server | Cloud Computing |
|---|---|---|
| 資料儲存 | 資料存在自己的伺服器與硬碟,位置與存取權限完全自行掌握;容量受限於購買的硬體,備份與異地備援要自己規劃 | 資料存在業者的資料中心,可選擇區域,容量依需求隨時增加;業者提供備份與多副本,但資料由第三方保管,須評估隱私、法規與資料所在地 |
| 費用成本 | 前期要一次購買主機、網路設備並租用固定 IP(資本支出),之後還有電費、機房、維運人力;用量低時硬體閒置也照樣花費 | 免硬體投資,按使用量計費(營運支出,pay-as-you-go);用量小或變動大時較省,長期大量且穩定使用時累計費用可能高於自建 |
| 可擴充性 | 擴充要採購、安裝硬體,需要數天到數週,且要預先依尖峰需求購買 | 具快速彈性(rapid elasticity),可在數分鐘內增減運算與儲存資源,或設定自動擴展因應尖峰 |
| 系統可靠性 | 單一主機或機房故障、斷電、斷線即中斷服務,要提高可靠性得自行購置備援設備 | 業者提供多個可用區域,使用者可把服務部署在多區互為備援,業者並以服務等級協議(SLA)承諾可用性;但服務仰賴網際網路連線與業者本身,業者大規模故障時無法自行處理 |
考點:ARP/RARP 位址解析協定與 ARP Spoofing、ICMP、IGMP
ICMP Echo Request(目標回 Echo Reply);ICMP 屬網路層(第 3 層)。
考點:SQL JOIN 語法:INNER/LEFT/FULL OUTER/Self Join
SELECT o.order_id, o.order_date, c.customer_name
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id;
考點:SQL JOIN 語法:INNER/LEFT/FULL OUTER/Self Join
SELECT c.customer_name, i.product_name, i.quantity
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
JOIN items i ON o.order_id = i.order_id
WHERE o.order_date = '2023-12-07';
考點:SQL JOIN 語法:INNER/LEFT/FULL OUTER/Self Join
SELECT o.order_date, i.product_name, i.quantity
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
JOIN items i ON o.order_id = i.order_id
WHERE c.customer_name = 'Alan'
AND o.order_date BETWEEN '2023-01-01' AND '2023-12-31';
考點:SQL 三大分類:DDL、DML、DCL 與語法範例
UPDATE items
SET quantity = 9
WHERE order_id = 10303 AND product_name = 'Ncyu Milk';
考點:正規化(Normalization):1NF~3NF 與 BCNF
2NF:符合 1NF 且非鍵屬性完全相依於整個主鍵,無部分相依。
不是:items 的主鍵 (order_id, product_id),product_id → product_name 為部分相依。
拆成 items(order_id, product_id, quantity),主鍵 (order_id, product_id);products(product_id, product_name),主鍵 product_id;orders、customers 不變。
考點:分類模型評估指標:混淆矩陣、Precision、Recall、F1-Score 與 ROC/AUC
考點:分類模型評估指標:混淆矩陣、Precision、Recall、F1-Score 與 ROC/AUC
setosa 0.6、versicolor 0.8、virginica 0.7;總體精確度(macro 平均)0.7。
考點:分類模型評估指標:混淆矩陣、Precision、Recall、F1-Score 與 ROC/AUC
setosa 0.6、versicolor 0.8、virginica 0.7;總體召回率(macro 平均)0.7。
考點:分類模型評估指標:混淆矩陣、Precision、Recall、F1-Score 與 ROC/AUC
setosa 0.6、versicolor 0.8、virginica 0.7;總體 F1(macro 平均)0.7。
考點:K 折交叉驗證(K-Fold Cross Validation)、模型過擬合與欠擬合(Overfitting/Underfitting):成因、判斷與解決方法
比較訓練集與驗證集(或交叉驗證)的表現:訓練好、驗證明顯差為過擬合;兩者都差為擬合不足;兩者都好且接近為適當。