10 câu hỏi có thể gặp khi phỏng vấn
Chọn theo kỹ năng và cấp của tin (SQL & Database, DevOps & CI/CD). Gợi ý trả lời do Drama Công Ty biên soạn để bạn ôn nhanh, không phải đề của công ty.
01Khi nào chọn NoSQL (MongoDB, Redis…) thay vì SQL? Trade-off là gì?SQL & Database · Senior
Gợi ý trả lời
Ôn thêm câu hỏi SQL & Database →Chọn theo mô hình truy cập dữ liệu, không theo xu hướng. SQL mạnh ở quan hệ, ràng buộc và transaction; NoSQL mạnh ở schema linh hoạt, mô hình dữ liệu đặc thù hoặc scale ngang dễ hơn.
- Document (MongoDB): dữ liệu dạng cây, đọc nguyên khối theo một khoá, schema thay đổi thường xuyên.
- Key-value (Redis): cache, session, rate limit, bộ đếm, hàng đợi nhỏ; dữ liệu chủ yếu nằm trong RAM.
- Wide-column, time-series, search engine: ghi khối lượng lớn, log, tìm kiếm full-text.
Trade-off: JOIN và transaction nhiều document hạn chế hoặc đắt hơn, ràng buộc dữ liệu chuyển sang tầng ứng dụng, và phải thiết kế theo query ngay từ đầu.
Người phỏng vấn muốn nghe: nhiều hệ thống dùng kết hợp, vd. PostgreSQL làm nguồn sự thật, Redis làm cache. PostgreSQL với
JSONBcũng đủ cho nhiều nhu cầu "schema linh hoạt".02Bảng có hàng trăm triệu dòng, query ngày càng chậm. Bạn dùng partitioning, sharding hay read replica?SQL & Database · Senior
Gợi ý trả lời
Ôn thêm câu hỏi SQL & Database →Mỗi kỹ thuật giải một vấn đề khác nhau, nên cần xác định điểm nghẽn là đọc, ghi hay kích thước dữ liệu.
- Read replica: giảm tải đọc. Phải chấp nhận replication lag; luồng vừa ghi xong đọc lại nên đọc từ primary.
- Partitioning (trong một DB): chia bảng theo khoảng thời gian hoặc theo key. Query có điều kiện trên partition key chỉ quét phần liên quan, xoá dữ liệu cũ bằng
DROP PARTITIONrất nhanh. - Sharding (nhiều DB): khi một máy không chịu nổi lượng ghi hoặc dung lượng. Đổi lại phải chọn shard key cẩn thận, query xuyên shard và transaction phân tán rất khó.
Thứ tự hợp lý: tối ưu query và index, archive dữ liệu cũ, thêm replica và cache, partition, cuối cùng mới shard.
Hay sai: chọn shard key gây hot spot, vd. theo ngày tạo khiến mọi lượt ghi dồn vào một shard.
03Làm sao migrate schema (thêm cột, đổi kiểu, thêm index) trên bảng lớn mà không downtime?SQL & Database · Senior
Gợi ý trả lời
Ôn thêm câu hỏi SQL & Database →Chia thay đổi thành nhiều bước tương thích ngược để phiên bản code cũ và mới chạy song song được (expand rồi contract).
- Expand: thêm cột mới cho phép
NULLhoặc có default; tránh câu lệnh viết lại cả bảng. - Code mới ghi vào cả cột cũ và mới.
- Backfill dữ liệu cũ theo từng lô nhỏ, có nghỉ giữa các lô để không gây lag replica.
- Chuyển code sang đọc cột mới, kiểm tra kỹ.
- Contract: bỏ cột cũ ở một lần deploy sau.
Index trên bảng lớn: PostgreSQL dùng
CREATE INDEX CONCURRENTLY; MySQL dùng online DDL hoặc công cụ như gh-ost, pt-online-schema-change.Người phỏng vấn muốn nghe: bạn biết DDL có thể giữ lock khiến mọi query xếp hàng, nên đặt
lock_timeoutvà luôn có kế hoạch rollback.- Expand: thêm cột mới cho phép
04SLI, SLO và error budget là gì? Bạn đặt alert dựa trên chúng thế nào?DevOps & CI/CD · Senior
Gợi ý trả lời
Ôn thêm câu hỏi DevOps & CI/CD →SLI là chỉ số đo trải nghiệm người dùng (tỷ lệ request thành công, độ trễ p99); SLO là mục tiêu cho SLI đó trong một khoảng thời gian; error budget là phần được phép hỏng còn lại.
- Ví dụ: SLO 99.9% request thành công trong 30 ngày, nghĩa là budget 0.1% request lỗi.
- Alert theo burn rate: budget đang bị tiêu nhanh bất thường (đo trên cửa sổ ngắn và dài) thì báo, thay vì báo mỗi khi CPU cao.
- Hết budget: ưu tiên việc ổn định, chậm lại tính năng mới.
Hay sai: đặt alert trên nguyên nhân (CPU, RAM) thay vì triệu chứng người dùng thấy, dẫn đến báo động giả và mệt mỏi vì alert.
05GitOps là gì? Bạn tổ chức repo và quy trình deploy cho nhiều môi trường, nhiều service ra sao?DevOps & CI/CD · Senior
Gợi ý trả lời
Ôn thêm câu hỏi DevOps & CI/CD →GitOps coi Git là nguồn sự thật cho trạng thái hệ thống; một agent trong cluster (Argo CD, Flux) liên tục kéo và đồng bộ, thay vì CI đẩy thẳng bằng
kubectl.- Tách repo code ứng dụng và repo cấu hình deploy; CI build image rồi mở PR cập nhật tag.
- Cấu hình dùng chung bằng Helm chart hoặc Kustomize, overlay riêng cho dev/staging/prod.
- Lên prod qua PR có review; rollback bằng
git revert. - Bật phát hiện drift và tự sửa lệch cấu hình.
- CI không cần giữ credential admin của cluster.
Người phỏng vấn muốn nghe: cân nhắc được đánh đổi, ví dụ secret vẫn cần giải pháp riêng và số lượng PR cập nhật tag có thể nhiều.
06Phân biệt INNER JOIN, LEFT JOIN, RIGHT JOIN và FULL OUTER JOIN. Khi nào dùng LEFT JOIN?SQL & Database · Junior
Gợi ý trả lời
Ôn thêm câu hỏi SQL & Database →JOIN quyết định giữ lại những dòng nào khi ghép hai bảng theo điều kiện.
- INNER JOIN: chỉ giữ dòng khớp ở cả hai bảng.
- LEFT JOIN: giữ mọi dòng bảng trái; bảng phải không khớp thì cột thành
NULL. - RIGHT JOIN: ngược lại với LEFT, ít dùng vì có thể đổi chỗ bảng.
- FULL OUTER JOIN: giữ tất cả dòng của cả hai (MySQL không hỗ trợ trực tiếp, phải
UNIONhai LEFT JOIN).
Ví dụ tìm khách chưa từng đặt hàng:
SELECT c.id, c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL;Hay sai: đặt điều kiện lọc bảng phải trong
WHERE(vd.WHERE o.status = 'paid') làm LEFT JOIN biến thành INNER JOIN; điều kiện đó phải để trongON.07WHERE và HAVING khác nhau thế nào? Thứ tự thực thi logic của một câu SELECT ra sao?SQL & Database · Junior
Gợi ý trả lời
Ôn thêm câu hỏi SQL & Database →WHERElọc từng dòng trước khi gom nhóm;HAVINGlọc sauGROUP BY, nên dùng được hàm tổng hợp nhưCOUNT,SUM.Thứ tự logic:
FROM/JOIN→WHERE→GROUP BY→HAVING→SELECT→DISTINCT→ORDER BY→LIMIT/OFFSET.SELECT department_id, AVG(salary) AS avg_salary FROM employees WHERE status = 'active' GROUP BY department_id HAVING AVG(salary) > 20000000;- Vì
SELECTchạy sauWHERE, bạn không dùng được alias của SELECT trong WHERE (đa số DB). - Điều kiện không cần hàm tổng hợp thì nên để ở WHERE để giảm số dòng phải gom nhóm.
Người phỏng vấn muốn nghe: bạn hiểu thứ tự logic, từ đó giải thích được vì sao alias hoặc aggregate dùng sai chỗ bị lỗi.
- Vì
08Index là gì, hoạt động thế nào? Có nên đánh index cho mọi cột không?SQL & Database · Junior
Gợi ý trả lời
Ôn thêm câu hỏi SQL & Database →Index là cấu trúc dữ liệu phụ (thường là B-Tree) giúp tìm dòng theo giá trị cột mà không phải quét cả bảng, đổi lại tốn dung lượng và làm chậm thao tác ghi.
- B-Tree hợp với so sánh
=,<,>,BETWEEN,ORDER BY,LIKE 'abc%'. - Mỗi
INSERT/UPDATE/DELETEphải cập nhật thêm mọi index liên quan. - Cột có độ chọn lọc thấp (vd.
gender,is_deleted) đánh index riêng thường ít tác dụng.
Không nên đánh index tràn lan: chỉ thêm cho cột hay xuất hiện trong
WHERE,JOIN,ORDER BYcủa các query quan trọng, rồi kiểm tra bằngEXPLAIN.Hay sai: bọc cột trong hàm, vd.
WHERE YEAR(created_at) = 2026hoặcLOWER(email) = ..., khiến index thường trên cột đó không được dùng. Hãy viết lại thành khoảng thời gian hoặc dùng index trên biểu thức.- B-Tree hợp với so sánh
09Container khác máy ảo (VM) ở điểm nào? Khi nào vẫn nên dùng VM?DevOps & CI/CD · Junior
Gợi ý trả lời
Ôn thêm câu hỏi DevOps & CI/CD →Container dùng chung kernel của máy chủ và cô lập bằng namespace + cgroup, nên khởi động nhanh và nhẹ; VM ảo hoá cả phần cứng và chạy một hệ điều hành riêng.
- Container: nhẹ, đóng gói ứng dụng cùng thư viện, hợp microservice và CI/CD.
- VM: cô lập mạnh hơn, chạy được kernel/OS khác (Windows trên host Linux), hợp workload cần ranh giới bảo mật rõ hoặc phần mềm cũ.
- Thực tế hai thứ thường đi cùng nhau: node Kubernetes chính là các VM trên cloud.
Hay sai: nói container "an toàn như VM". Container thoát ra host được nếu chạy
--privilegedhoặc kernel có lỗ hổng.10Bạn làm việc thế nào khi áp lực cao hoặc deadline gấp?Câu hỏi hành vi & văn hoá
Gợi ý trả lời
Ôn thêm câu hỏi Câu hỏi hành vi & văn hoá →Cho thấy bạn có cách làm cụ thể, không chỉ nói "em chịu được áp lực".
- Chia nhỏ việc, ưu tiên phần quan trọng nhất cho mục tiêu.
- Báo sớm cho lead/PM nếu thấy không kịp, đề xuất cắt phạm vi hoặc xin hỗ trợ.
- Giữ chất lượng ở phần cốt lõi; ghi lại nợ kỹ thuật để xử lý sau.
- Giữ bình tĩnh, giao tiếp ngắn gọn, rõ ràng với team.
Câu mẫu theo STAR: "Trước buổi demo cho khách, team phát hiện lỗi tích hợp chỉ còn hai ngày. Em liệt kê các phần bị ảnh hưởng, cùng PM chọn luồng nào bắt buộc phải chạy cho demo, phần còn lại hẹn bàn giao tuần sau. Demo diễn ra suôn sẻ và khách đồng ý với lịch mới."
Hay sai: khoe thức trắng nhiều đêm. Người phỏng vấn muốn thấy bạn quản lý được áp lực, không chỉ chịu đựng.
Bạn đã phỏng vấn ở MB Bank?
Kể lại các vòng và câu hỏi đã gặp (ẩn danh) để người sau ôn đúng trọng tâm.
Chia sẻ kinh nghiệm phỏng vấn