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.

Tất cả công nghệ .Net (39) ADO.NET (33) Agile scrum (43) Android (44) Angular (121) API Design (53) Arrays (19) ASP.NET (52) ASP.NET MVC (35) ASP.NET Web API (32) Availability & Reliability (2) Azure (53) Backtracking (7) Big-O Notation (16) Binary Tree (19) Bit Manipulation (9) Blockchain (42) C# (105) Caching (2) CAP Theorem (2) CDN (2) Concurrency (2) Cosmos DB (50) Cryptography (4) CSS (63) Data Structures (69) Databases (50) DDD (2) Dependency Injection (4) Design pattern (23) Devops (32) Divide & Conquer (2) Docker (38) Dynamic Programming (10) Entity Framework (57) Fibonacci Series (4) Flutter (136) Git (63) Go lang (60) Graph Theory (19) GraphQL (71) Greedy Algorithms (7) Hash Tables (25) Heaps and Maps (10) HTML (73) Ionic (29) IOS (75) Java (141) Javascript (137) jQuery (95) Kotlin (60) Kubernetes (27) Laravel (90) Layering & Middleware (2) Linked Lists (17) LINQ (30) Load Balancing (2) Microservices (30) Mongodb (27) MySQL (58) Net core (66) Node.js (119) NoSQL (2) Objective-C (33) OOP (75) Package Managerment (60) PHP (78) PostgreSQL (50) PWA (22) Python (82) Queues (11) React Native (38) React.js (116) Reactive Programming (11) Recursion (5) Redis (25) Ruby (79) Ruby on Rails (121) Rust (88) Searching (18) SOA (2) Software Architecture (3) Software Testing (11) Sorting (13) Spring (78) SQL (43) SQL Server (66) Stacks (10) Strings (17) Swift (89) Systems Design (50) T-SQL (43) Trees (31) Trie (8) Typescript (100) Unit testing (22) UX Design (74) Vue.js (84) Web security (45) WebSockets (25) Xamarin (81)
01

Định lý CAP là gì? Tại sao một hệ thống phân tán không thể đạt được đồng thời cả 3 yếu tố Consistency, Availability, và Partition Tolerance?

Senior

Định lý CAP chỉ ra rằng một hệ thống lưu trữ dữ liệu phân tán chỉ có thể chọn tối đa 2 trong số 3 yếu tố sau:

  1. Consistency (Tính nhất quán): Mọi node đều đọc được dữ liệu mới nhất cùng lúc.
  2. Availability (Tính sẵn sàng): Mọi request gửi đến hệ thống đều nhận được phản hồi thành công (không bị lỗi hoặc timeout) dù có node bị sập.
  3. Partition Tolerance (Tính chịu lỗi phân đoạn): Hệ thống vẫn hoạt động bình thường dù kết nối mạng giữa các node bị đứt quãng.
    • Tại sao không thể chọn cả 3: Trên môi trường mạng thực tế, lỗi đường truyền là không thể tránh khỏi (bắt buộc phải có P). Khi xảy ra đứt kết nối giữa Node A và Node B:
    • Nếu chọn C (Consistency): Để dữ liệu đồng bộ, Node A không được phép ghi dữ liệu mới khi chưa đồng bộ được sang Node B. Request ghi vào Node A sẽ bị từ chối hoặc treo -> Mất tính sẵn sàng (A).
    • Nếu chọn A (Availability): Node A vẫn nhận ghi dữ liệu để đảm bảo hệ thống luôn sẵn sàng phản hồi. Nhưng lúc này dữ liệu trên Node B bị cũ lệch -> Mất tính nhất quán (C).
02

Hãy giải thích tính chất nhất quán cuối cùng (Eventual Consistency) và sự khác biệt so với nhất quán mạnh (Strong Consistency)?

Senior
  • Strong Consistency (Nhất quán mạnh): Đảm bảo dữ liệu được cập nhật đồng thời ở tất cả các node. Ngay sau khi một thao tác ghi thành công, bất kỳ truy cập đọc nào sau đó ở bất kỳ node nào cũng chắc chắn trả về giá trị mới nhất.
    • Đặc điểm: Rần dễ lập trình, nhưng tốn nhiều thời gian xử lý và làm giảm tính sẵn sàng (Availability) khi có lỗi mạng.
  • Eventual Consistency (Nhất quán cuối cùng): Chấp nhận dữ liệu bị lệch pha tạm thời giữa các node. Hệ thống không hứa rằng mọi node sẽ trả về dữ liệu mới nhất ngay lập tức. Tuy nhiên, nếu không có thao tác ghi mới nào phát sinh, tất cả các node sẽ dần dần đồng bộ dữ liệu và cuối cùng (eventually) đạt trạng thái giống hệt nhau.
    • Đặc điểm: Tốc độ ghi cực nhanh, tính sẵn sàng cao. Thích hợp cho các hệ thống quy mô lớn như mạng xã hội (số lượt thích, bình luận hiển thị lệch vài giây không ảnh hưởng đến trải nghiệm người dùng).
  • vừa nâng cấp PRO khóa 1 phút trước   Tìm hiểu khóa học