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。