Ngân Hàng Câu Hỏi Phỏng Vấn

Hơn 500+ tình huống kỹ thuật chuẩn hóa, kèm phân tích Time/Space Complexity & Lời giải mẫu

🔍
Hiển thị 6 câu hỏi phù hợp
HardBackend / System Architect
Technical

Thiết kế hệ thống Rate Limiter cho API quy mô 100k requests/s

Trình bày chiến lược thiết kế API Rate Limiting hỗ trợ distributed systems sử dụng Redis và Token Bucket.

⏱ Time: O(log N) cho mỗi ZADD trong Redis sliding window log
MediumBackend Developer
Technical

Giải thích cơ chế Indexing trong MySQL (B-Tree vs Hash Index)

So sánh cấu trúc dữ liệu B+Tree và Hash Index, tối ưu câu lệnh SQL với Composite Index.

⏱ Time: O(log N) cho B+Tree search & Range traversal
MediumFrontend / Fullstack Developer
Technical

Phân tích Server-Side Rendering (SSR) vs Server Components trong Next.js App Router

Sự khác biệt bản chất giữa React Server Components (RSC) và SSR truyền thống trong Next.js.

⏱ Time: Render time tùy thuộc vào I/O / DB Queries trên Server
MediumSoftware Engineer
Technical

Giải thuật Longest Substring Without Repeating Characters (Sliding Window)

Sử dụng kỹ thuật Sliding Window kết hợp HashMap/Set để tìm chuỗi con dài nhất không trùng lặp.

⏱ Time: O(N) với N là độ dài của chuỗi s
MediumDevOps / Backend Lead
Technical

Quy trình CI/CD hoàn chỉnh với GitHub Actions, Docker & zero-downtime deployment

Xây dựng pipeline tự động hóa build image, chạy test, push registry và Rolling Update với Docker Compose / K8s.

⏱ Time: Build pipeline 2-3 phút nhờ Layer Caching
EasyTechnical Leader / Senior Engineer
Technical

Câu hỏi STAR: Kể về một dự án bị trễ tiến độ hoặc hệ thống gặp sự cố production nghiêm trọng

Cách trả lời câu hỏi hành vi bằng mô hình S-T-A-R thể hiện trách nhiệm, tư duy xử lý khủng hoảng và bài học kinh nghiệm.

⏱ Time: N/A
Backend / System ArchitectĐộ khó: Hard

Thiết kế hệ thống Rate Limiter cho API quy mô 100k requests/s

Mô Tả Nhanh

Trình bày chiến lược thiết kế API Rate Limiting hỗ trợ distributed systems sử dụng Redis và Token Bucket.

### Yêu cầu bài toán Hãy thiết kế một service Rate Limiter có khả năng xử lý **100,000 requests/s** cho hệ thống e-commerce hoặc fintech. Rate Limiter phải chặn các hành vi Brute-force và DDoS, đồng thời phân bổ quota chính xác theo User ID, API Key hoặc IP Address. ### Các thuật toán phổ biến: 1. **Token Bucket Algorithm**: Cho phép burst traffic, bộ nhớ hiệu quả. 2. **Leaky Bucket Algorithm**: Giữ throughput cố định, chống nghẽn downstream. 3. **Fixed Window Counter**: Đơn giản nhưng có hiện tượng Spike ở ranh giới window. 4. **Sliding Window Log**: Độ chính xác tuyệt đối nhưng tốn bộ nhớ. 5. **Sliding Window Counter**: Tối ưu giữa bộ nhớ và độ chính xác (Khuyên dùng).

Mã Nguồn / Snippet Minh Họa:

// Ví dụ triển khai Redis Lua Script cho Sliding Window Counter Rate Limiter
const redisScript = `
  local key = KEYS[1]
  local now = tonumber(ARGV[1])
  local window = tonumber(ARGV[2])
  local limit = tonumber(ARGV[3])
  local clearBefore = now - window

  redis.call('ZREMRANGEBYSCORE', key, 0, clearBefore)
  local currentRequests = redis.call('ZCARD', key)

  if currentRequests < limit then
    redis.call('ZADD', key, now, now)
    redis.call('EXPIRE', key, math.ceil(window / 1000))
    return 1
  else
    return 0
  end
`;