在題目上按「掌握」或在閃卡按「會了」
練習場
讀累了就來玩。題目取自本頁的題庫與知識庫,成績只存在你自己的瀏覽器。
60 秒內答越多越好。連續答對 3 題以上分數加倍,答錯連擊歸零。
一、情報總覽
性向測驗歷年都不計分,它是學長和教授決定「下午要問你什麼」的問卷。寫不完是常態;你寫下的每一句都會被追問,所以要寫你做過的、寫得深,不必寫滿。2020 年考生記錄監考學長說它佔複試 0 分。
你的時程(依報名時整理的簡章)
| 日期 | 丁組(192) | 戊組(193) |
|---|---|---|
| 10/26(一) | 上午性向測驗;下午系資訊中心參訪與學長面談(歷年兩場:系統類、Web 類) | — |
| 10/27(二) | 教授口試(3 位,約 7–10 分鐘) | 上午性向測驗(約 1 小時);下午教授口試(5–10 位,常站著,約 7 分鐘) |
歷年流程觀察
| 關卡 | 形式 | 重點 |
|---|---|---|
| 丁組性向測驗 | 3 小時;約 12–15 面、50–66 題,全問答 | 依資訊中心分組出題:WWW、Git/DevOps、Container/K8s、Linux/BSD、Mail、Net、VM、PC。2018 年第一張是說明頁:要配合系計中、要值班、指導老師是系計中主任 |
| 丁組學長面談 | 兩場,各 10–20 分鐘;小房間 3–6 人、大會議室 10–20 人圍著你 | 自介 40 秒到 1 分鐘,拿你早上的考卷和備審追問;考卷上不確定的答案會被問爆 |
| 丁組教授口試 | 3 位教授,7–10 分鐘,坐著 | 通常比學長場和緩:經歷、專題、動機、想去哪組、舊專案還是新專案 |
| 戊組性向測驗 | 1 小時,A3 雙面;選擇+簡答+程式,部分英文 | SQL、Python 遞迴/generator、子網、概念解釋、個資倫理 |
| 戊組教授口試 | 5–10 位教授,約 7 分鐘,節奏快 | 問備審,也會挑考卷寫不好的地方;常問「你和前面考生有什麼不同」 |
丁組與戊組在做什麼
- 丁組:進系資訊中心當助教、值班、維運全系服務。學長想找一進來就能扛一個組的人。
- 戊組:在校級資訊技術服務中心實習,開發校務系統(以網頁為主),會碰到校務敏感資料,所以看重程式能力、軟體設計思維與資安倫理。歷年心得提到校內系統常用 PHP Laravel+Vue.js。
系資訊中心現在的組別=今年考卷的大綱
| 組別 | 應備知識 | 加分項目 | 你的對應經驗 |
|---|---|---|---|
| Net | 計概、網路規劃與管理、VLAN/STP/OSPF | 機房維運、SDN、CCNA | 臺師大資訊中心網路組:設備設定、無線維運、弱點掃描;dashboard.ntnu.cc 整合 658 台 AP |
| System | Ansible、C/Python/Go/Rust、K8s | 開源貢獻、GitOps、Observability | Homelab K8s(Calico)、Tor relay 與 Tor Project 貢獻、NOJV 沙盒 |
| WWW | Git、前後端 | TypeScript、Vue、Laravel、K8s | ntnu.cc、mailerz、dashboard、NOJV |
| PC | 計概、UNIX 指令 | Proxmox VE、VyOS、Windows Server | Proxmox VE Homelab |
| Mail/DNS | 郵件原理、DNS | 郵件與域名維運 | mailerz(Workers+D1)、ntnu.cc 子網域服務、Cloudflare DNS |
| HPC | 計算機系統管理 | Slurm QOS、Spack/Conda | 較弱,備概念即可 |
| LDAP | ldapsearch/ldapmodify、PKI/OpenSSL | FreeIPA、Keycloak、step-ca | iPAS、後量子計畫(TLS/PKI) |
預測:HPC 和 LDAP 是近年的新組別,今年很可能出 Slurm、cgroup 資源限制、LDAP 登入與憑證管理題。Net 題年年加深(114 年出了 routing table+nftables、STP 收斂、OSPF LSA),這是你最該拿下的區塊。
二、性向測驗作答策略
你的目標是設計下午的面試題目:把學長引到你最強的 Net、資安、自架服務,避開 BSD、Mail 實戰、HPC 這些你沒有上線經驗的區塊。
丁組 3 小時時間配置
| 時間 | 做什麼 |
|---|---|
| 0:00–0:10 | 先翻完整份考卷,每題標 ○(做過)△(懂概念)×(不會) |
| 0:10–1:30 | 只寫 ○:Net、Linux、Container/K8s、DNS、資安、做過的 WWW 題。每題寫「定義+我的實例+指令或設定+踩過的坑」 |
| 1:30–2:30 | 寫 △:只寫說得清楚的部分,並標註「沒有上線經驗,以下是我的理解」 |
| 2:30–3:00 | 自由發揮題(最拿手的服務)寫滿;回頭檢查有沒有寫錯 |
五條作答規則
- 不會就留白。114 年共筆和 2019 年心得都這樣建議:不熟的寫了會被問爆。
- 每題帶一個「我做過」。例如寫 VLAN 時加一句「在臺師大資訊中心處理過 SSID 對應 VLAN」,這句就是你下午的面試入口。只寫你真的做過的。
- 寫指令,不要只寫名詞。看到
ip route get、ss -tlnp、tcpdump -ni,學長就知道你真的做過。 - 能畫就畫:拓撲、封包流向、架構圖。
- 誠實寫邊界。「我的 mail 經驗是用 Cloudflare Workers 做發信服務,沒有維運過 Postfix」這種句子反而加分。
你的區塊優先序
| 優先 | 區塊 | 原因 |
|---|---|---|
| 1 | Net、排錯情境題 | 資訊中心工讀主線;去年考了 VPN、公網連不上 |
| 2 | Linux、Container/K8s、監控 | Homelab、Tor relay、NOJV 沙盒 |
| 3 | DNS、TLS/PKI、資安 | 金盾獎、iPAS、後量子計畫 |
| 4 | WWW 後端/DB/瀏覽器 | ntnu.cc、dashboard、NOJV;去年考 ORM、Callback Hell、渲染 |
| 5 | Mail、VM、LDAP | 寫概念,標明經驗邊界 |
| 6 | BSD、HPC | 會的才寫 |
戊組 1 小時
- 帶手錶;2019 年有考生沒看時間而沒寫完。
- 先寫概念題(快),再寫 SQL 與子網(穩分),最後寫程式題。程式題用 Python,短而易讀。
- 英文題可以用中文答。個資倫理題(能不能擅自把師生照片放上校務系統)一律答:不行,要告知目的、取得同意,符合個資法與校內規範。
- 下午教授會拿考卷問「這題怎麼沒寫」;沒有依序作答就在題號旁標「答於第 X 頁」。
知識庫:依系統條列
題庫背不完,知識庫是讓你遇到沒看過的題目也答得出來的底。每個系統分成核心概念、常用指令、數字與連接埠、常見陷阱四塊,考前掃過一遍,重點放在你最弱的 Mail、BSD、HPC。
網路基礎與 TCP/IP
核心概念
- OSI 七層對應 TCP/IP 四層:L2 是 MAC 與 frame,L3 是 IP 封包,L4 是 TCP/UDP。
- 封裝順序:應用資料 → TCP header → IP header → Ethernet header+FCS。
- ARP:同網段用廣播問「這個 IP 的 MAC 是誰」;跨網段的封包送到 gateway 的 MAC。
- TCP:三向交握、序號與 ACK、滑動視窗、壅塞控制(slow start、CUBIC、BBR)、主動關閉方進入 TIME_WAIT。
- UDP:無連線、不重送;DNS、DHCP、NTP、QUIC、VoIP 用它。
- MTU 1500、TCP MSS 1460;Path MTU Discovery 依賴 ICMP「需要分段」訊息,全擋 ICMP 會造成大封包黑洞。
- traceroute 靠 TTL 遞減;Linux 預設送 UDP,Windows 的 tracert 送 ICMP。
- IPv6:128 位元、LAN 一律 /64、SLAAC 自動設定、NDP 取代 ARP、沒有廣播只有 multicast。
常用指令
ip a、ip route、ip neigh:位址、路由、ARP 表ss -tunap:連線與監聽中的 portping、mtr -T -P 443 host、traceroutetcpdump -ni eth0 'port 53'、tcpdump -w x.pcap再用 Wiresharkiperf3 -s/iperf3 -c host:頻寬測試ethtool eth0:速度、雙工、錯誤計數
數字與連接埠
- 私有位址:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16;CGNAT 100.64.0.0/10;link-local 169.254.0.0/16。
- /24=256、/25=128、/26=64、/27=32、/28=16、/29=8、/30=4(可用數再減 2);/31 用於點對點。
- 22 SSH、25 SMTP、53 DNS、67/68 DHCP、80/443 HTTP(S)、110/995 POP3、123 NTP、143/993 IMAP、161/162 SNMP、179 BGP、389/636 LDAP、514 syslog、587 submission、853 DoT。
- 3306 MySQL、5432 PostgreSQL、6379 Redis、6443 K8s API、2379 etcd、9100 node_exporter、9090 Prometheus、51820 WireGuard。
常見陷阱
- ping 不通不代表服務掛了,可能只是擋 ICMP;改用 TCP 測。
- 能 ping IP 但打不開網址,先懷疑 DNS。
- 小封包通、大封包不通,是 MTU 問題(VPN、PPPoE、隧道最常見)。
- 雙網卡主機的回程路由走錯卡,會被狀態式防火牆或 rp_filter 丟掉。
交換與路由
核心概念
- Switch 依 MAC table 轉送,未知目的就 flood;一個 VLAN 就是一個廣播網域。
- 802.1Q tag 4 bytes,VLAN ID 12 位元(1–4094);access port 屬單一 VLAN,trunk 帶多個,native VLAN 不帶 tag。
- STP(802.1D)防迴圈:選 Root Bridge → 各台選 Root Port → 各網段選 Designated Port → 其餘 Blocking。RSTP(802.1w)秒級收斂,MSTP 可多個 instance。
- LACP(802.3ad)把多條實體線綁成一條邏輯鏈路。
- L3 switch 用 SVI 做 VLAN 間路由;校園常見核心、匯聚、接取三層架構。
- 路由選擇順序:最長前綴匹配 → 管理距離(Cisco:直連 0、靜態 1、eBGP 20、OSPF 110、RIP 120、iBGP 200)→ metric。
- OSPF:link-state、Dijkstra、Area 0 為骨幹;廣播網路選 DR/BDR;Hello 10 秒、Dead 40 秒;cost=參考頻寬÷介面頻寬。
- OSPF 鄰居狀態:Down → Init → 2-Way → ExStart → Exchange → Loading → Full。
- LSA:1 Router、2 Network、3 Summary、4 ASBR Summary、5 External、7 NSSA。Stub 擋 4、5;Totally Stubby 擋 3、4、5 並注入 default;NSSA 允許引入外部路由(Type 7)。
- BGP:path vector、TCP 179、AS_PATH 防迴圈;常見選路順序 Weight → Local Preference → AS_PATH 長度 → Origin → MED。防劫持靠 RPKI ROV 與 IRR 過濾。
常用指令
show mac address-table、show vlan brief、show interfaces statusshow spanning-tree、show etherchannel summaryshow ip route、show ip ospf neighbor、show ip ospf interface、show ip bgp summary- Linux:
bridge vlan show、bridge fdb show、ip -d link
常見陷阱
- 使用者自己接小 switch 造成迴圈 → 廣播風暴;接取端開 PortFast 時一定要配 BPDU Guard。
- trunk 兩端 allowed VLAN 或 native VLAN 不一致,某些 VLAN 會不通。
- OSPF 鄰居卡 ExStart 多半是 MTU 不一致。
- 非骨幹 area 沒接到 Area 0,要用 virtual link。
網路服務:DHCP、NAT、防火牆、VPN
核心概念
- DHCP:Discover → Offer → Request → Ack;跨網段靠 relay(ip helper,可帶 option 82);DHCP snooping 防偽 DHCP 伺服器。
- NAT:SNAT 改來源、DNAT 改目的(port forwarding)、masquerade 是自動取出口 IP 的 SNAT;狀態記在 conntrack 表。
- netfilter 五個 hook:prerouting、input、forward、output、postrouting。DNAT 在 prerouting,SNAT 在 postrouting。
- nftables 由 table → chain → rule 組成,取代 iptables 的 filter、nat、mangle、raw 四表。
- 狀態式防火牆核心一行:
ct state established,related accept。 - VPN:IPsec(IKEv2,UDP 500/4500 NAT-T,ESP)、OpenVPN(TLS,預設 UDP 1194)、WireGuard(UDP,金鑰即身分,AllowedIPs 同時是路由表)、SSL VPN(多走 443)。
- Split tunnel 只把內網流量送進 VPN;full tunnel 全部都走。
- 負載平衡:L4 看 IP 和 port,L7 看 HTTP;HA 用 VRRP(keepalived)飄浮 IP。
- NTP 是基礎服務:log 對時、Kerberos、TOTP、憑證驗證都依賴它。
- 網管協定:SNMP v2c 只有 community 字串,v3 才有驗證與加密;流量分析用 NetFlow、sFlow、IPFIX。
- 802.1X:supplicant(終端)→ authenticator(switch/AP)→ RADIUS 驗證,走 EAP。
常用指令
nft list ruleset、iptables -t nat -L -n -vconntrack -L:目前的連線追蹤sysctl net.ipv4.ip_forward、sysctl net.ipv4.conf.all.rp_filterwg show、ipsec statusall(strongSwan)dhclient -v、journalctl -u isc-dhcp-server
常見陷阱
- 規則寫在記憶體裡沒持久化,重開機就消失。
- Docker 會自己改 iptables,publish 的 port 可能繞過 ufw。
- VPN 用戶家裡網段和機房重疊,路由會打架。
- conntrack 表滿了會開始丟新連線(大流量 NAT 主機要調
nf_conntrack_max)。
無線網路
核心概念
- 2.4 GHz 穿透好、範圍大,只有 1、6、11 三個不重疊頻道;5 GHz 頻道多、速度快、穿透差,部分頻道要做 DFS 雷達迴避;6 GHz 是 Wi-Fi 6E 起。
- 世代:802.11n=Wi-Fi 4、ac=Wi-Fi 5、ax=Wi-Fi 6(OFDMA、BSS Coloring)、be=Wi-Fi 7(MLO 多鏈路)。
- 頻寬 20/40/80/160 MHz;高密度場域用窄頻寬、多頻道、降功率、多 AP。
- 品質指標:RSSI、SNR、channel utilization、每台 AP 的 client 數、重傳率。
- 安全:WPA2-PSK、WPA3-SAE、Enterprise(802.1X,EAP-PEAP 或 EAP-TLS);eduroam 用 RADIUS 階層轉送到各校認證。
- 架構:控制器集中管理、雲端管理;漫遊輔助 802.11r/k/v。
常見陷阱
- 同頻干擾與 sticky client(裝置黏著遠處 AP 不放)。
- DHCP pool 不夠:大教室上課時大量裝置拿不到 IP。
- Captive portal 與 HSTS 網站衝突,使用者看不到登入頁。
- 「Wi-Fi 很慢」常常不是無線問題,而是上行、DNS 或出口頻寬。
Linux 系統管理(含 BSD 對照)
核心概念
- 開機:UEFI/BIOS → GRUB → kernel+initramfs → systemd(PID 1)→ target。
- systemd unit 類型:service、socket、timer、mount、target;修改用
systemctl edit產生 override,不改原檔。 - 程序:fork/exec、zombie(父程序沒 wait)、orphan(被 PID 1 收養);訊號 SIGHUP 1、SIGKILL 9、SIGTERM 15。
- 權限:rwx 與 owner/group/other;setuid、setgid、sticky bit(/tmp);umask;ACL(
setfacl);sudo 用visudo編輯。 - 帳號:
/etc/passwd、/etc/shadow、/etc/group;登入流程經過 PAM,帳號查詢順序看nsswitch.conf。 - 網路設定:netplan、NetworkManager(nmcli)、systemd-networkd;DNS 常由 systemd-resolved 管。
- 排程:cron 五欄(分 時 日 月 週)或 systemd timer。
- 隔離與限制:namespace、cgroups v2、capability、seccomp、SELinux/AppArmor、ulimit、OOM killer。
- 日誌:journald、rsyslog、logrotate。
- SSH:金鑰登入、
~/.ssh/config、ProxyJump 跳板、通道-L/-R/-D。 - FreeBSD 對照:設定集中在
/etc/rc.conf、第三方軟體在/usr/local、套件 pkg/ports、隔離用 jail、防火牆 pf/ipfw、檔案系統常用 ZFS。
常用指令
systemctl status|restart|enable svc、journalctl -u svc -b -f、systemd-analyze blametop/htop、vmstat 1、iostat -x 1、free -m、uptimeps auxf、pstree、kill -TERM pid、lsof -p pid、strace -p pidid、getent passwd user、last、journalctl _COMM=sshdapt/dpkg -l、dnf/rpm -qa、FreeBSDpkg info、service x restart
數字與檔案
- load average 要和 CPU 核數比較;包含等待 IO 的 D 狀態程序。
- 重要檔案:
/etc/fstab、/etc/hosts、/etc/resolv.conf、/etc/ssh/sshd_config、/etc/security/limits.conf。 /proc看程序與核心狀態、/sys看裝置、/var/log看傳統 log。
常見陷阱
- 磁碟沒滿但寫不進去:inode 用完(
df -i)。 - 刪了大檔空間沒回來:檔案仍被程序開著(
lsof +L1)。 - 改了 sshd 設定直接重啟把自己鎖在外面;先
sshd -t檢查並保留一個連線。 - cron 的環境變數與 PATH 和互動 shell 不同。
儲存、檔案系統與備份
核心概念
- 分割表:MBR 最大 2 TB、最多 4 個主分割;GPT 沒有這些限制。
- LVM:PV → VG → LV,可線上擴充與快照。
- RAID:0 條帶無容錯;1 鏡像;5 單同位,大容量碟重建期間再壞一顆就全毀;6 雙同位;10 鏡像加條帶,效能與容錯兼顧。RAID 不是備份。
- 檔案系統:ext4 通用;XFS 只能擴不能縮;Btrfs 與 ZFS 是 copy-on-write,有快照與 checksum,ZFS 還整合 volume manager 與 RAID-Z。
- 硬連結指向同一個 inode,不能跨檔案系統;軟連結存的是路徑。
- 網路儲存:NFS(檔案層,v4 有狀態、可配 Kerberos)、SMB(Windows 檔案分享)、iSCSI(區塊層,target/initiator/LUN)、Ceph(RBD 區塊、CephFS 檔案、RGW 物件)。
- 備份:3-2-1 原則;全量、增量、差異;RPO(可容忍遺失多少資料)與 RTO(多久要恢復);定期還原演練。
常用指令
lsblk、blkid、findmnt、df -h、df -i、du -xh --max-depth=1pvs/vgs/lvs、pvresize、lvextend -r -l +100%FREE vg/lvmdadm --detail /dev/md0、cat /proc/mdstat、smartctl -a /dev/sdazpool status、zfs snapshot pool/fs@x、zfs send | zfs recvrestic backup、borg create、rsync -aHAX --delete
常見陷阱
- fstab 寫錯導致開不了機;網路磁碟加
nofail、_netdev。 - 擴了 LV 忘了擴檔案系統(
-r會一起做)。 - 備份從來沒還原過,等於沒有備份。
虛擬化
核心概念
- Type 1(ESXi、Xen、Hyper-V、KVM)直接管硬體;Type 2(VirtualBox、VMware Workstation)跑在作業系統上。KVM 是讓 Linux 本身成為 hypervisor 的核心模組,搭配 QEMU。
- 硬體輔助:Intel VT-x、AMD-V;記憶體轉譯 EPT/NPT;IOMMU(VT-d)做 PCI 直通;SR-IOV 讓一張網卡切成多個虛擬功能。
- 半虛擬化驅動 virtio(磁碟、網路)效能遠勝模擬硬體。
- 磁碟格式:qcow2 支援快照與精簡配置,raw 效能較好。
- 虛擬網路:Linux bridge、VLAN-aware bridge、NAT、Open vSwitch。
- Live migration:先複製記憶體、反覆補 dirty page、最後短暫停機切換;需要共享儲存與相容的 CPU 型號。
- 叢集:quorum 防 split-brain,fencing 確保壞掉的節點真的停了。
- Proxmox VE:KVM 加 LXC、corosync 叢集、可整合 Ceph、vzdump 與 Proxmox Backup Server 備份、cloud-init 範本。
- 資源超賣:vCPU overcommit 會造成 steal time;記憶體 ballooning、KSM;大型 VM 注意 NUMA。
常用指令
virsh list --all、virsh dominfo、qemu-img info/convert- Proxmox:
qm list、qm migrate、pct list、pvecm status、vzdump lscpu | grep -i virt、egrep -c '(vmx|svm)' /proc/cpuinfo
常見陷阱
- CPU type 設
host效能最好,但不同世代主機間無法 live migrate。 - 兩節點叢集沒有仲裁,一台掛了另一台也會失去 quorum。
- 快照不是備份,長期掛著還會拖慢磁碟。
容器與 Kubernetes
容器核心
- 容器=namespace(看得到什麼)+cgroups(用得了多少)+分層 rootfs(overlayfs)。
- 標準:OCI image spec 與 runtime spec;runc 是參考實作。
- Docker 呼叫鏈:CLI → dockerd → containerd → runc。
- Dockerfile:multi-stage build、把少變動的層放前面以利快取、
.dockerignore、非 root 使用者、固定版本或 digest。 - 網路模式:bridge(docker0+veth+NAT)、host、none、overlay。
- 資料:volume 由 Docker 管理,bind mount 直接掛主機路徑。
Kubernetes 架構
- 控制平面:kube-apiserver(唯一入口)、etcd(狀態)、scheduler、controller-manager。
- 節點:kubelet、kube-proxy、container runtime(CRI:containerd、CRI-O)。1.24 起移除 dockershim。
- 核心精神:宣告期望狀態,controller 不斷把實際狀態拉回期望狀態。
- 工作負載:Pod、Deployment(無狀態)、StatefulSet(有狀態、固定名稱)、DaemonSet(每節點一份)、Job/CronJob。
- 服務:Service(ClusterIP、NodePort、LoadBalancer、Headless)、Ingress 或 Gateway API、CoreDNS。
- 設定:ConfigMap、Secret(只是 base64,不是加密,要開 etcd 加密或用外部 vault)。
- 儲存:PV、PVC、StorageClass 動態配置。
- 網路模型:每個 Pod 一個 IP,Pod 之間不經 NAT 互通;由 CNI(Calico、Flannel、Cilium)實作;NetworkPolicy 也由 CNI 執行。
- 權限:Role/ClusterRole、RoleBinding/ClusterRoleBinding、ServiceAccount。
- 健康與資源:liveness、readiness、startup 探針;requests 用來排程、limits 是上限;QoS 分 Guaranteed、Burstable、BestEffort。
- 工具:Helm、Kustomize;輕量叢集 k3s、kind、minikube。
常用指令
kubectl get pods -A -o wide、kubectl describe pod x、kubectl logs x -pkubectl exec -it x -- sh、kubectl top pod、kubectl get events --sort-by=.lastTimestampkubectl rollout status|undo deploy/x、kubectl auth can-i verb resource --as user- 節點上:
crictl ps、crictl logs;備份:etcdctl snapshot save
狀態與陷阱
- Pending:資源不足或 nodeSelector/taint 不合。
- ImagePullBackOff:image 名稱、tag 或 registry 認證錯。
- CrashLoopBackOff:程式一啟動就退出;OOMKilled:記憶體 limit 太低。
- Service 沒有 endpoint:selector 標籤沒對到 Pod。
- 沒設 requests/limits,一個 Pod 就能吃光整個節點。
自動化、CI/CD 與監控
自動化與部署
- Ansible:agentless(走 SSH)、inventory、playbook、role、handler、module 具冪等性;變數優先序要小心。
- Terraform:宣告式 IaC、state 檔記錄現況、plan 後 apply。
- CI/CD:GitLab CI(
.gitlab-ci.yml、stages、jobs、runner)、GitHub Actions;快取與 artifact。 - GitOps:Git 是唯一事實來源,Flux 或 Argo CD 在叢集內拉取並同步。
- 部署策略:rolling、blue-green、canary、feature flag;一定要能回滾。
- 秘密管理:CI secret、Vault、Sealed Secrets;絕不進 repo。
監控與 SRE
- 三支柱:metrics、logs、traces;標準化工具 OpenTelemetry。
- Prometheus:pull 模式、exporter(node_exporter、blackbox_exporter)、PromQL(計數器用
rate())、Alertmanager 分組與靜音;Grafana 做儀表板。 - Log:Loki 或 ELK/OpenSearch;集中、可搜尋、有保存期限。
- 方法論:Google 四個黃金訊號(Latency、Traffic、Errors、Saturation);USE 看資源、RED 看服務。
- SLI → SLO → SLA;error budget 用完就先修穩定度;減少 toil;postmortem 不究責。
- 告警要可行動、附 runbook,避免告警疲勞。
DNS
核心概念
- 解析鏈:stub resolver → recursive resolver(快取)→ root → TLD → authoritative。
- 紀錄:A、AAAA、CNAME(不能放在 zone apex,也不能和同名其他紀錄並存)、MX(數字小的優先)、TXT、NS、SOA(serial、refresh、retry、expire、negative TTL)、PTR(反解,in-addr.arpa)、SRV、CAA(限定可發憑證的 CA)。
- TTL 決定快取多久;要改紀錄前先把 TTL 調低。
- 預設 UDP 53;回應過大或 zone transfer 用 TCP;EDNS0 放寬 UDP 大小。
- 主從同步:AXFR(全量)、IXFR(增量)、NOTIFY,以 TSIG 驗證。
- DNSSEC:RRSIG、DNSKEY、父區的 DS 形成信任鏈;保證真偽,不提供隱私。
- 加密傳輸:DoT(853)、DoH(443)、DoQ。
- Split-horizon(views)讓內外網查到不同答案。
- 軟體:BIND、Unbound(遞迴)、PowerDNS、NSD、CoreDNS(K8s)。
常用指令
dig example.com A、dig @1.1.1.1 example.com、dig +trace example.comdig -x 140.122.x.x(反解)、dig example.com MX +shortdelv example.com(驗 DNSSEC)、resolvectl status- BIND:
named-checkconf、named-checkzone、rndc reload
攻擊與陷阱
- 快取汙染、open resolver 反射放大、DNS tunneling 外傳資料、懸空 CNAME 被搶註(subdomain takeover)。
- 改完 zone 忘了加 SOA serial,從伺服器不會更新。
- 只有 AAAA 正確、IPv6 卻不通時,部分用戶會連不上。
電子郵件
核心概念
- 角色:MUA(郵件軟體)、MSA(收使用者送信,587)、MTA(伺服器間轉送,25)、MDA(投遞到信箱,常用 LMTP)、IMAP/POP3 伺服器。
- SMTP 對話:EHLO → STARTTLS → MAIL FROM → RCPT TO → DATA → QUIT;2xx 成功、4xx 暫時失敗會重試、5xx 永久失敗退信。
- Envelope From(Return-Path)和信頭 From 不同:SPF 檢查前者,DMARC 要求與信頭 From 對齊。
- SPF:TXT
v=spf1 ... -all,最多 10 次 DNS 查詢。DKIM:公鑰放selector._domainkey。DMARC:_dmarcTXT 設 p=none/quarantine/reject 與回報地址。 - 傳輸安全:STARTTLS 可被降級;MTA-STS 與 DANE(TLSA+DNSSEC)強制加密。
- 寄件 IP 要有正確 PTR 反解,HELO 名稱要合理,不然容易被當垃圾信。
- Postfix:
main.cf、master.cf;queue 有 incoming、active、deferred、hold;mynetworks與smtpd_recipient_restrictions決定誰能 relay。 - Dovecot:passdb 驗密碼、userdb 給 uid 與信箱路徑;Sieve 做伺服器端過濾與轉寄。
- 反垃圾:rspamd 或 SpamAssassin、RBL、greylisting、對外寄信限速。
- 轉寄會讓 SPF 失敗,用 SRS 改寫寄件者,或靠 ARC。
- 信箱格式:mbox 一個資料夾一個檔,Maildir 一封信一個檔。
常用指令
postqueue -p、postsuper -d QUEUEID、postcat -q QUEUEID、postconf -ngrep QUEUEID /var/log/mail.log串起一封信的完整路徑doveadm user alice、doveadm auth test aliceswaks --to x@example.com --server mx.example.com測寄信openssl s_client -starttls smtp -connect mx.example.com:25
常見陷阱
- Open relay:未驗證就替任何人寄外部信,很快被列入黑名單。
- SPF 用
~all與-all的差別,以及 include 太多超過查詢上限。 - 使用者說「對方沒收到」:先拿寄件時間、收件地址、有無退信,再查 log。
LDAP 與身分驗證
核心概念
- LDAP 是樹狀目錄(DIT):DN 例如
uid=alice,ou=people,dc=example,dc=edu;objectClass 決定能有哪些屬性(posixAccount、inetOrgPerson)。 - 操作:bind、search(base、scope、filter 如
(&(objectClass=posixAccount)(uid=alice)))、add、modify、delete;資料交換格式 LDIF。 - 連接埠 389(可 StartTLS)、636(LDAPS)。
- OpenLDAP:slapd、線上設定 cn=config、overlay(memberOf、ppolicy)、syncrepl 複寫、multi-provider 高可用。
- Linux 主機接 LDAP:SSSD(有快取、可離線登入)或 nslcd,透過 NSS 查帳號、PAM 驗密碼。
- Kerberos:KDC 發 TGT 再換服務票證;時間差超過約 5 分鐘就失敗。FreeIPA 整合 LDAP、Kerberos、CA 與 DNS;Active Directory 本質上也是 LDAP+Kerberos+DNS。
- Web SSO:SAML 2.0(XML、IdP 與 SP)、OAuth 2.0(授權)、OIDC(身分,ID token 是 JWT);常見實作 Keycloak。
- MFA:TOTP(依賴時間同步)、WebAuthn/FIDO2(防釣魚)。
常用指令
ldapsearch -x -H ldaps://ldap.example -D "cn=admin,dc=example,dc=edu" -W -b "dc=example,dc=edu" "(uid=alice)"ldapmodify -f change.ldif、ldapadd、ldapwhoami、ldappasswdslapcat(備份)、slapadd(還原)getent passwd alice、id alice、sssctl user-checks alice、kinit/klist
常見陷阱
- 用明文 389 bind,密碼在網路上裸奔。
- Client 沒裝 CA,LDAPS/StartTLS 驗證失敗。
- SSSD 快取讓已停用的帳號還能登入一段時間。
TLS、PKI 與後量子密碼
核心概念
- 對稱加密 AES-GCM、ChaCha20-Poly1305;非對稱 RSA、ECDSA、Ed25519;雜湊 SHA-256;金鑰交換 ECDHE(X25519)。
- TLS 1.3:1-RTT 握手、只保留有前向保密的金鑰交換、密碼套件精簡到 5 個、0-RTT 有重放風險;SNI 明文,ECH 用來加密它。
- X.509 欄位:subject、SAN(瀏覽器只認 SAN)、issuer、有效期、key usage;憑證鏈 root → intermediate → leaf,伺服器要附上中繼憑證。
- 撤銷:CRL、OCSP、OCSP stapling。
- ACME(Let's Encrypt):HTTP-01 或 DNS-01(萬用字元必須用 DNS-01);憑證效期越來越短,必須自動化。
- 內部 PKI:root 離線保存、intermediate 簽發;step-ca、cert-manager;服務間用 mTLS。
- 後量子:NIST 在 2024 年公布 FIPS 203 ML-KEM、FIPS 204 ML-DSA、FIPS 205 SLH-DSA。
- 混合金鑰交換(如 X25519MLKEM768)同時跑傳統與後量子,兩者都破才會失守;因為有「現在收集、日後解密」的威脅,金鑰交換優先遷移,簽章與憑證鏈之後。
- 後量子 key share 讓 ClientHello 多出約 1 KB、跨越多個封包,寫死只讀第一個封包的中間設備可能出錯。
- OpenSSH 9.0 起預設 sntrup761x25519,10.0 起預設 mlkem768x25519。
常用指令
openssl s_client -connect host:443 -servername host -showcertsopenssl x509 -in a.crt -noout -text、-dates、-subjectopenssl req -new -newkey rsa:2048 -nodes -keyout k.key -out r.csropenssl verify -CAfile chain.pem leaf.crt、testssl.sh host、curl -v https://host
常見陷阱
- 漏送中繼憑證:桌面瀏覽器可能自己補,手機與程式會失敗。
- 憑證過期沒有監控,最常見的停機原因之一。
- 私鑰權限太寬或進了 repo。
HPC 與 Slurm
核心概念
- 元件:slurmctld(控制)、slurmd(每個運算節點)、slurmdbd(帳務資料庫)、munge(節點間認證)。
- 概念:partition(節點分組)、job 與 step、GRES(GPU 等資源)、TRES、QOS(每人上限、最長時間、優先權)、fairshare、backfill 排程。
- 資源強制:cgroup plugin 限 CPU、記憶體、GPU 裝置;
pam_slurm_adopt讓沒有工作在跑的使用者 SSH 不進節點。 - 軟體環境:Environment Modules/Lmod、Spack、Conda、Apptainer(Singularity)容器。
- 平行運算:MPI 跨節點、OpenMP 共享記憶體;高速網路 InfiniBand、RDMA。
- 平行檔案系統:Lustre、BeeGFS、IBM Storage Scale(GPFS)。
- GPU:
nvidia-smi、驅動與 CUDA 版本相容性、MIG 切分。
常用指令
sinfo、squeue -u $USER、sbatch job.sh、srun --gres=gpu:1 --pty bashscancel id、sacct -j id、scontrol show job idsacctmgr show qos、sacctmgr modify qos normal set MaxTRESPerUser=gres/gpu=2
#!/bin/bash
#SBATCH -J train
#SBATCH -p gpu
#SBATCH --gres=gpu:1
#SBATCH -c 8
#SBATCH --mem=32G
#SBATCH -t 04:00:00
module load cuda
python train.pyHTTP 與 Web 架構
核心概念
- 方法語意:GET、HEAD 安全且冪等;PUT、DELETE 冪等;POST 不冪等;PATCH 部分更新。
- 狀態碼:200、201、204;301、302、304、307、308;400、401(沒登入)、403(沒權限)、404、409、429;500、502(上游回錯)、503、504(上游逾時)。
- 重要標頭:Cache-Control、ETag、Set-Cookie(HttpOnly、Secure、SameSite)、CORS 系列、CSP、HSTS。
- HTTP/1.1 keep-alive;HTTP/2 單連線多工與 header 壓縮;HTTP/3 跑在 QUIC(UDP)上,解決 TCP 層的 head-of-line blocking。
- API 風格:REST(資源、無狀態、統一介面)、gRPC(HTTP/2+Protobuf)、GraphQL;即時通訊用 WebSocket 或 SSE。
- 驗證:session+cookie 或 token(JWT);第三方授權用 OAuth 2.0 授權碼流程加 PKCE。
- 架構元件:反向代理(nginx、HAProxy)、CDN、快取(Redis)、訊息佇列(RabbitMQ、Kafka);要水平擴展,應用層必須無狀態。
- Laravel:Eloquent ORM、Query Builder、Blade、Artisan、migration;Vue 常搭配做前端。
- Serverless:Cloudflare Workers 跑在 V8 isolate,冷啟動很低;KV 是最終一致;D1 是 SQLite。
- 12-Factor:設定放環境變數、log 當成事件串流輸出、程序無狀態。
資料庫
核心概念
- ACID;隔離等級由低到高 Read Uncommitted、Read Committed、Repeatable Read、Serializable,分別處理髒讀、不可重複讀、幻讀。MySQL InnoDB 預設 Repeatable Read,PostgreSQL 預設 Read Committed。
- MVCC 讓讀不擋寫。
- 正規化 1NF、2NF、3NF 消除重複;為效能可適度反正規化。
- 索引:B+ tree;複合索引遵守最左前綴;覆蓋索引免回表;低選擇性欄位不值得加。用
EXPLAIN看執行計畫。 - JOIN:INNER、LEFT、RIGHT、FULL、CROSS;聚合用 GROUP BY,對聚合結果篩選用 HAVING;視窗函數
ROW_NUMBER() OVER (...)。 - 鎖:行鎖;悲觀
SELECT ... FOR UPDATE;樂觀 version 欄位;注意死結與鎖的順序。 - 擴展:主從複寫與讀寫分離(注意複寫延遲)、分片。
- 備份:邏輯(mysqldump、pg_dump)、實體、binlog/WAL 做 point-in-time recovery。
- NoSQL:KV(Redis)、文件(MongoDB)、寬欄(Cassandra)、圖(Neo4j);CAP 取捨。
- 應用層:ORM 的 N+1、連線池、參數化查詢防 SQL injection。
必背 SQL
SELECT dept, COUNT(*) AS n
FROM emp
GROUP BY dept
HAVING COUNT(*) > 5
ORDER BY n DESC;
SELECT m.name, o.id
FROM members m
LEFT JOIN orders o ON o.member_id = m.id
WHERE o.created_at >= '2026-01-01';
BEGIN;
SELECT * FROM rooms WHERE id = 3 FOR UPDATE;
INSERT INTO booking (...) VALUES (...);
COMMIT;
注意:LEFT JOIN 後在 WHERE 篩右表欄位,會把沒對到的列濾掉,效果變成 INNER JOIN;要保留就把條件移到 ON。
前端與瀏覽器
核心概念
- 渲染管線:DOM+CSSOM → render tree → layout(reflow)→ paint → composite;改
transform、opacity只觸發 composite。 - Script 載入:一般 script 阻塞解析;
defer解析完依序執行;async下載完立即執行。 - 效能指標 Core Web Vitals:LCP、INP、CLS。
- JavaScript:單執行緒、event loop、microtask(Promise)先於 macrotask(setTimeout);closure;
this依呼叫方式決定,arrow function 取外層;原型鏈;var、let、const。 - 模組與建置:ES modules、Vite、webpack、tree shaking。
- 框架:React(虛擬 DOM、hooks)、Vue(以 Proxy 實作響應式、單檔元件);SPA、SSR、SSG(Next、Nuxt)。
- CSS:權重、盒模型與
box-sizing、flex(一維)、grid(二維)、media query、rem/em/vw。 - 瀏覽器安全:同源政策、CORS、CSP、XSS、CSRF、點擊劫持(CSP
frame-ancestors)。 - 儲存:cookie(每次請求都送)、localStorage、sessionStorage、IndexedDB。
- 無障礙:語意標籤、圖片 alt、表單 label、ARIA、鍵盤可操作、對比度。
- 大量資料:分頁、虛擬捲動、懶載入、debounce 與 throttle。
Git 與軟體工程
Git
- 物件:blob、tree、commit、tag;ref 與 HEAD;工作區 → 暫存區 → 倉庫。
- merge(fast-forward 或三方合併)與 rebase;cherry-pick 挑單一 commit。
- 撤銷:
revert產生反向 commit,可安全用於共用分支;reset --soft/--mixed/--hard會改歷史。 - 救援:
reflog找回刪掉的分支或 reset 前的狀態;stash暫存;bisect二分找出錯的 commit。 - 流程:Git Flow、GitHub Flow、GitLab Flow、trunk-based。
- Conventional Commits 與 SemVer(MAJOR.MINOR.PATCH)。
- 密鑰外洩:先撤銷並更換金鑰,再用
git filter-repo清歷史並 force push。
軟體工程
- 測試金字塔:大量單元測試、適量整合測試、少量 E2E;test double 有 stub、spy、mock、fake;TDD 紅、綠、重構。覆蓋率是參考,不是目標。
- 設計原則:SOLID、DRY、KISS、組合優於繼承;架構 MVC、MVVM;常見模式 Factory、Observer、Strategy、Singleton。
- 品質:code review、linter 與 formatter、CI 品質門檻。
- 流程:Scrum(sprint、standup、review、retro)、Kanban。
資安基礎
原則與管理
- CIA(機密性、完整性、可用性)、縱深防禦、最小權限、零信任。
- OWASP Top 10(2021 版)第一名是 Broken Access Control,另有 Cryptographic Failures、Injection、Insecure Design、Security Misconfiguration、Vulnerable Components、Authentication Failures、Integrity Failures、Logging Failures、SSRF。
- 弱點管理:CVE 編號、CVSS 嚴重度、EPSS 被利用機率、CISA KEV 已被利用清單;排序看「對外暴露+有人在打」。
- 事件應變(NIST):準備 → 偵測與分析 → 遏制、根除、復原 → 事後檢討。
- ISO 27001:ISMS 管理系統、PDCA、2022 版 Annex A 共 93 項控制措施。
- 台灣法規:資通安全管理法(公務機關依等級 A 到 E 有不同義務)、個人資料保護法。
- 密碼儲存:bcrypt、scrypt、Argon2 加 salt,不能用單純雜湊。
攻擊與防禦
- Web:SQL injection、XSS、CSRF、SSRF、IDOR、路徑穿越、不安全的反序列化、惡意檔案上傳。
- 網路:DDoS(流量型、協定型、應用層)、ARP spoofing、DNS 汙染、BGP 劫持、中間人攻擊。
- 偵測:IDS/IPS(Suricata、Snort)、SIEM、EDR、集中 log 並保存。
- 帳號:MFA、帳號與權限定期盤點、離職即停權。
- 主機加固:關閉不用的服務、即時更新、只開必要 port、SSH 只用金鑰。
三、題庫一:網路與排錯
排錯題只有一個骨架:先切範圍,再由下往上一層一層排除,每一步講出用什麼指令、看到什麼代表什麼。最後補一句「修完後寫進維運文件、加上監控告警」,學長就知道你是維運的人。
VPN 連不上
當你連不上機房的 VPN,你會怎麼處理?去年題
先問三件事:只有我還是大家都連不上?從什麼時候開始?我現在在哪個網路?大家都不行就查伺服器端,只有我不行就查客戶端。
- 我的網路本身:
ping 1.1.1.1、dig vpn.example.edu。飯店、咖啡廳常有 captive portal 或擋 UDP。 - 碰得到 VPN 端點嗎:TCP 類(SSL VPN)用
nc -vz host 443;UDP 類(WireGuard 51820、OpenVPN 1194、IPsec 500/4500)用 nc 判斷不準,改看客戶端日誌或tcpdump -ni any udp port 51820有沒有回包。換手機熱點是最快的對照組。 - 認證與憑證:帳密過期、MFA、憑證過期(
openssl x509 -enddate -noout -in client.crt)、系統時間偏移(TOTP 與憑證都會失敗,看timedatectl)。 - 握手狀態:WireGuard 看
wg show的 latest handshake;OpenVPN 看journalctl -u openvpn-client@x,TLS 錯誤與AUTH_FAILED意義不同。 - 連上了但進不去:
ip route看路由有沒有推進來(split tunnel);網段重疊(家裡 192.168.1.0/24,機房也是);DNS 有沒有推內部解析;MTU 用ping -M do -s 1372 10.x.x.x測,小包通大包不通就是 MTU。 - 伺服器端(大家都不行時):服務活著嗎(
systemctl status、ss -ulnp)、防火牆規則被改、憑證或 CRL 過期、IP pool 用完、授權人數滿、上游線路斷。 - 一定要進去:走頻外管道(IPMI/iDRAC、跳板機、另一條專線)或請值班同事到現場;不要為了進去臨時開公網 port。
公網連不上服務
從公網連不上你的服務,你會怎麼解決?請介紹用的指令。去年題
答題結構:從外到內、由下往上,每一層一個指令。
| 層 | 指令 | 看到什麼代表什麼 |
|---|---|---|
| 0 重現 | 手機 4G:curl -v https://svc.example.com | 確定是外面進不來,不是自己的網路 |
| 1 DNS | dig +short A svc @1.1.1.1、dig +trace、dig AAAA | IP 錯、剛改還在 TTL 內、SERVFAIL(DNSSEC);有 AAAA 但 IPv6 不通時用 curl -4/curl -6 對照 |
| 2 路由 | mtr -T -P 443 <ip>、traceroute | 斷在哪一跳;ICMP 可能被擋,所以用 TCP 模式 |
| 3 Port | nc -vz <ip> 443、nmap -Pn -p 443 <ip> | 很快回 RST:到了主機但沒人聽或被 reject;timeout:中途被丟(防火牆、security group、NAT 沒轉) |
| 4 服務 | ss -tlnp、systemctl status、journalctl -u svc、curl -v localhost:8080 | 只聽 127.0.0.1、程式掛了、資源用光(df -h、free -m) |
| 5 主機防火牆 | nft list ruleset、iptables -L -n -v、ufw status | 規則被改、預設 drop、重開機後沒持久化 |
| 6 邊界 | 雲端 security group、校內邊界防火牆、NAT port forward | 校內服務對外要申請例外;反向代理回 502/504 |
| 7 TLS | openssl s_client -connect host:443 -servername host | 憑證過期、SNI 錯、中繼憑證沒帶 |
| 8 封包 | 主機上 tcpdump -ni eth0 tcp port 443 | SYN 有到、SYN-ACK 有出去但對方沒收到:非對稱路由、預設閘道錯、rp_filter |
| 9 容器 | docker ps 的 port mapping、kubectl get svc,ingress | 沒 publish port、Service selector 沒對到 Pod、NetworkPolicy 擋掉 |
子網、L2、STP
192.168.1.64/27,gateway 是第一個 IP,請問可用範圍、mask 與 gateway?2022 丁戊組常考
每塊 32 個位址。網路 192.168.1.64、廣播 192.168.1.95、可用 .65–.94(30 個)、mask 255.255.255.224、gateway 192.168.1.65。
另一題 192.0.2.96/19:/19 在第三個 octet 每塊 32,2 落在 0–31,所以網路 192.0.0.0、廣播 192.0.31.255、mask 255.255.224.0。
速算:區塊大小 = 256 − 遮罩在該 octet 的值;網路位址 = 不大於該值的最大區塊倍數。
兩台機器用網路線直接互連可以通嗎?怎麼設定?2022 丁
可以。兩邊設同網段,例如 10.0.0.1/30 與 10.0.0.2/30,不需要 gateway(不出網段)。現代網卡有 Auto-MDIX,直線即可;舊設備要跨接線。沒設 IP 時兩邊會拿 169.254.0.0/16 link-local,也能互通。
兩個 MAC address 撞到會發生什麼事?2024 丁
Switch 的 MAC table 會在兩個 port 之間來回跳(MAC flapping),兩台都時通時不通,封包送錯人。只在同一個 L2 網段內發生。偵測:switch log 的 flapping 警告;防護:port security、DHCP snooping+Dynamic ARP Inspection、802.1X。這也是 MAC spoofing 的原理。
看拓撲判斷 STP 收斂後的樣子;A、B 電腦連得上嗎?2024 丁
- 選 Root Bridge:Bridge ID 最小者(先比 priority,預設 32768;同 priority 比 MAC)。
- 每台非 root 選 Root Port:到 root 路徑成本最小的 port(同成本比對方 Bridge ID,再比 port ID)。
- 每個網段選 Designated Port:離 root 最近的那一端。
- 其餘 port 全部 Blocking;在圖上標 R、D、×。A、B 是否相通:看 blocking 後是否仍有一條路徑,並檢查是否同 VLAN、同網段。
追問:loop 會造成廣播風暴和 MAC table 不穩;PortFast 只開在接終端的 port 並搭配 BPDU Guard;RSTP/MSTP 收斂比傳統 STP 快。校園最常見的 loop 是使用者自己接小 switch。
VLAN 是什麼?如何穩定切換到別的 VLAN 和 IP?2018 丁
VLAN 在同一台實體 switch 上切出多個廣播網域。Access port 屬於單一 VLAN、trunk port 用 802.1Q tag 帶多個 VLAN;native VLAN 不帶 tag,要注意 VLAN hopping。換 VLAN:switch 改 port 的 access VLAN(或使用者連到對應 SSID),端點 DHCP release/renew 拿新網段;伺服器要換就先加新 IP、改 DNS、等 TTL、再拔舊 IP。
OSPF、路由、nftables
看拓撲:哪幾台是 ABR、ASBR?LSA 3、4、5 是什麼?如何把它們彙總成 default route?2024 丁
- ABR:同時接 Area 0 與其他 area 的 router。ASBR:把外部路由(static、BGP、別的協定)redistribute 進 OSPF 的 router。
- LSA 類型:1 Router、2 Network(DR 發)、3 Summary(ABR 把 area 間路由帶過去)、4 ASBR Summary(告訴別的 area ASBR 在哪)、5 External(ASBR 發的外部路由)、7 NSSA External。
- 彙總成 default:把該 area 設成 Totally Stubby,ABR 上
area 3 stub no-summary(Cisco),area 內其他 routerarea 3 stub。Stub 擋 4、5;Totally Stubby 擋 3、4、5,由 ABR 送進 default。需要引入外部路由時改用 NSSA(Type 7)。 - 「不要把某些 LSA 送到其他 area」:Type 1、2 本來就不出 area;彙總用
area X range(ABR)和summary-address(ASBR),過濾用area X filter-list。
Area 3 的 ABR 建立不了 neighbor,下面的機器也連不出去,為什麼?2024 丁
Area ID 不同、Hello/Dead timer 不同、驗證不同、子網或遮罩不同、stub flag 不一致、MTU 不同(卡在 ExStart)、router-id 重複、介面被設 passive、ACL 擋了 224.0.0.5/6。如果 Area 3 沒有直接接到 Area 0,ABR 必須用 virtual link 接回 backbone。驗證指令:show ip ospf neighbor、show ip ospf interface、debug adjacency。
給 routing table 與 nftables 規則,判斷 5 組封包最後的 src/dst 與進出介面,或為什麼離不開機器。2024 丁
- 進來的封包:
prerouting(DNAT 在這)→ 路由決策 → 目的是本機走input,否則走forward→postrouting(SNAT/masquerade 在這)。 - 本機發出:
output→ 路由決策 →postrouting。 - 路由看最長前綴;有
ip rule先看 policy routing。實機驗證:ip route get 8.8.8.8 from 10.0.0.5 iif eth1。 - 離不開機器的常見原因:沒有匹配路由或沒有 default、forward chain 預設 drop、
net.ipv4.ip_forward=0、rp_filter 因反向路徑不符而丟。
考場上先畫一張 chain 流程圖,再逐組標出經過哪些規則。
如何防止 BGP Hijacking?2024 面試
RPKI(發 ROA,自己做 Route Origin Validation 丟掉 invalid)、IRR 過濾客戶路由、prefix limit、ROA 設好 max-length、加入 MANRS、用 BGP 監控服務告警。
情境與架構設計
教授想從 A 網段辦公室連 B 網段實驗室伺服器,連不上;教授上得了外網,系計中也戳得到伺服器。可能原因(最多三個)?2024 丁
關鍵:兩邊各自正常,問題在 A→B 這條路徑,或伺服器對 A 的特別處理。
- 伺服器主機防火牆只放特定網段(實驗室和系計中),或服務只聽在內部介面。
- VLAN 間 ACL:L3 switch 或防火牆沒放行 A→B。
- 回程路由:伺服器是雙網卡,回給 A 的封包走另一張卡(非對稱路由),被狀態式防火牆或 rp_filter 丟掉;或伺服器有一條寫錯的靜態路由吃掉 A 網段。
其他:內部 DNS view 對 A 網段回錯 IP、伺服器 IP 和 A 網段某台撞到。驗證:伺服器上 tcpdump -ni any host <教授IP>,看 SYN 有沒有到、回應從哪張卡出去。
實驗室有台新 router,你沒有網路線,只有一台電腦和兩條從牆壁出來的線,怎麼設定?2024 丁
- 先弄清楚兩個牆孔各接到哪:看配線架標籤,或電腦插上去看 DHCP 拿到什麼網段、
lldpctl看對端 switch 與 port。 - 一條接 router WAN。
- 電腦不用線也能進管理介面:連 router 出廠預設 Wi-Fi(底部標籤),或用 console/USB。設完先改管理密碼、關 WAN 端管理、更新韌體。
- 陷阱:不要把兩條牆壁線同時插 router 的 LAN 和 WAN(或兩個 LAN),若在同一 VLAN 會形成 loop,或 router 的 DHCP 跑進大樓網路變成 rogue DHCP。
網路架構設計:兩間電腦教室 70 台;收到資安通報時追查問題電腦;伺服器有對外 Web 和只限內網的服務。2021 丁
- 電腦教室:每間一個 VLAN、各 /25(126 個可用),L3 switch 當 gateway;DHCP 依 MAC 保留固定 IP(座位對應 IP,方便考試與追查);教室間 ACL 隔離,考試時可只放行考試伺服器;部署用 PXE。
- 資安通報追查:通報給公網 IP+時間 → 有 NAT 就查 NAT log 對到內部 IP → DHCP lease 或 gateway ARP 表對到 MAC → switch
show mac address-table address <mac>對到 port → 配線對到房間牆孔。時間戳一定要對齊,所以設備都要 NTP、log 要集中保存。進階是 802.1X 把帳號綁到連線。 - 伺服器服務分區:Web/反向代理放 DMZ,DB 與內部服務放內部 VLAN,防火牆只開 DMZ→DB 必要 port;管理介面(SSH、IPMI)另開管理網段。
傳統產業要導入 IPv6 該注意什麼?2018 丁
位址規劃(一個 VLAN 一個 /64)、SLAAC 或 DHCPv6、RA Guard、防火牆規則 v4/v6 對等(常見漏洞是 v6 全開)、DNS AAAA、應用與設備支援度、監控和 log 要能處理 v6、先雙堆疊再逐步過渡、人員訓練。
描述你遇過的網路問題以及怎麼解決。2018 丁你的經驗
準備一個資訊中心真實案例,用 STAR:情境(哪棟、多少人受影響)、你的任務、你用的指令與判斷順序、結果與後續(文件、監控)。沒有參與處理的事件不要講成自己做的。
舉出可以查網路狀態的指令。2019 丁
ip a、ip route、ip neigh、ss -tunap、ethtool eth0、mtr、tcpdump、dig、nmcli、iperf3。每個講一句用途。
四、題庫二:Linux、VM、Container、DevOps
這區的重點是講出底層機制:容器就是 namespace+cgroup+filesystem,K8s 就是一群 controller 在 watch API server。
Linux/BSD
說明 FreeBSD Jail、seccomp、Linux namespace、capability、systemd/init、rctl、eBPF 的用途與優缺點。2022 丁2023 丁
| 名詞 | 一句話 | 補充 |
|---|---|---|
| namespace | 隔離「看得到什麼」:pid、net、mnt、uts、ipc、user、cgroup、time | 容器隔離的基礎 |
| cgroups | 限制「用得了多少」:CPU、記憶體、IO、pids | v2 為單一階層;systemd slice 就是用它 |
| capability | 把 root 權限切成小塊,例如 CAP_NET_ADMIN、CAP_NET_BIND_SERVICE | 容器預設丟掉大部分;CAP_SYS_ADMIN 幾乎等於 root |
| seccomp | 過濾程式能呼叫的 syscall | Docker 有預設 profile;評測沙盒常用來禁網路、禁 fork |
| eBPF | 在 kernel hook 點執行經驗證器檢查過的小程式 | 觀測(bpftrace)、網路(XDP、Cilium)、安全 |
| systemd vs init | SysV init 用依序執行的腳本與 runlevel;systemd 用 unit 依賴平行啟動 | systemd 另有 cgroup 追蹤、journald、timer、socket activation;缺點是範圍太大 |
| FreeBSD jail | BSD 的 OS 層級虛擬化,早於 Linux 容器 | 每個 jail 有自己的檔案系統、IP、使用者 |
| rctl | FreeBSD 的資源限制(使用者、jail、程序) | 類似 cgroups |
| ZFS | Copy-on-write 檔案系統+volume manager | 快照、checksum、send/recv、RAID-Z;吃記憶體 |
| fstab/autofs | 開機靜態掛載 vs 存取時才掛 | autofs 常用於 NFS 家目錄 |
Linux 從 BIOS 到開機完成做了哪些事?2018 丁
- 韌體 POST,BIOS 讀 MBR/UEFI 讀 ESP 上的 bootloader。
- GRUB 載入 kernel 與 initramfs,帶 kernel 參數。
- Kernel 初始化硬體,initramfs 載入驅動、解密或組 RAID、掛上真正的 root。
- 執行 PID 1(systemd),依
default.target平行啟動 unit,最後 getty/登入畫面。
指令:systemd-analyze blame、journalctl -b。
如果要在 Linux 自己做一個類似 Docker 的東西,會用到哪些工具?2021 丁
unshare/clone() 開 namespace;cgroups v2 限資源;準備 rootfs(overlayfs 疊 image layer)再 pivot_root;建 veth pair 一端放容器 netns、一端接 bridge,再用 nftables 做 NAT;丟掉 capability、套 seccomp、可加 user namespace 讓容器內 root 對應到主機一般使用者。要注意:重新掛 /proc、PID 1 要回收殭屍程序並轉發訊號、image 來源可信度。
如何限制使用者的資源?2021 丁2022 丁
程序層:ulimit//etc/security/limits.conf(pam_limits)。系統層:systemd 的 user-UID.slice 設 MemoryMax、CPUQuota、TasksMax(底層是 cgroups)。磁碟:quota(xfs_quota、ZFS quota)。BSD:rctl、login.conf。運算叢集:交給 Slurm 排程並用 cgroup 強制限制。
Linux 如何做系統備份與備援?2020 丁
RAID 不是備份:RAID 1/5/6/10 防硬碟壞,防不了誤刪和勒索。備份照 3-2-1(3 份、2 種媒體、1 份異地),工具 restic、borg、rsync、ZFS/LVM 快照;資料庫另外做邏輯備份與 binlog。關鍵是定期演練還原。備援(HA):keepalived(VRRP)飄浮 IP、Pacemaker、DB 主從複寫。
計中主機可能被學生惡意使用或當跳板攻擊別人,如何防範與偵測?2020 丁
- 防範:最小權限、限制對外連線(例如擋 outbound 25、限制大量對外連線)、rate limit、fail2ban、只允許金鑰登入、即時更新、限制程序數與資源。
- 偵測:NetFlow/sFlow 看異常對外流量、auditd、集中 log、IDS(Suricata)、監控 CPU 異常(挖礦)、外部 abuse 通報。
- 處理:先隔離帳號與連線、保留證據、依校規通報。
你知道的 Linux distribution 與特性?FreeBSD、OpenBSD、NetBSD 差異?pkg 與 ports?
- Debian/Ubuntu:apt、穩定、社群大;RHEL/Rocky/Alma:企業長期支援、SELinux;Arch:rolling release;Alpine:musl、極小,常做容器基底。
- FreeBSD:效能、ZFS、jail,常見於伺服器與儲存;OpenBSD:安全優先,pf 與 OpenSSH 出自這裡;NetBSD:可攜性,支援大量平台。
- pkg 裝預先編譯的 binary;ports 從原始碼編譯,可調編譯選項。
用過哪些防火牆軟體?
nftables(iptables 的後繼)、ufw/firewalld(前端包裝)、BSD 的 pf、雲端的 security group、Cloudflare 的 WAF 規則。講你在哪台機器、為了什麼設過。
VM 虛擬化
NFS、Samba、iSCSI 在 datastore 上怎麼選?2021 丁2022 丁
NFS 是檔案層、Unix 原生,當共享 datastore 最簡單,支援快照(qcow2)。SMB 是 Windows 檔案分享,VM datastore 較少用。iSCSI 是區塊層(LUN),效能較好,但多台主機共用要有叢集檔案系統(VMFS)或 LVM 管理,Proxmox 上 iSCSI+LVM 沒有快照。更大規模用 Ceph。
Live migration 是什麼?不同代 CPU 會有什麼問題?2018 丁2020 丁
VM 不關機就搬到另一台主機:先複製記憶體,反覆複製被改過的 dirty page,最後短暫暫停、送完剩下的狀態再切過去。需要共享儲存(或同時搬儲存)。不同代 CPU 的問題:VM 若在新 CPU 上用了新指令集,搬到舊 CPU 會出錯。解法是 CPU 遮罩:VMware EVC、Proxmox 把 CPU type 設成 x86-64-v2 這類通用型號,不用 host。
vCPU 的意義?Intel、AMD 虛擬化指令集?2021 丁
vCPU 是主機上被排程的一條執行緒,可以超賣(overcommit),太多會造成 CPU steal time;大 VM 要注意 NUMA。硬體虛擬化:Intel VT-x、AMD-V;記憶體位址轉譯加速 EPT/NPT;裝置直通靠 IOMMU(VT-d、AMD-Vi)。
要加一台伺服器到叢集裡,需要注意什麼?2022 丁
CPU 廠牌與世代(影響 live migration)、記憶體、網卡數與速度、VLAN 與 MTU 一致、能存取共享儲存、軟體版本一致、時間同步、叢集 quorum(節點數以奇數為佳,Proxmox 用 corosync)。
集中式 VM 平台和 VirtualBox 這種單機的差異?一台主機上多個 VM 各有網段並做 NAT?
集中式平台有 HA、live migration、共享儲存、集中管理與權限、排程備份、範本。網段:每個網段建一個 Linux bridge(或 VLAN-aware bridge),在主機上對 bridge 做 masquerade,或放一台 VyOS/pfSense VM 當路由器。
Container/K8s
容器化有什麼缺點?去年題
- 共用 kernel:隔離比 VM 弱,kernel 漏洞可能造成逃逸;也不能跑不同 kernel 的系統。
- 狀態保存:容器是暫時的,資料庫等有狀態服務要處理 volume、備份與遷移。
- 網路與除錯複雜:多一層 NAT、overlay、DNS;image 裡常沒有除錯工具,log 隨容器消失。
- 供應鏈風險:基底 image 帶漏洞、來源不明,要掃描(Trivy)與更新。
- 資源設定:沒設 limit 會互搶,設太低會被 OOM kill;PID 1 訊號處理問題。
- 維運成本:導入 orchestration 的學習曲線與 YAML 管理。
Container 有什麼優缺點?什麼情況不該用?VM 和 container 差在哪?2022 丁
VM 虛擬化硬體、各自 kernel、隔離強、開機慢、資源重;container 虛擬化 OS、共用 kernel、輕量、秒起、image 可攜。優點:環境一致、部署快、密度高。不該用:需要強隔離的多租戶、需要特殊 kernel 模組、大型有狀態系統且團隊沒有維運能力、GUI 桌面應用。
什麼是 CNI?聽過哪些?底層做了什麼?如何實作 Network Policy?2022 丁2023 丁
CNI 是 kubelet 呼叫網路插件的介面規格。Pod 建立時 CNI 會:建 veth pair,一端放 Pod 的 netns、一端留主機;由 IPAM 分 IP;設路由;跨節點則用 overlay(VXLAN、IPIP)或 BGP 宣告路由。
- Calico:BGP/IPIP/VXLAN,NetworkPolicy 用 iptables/ipset 或 eBPF 實作。
- Flannel:VXLAN,簡單,不支援 NetworkPolicy。
- Cilium:eBPF,可做 L7 policy。
下了 kubectl run busybox --image=busybox,K8s 背後做了什麼?越詳細越好。2022 丁2023 丁
- kubectl 讀 kubeconfig,送 POST 給 API server。
- API server 驗證身分(authn)、檢查權限(RBAC)、跑 admission controller,把 Pod 物件寫進 etcd。
- Scheduler watch 到沒有 nodeName 的 Pod,先 filter 再 score,把 Pod bind 到某個節點。
- 該節點的 kubelet watch 到,透過 CRI 叫 containerd:建 pod sandbox(pause 容器)、呼叫 CNI 設網路、拉 image、啟動容器。
- kubelet 回報狀態給 API server。
- 加分細節:busybox 預設沒有長駐程序,執行完就退出;Pod 的 restartPolicy 是 Always,所以會進入 CrashLoopBackOff。要讓它活著要加
-- sleep 3600。
如何用 x.509 憑證讓 manager 只能在 manager namespace 操作 ConfigMap?用什麼指令確認權限?2022 丁
openssl genrsa產私鑰,openssl req -new -subj "/CN=manager/O=managers"產 CSR。- 建 K8s
CertificateSigningRequest,kubectl certificate approve,取回簽好的憑證。 - 在 manager namespace 建 Role:resources
configmaps,verbs get、list、create、update、delete。 - 建 RoleBinding 綁 user
manager(K8s 用憑證 CN 當 user、O 當 group)。 kubectl config set-credentials寫進 kubeconfig。- 確認:
kubectl auth can-i update configmaps -n manager --as manager(回 yes),換-n default應回 no。
只有一台機器,如何部署大量 container?2021 丁2022 丁
Docker Compose 或單節點 k3s;每個服務設 CPU/記憶體 limit;分網路隔離;前面放反向代理(Traefik、Caddy)依網域分流,避免 port 衝突;集中收 log 與 metrics;image 用相同基底減少空間;注意單點故障,資料要備份。
K8s 解決了什麼問題?導入時遇到什麼問題?2022 丁
解決:宣告式部署、自我修復、水平擴展、滾動更新與回滾、服務發現、設定與密鑰管理。問題:複雜度與學習曲線、網路除錯困難、有狀態儲存、版本升級、YAML 散亂、控制平面本身的資源開銷。小規模服務不一定值得。
新版 K8s 不支援 Docker runtime,管理者要注意什麼?2021 丁
K8s 1.24 移除了 dockershim,改用 containerd 或 CRI-O。Image 是 OCI 格式所以照用。受影響的是依賴 docker socket 的東西:CI 裡的 docker-in-docker、讀 Docker log 路徑的 log agent、監控工具。節點除錯改用 crictl。升級前先盤點、在測試叢集驗證。
備份 K8s cluster 要做哪些步驟?2022 丁
etcd 快照(etcdctl snapshot save)、控制平面憑證(/etc/kubernetes/pki)、manifest 放 Git(GitOps)、PersistentVolume 資料另外備份(Velero 或儲存端快照)。並演練還原。
DevOps/監控
SLA、SLO、SLI 是什麼?有參考 Google SRE 的 VALET 嗎?2022 丁
SLI 是量測的指標(例如成功請求比例、p99 延遲);SLO 是內部目標(例如 30 天 99.9%);SLA 是對外合約,違反有賠償,通常比 SLO 寬鬆。1 − SLO 是 error budget,用完就停止上新功能、先修穩定度。VALET:Volume、Availability、Latency、Errors、Tickets。
Prometheus、Grafana 是什麼?Traces 在 Observability 中扮演什麼角色?有沒有做過監控?2022 丁
Prometheus 定期 pull 各服務的 metrics 存進時序資料庫,用 PromQL 查詢,Alertmanager 發告警;Grafana 做儀表板。Observability 三支柱:metrics(發生了什麼)、logs(細節)、traces(一個請求跨服務的路徑與每段耗時,例如 OpenTelemetry、Jaeger)。
用過哪些 CI/CD?請設計一個 CI/CD 流程(可畫圖)。2020 丁2022 丁
push/MR → lint 與單元測試 → build image → 漏洞掃描 → 推 registry → 部署 staging → 整合/E2E 測試 → 人工核准 → 部署 production(GitOps:Flux/Argo CD 從 Git 同步)→ 監控與一鍵回滾。秘密放 CI 的 secret 或 vault,不放 repo。
DevOps 和 SRE 差在哪?2021 丁
DevOps 是文化與實踐:打破開發與維運的牆、自動化、持續交付。SRE 是 Google 提出的具體做法:用軟體工程解決維運,以 SLO 與 error budget 管理風險、限制 toil。常見說法是 SRE 是 DevOps 的一種實作。
Ansible 是什麼?和寫 shell script 有何不同?預測
Agentless(透過 SSH),用 inventory 定義主機、playbook 宣告期望狀態,module 是冪等的:跑兩次結果一樣,只改需要改的。Shell script 是命令式,重跑可能出錯,也難以管理多台。Role 可重用。資訊中心 System 組把它列為應備知識。
五、題庫三:Mail、DNS、LDAP、PKI、HPC
Mail 題的核心是講對信件流向與每一站的角色(MUA、MSA、MTA、MDA);你沒有維運 Postfix,答題時寫原理並標明經驗邊界。
A 寄信給 B,SMTP 的 flow 怎麼走?(A、B 都用 Outlook)2021 丁2022 丁
- A 的 Outlook(MUA)用 SMTP submission(587 STARTTLS 或 465)帶帳密送到 A 公司的 MSA/MTA。
- A 的 MTA 放進 queue,查 B 網域的 MX 紀錄。
- 連到 B 的 MX port 25:EHLO → STARTTLS → MAIL FROM → RCPT TO → DATA → QUIT,並簽 DKIM。
- B 的 MTA 檢查 SPF、DKIM、DMARC、黑名單與垃圾信過濾。
- 交給 MDA(例如 Dovecot LMTP)存進 B 的信箱(Maildir)。
- B 的 Outlook 用 IMAP(993)或 POP3(995)收信。
IMAP 和 POP3 差異?用 Outlook 時各自的 flow?Maildir 和 mbox?2018 丁2020 丁
POP3 把信下載到本機,預設從伺服器刪除,適合單一裝置;IMAP 信留在伺服器,資料夾與已讀狀態多裝置同步。mbox 一個資料夾一個大檔,需要鎖;Maildir 一封信一個檔案,併發安全、較好備份。
Open relay 是什麼?SPF 作用?如何防止垃圾郵件?安全的 mail server 有哪些設定?2020 丁2022 丁
- Open relay:任何人不需驗證就能透過你的伺服器寄給外部網域,會被拿來發垃圾信、讓你上黑名單。
- SPF:DNS TXT 列出哪些 IP 可以替這個網域寄信。DKIM:用私鑰簽信件,公鑰放 DNS。DMARC:告訴收件方 SPF/DKIM 失敗時怎麼處理,並回報。
- 防垃圾信:RBL、greylisting、rspamd/SpamAssassin、對外寄信限速、PTR 反解要正確、HELO 檢查。
- 安全設定:只在 submission 收認證、強制 TLS、MTA-STS 或 DANE、fail2ban、即時更新。
Postfix 的 queue(incoming、active、deferred)意義?用過哪些 table?Dovecot 的 userdb、passdb?2018 丁2020 丁
incoming:剛收進來的信;active:正在投遞(數量有上限);deferred:暫時失敗(4xx)等重試;另有 hold 與 maildrop。指令 postqueue -p、postsuper -d。Table:virtual、transport、access、canonical、aliases,後端可以是 hash、lmdb、LDAP、MySQL。Dovecot:passdb 負責驗證密碼,userdb 提供 uid、gid、家目錄與信箱位置。
給一段 mail log 找出退信原因;使用者說對方沒收到,你要問什麼?2018 丁2020 丁
先問:寄件時間、收件地址、主旨、有沒有收到退信。用 queue ID 串起整封信的 log:grep <queue-id> /var/log/mail.log。看 status=:sent、deferred(4xx 暫時,例如對方灰名單)、bounced(5xx 永久,例如 550 5.1.1 user unknown、被 SPF/DMARC 擋)。讀信件 Received 標頭由下往上看經過哪些主機。
架設大規模 mail server 你會怎麼規劃(畫架構圖)?用過 Google Workspace 或 Office 365 嗎?優點?2020 丁2021 丁
多筆 MX → 前端過濾層(rspamd)在負載平衡後 → MTA 叢集 → Dovecot proxy/director 依使用者導到後端儲存(共享儲存或 dsync 複寫)→ LDAP 認證;submission 與收信分開;監控 queue 長度。代管服務的優點:可用性、垃圾信過濾、行動裝置與協作整合、少維運;自建的優點:資料主權、客製、成本。
DNS
DNS lookup 流程?DoT 與 DoH 差別,改善了什麼?2024 丁
Stub resolver 問 recursive resolver(先查 cache)→ root → TLD → authoritative,依 TTL 快取。DoT 用 TLS 跑在 853;DoH 把 DNS 包在 HTTPS 443。兩者都防路徑上的人偷看或竄改查詢;DoH 混在一般流量裡較難被擋,也讓企業較難監控與過濾。DNSSEC 解決的是真偽,不是隱私。
不安全的 DNS 服務會遭受什麼攻擊?怎麼解決?管過 DNS 嗎,有什麼可改進?2022 丁
| 攻擊 | 防法 |
|---|---|
| Cache poisoning(Kaminsky) | 來源 port 隨機化、DNSSEC 驗證 |
| Open resolver 被拿來反射放大 | 只對內部提供遞迴、Response Rate Limiting |
| Zone transfer 外洩 | 限制 AXFR 對象、TSIG |
| DNS tunneling 外傳資料 | 監控異常長查詢與頻率 |
| Subdomain takeover(懸空 CNAME) | 定期盤點紀錄,服務下線時刪紀錄 |
DNS 反射攻擊如何運作?2020 丙2023 戊
攻擊者偽造來源 IP 為受害者,向大量 open resolver 送小查詢(要求大回應,例如 ANY 或 DNSSEC 紀錄),回應全部打到受害者,放大倍數可達數十倍。防法:resolver 不對外開放遞迴、RRL、ISP 做 BCP 38 來源位址過濾。考卷只寫原理與防禦。
LDAP/PKI/HPC
如果要讓系統可以用 OpenLDAP 登入,該如何設定?2021 丁2022 丁
用 SSSD(或 nslcd)接 NSS 與 PAM:設 ldap_uri、search base、TLS(ldaps 或 StartTLS,裝 CA);使用者物件要有 posixAccount 屬性。驗證:getent passwd alice、id alice、ldapsearch -x -H ldaps://ldap.example -b "dc=example,dc=edu" uid=alice。家目錄可配 autofs 掛 NFS,或 pam_mkhomedir。
高可用 OpenLDAP 怎麼架?2022 丁
syncrepl 複寫:multi-provider(mirror mode 或 N-way)兩台以上互為主,前面放 VIP 或 client 設定多個 URI;consumer 唯讀副本分散查詢。slapcat 定期備份;監控各節點 contextCSN 是否一致。
PKI 與憑證管理:簽憑證、檢查、續期、撤銷。預測
Root CA 離線保存,平常用 intermediate 簽;自動化用 ACME(step-ca 也支援);撤銷用 CRL 或 OCSP。指令:openssl x509 -in a.crt -noout -text、openssl verify -CAfile ca.crt a.crt、openssl s_client -showcerts。
Slurm 是什麼?如何限制使用者的 GPU 與運算資源?預測
slurmctld(控制)、slurmd(各節點)、slurmdbd(帳務)。用 partition 分機器、QOS 限制每人最多 GPU(MaxTRESPerUser=gres/gpu=2)與時間、fairshare 排優先;cgroup 強制限制 GPU 與記憶體;pam_slurm_adopt 讓沒有工作的人 SSH 不進運算節點。軟體環境用 module、Spack 或 Conda。
六、題庫四:WWW、Git、資安
去年 WWW 題(ORM、Callback Hell、借教室、瀏覽器渲染)都是概念加上設計取捨。答題時講「用什麼、為什麼、代價是什麼」。
後端與資料庫
你要開發借教室系統,兩個教授同時要借同一間教室,系統架構怎麼處理?去年題2020 丁
這是 race condition。如果先查「有沒有人借」再寫入,兩個請求可能同時查到空的(TOCTOU)。最終防線要放在資料庫:
- 唯一或排他約束:時段固定就對
(room_id, slot)設 UNIQUE;時段可重疊用 PostgreSQL 的 exclusion constraint。第二筆會失敗,API 回 409 Conflict 並建議其他時段。 - Transaction+鎖:悲觀鎖
SELECT ... FOR UPDATE鎖住該教室;或樂觀鎖用 version 欄位,更新時版本不符就重試。 - 序列化:每間教室一個佇列依序處理;多台應用伺服器可加 Redis 分散鎖(
SET key val NX PX),但 DB 約束仍是最後保障。 - 業務規則:先到先得,或改成「申請→審核」流程並定優先序(例如課程優先),通知落選者。
CREATE EXTENSION btree_gist;
CREATE TABLE booking (
id serial PRIMARY KEY,
room_id int NOT NULL,
professor_id int NOT NULL,
during tstzrange NOT NULL,
EXCLUDE USING gist (room_id WITH =, during WITH &&)
);
ORM 和 Query Builder 有什麼差別?去年題2021 丁2024 丁
| ORM(Eloquent、Prisma、Django ORM) | Query Builder(Laravel QB、Knex) | |
|---|---|---|
| 抽象層級 | 資料表對應成物件與關聯 | 用程式組出 SQL,結果是一般資料列 |
| 優點 | 關聯好寫、少寫 SQL、換資料庫容易 | 接近 SQL、可控、自動參數化防注入 |
| 缺點 | N+1、看不到實際 SQL、複雜查詢難、效能較差 | 要自己處理關聯與物件映射 |
實務上 CRUD 用 ORM,報表與複雜查詢用 Query Builder 或 raw SQL,並開 query log 檢查。
N+1 query problem 是什麼?怎麼預防?2018 丁2024 丁
撈 100 篇文章(1 次),再逐篇查作者(100 次),共 101 次查詢。解法:eager loading(Laravel with('author')、Prisma include)、JOIN、用 WHERE id IN (...) 批次、GraphQL 用 DataLoader。偵測:query log、Laravel Debugbar、APM。
圖書館系統把 email serialize 出來,但不知道為什麼很慢。列出可能原因與解法。2022 丁
- 序列化時觸發關聯的 lazy load(N+1)→ eager load。
- 一次序列化全部資料沒分頁 → 分頁、只選需要的欄位。
- 每筆呼叫外部服務(LDAP 查名字、加解密)→ 批次或快取。
- 沒有索引的查詢 → 看 slow query log、
EXPLAIN、加索引。
先量測再改:profiler、APM、query log,找到真正耗時的地方。
設計教授、實驗室和負責人的 RESTful API。2022 丁2023 丁
GET /labs 列表(?page=&q=)
POST /labs 新增
GET /labs/{id} 單一
PATCH /labs/{id} 部分更新,例如 {"managerId": 12}
DELETE /labs/{id}
GET /professors/{id}/labs 教授的實驗室
PUT /labs/{id}/manager 指定負責人
名詞用複數資源、動作用 HTTP method;狀態碼 200、201、204、400、401、403、404、409;回錯誤時有結構化訊息;分頁、過濾、版本(/v1)。
設計 DB schema:User 和 Group 雙向查詢;圖片與標籤。2021 丁2022 丁
多對多一律用中介表:
users(id PK, name) groups(id PK, name UNIQUE)
user_groups(user_id FK, group_id FK, PRIMARY KEY(user_id, group_id))
CREATE INDEX ON user_groups(group_id); -- 反向查詢也快
images(id PK, path) tags(id PK, name UNIQUE)
image_tags(image_id FK, tag_id FK, PRIMARY KEY(image_id, tag_id))
理由:正規化避免重複;複合主鍵防重複關聯;兩個方向都有索引。
API Rate Limit:5 分鐘內最多 10 次,你會怎麼實作?2021 丁
Redis:固定視窗 INCR key+EXPIRE 300 最簡單,但視窗邊界會讓瞬間多一倍;滑動視窗用 sorted set 存時間戳,刪掉 5 分鐘前的再計數;或 token bucket。key 用使用者 ID 或 IP。超過回 429 並帶 Retry-After。也可在閘道層做:nginx limit_req、Cloudflare rate limiting。
OAuth 2.0、OpenID Connect、JWT、SSO 的差別?2021 丁2022 丁
OAuth 2.0 是授權:讓第三方拿 access token 代表使用者存取資源。OIDC 是建在 OAuth 上的身分驗證層,多了 ID token(JWT)與 userinfo。JWT 是一種自帶簽章的 token 格式,缺點是難撤銷,所以要短效期加 refresh token。SSO 是一次登入多系統通用的體驗,可用 SAML 或 OIDC 實作。
其他常見後端題
- MVC:Model 資料與商業邏輯、View 呈現、Controller 接請求並協調。MVVM 用 ViewModel 雙向綁定(Vue)。
- Transaction:ACID;隔離等級 Read Uncommitted、Read Committed、Repeatable Read、Serializable,分別防髒讀、不可重複讀、幻讀。
- RDBMS vs NoSQL:關聯式有 schema、JOIN、交易;NoSQL(文件、KV、寬欄)彈性 schema、水平擴展,一致性通常較弱。
- Sub-query vs JOIN:多數情況優化器結果相近;相關子查詢可能逐列執行而變慢;JOIN 可讀性與可優化性通常較好。
- gRPC vs REST:gRPC 用 HTTP/2+Protobuf,有強型別與 streaming,適合服務間;REST 用 JSON,通用、瀏覽器友善。GraphQL 讓客戶端決定要哪些欄位。
- Redis:快取、session、rate limit、佇列、排行榜、分散鎖。
- 圖片裁切做前端還後端:前端減少上傳量與即時預覽;後端可信、統一格式、能防惡意檔案。實務是前端預覽裁切,後端再驗證與轉檔。
前端與瀏覽器
簡單介紹瀏覽器的渲染過程。去年題
- (拿到資源前)DNS → TCP → TLS → HTTP 回 HTML。
- 解析 HTML 建 DOM;遇到 CSS 建 CSSOM;一般
<script>會阻塞解析,defer在解析完才依序執行,async下載完就執行。 - DOM+CSSOM 合成 Render Tree(
display:none不在裡面)。 - Layout(reflow):算每個元素的位置與大小。
- Paint:畫出像素到各圖層。
- Composite:GPU 合成圖層顯示。
優化:critical CSS、script 用 defer、動畫用 transform/opacity(只觸發 composite)、避免讀寫交錯造成 layout thrashing。
什麼是 Callback Hell?ES6 怎麼解決?去年題2018 丁2020 丁
非同步操作一層包一層,形成向右延伸的金字塔,難讀、錯誤處理分散、難以平行化。解法:Promise 鏈、async/await、Promise.all 平行處理、把 callback 拆成具名函式。
// callback hell
getUser(id, (e, u) => { getPosts(u, (e, p) => { getComments(p, (e, c) => { ... }) }) })
// async/await
try {
const u = await getUser(id)
const p = await getPosts(u)
const c = await getComments(p)
} catch (e) { handle(e) }
Promise、async/await 實際上是什麼?為何 JS 有原生 event loop?2024 面試
Promise 是代表未來結果的物件,有 pending、fulfilled、rejected 三態。async 函式回傳 Promise,await 會暫停該函式、把後續放進 microtask。Event loop:call stack 清空後先跑完所有 microtask(Promise 回呼),再取一個 macrotask(setTimeout、I/O)。JS 誕生在瀏覽器,單執行緒操作 UI,必須不阻塞,所以 event loop 是語言執行環境的一部分;其他語言也有,只是在函式庫層(Python asyncio、Rust Tokio、Node 底層的 libuv)。
var、let、const 差別?function 與 arrow function 差別?2022 丁2023 丁
var 是函式作用域、會 hoisting(初始化為 undefined)、可重複宣告;let、const 是區塊作用域、有 TDZ;const 不能重新賦值,但物件內容可改。Arrow function 沒有自己的 this(取外層)、沒有 arguments、不能 new、沒有 prototype。
CORS 是什麼?Content Security Policy 是什麼?2022 丁2023 丁
CORS:瀏覽器的同源政策預設不讓 JS 讀跨來源回應,伺服器用 Access-Control-Allow-Origin 等標頭放行;非簡單請求會先送 OPTIONS preflight。CORS 保護的是使用者,不是伺服器。CSP:伺服器用標頭限制頁面能載入或執行哪些來源的腳本、樣式等,主要防 XSS;unsafe-inline 會削弱效果,改用 nonce 或 hash。
unsafe-inline 的中風險項目,講你怎麼判斷與處理。CSRF、XSS 是什麼?怎麼防範?前後端分離時呢?2020 丁2021 丁
CSRF:誘使已登入的使用者瀏覽器送出非本意的請求(cookie 自動帶上)。防法:SameSite cookie、CSRF token、檢查 Origin。前後端分離若 token 放在 Authorization 標頭就不會自動帶,CSRF 風險低,但要注意 XSS 偷 token。XSS 分 stored、reflected、DOM-based;防法:輸出時依情境跳脫、框架預設跳脫、避免 innerHTML、CSP、cookie 設 HttpOnly。
其他常見前端題
- debounce vs throttle:debounce 停止觸發一段時間後才執行一次(搜尋框);throttle 固定間隔最多執行一次(捲動、resize)。
- SPA vs SSR、SEO:SPA 互動好但首屏慢、爬蟲可能看不到內容;解法 SSR/SSG(Nuxt、Next)、prerender、sitemap。SPA 缺點還有初次載入大、記憶體洩漏、要自己處理路由與狀態。
- TCP 有雙向通訊,為什麼瀏覽器還要 WebSocket:瀏覽器 JS 不能開原生 TCP socket,只能用 HTTP;HTTP 是請求回應模式。WebSocket 用 HTTP Upgrade 在同一條連線上全雙工。
- CSS 權重:
!important> inline > id > class/屬性/偽類 > 元素;class="a b"時權重相同,比在 CSS 檔中後出現的規則。 - flex vs grid:flex 一維(一列或一欄),grid 二維(同時列與欄)。
- RWD:
<meta name="viewport" content="width=device-width, initial-scale=1">+media query+相對單位(rem、%、vw)。 - 大量資料渲染:分頁、虛擬捲動、懶載入、伺服器端過濾與排序。
Git 與軟工
git rebase 可以做什麼?和 merge 差在哪?2022 丁2023 丁2024 丁
rebase 把分支上的 commit 重新接到新基底上,歷史變線性;rebase -i 可以 squash、改訊息、調順序。merge 保留分岔歷史並產生 merge commit。原則:已經推到共用分支的 commit 不要 rebase,否則別人的歷史會衝突。
敏感資訊被 commit 進 git 怎麼處理(列指令)?2021 丁
- 先撤銷並更換那組密鑰,因為已推上去就要當作外洩。
- 用
git filter-repo --path secrets.env --invert-paths(或 BFG)清掉歷史。 git push --force,通知協作者重新 clone。- 請平台清快取與 fork;加
.gitignore與 pre-commit 秘密掃描(gitleaks)。
其他 Git 題
- fetch vs pull:fetch 只下載遠端更新;pull = fetch+merge(或 rebase)。
- HEAD:指向目前所在的 commit 或分支。
- 找回刪除的 branch:
git reflog找到 commit,git branch name <sha>。 - git flow/GitLab Flow:git flow 有 main、develop、feature、release、hotfix,適合有版本發佈的產品,對持續部署太重;GitLab Flow 用環境分支;trunk-based 適合 CI/CD。
- Conventional Commits:
feat:、fix:、docs:等前綴,可自動產生 changelog 與版本號。 - 避免 merge conflict:小而頻繁的 PR、常同步主線、模組邊界清楚、格式化工具統一。
測試中 mock、stub、spy 的差別?TDD?2022 丁2024 丁
Stub 回傳預先設定的值,用來控制輸入;Spy 包住真的函式並記錄呼叫次數與參數;Mock 事先設定期望的呼叫,測試時驗證是否發生。TDD:先寫會失敗的測試(Red)→ 寫最少的程式通過(Green)→ 重構(Refactor)。
引用新的 dependency 時有哪些考量?有沒有重構經驗?2022 丁
維護狀態(最近 commit、issue 回應)、授權、安全紀錄與相依數量、大小、是否真的需要(能自己寫幾十行就不引)、版本鎖定與更新策略。重構:先有測試保護、小步修改、行為不變。
資安
XSS、SQL injection 是什麼?怎麼防禦?2020 戊2022 戊
SQL injection:輸入被拼進 SQL 而改變語意。防法:參數化查詢/prepared statement、ORM、最小權限 DB 帳號、輸入驗證、WAF。XSS 見上方前端題。
你的服務發現過哪些安全問題?你的經驗
ntnu.cc 的稽核有兩個中風險:
- 從 fallback 標頭取 IP 導致偽造:
X-Forwarded-For可以由客戶端偽造,只應信任來自可信代理的值;在 Cloudflare 後面應使用CF-Connecting-IP,並確保原站只接受 Cloudflare 的連線。 - CSP
unsafe-inline:改用 nonce 或 hash。
講清楚發現方式、風險評估、修補與驗證。
IDS 和防毒差在哪?弱點掃描結果如何排優先?預測
IDS 看網路流量或主機行為比對特徵與異常;防毒看檔案與程序。排優先:CVSS 分數只是起點,再看是否對外暴露、是否已有公開利用(CISA KEV、EPSS)、資產重要性,先修「對外且有人在打」的。
七、題庫五:戊組專屬
戊組考卷範圍比丁組小,SQL、Python 遞迴、子網、概念解釋年年出現。以下附可以直接寫上考卷的答案。
兩張表:員工(員工編號、公司部門、公司代號)、公司(公司編號、公司部門)。列出各部門名與總人數,依部門名排序。2024 戊
-- 只看有員工的部門
SELECT 公司部門, COUNT(*) AS 總人數
FROM 員工
GROUP BY 公司部門
ORDER BY 公司部門;
-- 沒有員工的部門也要列出(顯示 0)
SELECT c.公司部門, COUNT(e.員工編號) AS 總人數
FROM 公司 c
LEFT JOIN 員工 e ON e.公司部門 = c.公司部門
GROUP BY c.公司部門
ORDER BY c.公司部門;
重點:LEFT JOIN 時要 COUNT(e.員工編號),不能用 COUNT(*),否則空部門會算成 1。考卷上兩種都寫並說明差別。
SQL:會員與訂單兩張表,取出項目並依訂單時間排序;inner join 是什麼?2018 戊2022 戊
SELECT m.name, o.id, o.created_at, o.amount
FROM orders o
INNER JOIN members m ON m.id = o.member_id
ORDER BY o.created_at DESC;
INNER JOIN 只留兩邊都對得到的列;LEFT JOIN 保留左表全部,右表沒有就填 NULL。
Python generator 求輸出:gen('abc')2022 戊2023 戊2024 戊
def gen(s):
if len(s) == 0:
yield ""
else:
for subset in gen(s[1:]):
yield subset
yield s[0] + subset
推導:gen('')→ "";gen('c')→ "", "c";gen('bc')→ "", "b", "c", "bc";gen('abc')→ 每個再前綴 a:
(空行)
a
b
ab
c
ac
bc
abc
這是產生所有子集合(共 2³ = 8 個),第一行印出空字串。yield 讓函式變成惰性產生值的 generator。
給定 n 與 L,求 L 最後的內容。2020 戊
def f(n, L):
if n > 0:
L.append(n)
if n % 2 == 1: n = n - 1
else: n = n // 2
f(n, L)
例如 n=10:[10, 5, 4, 2, 1];n=7:[7, 6, 3, 2, 1]。注意 Python 3 的 n / 2 會變成浮點數(5.0),考卷原題是虛擬碼,寫答案時註明。
寫一個函式:輸入非負整數,輸出二進位中 1 的個數。2024 戊
def popcount(n: int) -> int:
count = 0
while n:
n &= n - 1 # 每次消掉最低位的 1
count += 1
return count
# 也可以:bin(n).count('1')
時間複雜度 O(1 的個數)。
寫 ipchecker:傳入 A、B 兩個 IP 與 mask,判斷是否在同一網段。2018 戊
def to_int(ip):
a, b, c, d = map(int, ip.split('.'))
return (a << 24) | (b << 16) | (c << 8) | d
def same_subnet(A, B, M):
m = to_int(M)
return (to_int(A) & m) == (to_int(B) & m)
same_subnet('192.168.1.70', '192.168.1.90', '255.255.255.224') # True
讀入 zero_one.in(只有 0、1),輸出哪個較多,用三種語言。2020 戊
# Python
s = open('zero_one.in').read()
print('0' if s.count('0') > s.count('1') else '1')
/* C */
#include <stdio.h>
int main(void){
FILE *f = fopen("zero_one.in", "r"); int c; long z = 0, o = 0;
while ((c = fgetc(f)) != EOF){ if (c == '0') z++; else if (c == '1') o++; }
fclose(f); puts(z > o ? "0" : "1"); return 0;
}
# Bash
z=$(tr -cd '0' < zero_one.in | wc -c); o=$(tr -cd '1' < zero_one.in | wc -c)
[ "$z" -gt "$o" ] && echo 0 || echo 1
其他程式題
- 陣列前後半交換(2021):
def swap(a): h = len(a)//2; return a[-h:] + a[:-h]。[1,2,3,4]→[3,4,1,2];[10,20,30,40,50]→[30,40,50,10,20](奇數時中間元素跟著後半段)。 - 防止乘法 overflow(2018):
if y != 0 and abs(x) > INT_MAX // abs(y): 溢位,先檢查再乘。 - 英文段落統計字頻(2018):
from collections import Counter; Counter(text.lower().split()),依題目格式輸出。 - 合併兩個 JSON(2018):
{**a, **b};JSON 基本型別:string、number、boolean、null、array、object。 - 按鈕按下變成文字(2022):
const btn = document.querySelector('#btn') btn.addEventListener('click', () => { const span = document.createElement('span') span.textContent = '已送出' btn.replaceWith(span) }) - n×m 矩陣每欄已升序,求所有 > k 的總和(2022):先算每欄後綴和,每欄二分搜尋第一個 > k 的位置,加上該位置之後的後綴和。單次 O(m log n),預處理 O(nm),多個 k 時預處理只做一次。
- n = 10^10000 能存成 double 嗎(2022):不能,double 最大約 1.8×10^308,會變成 inf。log 近似:存成字串,log10 n ≈ (位數 − 1) + log10(前幾位);這裡 log10 n = 10000,ln n = 10000 × ln 10 ≈ 23025.85。
- stable sort(2023、2024):相同鍵值的元素排序後保持原相對順序。穩定:bubble、insertion、merge、counting、radix;不穩定:quick、heap、selection。
概念題速答(每題 2–3 句)
| 題目 | 答案要點 |
|---|---|
| mutable vs immutable | 可變物件建立後內容可改(Python list、dict),不可變不能改(int、str、tuple),「修改」其實是產生新物件。不可變物件可當 dict key、天生 thread-safe。 |
| null safety(舉兩例) | 型別系統區分可為 null 與不可為 null,編譯期就擋掉 null 存取。Kotlin String?、TypeScript strictNullChecks、Rust Option<T>;語法 ?.、??。 |
| thread-safe data structure | 多執行緒同時存取仍正確。Java ConcurrentHashMap、Python queue.Queue、Go channel;實作靠鎖、atomic、不可變。 |
| microservice(舉例) | 把系統拆成可獨立部署的小服務,各自有資料、以 API 溝通。例:選課系統拆成帳號、課程、選課、通知。代價:分散式交易、網路延遲、監控複雜。轉換時先切邊界清楚的模組。 |
| DevOps | 開發與維運整合的文化與自動化:CI/CD、IaC、監控。工具 Git、GitLab CI、Docker、K8s、Ansible、Prometheus。 |
| 雲端運算、三大廠商 | 依需求取用、按量計費、彈性擴展;IaaS、PaaS、SaaS。AWS 服務最廣、Azure 與微軟生態整合、GCP 強在資料與 K8s。 |
| Cloud Native、高可用 | 容器、微服務、宣告式 API、自動化。高可用:消除單點、多副本、健康檢查、自動切換,用幾個 9 衡量。 |
| OOP 三大特性 | 封裝、繼承、多型。 |
| OOP、FP、Concurrent | OOP 以物件組織狀態與行為;FP 以純函式、不可變資料、高階函式;Concurrent 處理多件事同時進行。2019 年題目問「為何並行比 OOP 好」,兩者不是同一維度,答題時指出這點再說明各自適用情境。 |
| strong/weak、static/dynamic type | 強弱看是否允許隱式轉型(JS 弱、Python 強);靜態動態看型別何時檢查(Java、Go 編譯期;Python、JS 執行期)。 |
| inheritance vs composition | 繼承是 is-a,耦合高;組合是 has-a,較彈性,偏好組合優於繼承。 |
| JSON vs AJAX | JSON 是資料格式;AJAX 是用 JS 非同步向伺服器要資料而不重新載入頁面的技術,回傳可以是 JSON 或 XML。 |
| SOAP vs REST/JSON | SOAP 是協定,XML 信封、WSDL、WS-Security,嚴謹但重,常見於金融與政府舊系統;REST 是架構風格,輕量、JSON。選擇看對接方、合約需求、效能與團隊熟悉度。 |
CSS p a vs p, a | 前者是後代選擇器(p 裡面的 a),後者是群組(所有 p 和所有 a)。 |
| MAC 位址在哪層、網際網路上看得到來源 MAC 嗎 | 第二層;看不到,每經過一台 router 都會換成該段的 MAC。 |
| Top-down vs bottom-up | 設計:由整體拆解 vs 由元件組合;DP:遞迴+記憶化 vs 由小問題填表;parsing:LL vs LR。 |
| 無障礙網頁 | 語意化 HTML、圖片 alt、表單 label、鍵盤可操作、對比足夠、ARIA,參考 WCAG。 |
| 生成式 AI(實際用例) | 學習資料分布、產生新內容的模型,如 LLM、擴散模型。用例:程式輔助、客服、文件摘要。 |
| WordPress | PHP+MySQL 的開源 CMS,主題與外掛生態大,外掛是常見的安全弱點。 |
| Reactive programming | 以資料流與變化傳播撰寫程式,例:RxJS、Vue 的響應式資料。 |
| 能否擅自用師生照片或作品放上校務系統 | 不行。需告知蒐集目的、取得同意、限於目的使用,符合個資法、著作權與校內規範。 |
八、口試準備
口試只問兩種東西:你備審寫了什麼、你考卷寫了什麼。每個寫上去的經歷都要能講到第三層追問。
自我介紹稿
丁組 40 秒版(學長場):
丁組 1 分鐘版(教授場,在上面後面接):
戊組 1 分鐘版:
備審延伸題
臺師大資訊中心工讀必問
- 你實際負責什麼?哪些是你自己做的,哪些是協助?→ 分清楚。
- 印象最深的故障是什麼?你怎麼排查?(準備一個真實案例,見網路題「描述你遇過的網路問題」)
- 弱點掃描用什麼工具?掃到問題後流程是什麼?
- ISO 27001 稽核你看到什麼?學到什麼?→ 文件化、變更管理、存取控制、證據保存。
- 資訊中心預算和人力限制下,你看過哪些取捨?
Tor relay(BeTheStar)必問
- 為什麼學校會允許?→ 非出口節點(middle relay),流量不會以學校 IP 連到目的網站;你做了連線例外申請與資安風險評估。
- relay、exit、bridge 差在哪?→ 中繼只轉送加密流量;exit 是最後一跳,對外連線,法律風險在此;bridge 不公開列名,供審查地區使用。
- 主機怎麼加固?→ 只用金鑰登入、防火牆只開 ORPort、自動安全更新、專用使用者、ExitPolicy reject *:*。依你實際設定講。
- Shallot 怎麼運作?告警條件是什麼?
- 你發現的 Tor Metrics 錯誤是什麼?怎麼確認、怎麼回報?
- 專題的原始題目是共識權重優化,為什麼轉向?→ 照實說:分析後發現影響權重的因素主要不在節點端,這是一個合理的負面結果,所以轉向基礎設施建置與社群推廣。不要包裝成成功。
NOJV 開源評測系統必問
- 你負責哪部分?→ 評測沙盒與基礎建設。
- 沙盒怎麼隔離不受信任的程式?限時限記憶體怎麼做?→ 只講實際用的機制。
- 規模?→ 備審寫 186 位使用者;每學期約 300 位註冊、考試時約 150 人同時在線。
- 系主任請你評估 GCP 上雲:規格、價格、HA 切換怎麼想?
- 考試中當機怎麼辦?→ nojv-maintenance:原站掛掉時由 Cloudflare Worker 回維護頁;監控與告警。
- 學生維護者自己修課考試,利益迴避怎麼處理?→ 權限分離、考試期間凍結權限、操作稽核 log。這還在規劃中,照實說。
dashboard.ntnu.cc 網路品質監測平台必問
- 三人分工?你的 50% 是什麼?→ 系統架構、後端 API、MySQL 設計、AP/頻寬/環境資料擷取與排程、Docker 部署、Cloudflare Tunnel、權限控管、正式環境維運。
- 658 台 AP 的資料從哪來?多久更新?資料量多大?
- 為什麼用 MySQL 不用時序資料庫?→ 說明當時考量,並說若重做會考慮 Prometheus 或 TimescaleDB。
- 使用者端測速怎麼做?結果可信嗎?
- 有沒有真的幫資訊中心找到問題?
ntnu.cc、Homelab、其他
- ntnu.cc 架構:Cloudflare Pages Functions+KV;為什麼選 serverless?缺點?(冷啟動、廠商綁定、除錯)
- 子網域服務沒有使用者,不要主動強調;被問就說是實驗性功能。
- Homelab:Proxmox VE、多台 Ubuntu VM、K8s(Calico、Temporal)、Cloudflare Tunnel;被問 LVM 擴充就講
pvresize/lvextend -r流程。 - 資策會實習:RAG 資安長工具箱 POC,問題是什麼、怎麼評估效果。
- BCIT:高風險 app 評估、數位鑑識學到什麼。
- 金盾獎:團隊分工與你的貢獻比例。
後量子遷移研究方向必問
- 什麼是混合式金鑰交換?→ 同時做傳統 ECDH(X25519)與後量子 KEM(ML-KEM-768),兩者都破才會被破,例如 X25519MLKEM768。
- 為什麼中間設備會出問題?→ 後量子金鑰讓 ClientHello 多出約 1KB,跨越單一封包;寫死只讀第一個封包、或解析有 bug 的防火牆、IPS、TLS 檢測設備可能中斷或降級連線。
- 非 Web 協定現況?→ OpenSSH 9.0 起預設 sntrup761x25519,10.0 起預設 mlkem768x25519;VPN 與郵件的支援較不一致,這正是你想盤點的。
- 為什麼要「先換金鑰交換、後換簽章」?→ 先防「現在收集、日後解密」;簽章只需在量子電腦出現前換好。
- 這和丁組有什麼關係?→ 資訊中心的 SSH 工作站、郵件、VPN 就是最好的實驗場域。
動機與危險題
| 題目 | 答題方向 |
|---|---|
| 為什麼選丁組? | 想從協助者變成為服務負責的人;資訊中心就是實驗室;學生營運、真實使用者。 |
| 丁組要值班、配合系計中,你可以嗎? | 可以,並具體說你在臺師大資訊中心已經習慣排班與處理臨時故障。 |
| 進來想去哪一組? | Net 為主,System 為次;也願意依需求分配。 |
| 想維護舊專案還是做新專案? | 都要。舊專案讓你學到別人的好壞設計與維運現實,新專案練架構設計;維護舊系統時先補測試和文件,才敢重構。 |
| 和系計中的人意見不同怎麼辦? | 先理解既有決策的原因,用資料講,在測試環境驗證,最後尊重負責人的決定。 |
| 你覺得你適合丁組嗎?弱點是什麼? | 適合:網路維運與自架服務經驗。弱點:BSD 與大型郵件系統沒有上線經驗,入學前用 SA/NA 課程教材補。 |
| (戊組)你和前面的考生有什麼不同? | 同時有網路維運與系統開發經驗,而且服務都有真實使用者。 |
| 為什麼不留在臺師大? | 正面講交大的資源(學生營運的資訊中心、SA/NA 課程),不批評母校。 |
| 同時錄取其他學校會選哪? | 誠實但正面:說明你最看重的是能為真實服務負責的訓練環境,這是丁組獨有的。 |
| 失敗或沒做出來的經驗? | Tor 專題原題的負面結果,以及你怎麼轉向並仍產出貢獻。 |
| 臺灣好厲駭第 10 屆為什麼沒結訓? | 若被問,簡短照實說原因與你的取捨,不要辯解太久。 |
| 成績普通/英文? | 不主動提。被問就承認,接著講你把時間花在哪些實務上。 |
最後的反問(選一兩個)
- (學長)新生第一學期通常怎麼分組與交接?有交接文件嗎?
- (學長)目前資訊中心最想改善或重建的服務是什麼?
- (教授)丁組的論文題目通常怎麼和中心業務結合?
- (戊組教授)校計中目前的開發技術棧與部署流程是什麼?
九、預測考古題
依今年資訊中心的組別、近年題目趨勢與你的備審推估。前 10 題和你的經驗最相關,優先準備。
1. 校園無線網路使用者說很慢,你怎麼查?你的經驗
先切範圍(一人、一棟、全校)→ 用戶端訊號(RSSI、SNR)與連線速率 → 該 AP 的連線數與頻道使用率、同頻干擾 → DHCP pool 是否用完 → AP 上行與 switch port 錯誤計數 → DNS 與出口頻寬。dashboard.ntnu.cc 正好看得到 AP 狀態與測速。
2. 2.4 GHz 與 5 GHz 差異?頻道規劃?WPA2-Enterprise/802.1X?你的經驗
2.4 GHz 穿透好、範圍大、只有 1、6、11 三個不重疊頻道,干擾多;5 GHz 頻道多、速度快、穿透差。高密度用 5 GHz、降低功率、多 AP。802.1X:用戶端(supplicant)→ AP(authenticator)→ RADIUS 驗帳號,每人獨立金鑰,eduroam 就是這樣。
3. 一台 Linux 磁碟滿了怎麼查?你的經驗
df -h 看哪個分割區、df -i 看 inode、du -xh --max-depth=1 / | sort -h 找大目錄、lsof +L1 找已刪除但仍被開啟的檔案(常見是 log)、journald 用 journalctl --vacuum-size。擴充:pvresize → lvextend -r -l +100%FREE。
4. 伺服器 load 很高怎麼查?load average 的意義?
load 是可執行加上等待 IO(D 狀態)的程序數平均,要和 CPU 核數比較。top/htop 看 CPU 與 iowait、vmstat 1、iostat -x 1、pidstat、free -m 看是否 swap;找到程序後用 strace、perf top。
5. TCP 三向交握與四次揮手?TIME_WAIT 為什麼存在?
SYN → SYN-ACK → ACK;關閉 FIN → ACK → FIN → ACK。主動關閉方進入 TIME_WAIT(2MSL),確保最後的 ACK 能重送、讓舊封包消失不干擾新連線。大量 TIME_WAIT 用連線重用(keep-alive、連線池)解決。
6. DHCP 流程?rogue DHCP 怎麼防?
DORA:Discover、Offer、Request、Ack。跨網段用 DHCP relay(ip helper)。防 rogue:switch 開 DHCP snooping,只信任上行 port;它的綁定表也能搭配 DAI 防 ARP spoofing。
7. TLS 1.3 握手流程?和 1.2 差在哪?0-RTT 的風險?
ClientHello(含 key_share)→ ServerHello(key_share)+加密的憑證與 Finished,1-RTT 完成。比 1.2 少一個 RTT、移除 RSA 金鑰交換與弱演算法、強制前向保密。0-RTT 資料可能被重放,只能用在冪等請求。後量子的 key_share 就放在 ClientHello 裡。
8. HTTP/1.1、HTTP/2、HTTP/3 差異?
HTTP/2:二進位、多工、header 壓縮,但 TCP 層仍有 head-of-line blocking;HTTP/3 跑在 QUIC(UDP)上,各 stream 獨立、握手整合 TLS 1.3、連線遷移。中間設備擋 UDP 443 時會退回 HTTP/2。
9. SSH 怎麼加固?SSH CA 是什麼?
關密碼登入與 root 登入、只用金鑰、改用 Ed25519、fail2ban、限制來源、跳板機。SSH CA:用 CA 簽使用者與主機憑證,不必逐台發 authorized_keys,可設效期,離職撤銷容易,適合資訊中心規模。
10. 你維運的服務當過嗎?事後怎麼檢討?你的經驗
用 postmortem 格式:時間線、影響、根因、處置、後續行動,不責怪個人。挑一個真實事件(NOJV、Tor relay 或 Homelab)準備好。
11. Reverse proxy 和 load balancer 差在哪?L4 與 L7?
反向代理接客戶端請求轉給後端,可做 TLS 終止、快取、路由;負載平衡是把流量分給多台。L4 看 IP 與 port(快、不懂內容),L7 看 HTTP(可依路徑、header 分流)。
12. keepalived/VRRP 怎麼做 HA?split-brain 是什麼?
兩台共享一個虛擬 IP,主機定期發 VRRP 廣播,備機收不到就接手 IP。split-brain:網路分割使兩台都以為自己是主,要靠仲裁、fencing 或第三方健康檢查避免。
13. 集中 log 怎麼做?保存多久?
rsyslog/journald 轉送、Loki 或 ELK;設保存期限(依法規與資安規範)、存取權限、log 中的個資遮罩、時間同步。
14. K8s Pod 一直 CrashLoopBackOff 怎麼查?Service 類型?
kubectl describe pod 看 events、kubectl logs --previous、檢查 command、設定、liveness probe、OOMKilled。Service:ClusterIP(內部)、NodePort、LoadBalancer;HTTP 對外用 Ingress(或 Gateway API)。
15. Docker image 怎麼縮小、怎麼更安全?
multi-stage build、小基底(distroless、alpine)、合併層、.dockerignore、非 root 使用者、固定版本、掃描漏洞。
16. 資料庫備份與還原演練?
定期邏輯備份(mysqldump、pg_dump)或實體備份,加上 binlog/WAL 做 point-in-time recovery;異地保存;定期還原到測試環境驗證。
17. 索引怎麼運作?什麼時候不該加?
多數是 B+ tree,讓查詢從全表掃描變成 O(log n);複合索引遵守最左前綴。代價是寫入變慢、佔空間;低選擇性欄位或很少查詢的欄位不值得加。用 EXPLAIN 確認。
18. 一次幫 100 台電腦裝軟體,或不用還原卡保護教室電腦?2021 PC 組
大量部署:PXE+映像(Clonezilla、WDS)、Ansible、Windows 用 GPO 或 Intune。保護:一般使用者權限、Windows Unified Write Filter、AppLocker、每次開機或課後重新映像;Linux 用 overlayroot。兩門課要不同 OS:PXE 選單開不同映像,或雙系統、VDI。
19. 給 30 個學生在一台主機上開互相隔離的練習環境?
LXC 或容器加 cgroup 限資源、每人獨立網路 namespace 或 VLAN、磁碟 quota、到期自動回收;或在 Proxmox 用範本快速 clone VM。
20. 如何安全地讓自動化工具或 AI agent 操作伺服器?
專用帳號、最小權限、只允許特定指令、在沒有公網 IP 的隔離 VM 裡執行、操作稽核 log、重要動作需人工核准。你有把 Claude Code 部署到沒有公網 IP 的 VM 的經驗。
21. 憑證自動續期與過期事故怎麼避免?
ACME(certbot、Caddy、cert-manager)自動續期;監控所有憑證到期日並提前告警;憑證效期越來越短,手動續期遲早出事。
22. Zero Trust 是什麼?
不因為在內網就信任,每次存取都驗證身分、裝置狀態與權限,最小權限、持續監控。實例:Cloudflare Access 保護內部服務,取代 VPN。
23.(戊組)設計校務系統的權限與稽核?
RBAC(教師、學生、行政、管理者),敏感操作另需核准;最小權限;所有存取個資的動作寫稽核 log;資料分級、去識別化、保存期限;定期權限盤點。
24.(戊組)校園 SSO 用 SAML 還是 OIDC?
SAML 是 XML、成熟,傳統企業與學校系統多;OIDC 建在 OAuth 2.0、JSON 與 JWT,對行動 App 和現代 Web 較友善。新系統偏 OIDC,舊系統維持 SAML,IdP 兩者都支援。
25.(戊組)選課開放時 3 萬人同時湧入,系統怎麼撐?
壓力測試先找瓶頸;靜態資源放 CDN;課程資料快取;排隊機制或分批開放;讀寫分離;選課寫入用交易與約束防超選(同借教室題);限流;水平擴展應用伺服器;監控與降級頁面。
26. ARP 是什麼?ARP spoofing?
用 IP 問 MAC 的廣播協定,沒有驗證,所以可以偽造回應做中間人攻擊。防法:DAI、靜態 ARP(關鍵設備)、加密連線。
27. NAT 類型、port forwarding、hairpin NAT?
SNAT(內往外改來源)、DNAT(port forwarding 改目的)、masquerade(動態 SNAT)。Hairpin:內網用公網 IP 連回同一網段的伺服器,要額外規則或用 split DNS。
十、作戰計畫與來源
現在是凌晨,先睡覺。複試考的是累積,不是熬夜;睡飽比多看兩題有用。
考前時間表
| 時間 | 做什麼 |
|---|---|
| 10/25(日)上午 | 網路與排錯:把 VPN、公網連不上兩題對著空白紙默寫一次,講出指令。再看 OSPF、STP、nftables。 |
| 10/25 下午 | Linux、Container、K8s;讀一遍 WWW 去年題(ORM、Callback Hell、借教室、渲染)。 |
| 10/25 傍晚 | 重讀自己的備審,每一個寫上去的數字與名詞都要能解釋。整理資訊中心的一個真實故障案例。 |
| 10/25 晚上 | 自我介紹念出來計時三次;確認公告的時間地點與交通;準備物品;早睡。 |
| 10/26(一) | 提早到考場(2018 年報到 8:30–8:50);考完先記下自己考卷寫了哪些題,下午會被問。 |
| 10/26 晚上 | 戊組:看 SQL、generator、子網、概念題速答表;丁組教授場的動機題。 |
| 10/27(二) | 戊組測驗、丁戊口試。 |
攜帶清單
- 准考證(或報名系統的通知)、身分證、學生證
- 原子筆兩支、鉛筆、橡皮擦、手錶(戊組必備)
- 水、簡單食物;自己的備審資料一份(自己翻,不必交)
- 穿著:素色襯衫+長褲即可,歷年約一半考生這樣穿
- 新竹兩天,前一晚的住宿與回程交通先訂好
來源
- 陽明交大資工系資訊中心:加入我們(組別與應備知識)
- 交大丁組面試心得(2022)
- 114 年交大資工實務組筆試共筆
- Chumy:交大碩士推甄(2024)
- 112 交大資工實務組(丙、戊)筆試共筆
- 111 陽明交大資科工所實務組性向測驗
- 110 交大資工實務組性向測驗共筆
- 109 交大資工實務組筆試共筆
- 2020 年推甄交大資工碩丁戊組的紀錄
- 交大資工丁戊組、成大乙組(2019)
- 2018 交大資工丁戊組複試心得
- PTT:交大資工丁組心得(2013)
- Dcard 257150497(114 丁組題目)因網站阻擋自動讀取未能開啟,內容以 114 共筆引用的部分為準。
題目年份依各篇心得發表時間標示(例如 2024 丁=114 學年度考試)。