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
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.
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.
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.
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.
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.
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.
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.
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
`;