Thư Viện Câu Hỏi Phỏng Vấn

Tổng hợp các câu hỏi tuyển dụng thực tế theo nhiều cấp độ từ Entry đến Expert để bạn tự tin chinh phục nhà tuyển dụng.

01

So sánh sự khác nhau về trường hợp sử dụng (Use Cases) của các loại cơ sở dữ liệu NoSQL: Document, Key-Value, Column-family, và Graph Databases?

Senior

Mỗi loại CSDL NoSQL được tối ưu hóa cho các cấu trúc dữ liệu và mô hình truy cập khác nhau:

  1. Document Databases (như MongoDB, CouchDB): Lưu trữ dữ liệu dưới dạng JSON/BSON. Thích hợp cho các ứng dụng có cấu trúc dữ liệu linh hoạt, thường xuyên thay đổi (ví dụ: Thông tin sản phẩm thương mại điện tử, hệ thống quản lý nội dung CMS, User Profiles).
  2. Key-Value Stores (như Redis, Memcached): Lưu dữ liệu dạng cặp Khóa - Giá trị đơn giản. Tốc độ đọc/ghi cực nhanh (vài mili giây). Thích hợp cho việc Caching, quản lý Session, đếm số lượt xem (counters), làm hàng đợi tin nhắn (Message Queues).
  3. Column-family Stores (như Cassandra, ScyllaDB): Lưu dữ liệu theo cột thay vì theo dòng. Khả năng ghi cực kỳ tối ưu và scale tuyến tính trên hàng trăm server. Thích hợp cho lưu trữ dữ liệu chuỗi thời gian (Time-series), Log hệ thống khổng lồ, dữ liệu IoT từ các cảm biến.
  4. Graph Databases (như Neo4j): Lưu dữ liệu dưới dạng các Đỉnh (Nodes) và Cạnh (Edges - thể hiện mối quan hệ). Tối ưu cho các truy vấn quan hệ nhiều tầng phức tạp. Thích hợp cho Mạng xã hội (Social Networks), Hệ thống gợi ý (Recommendation Engines), Phát hiện gian lận tài chính (Fraud Detection).
02

Giải thích chỉ mục thứ cấp (Secondary Index) trong NoSQL Database và tại sao việc lạm dụng nó có thể làm giảm hiệu năng hệ thống?

Senior

NoSQL Database được tối ưu hóa cực cao cho việc truy cập dữ liệu dựa trên Khóa chính (Primary/Partition Key) để đạt tốc độ O(1):

  • Secondary Index: Là chỉ mục được tạo trên các trường dữ liệu không phải khóa chính, cho phép truy vấn linh hoạt dựa trên các thuộc tính khác (ví dụ: tìm sản phẩm theo category thay vì product_id).
  • Tại sao lạm dụng làm giảm hiệu năng:
    1. Chi phí ghi lớn: Mỗi khi thêm/sửa/xóa một bản ghi, NoSQL phải cập nhật đồng thời chỉ mục thứ cấp. Đối với các hệ thống có tần suất ghi cao (write-heavy), ghi chỉ mục thứ cấp sẽ làm chậm thao tác ghi rõ rệt.
    2. Tác động phân tán (Scatter-Gather): Trong hệ thống phân tán (Sharded NoSQL), khóa chính dùng để xác định trực tiếp phân mảnh (shard) chứa dữ liệu. Nhưng chỉ mục thứ cấp thường không chứa thông tin phân mảnh. Khi truy vấn bằng chỉ mục thứ cấp, NoSQL phải gửi request đến tất cả các shards để tìm kiếm (quá trình Scatter-Gather) và gộp kết quả lại, làm tăng băng thông mạng và độ trễ truy vấn.

vừa nâng cấp PRO khóa 1 phút trước   Tìm hiểu khóa học