- #system-design
- #interview
- #rate-limiter
- #java
- #go
Câu hỏi System Design interview: Design Rate Limiter – trả lời sao cho điểm caoSystem Design Interview: Designing a Rate Limiter – How to score high
Cung cấp khung trả lời chuẩn cho câu hỏi thiết kế rate limiter, kèm ví dụ Java và Go thực tế.A concrete framework to answer a rate‑limiter design question with Java and Go examples.
Mục lụcContents· 5
Bạn vừa nhận được email mời phỏng vấn vị trí Senior Backend Engineer và trong danh sách câu hỏi có “Design a rate limiter for an API”. Đây là một trong những “classic” mà mọi công ty công nghệ hay dùng để đánh giá khả năng kiến trúc hệ thống, suy nghĩ về scalability và trade‑off. Nếu trả lời một cách lộn xộn, bạn sẽ mất điểm dù kiến thức chuyên môn còn tốt. Bài viết này sẽ cho bạn một khuôn khổ trả lời ngắn gọn, logic và kèm ví dụ thực tế bằng Java 21 + Spring Boot và Go 1.22, để bạn có thể áp dụng ngay trong buổi interview.
1. Khung trả lời chuẩn cho mọi System Design#
Xác định yêu cầu
- Functional: giới hạn số request trong một khoảng thời gian (per‑second, per‑minute), hỗ trợ limit theo user, IP hoặc API key.
- Non‑functional: latency < 5 ms, độ sẵn sàng 99.9 %, hỗ trợ 10 k QPS, khả năng mở rộng ngang.
- Đặt câu hỏi để làm rõ: “Mình có cần burst tolerance không? Quota có thể reset mỗi ngày không?”
Định nghĩa API
TEXT POST /rate-limit/check Body: { "userId": "123", "apiKey": "abc" } Response: { "allowed": true, "retryAfter": 0 }Vẽ kiến trúc cấp cao
