本附錄提供一份實用的主題速查表,協助你在行動系統設計 (Mobile System Design, MSD) 面試中快速檢索可能需要討論的議題。內容依領域 (domain) 分類,方便查找與使用。

這份清單不是打勾式檢查表 (checkbox exercise),不需要每一項都涵蓋。策略性選擇 (strategic selection) 才是關鍵:聚焦在與當前設計題目最相關的考量點,並說明為何這些議題重要。能夠根據系統獨特需求做出深思熟慮的取捨 (thoughtful trade-offs),比試圖涵蓋所有主題更能展現設計思維的深度。

網路 (Network)#

核心協定 (Core Protocols)#

  • 通訊協定 (Communication protocols):REST、GraphQL、Protocol Buffers、gRPC。
  • 即時更新 (Real-time updates):HTTP polling、SSE (Server-Sent Events)、WebSockets。
  • 請求管理 (Request management):idempotency keys、priority queuing、rate limiting、request throttling。

資料流模式 (Data Flow Patterns)#

  • 分頁 (Pagination):offset-based vs. cursor-based。
  • 離線能力 (Offline capabilities):offline-first design、optimistic UI updates、conflict resolution。
  • 網路韌性 (Network resilience):connectivity handling、exponential backoff。

安全性 (Security)#

  • 認證與授權 (Authentication and authorization):token lifecycle、biometric auth、recovery flows。
  • 安全基礎建設 (Security infrastructure):傳輸中與靜態資料加密 (encryption in transit and at rest)、certificate pinning、合規性需求 (compliance requirements)。

資料管理 (Data Management)#

架構 (Architecture)#

  • 核心資料流 (Core data flow):資料流模式、各層責任 (layer responsibilities)、錯誤處理與錯誤傳遞 (error handling and propagation)。

儲存與快取 (Storage and Caching)#

  • 儲存選項 (Storage options):key-value、關聯式/非關聯式資料庫 (relational/non-relational DB)、客製/二進位儲存 (custom/binary stores)、安全儲存 (secure storage)。
  • 快取 (Caching):in-memory vs. disk 的取捨。
  • 淘汰策略 (Eviction policies):TTL、size-based、priority-based eviction。
  • 隱私 (Privacy):PII handling、GDPR compliance、資料保留政策 (data retention policies)。
  • 同步 (Synchronization):sync strategies、conflict resolution、delta sync。

資料效能 (Data Performance)#

  • 預先擷取 (Pre-fetching):predictive fetching、資源使用取捨、優先處理關鍵路徑 (critical paths)。
  • 背景處理 (Background processing):任務效率、電池影響、OS 背景執行限制。

UI 與互動 (UI & Interactions)#

  • UI 狀態 (UI states):loading、empty、error、content。
  • 輸入處理 (Input handling):客戶端與伺服器端驗證 (validation)、sanitization、錯誤回饋 (feedback for errors)。
  • 搜尋 (Search):本地 vs. 伺服器端搜尋、索引 (indexing)、容錯 (typo tolerance)。

功能開發 (Feature Development)#

版本管理 (Version Management)#

  • 強制升級 (Force upgrading):soft vs. hard upgrades、何時要求更新、漸進式提示、版本相容性政策。
  • 安全發佈 (Safe rollout):分階段發佈 (phased rollouts)、feature flags、rollback procedures。
  • CI/CD:自動化 build、test、deployment、程式碼品質與安全檢查、確保可重現的 build (reproducible builds)。

動態配置 (Dynamic Configuration)#

  • 遠端配置 (Remote config):不需 app 更新即可控制功能、離線情境的預設值。
  • A/B 測試 (A/B testing):明確指標的實驗、用戶分群 (user segmentation)。
  • 分析 (Analytics):效能與商業指標、crash monitoring、logging。

程式碼架構 (Code Architecture)#

  • 模組化 (Modularization):關注點分離 (separation of concerns)、清楚的介面、平衡粒度與維護實務。
  • 依賴注入 (Dependency injection):testability、物件生命週期管理、減少全域狀態與 singletons。
  • 第三方函式庫 (Third-party libraries):安全與維護評估、體積影響。

使用者體驗 (User Experience)#

  • 在地化 (Localization):文字擴張/收縮、文化與地區差異。
  • 無障礙 (Accessibility):screen readers、對比度、觸控目標 (touch targets)、以無障礙工具測試。
  • 崩潰回報 (Crash reporting):自動收集、以影響度與頻率排序問題、正確處理 PII。

效能 (Performance)#

使用者體驗 (User Experience)#

  • 預先擷取 (Pre-fetching):predictive fetching、資源使用取捨、優先處理關鍵路徑。
  • App 啟動 (App startup):最佳化初始化、延後非關鍵任務、量測 cold/warm start 時間。
  • 穩定性 (Stability):避免 crash、實作 error boundaries。

資源管理 (Resource Management)#

  • 電池與 CPU (Battery & CPU):減少背景處理、批次操作 (batch operations)。
  • 網路效率 (Network efficiency):壓縮 payload、減少請求數、依連線類型調整品質。
  • App 體積 (App size):最佳化資源、使用 app bundles、移除未使用程式碼。

技術最佳化 (Technical Optimizations)#

  • 快取策略 (Caching strategy):快取適當回應、失效策略 (invalidation policies)、多層快取 (multi-level caching)。
  • 延遲載入 (Lazy loading):依需求載入元件與資料、延後重量級處理、優先顯示可見內容。
  • 並行 (Concurrency):正確的 threading model、避免阻塞主執行緒、管理 thread contention 與 race conditions。
  • 硬體加速 (Hardware acceleration):使用 GPU 處理動畫與渲染、針對特定硬體最佳化。

監控 (Monitoring)#

  • 可觀測性 (Observability):效能指標、主動告警、複雜操作的 traces。
  • 商業指標 (Business metrics):將效能連結到商業結果、追蹤用戶參與 (engagement) 與 funnel、找出影響營收的瓶頸。

團隊與組織 (Team & Organization)#

技術基礎建設 (Technical Infrastructure)#

  • 設計系統 (Design system):一致的視覺語言、可重用元件。
  • 開發效率 (Development efficiency):最佳化的 build、coding standards、有效的 code review 流程。

流程與品質 (Process & Quality)#

  • 程式碼品質 (Code quality):靜態分析 (static analysis)、自動化測試、技術債 (technical debt)。
  • 風險管理 (Risk management):及早識別、備援計畫 (contingency plans)。

團隊與文化 (Team & Culture)#

  • 開發者體驗 (Developer experience):高效的工作流程、文件。
  • 團隊成長 (Team growth):onboarding、知識分享、持續學習。

公司脈絡 (Company Context)#

  • 可用資源 (Available resources):基礎設施限制、團隊規模與專業、預算、自行開發 vs. 第三方投資。
  • 商業優先順序 (Business priorities):目標一致性、目標市場、獲利策略、短期需求 vs. 長期平台健康。
  • 故障處理 (Outage handling):escalation procedures、recovery playbooks、適當的冗餘 (redundancies)。
  • 技術棧 (Tech stack):與既有系統整合、平台一致性、未來生態系演進、標準化 vs. 專用工具。

選擇重於覆蓋。在面試中展現你能針對題目挑出最關鍵的議題,並解釋取捨理由,遠比機械式地列出所有面向更能打動面試官。