大家好,我是台灣的一位 PHP 資深工程師(目前 8+ 年經驗,主要在 Laravel 生態系耕耘)。最近幾次幫朋友 mock interview、自己也投了幾家上市櫃電商與金融科技公司後,發現一個很明顯的趨勢:
純 CRUD 已經不夠看了。
台灣中大型公司(尤其是電商、金融、遊戲後端)在二面、三面時,幾乎都會深入考「架構思維 + 現代化技術」——微服務、Docker/K8s、CI/CD、效能調校、PHP 8 JIT 以及經典系統設計題。如果你也正在準備跳槽,或是想把薪資從 7 萬區間往 9~12 萬衝,這些題目一定要能講得清楚、畫得出圖、並能搭配實際專案經驗來說。以下是我整理的高頻考題 + 實務回答方向,直接可以拿來練習或當作面試 checklist。建議邊看邊自己畫架構圖,效果最好。1. 微服務(Microservices)——什麼時候拆?怎麼拆?高頻題:K8s 核心物件:我在一支背景報表程式開 JIT 後,執行時間從 47 秒降到 19 秒,但 Web 主應用幾乎沒感覺。6. 系統設計能力 —— 面試最愛的「白板題」高頻題(務必練習畫圖):
台灣中大型公司(尤其是電商、金融、遊戲後端)在二面、三面時,幾乎都會深入考「架構思維 + 現代化技術」——微服務、Docker/K8s、CI/CD、效能調校、PHP 8 JIT 以及經典系統設計題。如果你也正在準備跳槽,或是想把薪資從 7 萬區間往 9~12 萬衝,這些題目一定要能講得清楚、畫得出圖、並能搭配實際專案經驗來說。以下是我整理的高頻考題 + 實務回答方向,直接可以拿來練習或當作面試 checklist。建議邊看邊自己畫架構圖,效果最好。1. 微服務(Microservices)——什麼時候拆?怎麼拆?高頻題:
- 什麼時候該把 Laravel Monolith 拆成微服務?拆哪些服務比較適合?
- Laravel 微服務中怎麼做服務間通訊?Service Discovery 與 API Gateway 要怎麼處理?
- 訂單服務(Order Service)
- 支付服務(Payment Service)
- 會員中心(User Service)
- 通知服務(Notification Service)
- 同步:REST API 或 gRPC(效能較好)
- 異步:Redis Queue / RabbitMQ / Kafka(最推薦)
- 資料一致性 → 使用 Saga Pattern(編排式或協調式)
- 追蹤請求 → OpenTelemetry + Jaeger
- API Gateway → 推薦 Traefik 或 Kong(支援 rate limit、authentication)
- 如何把 Laravel 專案 Dockerize?多階段建置(multi-stage build)的優點是什麼?
- Docker Compose 跟 Kubernetes 的差別?什麼時候該遷移到 K8s?
- Laravel 在 K8s 上常見的坑(Session、Queue、Storage)怎麼解決?
dockerfile
# Build stage
FROM composer:2 as builder
COPY . /app
RUN composer install --no-dev --optimize-autoloader
# Production stage
FROM php:8.3-fpm-alpine
COPY --from=builder /app /var/www/html
RUN docker-php-ext-install opcache
CMD ["php-fpm"]- Deployment:管理 Pod 版本
- Service / Ingress:穩定入口 + TLS
- ConfigMap / Secret:環境變數與敏感資訊
- Horizontal Pod Autoscaler(HPA):自動擴展
- Session → 改用 Redis
- Queue → Laravel Horizon + Redis
- 檔案儲存 → 必須用 S3 / MinIO,不能用 local disk
- 請設計一個 Laravel 專案的 CI/CD 流程?
- 零停機部署(Zero Downtime)要怎麼做?藍綠 vs Canary 差別?
- Lint(PHPStan + Rector)
- Unit + Feature Test(PHPUnit + Laravel Test)
- Security Scan(Symfony Security Checker)
- Build Docker Image → push 到 Harbor / ECR
- Deploy 到 Staging(自動)
- 手動審核後 Deploy 到 Production(Argo CD 或 Helm)
- 藍綠部署:兩組 Deployment 切換 Service
- Canary:用 Istio 或 Argo Rollouts 逐步放量
- Laravel 常見效能瓶頸有哪些?怎麼一步步優化?
- Laravel Octane(Swoole / RoadRunner)跟傳統 PHP-FPM 差別?什麼專案適合開?
- N+1 Query → Eager Loading + Query Log 檢查
- 重複 bootstrap → Route Cache / Config Cache / View Cache
- 高併發 → Octane + Horizon + Redis
- FPM:每次請求都重新載入框架(Request Lifecycle)
- Octane:應用常駐記憶體,RPS 可提升 5~10 倍
- 不能把 request 級變數存在 class property
- 背景作業建議用 Queue 隔離
- 適合高併發 API、不適合大量檔案 I/O 的傳統網站
- PHP 8 JIT 是什麼?跟 OpCache 有什麼不同?什麼情況下才有效?
- OpCache:把 PHP 轉成 Opcode 快取,減少解析時間
- JIT:把熱門 Opcode 再編譯成機器碼(CPU 密集型任務超強)
- 圖像處理、大量數學計算、大數據批次作業
- 一般 Web 請求(I/O bound)效益有限
ini
opcache.jit=tracing
opcache.jit_buffer_size=128M- 設計一個高併發訂單系統(電商結帳)
- 設計一個短網址服務(Short URL)
- 如何讓 Laravel API 從 100 QPS 水平擴展到 10,000 QPS?
- 確認需求(QPS、DAU、延遲、資料量)
- 畫高階架構圖(Client → LB → App Server → Cache/DB/Queue)
- 討論瓶頸與解法(削峰、快取、分散式鎖、Eventual Consistency)
- 補充監控(Prometheus + Grafana + Sentry + OpenTelemetry)
- 庫存扣減 → Redis Lua Script 原子操作
- 防重複下單 → Idempotency Key
- 最終一致性 → Saga Pattern + Outbox Pattern
- 每天挑 1~2 題,計時 15 分鐘口頭講 + 畫圖錄音。
- 把過去專案包裝成「我怎麼解決 XX 瓶頸」的故事。
- 實際動手:把一個小專案 Dockerize + 部署到 K8s(可以用 Minikube 練習)。
- 面試時主動問:「貴公司目前微服務拆分到什麼程度?」展現你有思考。
沒有留言:
張貼留言