一、網(wǎng)絡架構設計(★★★★★ 高頻)
? Q81:如何設計一個 iOS 網(wǎng)絡層?
先說分層:
API Layer
↓
Request Builder
↓
Network Client
↓
Interceptor
↓
Response Parser
↓
Cache Layer
各層職責(必須能解釋):
- API Layer
定義接口
endpoint 管理 - Request Builder
構建 URLRequest - Network Client
URLSession / Alamofire - Interceptor
token
retry
log - Parser
JSON → Model - Cache
本地緩存策略
網(wǎng)絡層核心目標是解耦請求構建、執(zhí)行和數(shù)據(jù)處理
?Q82:為什么不能直接 everywhere 用 Alamofire?
- 高級回答:
業(yè)務侵入
難替換
難測試 - 正確:
Alamofire 應被封裝在 NetworkClient 內。
二、Token & 登錄體系
? Q83:Token 過期如何處理?
請求失敗(401)
↓
進入刷新隊列
↓
refresh token
↓
成功 → 重試請求
↓
失敗 → 登錄頁
? 只刷新一次
? 隊列等待機制
? Q84:如何避免多個請求同時刷新 token?
高級答案:
- 使用:
semaphore
或 actor
或 refresh lock - 保證:
同一時間只有一個 refresh 請求。
三、緩存設計(高級)
? Q85:緩存策略有哪些?
| 類型 | 場景 |
|---|---|
| Memory Cache | 高頻訪問 |
| Disk Cache | 離線 |
| HTTP Cache | ETag |
緩存需要失效策略(TTL)。
? Q86:什么時候不用緩存?
- 高分回答:
強實時數(shù)據(jù)
金融類數(shù)據(jù)
權限相關接口
四、HTTPS(面試常問)
? Q87:HTTPS 比 HTTP 多了什么?
- 答:
TLS 握手
對稱加密
非對稱加密
證書驗證
? Q88:什么是證書綁定(SSL Pinning)?
客戶端內置服務器證書或公鑰進行校驗。
- 防止:
中間人攻擊。
五、項目經驗
? Q89:如何介紹項目?(萬能模板)
① 項目背景
② 技術挑戰(zhàn)
③ 我的職責
④ 技術方案
⑤ 結果指標
該項目是一個日活 XX 萬的社區(qū) App,我負責客戶端架構與性能優(yōu)化。
最大挑戰(zhàn)是列表卡頓與啟動慢,我通過模塊化改造與異步渲染,將啟動時間從 2.3s 降至 1.4s,Crash 率下降 35%。
? Q90:如何描述你的技術貢獻?
? 我主導了 XXX 設計并解決了 XXX 問題。
六、線上事故(必問)
? Q91:講一次線上事故?
背景
↓
問題現(xiàn)象
↓
定位過程
↓
根因
↓
解決方案
↓
防止再次發(fā)生
發(fā)布后 Crash 激增,通過 Crash 堆棧發(fā)現(xiàn)多線程訪問數(shù)組導致越界,最終通過 Actor 隔離狀態(tài)解決,并增加線程安全檢測。
七、技術決策能力
? Q92:如何做技術選型?
性能
維護成本
團隊熟悉度
擴展性
技術選型是工程問題,不是技術偏好
? Q93:如何推動技術改造?
- 答:
數(shù)據(jù)證明問題
小范圍試點
漸進遷移
八、團隊 & 高級工程師思維
? Q94:如何 Code Review?
- 關注:
架構
可讀性
邊界條件
性能風險
不是代碼風格
? Q95:如何帶新人?
- 高分回答:
提供模板工程
code review 指導
技術文檔沉淀
九、終極問題
? Q96:你未來的技術規(guī)劃?
深入客戶端架構與穩(wěn)定性建設,同時提升跨端與工程效率能力。
? Q97:你最大的技術成長是什么?
從功能實現(xiàn)轉向系統(tǒng)設計與穩(wěn)定性思維。
? Q98:你為什么離職?
希望進入更有技術挑戰(zhàn)和成長空間的團隊。
? Q99:你的優(yōu)勢?
架構經驗 + 性能優(yōu)化 + 穩(wěn)定性建設
? Q100:為什么要招你?
我不僅能完成需求,還能通過架構與工程優(yōu)化持續(xù)降低團隊成本。