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.
Mẫu thiết kế Saga (Saga Pattern) giải quyết bài toán giao dịch phân tán (Distributed Transactions) trong kiến trúc Microservices như thế nào?
Trong kiến trúc Microservices, mỗi service quản lý cơ sở dữ liệu riêng, nên ta không thể dùng giao dịch ACID của một CSDL đơn lẻ. Saga Pattern giải quyết vấn đề này bằng cách chia giao dịch lớn thành một chuỗi các giao dịch cục bộ (Local Transactions):
- Cơ chế hoạt động: Mỗi service thực hiện giao dịch cục bộ của mình và phát ra một sự kiện (Event). Service tiếp theo lắng nghe sự kiện đó và thực hiện giao dịch cục bộ của mình. Quá trình tiếp diễn cho đến khi hoàn thành.
- Giao dịch bù (Compensating Transactions): Nếu một bước trong chuỗi gặp lỗi (ví dụ: Thanh toán thất bại), Saga sẽ kích hoạt các giao dịch bù theo thứ tự ngược lại để hoàn tác (rollback) các thay đổi đã được thực hiện ở các bước trước (ví dụ: Hoàn trả lại số lượng hàng đã giữ trong kho).
- Cách thức triển khai:
- Choreography (Phối hợp phi tập trung): Các services tự lắng nghe và phát sự kiện lẫn nhau thông qua Message Broker.
- Orchestration (Phối hợp tập trung): Sử dụng một service điều phối trung tâm (Saga Orchestrator) để ra lệnh trực tiếp cho từng service thực thi.
Service Mesh (như Istio, Linkerd) là gì? Tại sao nó giải quyết tốt các bài toán về Service-to-Service Communication trong Kubernetes?
Service Mesh là một tầng cơ sở hạ tầng chuyên dụng, độc lập được thêm vào hệ thống để quản lý việc giao tiếp an toàn, tin cậy và nhanh chóng giữa các microservices.
- Cơ chế hoạt động (Sidecar Pattern): Service Mesh triển khai một proxy siêu nhẹ (như Envoy) chạy song song bên cạnh mỗi container ứng dụng (gọi là Sidecar Proxy). Mọi lưu lượng mạng đi vào và đi ra khỏi service đều được định tuyến qua sidecar này mà ứng dụng không hề hay biết.
- Các bài toán giải quyết được:
- Traffic Management: Cấu hình định tuyến thông minh, Canary Deployments, A/B Testing, tự động Retry khi lỗi, Circuit Breaking.
- Security: Tự động mã hóa toàn bộ dữ liệu truyền tải giữa các services bằng giao thức mTLS (mutual TLS) và quản lý chứng chỉ số mà không cần sửa đổi mã nguồn ứng dụng.
- Observability: Thu thập số liệu chi tiết (Metrics, Distributed Tracing, Logs) về hiệu năng mạng, tỷ lệ lỗi giữa các cuộc gọi dịch vụ một cách tập trung.
Làm thế nào để thiết kế và triển khai một thành phần hệ thống giải quyết vấn đề Circuit Breakers trong chủ đề Microservices?
Khi thiết kế hệ thống ở quy mô lớn với Microservices, việc giải quyết bài toán Circuit Breakers yêu cầu kiến thức vững chắc về kiến trúc phân tán:
- Tính sẵn sàng (High Availability): Thiết kế dự phòng (Redundancy) và tự động chuyển vùng khi có lỗi xảy ra để tránh Single Point of Failure.
- Khả năng mở rộng (Scalability): Ưu tiên mở rộng theo chiều ngang (Scale Out) và sử dụng các cơ chế lưu trữ bất đồng bộ.
- Tính an toàn & giám sát: Thiết kế hệ thống bảo mật Zero-Trust kết hợp thu thập số liệu tập trung (Monitoring, Logging) để xử lý sự cố nhanh chóng.
Làm thế nào để thiết kế và triển khai một thành phần hệ thống giải quyết vấn đề Circuit Breakers trong chủ đề Microservices?
Khi thiết kế hệ thống ở quy mô lớn với Microservices, việc giải quyết bài toán Circuit Breakers yêu cầu kiến thức vững chắc về kiến trúc phân tán:
- Tính sẵn sàng (High Availability): Thiết kế dự phòng (Redundancy) và tự động chuyển vùng khi có lỗi xảy ra để tránh Single Point of Failure.
- Khả năng mở rộng (Scalability): Ưu tiên mở rộng theo chiều ngang (Scale Out) và sử dụng các cơ chế lưu trữ bất đồng bộ.
- Tính an toàn & giám sát: Thiết kế hệ thống bảo mật Zero-Trust kết hợp thu thập số liệu tập trung (Monitoring, Logging) để xử lý sự cố nhanh chóng.
Làm thế nào để thiết kế và triển khai một thành phần hệ thống giải quyết vấn đề Circuit Breakers trong chủ đề Microservices?
Khi thiết kế hệ thống ở quy mô lớn với Microservices, việc giải quyết bài toán Circuit Breakers yêu cầu kiến thức vững chắc về kiến trúc phân tán:
- Tính sẵn sàng (High Availability): Thiết kế dự phòng (Redundancy) và tự động chuyển vùng khi có lỗi xảy ra để tránh Single Point of Failure.
- Khả năng mở rộng (Scalability): Ưu tiên mở rộng theo chiều ngang (Scale Out) và sử dụng các cơ chế lưu trữ bất đồng bộ.
- Tính an toàn & giám sát: Thiết kế hệ thống bảo mật Zero-Trust kết hợp thu thập số liệu tập trung (Monitoring, Logging) để xử lý sự cố nhanh chóng.
Làm thế nào để thiết kế và triển khai một thành phần hệ thống giải quyết vấn đề Circuit Breakers trong chủ đề Microservices?
Khi thiết kế hệ thống ở quy mô lớn với Microservices, việc giải quyết bài toán Circuit Breakers yêu cầu kiến thức vững chắc về kiến trúc phân tán:
- Tính sẵn sàng (High Availability): Thiết kế dự phòng (Redundancy) và tự động chuyển vùng khi có lỗi xảy ra để tránh Single Point of Failure.
- Khả năng mở rộng (Scalability): Ưu tiên mở rộng theo chiều ngang (Scale Out) và sử dụng các cơ chế lưu trữ bất đồng bộ.
- Tính an toàn & giám sát: Thiết kế hệ thống bảo mật Zero-Trust kết hợp thu thập số liệu tập trung (Monitoring, Logging) để xử lý sự cố nhanh chóng.
Làm thế nào để thiết kế và triển khai một thành phần hệ thống giải quyết vấn đề Circuit Breakers trong chủ đề Microservices?
Khi thiết kế hệ thống ở quy mô lớn với Microservices, việc giải quyết bài toán Circuit Breakers yêu cầu kiến thức vững chắc về kiến trúc phân tán:
- Tính sẵn sàng (High Availability): Thiết kế dự phòng (Redundancy) và tự động chuyển vùng khi có lỗi xảy ra để tránh Single Point of Failure.
- Khả năng mở rộng (Scalability): Ưu tiên mở rộng theo chiều ngang (Scale Out) và sử dụng các cơ chế lưu trữ bất đồng bộ.
- Tính an toàn & giám sát: Thiết kế hệ thống bảo mật Zero-Trust kết hợp thu thập số liệu tập trung (Monitoring, Logging) để xử lý sự cố nhanh chóng.



.png)
.png)