✦ Mới:NextX AI Office miễn phí cho cả công tyXem ngay →
Bộ Câu Hỏi Phỏng Vấn SQL 2026: Junior đến Senior | NextX
CRM

Bộ Câu Hỏi Phỏng Vấn SQL 2026: Junior đến Senior | NextX

D
danghoa
8 tháng 7, 20261 phút đọc

Tuyển dụng nhân sự kỹ thuật luôn là bài toán đau đầu với HR và quản lý. Đặc biệt với vị trí liên quan đến dữ liệu — từ Data Analyst, Business Analyst đến Backend Developer — bộ câu hỏi phỏng vấn SQL chất lượng là công cụ không thể thiếu để đánh giá ứng viên đúng năng lực.

Bài viết này tổng hợp bộ câu hỏi phỏng vấn SQL 2026 phân theo cấp độ, từ Junior (0–2 năm kinh nghiệm) đến Senior (5+ năm), kèm gợi ý đánh giá câu trả lời để HR và interviewer dùng ngay trong buổi phỏng vấn.


Tại Sao Phỏng Vấn SQL Cần Được Chuẩn Hóa?

NextX — Tại Sao Phỏng Vấn SQL Cần Được Chuẩn Hóa?

Nhiều doanh nghiệp Việt Nam hiện vẫn phỏng vấn kỹ thuật theo kiểu "hỏi miệng tùy hứng", dẫn đến kết quả thiếu nhất quán: cùng 1 ứng viên, 2 interviewer khác nhau cho điểm chênh lệch lớn vì không có rubric chung.

Việc chuẩn hóa bộ câu hỏi phỏng vấn SQL mang lại:

  • Công bằng cho ứng viên: mọi người được hỏi cùng một nền tảng kiến thức
  • Tiết kiệm thời gian HR: không phải soạn đề mới mỗi lần tuyển
  • Dữ liệu so sánh rõ ràng: dễ rank ứng viên theo điểm số
  • Giảm sai lệch trong tuyển dụng: hạn chế thiên kiến cá nhân của interviewer

Đây cũng là lý do ngày càng nhiều doanh nghiệp triển khai phần mềm quản lý nhân sự tích hợp quy trình tuyển dụng, giúp lưu trữ bộ câu hỏi, ghi nhận kết quả phỏng vấn và theo dõi hành trình ứng viên một cách có hệ thống.


Phần 1: Câu Hỏi Phỏng Vấn SQL Cho Junior (0–2 Năm Kinh Nghiệm)

NextX — Phần 1: Câu Hỏi Phỏng Vấn SQL Cho Junior (0–2 Năm Kinh Nghiệm)

Ở cấp độ Junior, interviewer cần kiểm tra kiến thức nền tảng: syntax cơ bản, khả năng đọc hiểu query và tư duy logic đơn giản.

1.1 Câu Hỏi Lý Thuyết Cơ Bản

Câu 1: SQL là gì? Bạn đã làm việc với hệ quản trị CSDL nào?

Gợi ý đánh giá: Ứng viên nên nêu được SQL là ngôn ngữ truy vấn có cấu trúc, đồng thời đề cập đến ít nhất 1 hệ quản trị cụ thể (MySQL, PostgreSQL, SQL Server, SQLite). Điểm cộng nếu có thể so sánh sơ bộ giữa các loại.

Câu 2: Phân biệt WHERE và HAVING. Khi nào dùng cái nào?

Gợi ý đánh giá: WHERE lọc dòng trước khi GROUP BY; HAVING lọc sau khi aggregate. Ứng viên cần cho được ví dụ cụ thể, không chỉ nói lý thuyết.

Câu 3: Các loại JOIN trong SQL là gì? Giải thích INNER JOIN và LEFT JOIN.

Gợi ý đánh giá: Phân biệt được INNER (chỉ lấy dòng khớp cả 2 bảng) vs LEFT (lấy toàn bộ bảng trái, NULL cho phần không khớp). Ứng viên vẽ được Venn diagram là điểm cộng lớn.

Câu 4: NULL trong SQL nghĩa là gì? NULL = NULL trả về gì?

Gợi ý đánh giá: NULL là giá trị chưa xác định, không phải số 0 hay chuỗi rỗng. NULL = NULL trả về NULL (không phải TRUE). Phải dùng IS NULL để kiểm tra.

1.2 Bài Tập Viết Query

Câu 5: Cho bảng orders(order_id, customer_id, amount, created_at). Viết query lấy 10 đơn hàng có amount cao nhất trong tháng 1/2026.

SELECT order_id, customer_id, amount
FROM orders
WHERE created_at >= '2026-01-01'
 AND created_at < '2026-02-01'
ORDER BY amount DESC
LIMIT 10;

Gợi ý đánh giá: Kiểm tra xem ứng viên có dùng range date thay vì MONTH() function (để tận dụng index) hay không. Nếu dùng MONTH(created_at) = 1 → thiếu kinh nghiệm tối ưu.

Câu 6: Đếm số đơn hàng và tổng doanh thu theo từng customer_id, chỉ lấy những khách hàng có tổng doanh thu > 10.000.000.

SELECT customer_id,
 COUNT(*) AS total_orders,
 SUM(amount) AS total_revenue
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > 10000000;

Gợi ý đánh giá: Ứng viên dùng đúng HAVING thay vì WHERE là đạt yêu cầu Junior.

👉 Nếu doanh nghiệp bạn đang xây dựng quy trình tuyển dụng bài bản hơn, hãy đặt lịch demo với chuyên gia NextX để xem cách module HRM hỗ trợ lưu trữ và quản lý bộ câu hỏi phỏng vấn theo từng vị trí.


Phần 2: Câu Hỏi Phỏng Vấn SQL Cho Middle (2–5 Năm Kinh Nghiệm)

NextX — Phần 2: Câu Hỏi Phỏng Vấn SQL Cho Middle (2–5 Năm Kinh Nghiệm)

Ở cấp Middle, ứng viên cần hiểu sâu hơn về tối ưu query, subquery, và các khái niệm như index, transaction.

2.1 Subquery và CTE

Câu 7: Viết query tìm các khách hàng đã mua hàng ít nhất 3 lần trong năm 2025 nhưng chưa mua trong Q1/2026.

Gợi ý đánh giá: Kiểm tra khả năng kết hợp subquery hoặc CTE với điều kiện NOT EXISTS / NOT IN. Ứng viên Middle nên ưu tiên CTE để code dễ đọc hơn nested subquery.

Câu 8: CTE (Common Table Expression) khác Subquery ở điểm nào? Khi nào bạn chọn CTE?

Gợi ý đánh giá: CTE có thể tái sử dụng nhiều lần trong cùng 1 query, dễ đọc hơn, một số DB còn cho phép đệ quy. Subquery phù hợp khi logic đơn giản, chỉ dùng 1 lần.

2.2 Window Functions

Câu 9: Giải thích ROW_NUMBER(), RANK() và DENSE_RANK(). Phân biệt cách xử lý khi có giá trị bằng nhau.

Gợi ý đánh giá:
- ROW_NUMBER(): luôn cho số thứ tự khác nhau, kể cả bằng điểm
- RANK(): bằng điểm → cùng rank, nhảy cóc (1,1,3)
- DENSE_RANK(): bằng điểm → cùng rank, không nhảy (1,1,2)

Câu 10: Dùng window function để tính doanh thu tích lũy (running total) theo ngày.

SELECT
 created_at,
 amount,
 SUM(amount) OVER (ORDER BY created_at) AS running_total
FROM orders
ORDER BY created_at;

Gợi ý đánh giá: Ứng viên biết dùng OVER (ORDER BY...) là đạt. Điểm cộng nếu đề cập đến PARTITION BY để tính riêng theo từng nhóm.

2.3 Index và Tối Ưu

Câu 11: Index là gì? Khi nào nên và không nên thêm index?

Gợi ý đánh giá: Index giúp tăng tốc SELECT nhưng làm chậm INSERT/UPDATE/DELETE vì phải cập nhật cấu trúc index. Không nên đánh index trên cột có ít giá trị phân biệt (low cardinality) như cột gender (Nam/Nữ).

Câu 12: EXPLAIN (hoặc EXPLAIN ANALYZE) dùng để làm gì? Bạn đọc output của nó như thế nào?

Gợi ý đánh giá: Ứng viên cần biết EXPLAIN cho thấy query execution plan — DB sẽ scan table hay dùng index, số rows ước tính. Biết tìm Seq Scan (full scan) để tối ưu là điểm cộng.


Phần 3: Câu Hỏi Phỏng Vấn SQL Cho Senior (5+ Năm Kinh Nghiệm)

Cấp Senior không chỉ viết query đúng mà còn phải nghĩ đến performance, scalability, và thiết kế schema.

3.1 Tối Ưu Hiệu Năng

Câu 13: Bạn có một query đang chạy 30 giây trên bảng 50 triệu dòng. Quy trình bạn dùng để debug và tối ưu là gì?

Gợi ý đánh giá: Senior cần có quy trình rõ ràng:
1. Chạy EXPLAIN ANALYZE để xem execution plan
2. Kiểm tra index có được dùng không
3. Xem query có function trên cột index không (làm mất tác dụng index)
4. Xem xét partitioning hoặc materialized view
5. Cân nhắc denormalize nếu cần

Câu 14: Phân biệt Clustered Index và Non-Clustered Index. Tại sao Primary Key thường là Clustered Index?

Gợi ý đánh giá: Clustered Index quyết định thứ tự vật lý lưu trữ dữ liệu trên disk — chỉ có 1 cái mỗi bảng. Non-Clustered Index là cấu trúc riêng biệt, trỏ về data page. PK là Clustered vì thường dùng để JOIN và range scan.

3.2 Transaction và Concurrency

Câu 15: 4 tính chất ACID là gì? Cho ví dụ thực tế của mỗi tính chất.

Gợi ý đánh giá:
- Atomicity: Chuyển tiền ngân hàng — trừ tài khoản A và cộng tài khoản B phải cùng thành công/thất bại
- Consistency: Sau transaction, DB luôn ở trạng thái hợp lệ theo business rules
- Isolation: 2 transaction chạy đồng thời không ảnh hưởng kết quả của nhau
- Durability: Sau khi COMMIT, dữ liệu không bị mất dù server crash

Câu 16: Deadlock xảy ra khi nào? Làm thế nào để phòng tránh?

Gợi ý đánh giá: Deadlock xảy ra khi 2 transaction chờ nhau giải phóng lock theo vòng tròn. Phòng tránh bằng cách: đảm bảo thứ tự lock nhất quán, giảm thời gian giữ lock, dùng SELECT... FOR UPDATE SKIP LOCKED trong queue processing.

3.3 Thiết Kế Schema

Câu 17: Khi nào bạn chọn normalization, khi nào denormalization? Cho ví dụ từ dự án thực tế.

Gợi ý đánh giá: Normalization phù hợp với OLTP (ưu tiên write consistency). Denormalization phù hợp với OLAP/reporting (ưu tiên read speed). Senior cần biết đây là trade-off, không có câu trả lời tuyệt đối.

Câu 18: Thiết kế schema cho hệ thống loyalty điểm thưởng: khách hàng tích điểm, đổi điểm, xem lịch sử. Bạn sẽ thiết kế những bảng nào?

Gợi ý đánh giá: Tối thiểu cần: customers, point_transactions (loại event-sourcing để không mất lịch sử), reward_catalog, redemptions. Điểm cộng nếu đề cập đến việc tính balance bằng cách SUM thay vì lưu một cột riêng (tránh race condition).

Với HR đang tuyển dụng nhân sự kỹ thuật, việc lưu trữ và phân tích kết quả phỏng vấn theo cấu trúc là yếu tố then chốt. Tìm hiểu thêm về phần mềm HRM là gì để hiểu cách các doanh nghiệp hiện đại số hóa toàn bộ quy trình từ tuyển dụng đến onboarding.


Phần 4: Gợi Ý Cách Đánh Giá Ứng Viên SQL Hiệu Quả

Bộ câu hỏi phỏng vấn SQL chỉ phát huy tác dụng tối đa khi đi kèm với rubric đánh giá rõ ràng. Dưới đây là gợi ý thang điểm:

Tiêu chí Junior (0–2 năm) Middle (2–5 năm) Senior (5+ năm)
Kiến thức syntax Bắt buộc Bắt buộc Bắt buộc
Subquery / CTE Cơ bản Thành thạo Thành thạo
Window Functions Biết khái niệm Thành thạo Thành thạo
Index & Optimization Biết khái niệm Hiểu và áp dụng Chẩn đoán & tối ưu
Transaction / ACID Biết khái niệm Hiểu Thiết kế & xử lý edge case
Schema Design Không yêu cầu Cơ bản Thành thạo

Tips Thực Tế Cho Interviewer

  • Hỏi "tại sao" thay vì chỉ nhận câu trả lời đúng/sai: "Tại sao bạn chọn LEFT JOIN ở đây thay vì INNER JOIN?"
  • Cho phép tra cứu syntax: Senior không cần nhớ syntax chính xác — quan trọng là tư duy
  • Đưa bài tập từ dataset thực tế: dùng schema gần với business của công ty bạn để đánh giá khả năng thích nghi
  • Ghi chú quá trình tư duy: ứng viên đặt câu hỏi làm rõ yêu cầu trước khi code là dấu hiệu tốt

Nhiều doanh nghiệp hiện tích hợp quy trình phỏng vấn kỹ thuật vào phần mềm quản lý nhân sự HRM để đồng bộ kết quả với hồ sơ ứng viên và hệ thống lương thưởng sau khi onboard.


Phần 5: Checklist Hoàn Chỉnh Cho HR và Hiring Manager

Trước buổi phỏng vấn SQL, hãy chuẩn bị:

☑ Trước buổi phỏng vấn:
- Xác định cấp độ cần tuyển (Junior/Middle/Senior)
- Chọn 4–6 câu hỏi phù hợp từ bộ câu hỏi này
- Chuẩn bị dataset hoặc schema để ứng viên thực hành
- Định nghĩa rubric điểm cho từng câu

☑ Trong buổi phỏng vấn:
- Dành 5 phút đầu để ứng viên làm quen với môi trường
- Ghi lại cách ứng viên tư duy, không chỉ kết quả cuối
- Hỏi thêm nếu câu trả lời quá ngắn hoặc thiếu giải thích

☑ Sau buổi phỏng vấn:
- Điền rubric trong vòng 30 phút (khi còn nhớ)
- So sánh điểm với các interviewer khác (nếu có panel)
- Lưu kết quả vào hệ thống ATS hoặc HRM

👉 Để chuẩn hóa toàn bộ quy trình tuyển dụng từ đăng tin đến lưu trữ kết quả phỏng vấn, liên hệ đội ngũ NextX để được tư vấn giải pháp phù hợp với quy mô doanh nghiệp bạn.


Kết Luận

Một bộ câu hỏi phỏng vấn SQL chuẩn không chỉ giúp tuyển đúng người mà còn xây dựng hình ảnh chuyên nghiệp của doanh nghiệp trong mắt ứng viên. Phân chia rõ theo cấp độ Junior → Middle → Senior, kết hợp với rubric đánh giá minh bạch, sẽ giúp team HR và technical lead đưa ra quyết định tuyển dụng tự tin và nhất quán hơn.

Hãy lưu bộ câu hỏi này vào thư viện nội bộ và cập nhật định kỳ theo xu hướng công nghệ mỗi năm — SQL không thay đổi nhiều, nhưng best practices về optimization và schema design thì có.

Câu hỏi thường gặp

Phỏng vấn SQL Junior cần hỏi những gì?
Với ứng viên Junior (0–2 năm kinh nghiệm), tập trung vào syntax cơ bản: SELECT, WHERE, GROUP BY, HAVING, các loại JOIN và xử lý NULL. Nên kết hợp 2–3 câu lý thuyết với 1–2 bài viết query đơn giản từ dataset có sẵn để đánh giá khả năng thực hành.
Câu hỏi phỏng vấn SQL nào phân biệt được Middle và Senior?
Các câu về tối ưu hiệu năng (đọc EXPLAIN ANALYZE, chọn index phù hợp), xử lý concurrency (deadlock, isolation levels) và thiết kế schema là ranh giới rõ nhất. Senior cần trình bày được quy trình tư duy và trade-off, không chỉ đưa ra câu trả lời đúng.
HR không có nền tảng kỹ thuật có dùng bộ câu hỏi này được không?
Hoàn toàn được. Bài viết cung cấp gợi ý đánh giá chi tiết cho từng câu hỏi — HR có thể đọc và đối chiếu câu trả lời của ứng viên với tiêu chí đã định sẵn. Tuy nhiên, với các vị trí Senior, nên mời thêm technical lead ngồi cùng để đánh giá chính xác hơn.

Để tìm hiểu thêm về các giải pháp phần mềm, hãy truy cập NextX để được tư vấn miễn phí.

Dùng thử NextX miễn phí 14 ngày

Bắt đầu ngay →

Dùng thử NextX miễn phí 14 ngày

Miễn phí khởi tạo, đào tạo & chuyển dữ liệu

Tags

Bài viết này hữu ích không?

Chia sẻ bài viết

Bài viết liên quan

Bài mới

Đăng ký tư vấn0902.243.822