Phỏng vấn về SQL và cơ sở dữ liệu thường khiến ứng viên lo lắng vì phạm vi kiến thức quá rộng. Tuy nhiên, thay vì học thuộc lòng mọi câu lệnh, bạn chỉ cần nắm vững bản chất kỹ thuật để giải quyết các bài toán thiết kế và tối ưu hệ thống. Bài viết này cung cấp lộ trình 7 ngày tập trung cao độ vào những kiến thức 'đắt giá' nhất.
Ngày 1-2: Làm chủ SQL Querying & Aggregation
Đây là phần cơ bản nhưng cực kỳ quan trọng. Interviwer không chỉ kiểm tra khả năng viết truy vấn mà còn xem bạn có hiểu cách logic hoạt động hay không. Hãy tập trung vào việc đọc hiểu các truy vấn phức tạp và tối ưu hóa cú pháp.
Đừng chỉ dừng lại ở `SELECT *`, hãy luyện tập các tình huống thực tế thường gặp như lọc dữ liệu, tính toán theo nhóm và xử lý dữ liệu null.
- Nắm vững sự khác biệt giữa INNER JOIN, LEFT/RIGHT JOIN và FULL OUTER JOIN.
- Phân biệt rõ ràng khi nào dùng WHERE và khi nào dùng HAVING.
- Thành thạo các Window Functions: ROW_NUMBER(), RANK(), DENSE_RANK() (đây là điểm cộng lớn cho vị trí Senior).
- Luyện tập truy vấn con (Subqueries) và Common Table Expressions (CTE).
Ngày 3: Indexing & Tối ưu hóa truy vấn (High Yield)
Đây là chủ đề 'xương sống' để phân loại ứng viên Junior và Senior. Bạn cần giải thích được tại sao một truy vấn chạy chậm và cách sử dụng Index để tăng tốc.
Không cần nhớ mọi loại index, hãy tập trung vào cơ chế hoạt động của B-Tree và cách Index composite hoạt động.
- Cấu trúc của B-Tree Index và tại sao nó nhanh hơn Full Table Scan.
- Hiểu khái niệm Composite Index và quy tắc tiền tố bên trái (Leftmost Prefix Rule).
- Cách sử dụng EXPLAIN ANALYZE để đọc Query Execution Plan (rất quan trọng).
- Khi nào thì Index gây hại (ảnh hưởng đến hiệu năng ghi/update).
Ngày 4: Transactions, ACID & Concurrency Control
Các câu hỏi về tính toàn vẹn dữ liệu thường xuất hiện khi phỏng vấn vị trí backend. Bạn cần trả lời trôi chảy về ACID và các mức độ cô lập (Isolation Levels).
Hãy chuẩn bị sẵn ví dụ thực tế về hiện tượng 'Lost Update' hoặc 'Dirty Read' để minh họa.
- Giải thích chi tiết 4 thuộc tính của ACID (Atomicity, Consistency, Isolation, Durability).
- Hiểu 4 mức độ cô lập: Read Uncommitted, Read Committed, Repeatable Read, Serializable.
- Cơ chế Locking (Optimistic vs Pessimistic Locking) trong môi trường có nhiều người dùng cùng lúc.
Ngày 5: Database Design & Normalization
Interviewer muốn thấy tư duy thiết kế hệ thống của bạn qua cách bạn tổ chức bảng biểu. Đừng quá cứng nhắc với Normalization (chuẩn hóa), hãy biết khi nào cần Denormalization để tối ưu hóa hiệu năng.
Tập trung vào mối quan hệ giữa các bảng và cách thiết kế Primary Key/Foreign Key hợp lý.
- Nắm vững 3 dạng chuẩn hóa đầu tiên (1NF, 2NF, 3NF).
- Trade-off giữa Normalization (tránh dư thừa) và Denormalization (tăng tốc độ đọc).
- Chọn kiểu dữ liệu (Data types) tối ưu cho từng cột để tiết kiệm không gian lưu trữ.
Ngày 6-7: NoSQL, Scalability & Tổng kết
Ngày cuối dành cho các kiến trúc hiện đại. Bạn nên hiểu rằng SQL không phải là lời giải cho mọi bài toán. Hãy nắm sơ lược về sự khác biệt giữa SQL và NoSQL.
Đừng quên dành thời gian giải các bài tập SQL trên LeetCode hoặc HackerRank ở mức độ Medium để giữ tư duy nhạy bén.
- CAP Theorem: Bạn chọn tính nhất quán (Consistency) hay tính sẵn sàng (Availability)?
- Khái niệm Database Sharding (Horizontal Partitioning) và Replication (Master-Slave, Multi-Master).
- Khi nào nên dùng RDBMS và khi nào nên dùng NoSQL (Document store, Key-Value store).
- Ôn tập lại các lỗi sai thường gặp trong 6 ngày trước.
Ghi nhớ nhanh
- Ưu tiên hiểu sâu bản chất (Index hoạt động thế nào, Transaction cô lập ra sao) thay vì học vẹt cú pháp.
- Luôn đặt câu hỏi về hiệu năng (Trade-off) trong mọi thiết kế dữ liệu.
- Khả năng đọc hiểu Query Plan là kỹ năng sinh tồn của một Senior Engineer.
- Đừng quá máy móc với lý thuyết chuẩn hóa, thực tế dự án quan trọng hơn.