Mở đăng ký khóa học Fullstack qua Zoom. Tham khảo tại đây

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.

Interactive Practice Tổng cộng 4,442 câu hỏi độc bản

Luyện Tập Phỏng Vấn Thử

Mô phỏng áp lực phỏng vấn thật với đồng hồ đếm ngược từng câu, tự đánh giá phản xạ và đo lường độ sẵn sàng của bạn.

Vui lòng đăng nhập để tham gia luyện tập và lưu tiến độ phỏng vấn.
91

Khi thiết kế hệ thống, tại sao việc sử dụng Cache ở tầng Application (In-memory) lại có thể gây ra vấn đề không đồng bộ dữ liệu trong môi trường Multi-instance?

Junior

Khi ứng dụng chạy trên nhiều Server (Scale-out), mỗi instance sẽ có một vùng nhớ In-memory riêng biệt. Nếu dữ liệu được lưu trong biến cục bộ (ví dụ: static variable), mỗi instance sẽ giữ một bản sao khác nhau.

Nội dung chi tiết câu trả lời, phân tích kỹ thuật chuyên sâu, mã nguồn minh họa và các trường hợp ngoại lệ chỉ dành riêng cho học viên Unicode E-learning...

Để mở khóa toàn bộ giải pháp chi tiết và tài liệu hướng dẫn phỏng vấn, vui lòng nâng cấp tài khoản hoặc tham gia gói Learning Pass để truy cập không giới hạn.

// Mã nguồn và kiến trúc giải pháp bị ẩn đối với tài khoản chưa nâng cấp...
92

Tại sao việc thực hiện các lệnh nặng (như KEYS * trong Redis) lại được coi là hành vi gây nguy hiểm cho hiệu năng hệ thống?

Junior

Redis hoạt động dựa trên cơ chế Single-threaded Event Loop để xử lý các lệnh. Mọi lệnh gửi đến sẽ được xếp hàng và xử lý tuần tự.

Nội dung chi tiết câu trả lời, phân tích kỹ thuật chuyên sâu, mã nguồn minh họa và các trường hợp ngoại lệ chỉ dành riêng cho học viên Unicode E-learning...

Để mở khóa toàn bộ giải pháp chi tiết và tài liệu hướng dẫn phỏng vấn, vui lòng nâng cấp tài khoản hoặc tham gia gói Learning Pass để truy cập không giới hạn.

// Mã nguồn và kiến trúc giải pháp bị ẩn đối với tài khoản chưa nâng cấp...
93

Tại sao việc sử dụng Cache cho các dữ liệu có tính biến động cao (High Volatility) lại là một sai lầm trong thiết kế hệ thống?

Junior

Dữ liệu có tính biến động cao là những dữ liệu thay đổi liên tục theo thời gian thực (ví dụ: số dư tài khoản, lượt view video theo giây).

Nội dung chi tiết câu trả lời, phân tích kỹ thuật chuyên sâu, mã nguồn minh họa và các trường hợp ngoại lệ chỉ dành riêng cho học viên Unicode E-learning...

Để mở khóa toàn bộ giải pháp chi tiết và tài liệu hướng dẫn phỏng vấn, vui lòng nâng cấp tài khoản hoặc tham gia gói Learning Pass để truy cập không giới hạn.

// Mã nguồn và kiến trúc giải pháp bị ẩn đối với tài khoản chưa nâng cấp...
94

Trong kiến trúc hệ thống, tại sao việc sử dụng hàm băm (Hashing) với Salt không đủ để chống lại các cuộc tấn công Brute-force nếu không kết hợp với Key Stretching?

Junior

Bản chất vấn đề

Việc sử dụng Salt giúp chống lại Rainbow Table bằng cách tạo ra các giá trị băm duy nhất cho mỗi mật khẩu, ngay cả khi mật khẩu gốc giống nhau. Tuy nhiên, Salt không làm giảm tốc độ tính toán của kẻ tấn công khi chúng thực hiện Brute-force hoặc Dictionary Attack.

Nội dung chi tiết câu trả lời, phân tích kỹ thuật chuyên sâu, mã nguồn minh họa và các trường hợp ngoại lệ chỉ dành riêng cho học viên Unicode E-learning...

Để mở khóa toàn bộ giải pháp chi tiết và tài liệu hướng dẫn phỏng vấn, vui lòng nâng cấp tài khoản hoặc tham gia gói Learning Pass để truy cập không giới hạn.

// Mã nguồn và kiến trúc giải pháp bị ẩn đối với tài khoản chưa nâng cấp...
95

Tại sao trong giao tiếp giữa các Microservices, việc sử dụng HTTPS thôi là chưa đủ để đảm bảo bảo mật toàn diện và tại sao cần áp dụng thêm cơ chế Message Level Encryption?

Junior

Giới hạn của HTTPS

HTTPS (TLS) chỉ bảo vệ dữ liệu khi đang truyền tải (Data in transit) trên đường truyền. Một khi dữ liệu đến được Service đích, nó sẽ được giải mã và lưu trữ trong bộ nhớ của Service đó.

Nội dung chi tiết câu trả lời, phân tích kỹ thuật chuyên sâu, mã nguồn minh họa và các trường hợp ngoại lệ chỉ dành riêng cho học viên Unicode E-learning...

Để mở khóa toàn bộ giải pháp chi tiết và tài liệu hướng dẫn phỏng vấn, vui lòng nâng cấp tài khoản hoặc tham gia gói Learning Pass để truy cập không giới hạn.

// Mã nguồn và kiến trúc giải pháp bị ẩn đối với tài khoản chưa nâng cấp...
96

Trong quá trình triển khai hệ thống, tại sao việc quản lý khóa (Key Management) thường được coi là thách thức lớn hơn cả việc chọn thuật toán mã hóa?

Junior

Bản chất của Key Management

Thuật toán mã hóa như AES-256 đã được chứng minh là an toàn về mặt toán học. Điểm yếu của hệ thống thường nằm ở cách quản lý khóa (Key Lifecycle Management).

Nội dung chi tiết câu trả lời, phân tích kỹ thuật chuyên sâu, mã nguồn minh họa và các trường hợp ngoại lệ chỉ dành riêng cho học viên Unicode E-learning...

Để mở khóa toàn bộ giải pháp chi tiết và tài liệu hướng dẫn phỏng vấn, vui lòng nâng cấp tài khoản hoặc tham gia gói Learning Pass để truy cập không giới hạn.

// Mã nguồn và kiến trúc giải pháp bị ẩn đối với tài khoản chưa nâng cấp...
97

Sự khác biệt giữa mã hóa dữ liệu (Encryption) và mã hóa toàn vẹn (Signing) là gì, và tại sao việc nhầm lẫn giữa hai khái niệm này dẫn đến lỗ hổng bảo mật?

Junior

Phân biệt khái niệm

  1. Encryption (Mã hóa): Mục tiêu là tính bảo mật (Confidentiality). Chỉ người có khóa giải mã mới đọc được nội dung.
  2. Signing (Ký số): Mục tiêu là tính toàn vẹn (Integrity) và xác thực (Authenticity). Đảm bảo dữ liệu không bị thay đổi và xác nhận người gửi là ai.

Rủi ro khi nhầm lẫn

  • Nếu bạn chỉ mã hóa mà không ký, kẻ tấn công có thể thay đổi nội dung mã hóa (Bit-flipping attack) mà hệ thống không phát hiện được.
  • Nếu bạn chỉ ký mà không mã hóa, dữ liệu vẫn ở dạng rõ (Plaintext), kẻ tấn công có thể đọc được thông tin nhạy cảm.

Best Practice

Trong các hệ thống Enterprise, luôn áp dụng nguyên tắc 'Encrypt-then-Sign' hoặc sử dụng các chế độ mã hóa tích hợp xác thực như AES-GCM để đảm bảo cả hai yếu tố cùng lúc.

98

Tại sao việc sử dụng cùng một khóa mã hóa cho nhiều mục đích khác nhau (Key Reuse) lại là một sai lầm nghiêm trọng trong thiết kế hệ thống?

Junior

Rủi ro của Key Reuse

Nội dung chi tiết câu trả lời, phân tích kỹ thuật chuyên sâu, mã nguồn minh họa và các trường hợp ngoại lệ chỉ dành riêng cho học viên Unicode E-learning...

Để mở khóa toàn bộ giải pháp chi tiết và tài liệu hướng dẫn phỏng vấn, vui lòng nâng cấp tài khoản hoặc tham gia gói Learning Pass để truy cập không giới hạn.

// Mã nguồn và kiến trúc giải pháp bị ẩn đối với tài khoản chưa nâng cấp...
99

Sự khác biệt giữa cơ chế Active Health Check và Passive Health Check trong cấu hình Load Balancer là gì?

Junior

Active Health Check là cơ chế Load Balancer chủ động gửi các yêu cầu kiểm tra (như HTTP GET /health) tới Backend Server theo định kỳ để xác định trạng thái sống/chết. Nếu server không phản hồi đúng, nó sẽ bị loại khỏi danh sách cân bằng tải. Ngược lại, Passive Health Check không gửi yêu cầu kiểm tra định kỳ mà quan sát kết quả của các yêu cầu thực tế từ người dùng. Nếu một server trả về lỗi (ví dụ 5xx) vượt quá ngưỡng cho phép trong một khoảng thời gian, Load Balancer sẽ tạm thời đánh dấu server đó là không khả dụng. Sự kết hợp giữa cả hai giúp hệ thống vừa phát hiện sớm sự cố (Active) vừa đảm bảo tính linh hoạt khi có lỗi phát sinh trong quá trình vận hành thực tế (Passive).

100

Trong kiến trúc Load Balancing, tại sao thuật toán Weighted Round Robin lại thường được ưu tiên hơn thuật toán Round Robin thuần túy khi các Backend Server có cấu hình phần cứng không đồng nhất?

Junior

Thuật toán Round Robin thuần túy phân phối yêu cầu theo kiểu xoay vòng đều đặn, giả định rằng mọi Backend Server đều có khả năng xử lý như nhau. Tuy nhiên, trong thực tế Enterprise, các server thường có cấu hình phần cứng khác nhau (CPU, RAM). Nếu sử dụng Round Robin, server yếu sẽ bị quá tải trong khi server mạnh lại nhàn rỗi. Weighted Round Robin giải quyết vấn đề này bằng cách gán trọng số (weight) cho mỗi server. Server có cấu hình mạnh hơn sẽ được gán trọng số cao hơn, từ đó nhận được nhiều yêu cầu hơn theo tỷ lệ tương ứng. Ví dụ: Server A (weight 3) và Server B (weight 1) sẽ nhận yêu cầu theo tỷ lệ 3:1, giúp tối ưu hóa hiệu suất tổng thể của cụm server.

101

Khi cấu hình Load Balancer, tại sao việc sử dụng cơ chế Sticky Sessions (Session Persistence) lại có thể gây ra hiện tượng phân bổ tải không đều và cách khắc phục là gì?

Junior

Sticky Sessions buộc các yêu cầu từ cùng một Client phải đi tới cùng một Backend Server dựa trên Session ID hoặc Cookie. Điều này giúp duy trì trạng thái phiên làm việc (session state) của người dùng. Tuy nhiên, nếu một lượng lớn người dùng cùng truy cập vào một server cụ thể, server đó sẽ bị quá tải trong khi các server khác có thể bị bỏ trống, dẫn đến mất cân bằng tải nghiêm trọng. Để khắc phục, thay vì lưu trữ session tại bộ nhớ của Backend Server, kiến trúc Enterprise hiện đại thường sử dụng các giải pháp lưu trữ tập trung như Redis hoặc Memcached. Khi đó, bất kỳ server nào cũng có thể xử lý yêu cầu của người dùng mà không cần phụ thuộc vào việc kết nối với server cũ, cho phép Load Balancer phân phối tải một cách tự do và hiệu quả hơn.

102

Tại sao việc cấu hình SSL Termination tại Load Balancer lại giúp giảm tải đáng kể cho các Backend Server trong hệ thống?

Junior

SSL Termination là quá trình Load Balancer thực hiện giải mã (decrypt) các yêu cầu HTTPS từ Client trước khi chuyển tiếp chúng tới Backend Server qua giao thức HTTP thông thường. Việc thực hiện bắt tay (handshake) SSL và mã hóa/giải mã tiêu tốn rất nhiều tài nguyên CPU. Nếu để mỗi Backend Server tự xử lý SSL, chúng sẽ mất đi một phần tài nguyên đáng kể vốn dành cho việc xử lý logic nghiệp vụ. Bằng cách tập trung việc giải mã tại Load Balancer (thường được tối ưu hóa bằng phần cứng hoặc các thư viện chuyên dụng), các Backend Server chỉ cần tập trung xử lý các yêu cầu HTTP, từ đó tăng cường khả năng phục vụ (throughput) và giảm độ trễ phản hồi cho người dùng cuối.

103

Trong bối cảnh Load Balancing, khái niệm Connection Draining là gì và tại sao nó lại quan trọng trong quá trình triển khai cập nhật hệ thống?

Junior

Connection Draining (hay còn gọi là Deregistration Delay) là cơ chế cho phép Load Balancer ngừng gửi các yêu cầu mới tới một Backend Server đang chuẩn bị tắt hoặc khởi động lại, nhưng vẫn cho phép server đó hoàn thành các yêu cầu đang xử lý dở dang. Nếu không có cơ chế này, khi một server bị ngắt kết nối đột ngột, các yêu cầu đang thực thi sẽ bị hủy bỏ (timeout), gây ra lỗi 502 Bad Gateway hoặc 504 Gateway Timeout cho người dùng. Việc cấu hình Connection Draining đảm bảo tính toàn vẹn của dữ liệu và trải nghiệm người dùng mượt mà trong quá trình bảo trì hoặc triển khai phiên bản mới (Deployment).

104

Tại sao các ứng dụng web hiện đại thường ưa chuộng mô hình Eventual Consistency hơn là Strict Consistency trong các hệ thống phân tán thuộc nhóm AP?

Junior

1. Định nghĩa

  • Strict Consistency (Consistency trong CAP): Mọi thao tác đọc đều phải trả về giá trị của thao tác ghi gần nhất bất kể được thực hiện ở node nào.
  • Eventual Consistency: Nếu không có thêm các bản cập nhật mới được thực hiện, tất cả các bản sao dữ liệu cuối cùng sẽ hội tụ về cùng một giá trị sau một khoảng thời gian.

2. Lý do lựa chọn mô hình Eventual Consistency

  • Tối ưu hóa Availability: Giúp hệ thống luôn phản hồi nhanh chóng cho người dùng mà không cần chờ đợi quá trình khóa phân tán (Distributed Lock) hay đồng bộ hóa hoàn toàn giữa các trung tâm dữ liệu.
  • Khả năng mở rộng (Scalability): Cho phép scale hệ thống theo chiều ngang (Horizontal Scaling) dễ dàng hơn rất nhiều bằng cách thêm các Read Replica.

3. Kinh nghiệm thực chiến

Khi phỏng vấn ở mức độ Junior, bạn cần nhận thức được rằng người dùng cuối (End-user) thường không nhận ra độ trễ vài trăm mili-giây trong việc đồng bộ dữ liệu (ví dụ: số lượng like trên bài viết Facebook), nhưng họ sẽ rất khó chịu nếu website hiển thị lỗi timeout hoặc không thể truy cập do hệ thống cố gắng duy trì Strict Consistency trong lúc mạng chập chờn.

105

Khi làm việc với các hệ thống NoSQL như MongoDB hoặc Apache Cassandra, sự khác biệt trong cấu hình mức độ nhất quán (Consistency Levels) ảnh hưởng như thế nào đến Định lý CAP?

Junior

1. Cơ chế cấu hình Consistency Level

Các hệ thống NoSQL phân tán cho phép lập trình viên tinh chỉnh mức độ nhất quán thông qua các tham số đọc và ghi (ví dụ: QUORUM, ONE, ALL trong Apache Cassandra).

Nội dung chi tiết câu trả lời, phân tích kỹ thuật chuyên sâu, mã nguồn minh họa và các trường hợp ngoại lệ chỉ dành riêng cho học viên Unicode E-learning...

Để mở khóa toàn bộ giải pháp chi tiết và tài liệu hướng dẫn phỏng vấn, vui lòng nâng cấp tài khoản hoặc tham gia gói Learning Pass để truy cập không giới hạn.

// Mã nguồn và kiến trúc giải pháp bị ẩn đối với tài khoản chưa nâng cấp...
High-Ticket Mentoring
Cần Mentor Phỏng Vấn Thử 1-1 & Tối Ưu CV?

Mô phỏng phỏng vấn kỹ thuật thực tế 1-1 qua Google Meet, nhận xét chi tiết điểm mạnh/yếu và sửa CV trực tiếp cùng giảng viên Unicode.

AI Resume Scanner
Kiểm Tra CV Chuẩn ATS Miễn Phí

Tải CV của bạn lên để hệ thống AI rà soát từ khóa kỹ năng, định dạng và tính điểm chuẩn nhà tuyển dụng.

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