← 地圖

EXAM 25

綜合考題:不要背答案,畫出執行路徑

題型包含概念、讀 code、debug、architecture。先自己回答,再展開解析。

A. 概念判斷

1. Domain 就是 server 的 IP,只是換成英文名稱。對或錯?

錯。 Domain 是名稱空間的一部分,DNS records 可提供位址或其他資訊;domain 與 IP 不是一對一永久同義。

2. Git commit 成功代表 GitHub 已收到修改。對或錯?

錯。 commit 可完全在 local repository 完成;push 才把 refs/objects 傳往 remote。

3. 使用者登入成功,就代表他有權刪除任何資料。對或錯?

錯。 Authentication 與 authorization 是不同問題。

4. HTTP status 200 代表畫面一定正確。對或錯?

錯。它只說明該 HTTP response 的 status;business logic、資料內容、render 都仍可能錯。

B. 讀 Code

let score = 59;
if (score >= 60) {
  result = "pass";
} else {
  result = "fail";
}
5. 用「要件—涵攝—效果」完整解釋。

要件 score ≥ 60;代入 59 得 false;因此不進第一 branch,而執行 else,result 變成 "fail"。

const user = { role: "student" };
const copy = user;
copy.role = "admin";
6. user.role 是什麼?為什麼?

"admin"。兩個變數 reference 同一 object;這裡沒有建立 deep copy。

C. Debug

7. 瀏覽器顯示 ERR_NAME_NOT_RESOLVED。你第一個分類?

先往 DNS/name resolution 層查,而不是先改 JavaScript。確認 domain 拼字、DNS records、resolver 結果等。

8. Domain 能解析正確 IP,但 TCP connection refused。DNS 還是第一嫌疑嗎?

不是。既然已解析出預期 IP,應往 service 是否 listen、port、firewall/network path 等方向查。

9. API 回 403。你會問哪個核心問題?

先確認服務對 403 的定義與 response body;常見方向是身份存在但 authorization 不允許,仍應以該 API 實際契約為準。

D. Architecture

10. 請排列:Nginx、Browser、DNS、OCI VM、Domain、Internet。

使用者以 Domain 發起導航 → DNS resolution → Browser 透過 Internet 連到 OCI VM 的對應服務 → VM 上 Nginx 接收。Domain 不是「流過去的一個封包」,所以精確圖應把名稱解析與資料流分開畫。

11. 為什麼 service_role secret 不能放 Browser JS?

Browser bundle/requests 由使用者控制與檢視;高權限 server credential 暴露給 client 就失去秘密性,且 service role 可繞過 RLS 等限制。

12. 銀行轉帳為何是 transaction 經典案例?

扣款與入帳必須視為一個 all-or-nothing logical unit,避免只完成其中一步留下不一致狀態。

E. 短申論

13.「網站打不開」請寫一個由外往內的排錯順序。

可依證據調整,但典型:URL/domain → DNS → network reachability → target port/TLS → web server → application process → upstream/API/database → frontend runtime。每一步都要留下證據,避免跳層猜測。

14. AI 說「我修好了」。你至少要求哪些證據?

變更檔案/diff、root cause、重現步驟、修正後同一測試 PASS、相關 regression tests、build/static checks,若依賴真實環境還要對應 smoke/integration evidence。