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.
Tất cả công nghệ .Net (39) ADO.NET (44) Agile scrum (33) Android (40) Angular (40) API Design (40) Arrays (40) ASP.NET (42) ASP.NET MVC (40) ASP.NET Web API (49) Availability & Reliability (40) Azure (49) Backtracking (40) Big-O Notation (35) Binary Tree (40) Bit Manipulation (40) Blockchain (45) C# (45) Caching (50) CAP Theorem (45) CDN (45) Concurrency (49) Cosmos DB (44) Cryptography (40) CSS (40) Data Structures (40) Databases (35) DDD (42) Dependency Injection (50) Design pattern (45) Devops (50) Divide & Conquer (40) Docker (43) Dynamic Programming (40) Entity Framework (40) Fibonacci Series (35) Flutter (40) Git (40) Go lang (40) Graph Theory (40) GraphQL (40) Greedy Algorithms (40) Hash Tables (40) Heaps and Maps (35) HTML (40) Ionic (45) IOS (45) Java (73) Javascript (81) jQuery (40) Kotlin (50) Kubernetes (11) Laravel (41) Layering & Middleware (44) Linked Lists (45) LINQ (40) Load Balancing (45) Microservices (44) Mongodb (45) MySQL (44) Net core (44) next.js (52) Node.js (40) NoSQL (48) Objective-C (40) OOP (44) Package Managerment (50) PHP (40) PostgreSQL (44) PWA (40) Python (41) Queues (44) React Native (48) React.js (45) Reactive Programming (50) Recursion (45) Redis (40) Ruby (44) Ruby on Rails (48) Rust (40) Searching (45) SOA (42) Software Architecture (44) Software Testing (40) Sorting (48) Spring (45) SQL (37) SQL Server (45) Stacks (44) Strings (50) Swift (45) System Design (56) Systems Design (7) T-SQL (39) Trees (49) Trie (35) Typescript (44) Unit testing (49) UX Design (50) Vue.js (50) Web security (40) WebSockets (49) Xamarin (40)
496

Trong kiến trúc Microservices, mẫu thiết kế Saga Pattern đóng vai trò gì và tại sao chúng ta không thể sử dụng Distributed Transactions (như Two-Phase Commit - 2PC) cho tất cả các nghiệp vụ phân tán?

Middle

1. Vấn đề của Distributed Transactions (Two-Phase Commit - 2PC)

Trong kiến trúc Monolithic, một giao dịch cơ sở dữ liệu sử dụng ACID thông qua cơ chế Transaction cục bộ. Khi chuyển sang Microservices, mỗi service sở hữu một Database riêng biệt (Database-per-service). Để đảm bảo tính nhất quán dữ liệu qua nhiều service, lý thuyết có nhắc đến giao dịch phân tán Two-Phase Commit (2PC).

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...
497

Trong môi trường kiến trúc Microservices xử lý khối lượng giao dịch lớn, hiện tượng False Sharing ảnh hưởng như thế nào đến hiệu năng của CPU Cache và làm thế nào để lập trình viên tối ưu hóa vấn đề này ở tầng mã nguồn?

Middle

Bản chất của False Sharing

False Sharing là một hiện tượng suy giảm hiệu năng phần cứng xảy ra trong lập trình đa luồng trên các kiến trúc CPU đa nhân (Multi-core processors). Nó xảy ra khi hai hoặc nhiều luồng chạy trên các nhân CPU khác nhau cùng chỉnh sửa các biến độc lập nhưng lại nằm trên cùng một Cache Line (thường có kích thước 64 bytes trên các CPU hiện đại).

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...
498

Trong các ứng dụng Backend hiện đại, cơ chế Thread Pooling thường được sử dụng để quản lý tài nguyên. Hãy giải thích hiện tượng Thread Pool Queue Saturation và đề xuất chiến lược RejectedExecutionHandler tối ưu để bảo vệ hệ thống.

Middle

Khái niệm Thread Pool Queue Saturation

Thread Pool Queue Saturation xảy ra khi tốc độ các tác vụ (Tasks) gửi vào Thread Pool vượt quá tốc độ xử lý của các Worker Threads, khiến cho Blocking Queue đạt đến sức chứa tối đa (Maximum Capacity). Khi trạng thái này diễn ra, hệ thống sẽ rơi vào tình trạng quá tải nghiêm trọng, dẫn đến độ trễ (Latency) tăng cao, cạn kiệt bộ nhớ (OutOfMemoryError) hoặc sập toàn bộ ứng dụng.

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...
499

Trong lập trình bất đồng bộ với cơ chế Event Loop (như Node.js hoặc Netty), việc thực hiện các tác vụ tính toán nặng (CPU-bound) sẽ gây ra hệ lụy gì cho kiến trúc hệ thống và cách giải quyết triệt để vấn đề này là gì?

Middle

Tác động của CPU-bound Task đối với Event Loop

Event Loop hoạt động dựa trên mô hình đơn luồng (Single-threaded event loop) kết hợp với xử lý I/O phi chặn (Non-blocking I/O). Luồng này chịu trách nhiệm nhận sự kiện, điều phối và thực thi các callback.

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...
500

Trong kiến trúc hệ thống xử lý bất đồng bộ sử dụng Message Queue, làm thế nào để thiết lập cơ chế Dead Letter Queue (DLQ) kết hợp với TTL (Time-to-Live) để tự động hóa việc cô lập và phân tích các message bị lỗi mà không làm tắc nghẽn luồng xử lý chính?

Middle

Bản chất vấn đề và kiến trúc Dead Letter Queue (DLQ)

Trong các hệ thống Enterprise, việc message bị lỗi trong quá trình xử lý bởi Consumer là điều không thể tránh khỏi (do lỗi kết nối database, lỗi logic nghiệp vụ, hoặc service bên thứ ba sập). Nếu không có cơ chế xử lý, các message này sẽ rơi vào trạng thái retry vô hạn (poison message), gây nghẽn hàng đợi (Queue Jamming) hoặc làm tiêu tốn tài nguyên hệ thống.

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...
501

Khi triển khai hệ thống Consumer đọc dữ liệu từ Queue với số lượng lớn (High Throughput), hiện tượng Race Condition và Duplicate Message xử lý song song thường xuyên xảy ra. Làm thế nào để giải quyết bài toán Idempotency trong kiến trúc này?

Middle

Khái niệm Idempotency trong Message Queuing

Idempotency (Tính bất biến) là thuộc tính mà một thao tác có thể được thực hiện nhiều lần nhưng kết quả cuối cùng vẫn giữ nguyên như khi thực hiện một lần duy nhất. Trong hệ thống phân tán, do cơ chế mạng không đáng tin cậy, Message Broker có thể gửi lại (redeliver) một message đã được Consumer xử lý nhưng chưa kịp gửi lệnh ACK.

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...
502

Khi lượng request tăng vọt vào giờ cao điểm, hệ thống Consumer gặp hiện tượng quá tải (Memory Leak hoặc CPU Spike) do tốc độ đẩy message vào Queue nhanh hơn nhiều so với tốc độ tiêu thụ. Làm thế nào để áp dụng chiến lược Backpressure và Prefetch Count tối ưu?

Middle

Bản chất của Backpressure và Prefetch Count

Trong các hệ thống Message Queue, nếu Consumer sử dụng cơ chế kéo tự động toàn bộ message từ Broker về bộ nhớ RAM (Unbounded Buffering), hệ thống sẽ ngay lập tức sập vì tràn bộ nhớ (Out Of Memory - OOM).

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...
503

Trong kiến trúc SOA, khi các dịch vụ phân tán cần duy trì tính nhất quán dữ liệu xuyên suốt qua nhiều transaction độc lập, tại sao việc sử dụng mô hình Distributed Transactions truyền thống dựa trên Two-Phase Commit lại không còn phù hợp, và giải pháp Sagas Pattern được thiết kế để giải quyết bài toán này như thế nào?

Middle

Bản chất vấn đề

Trong hệ thống SOA, mỗi dịch vụ sở hữu cơ sở dữ liệu riêng biệt. Khi một nghiệp vụ nghiệp vụ nghiệp vụ nghiệp nghiệp vụ (Business Transaction) đi qua nhiều dịch vụ, việc đảm bảo tính nhất quán là tối quan trọng.

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...
504

Trong hệ thống SOA, khi triển khai giao tiếp bất đồng bộ thông qua Message Broker như RabbitMQ hoặc Apache Kafka, hiện tượng Message Duplication có thể xảy ra do network partition hoặc retry logic. Làm thế nào để thiết kế cơ chế Idempotent Consumer nhằm đảm bảo một message được xử lý chính xác duy nhất một lần (Exactly-once semantics giả lập)?

Middle

Bản chất vấn đề

Trong mạng máy tính không đáng tin cậy, việc đảm bảo 'Exactly-once delivery' từ phía Producer là cực kỳ khó khăn, dẫn đến việc Message Broker thường cung cấp 'At-least-once delivery'. Điều này đồng nghĩa với việc Consumer có thể nhận được cùng một message nhiều lần. Nếu hệ thống không xử lý, việc lặp lại message (Ví dụ: trừ tiền tài khoản hai lần) sẽ gây hậu quả nghiêm trọng.

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...
505

Trong kiến trúc SOA, việc phân rã các monolithic application thành nhiều Service độc lập thường dẫn đến tình trạng Distributed Monolith nếu thiết kế ranh giới nghiệp vụ không chuẩn xác. Làm thế nào để áp dụng chiến lược Domain-Driven Design (DDD) và nguyên lý Bounded Context để phân chia ranh giới dịch vụ hiệu quả?

Middle

Bản chất vấn đề

Lỗi phổ biến của các lập trình viên khi mới tiếp cận SOA là chia nhỏ hệ thống dựa trên tầng kỹ thuật (UI Service, Business Service, Database Service) hoặc chia quá nhỏ theo từng bảng cơ sở dữ liệu. Kết quả là tạo ra một hệ thống Distributed Monolith: các dịch vụ phụ thuộc chéo lẫn nhau, gọi vòng lặp (Circular Dependency) và phải gọi database của nhau liên tục qua mạng.

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...
506

Trong các hệ thống NoSQL hướng cột như Apache Cassandra, quá trình Read Repair hoạt động như thế nào và tại sao cơ chế này lại đóng vai trò quan trọng trong việc đảm bảo tính nhất quán cuối cùng của dữ liệu?

Middle

Bản chất cơ chế Read Repair trong Apache Cassandra

Apache Cassandra là một cơ sở dữ liệu phân tán theo mô hình Masterless (P2P), thiết kế theo định lý AP (Availability và Partition Tolerance) trong định lý CAP, sử dụng cơ chế Eventual Consistency (Nhất quán cuối cùng). Để đảm bảo tính đồng bộ giữa các Replica mà không cần thông qua một Node điều phối trung tâm cho mọi thao tác ghi, Cassandra áp dụng cơ chế Read Repair.

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...
507

Trong MongoDB, khi thực hiện các truy vấn phức tạp trên tập dữ liệu lớn, cơ chế tối ưu hóa truy vấn thông qua Query Planner hoạt động như thế nào và làm thế nào để đọc, phân tích kết quả từ hàm explain()?

Middle

Cơ chế Query Planner trong MongoDB

Khi một câu lệnh truy vấn (Query) được gửi đến MongoDB, nó không được thực thi trực tiếp ngay lập tức mà phải đi qua một bộ phận cốt lõi gọi là Query Planner (trước phiên bản 3.0 thường gọi là Classic Engine, hiện nay sử dụng trường phái tối ưu hóa dựa trên chi phí Cost-based Optimizer với công cụ lưu trữ WiredTiger).

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...
508

Trong kiến trúc hệ thống phân tán sử dụng Redis, khi nào chúng ta nên lựa chọn Redis Sentinel thay vì Redis Cluster và những giới hạn kiến trúc nào cần lưu ý khi vận hành ở môi trường Production?

Middle

Phân biệt Redis Sentinel và Redis Cluster

Cả Redis Sentinel và Redis Cluster đều là các giải pháp đảm bảo tính sẵn sàng cao (High Availability) cho Redis, nhưng chúng được thiết kế cho các mô hình kiến trúc và bài toán vận hành hoàn toàn 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...
509

Làm thế nào để cấu hình và tối ưu hóa Change Feed Processor trong Azure Cosmos DB để xử lý các sự kiện thời gian thực cho hệ thống Microservices?

Middle

Bản chất cơ chế Change Feed

Change Feed trong Azure Cosmos DB hoạt động bằng cách lắng nghe các thay đổi dữ liệu (insert, update) trong một container. Nó duy trì một bản ghi log phân tán về các thao tác ghi, cho phép đọc dữ liệu theo thứ tự thời gian mà không ảnh hưởng đến tải của các câu truy vấn OLTP thông thường.

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...
510

Làm thế nào để thiết kế và tối ưu hóa thủ tục lưu trữ (Stored Procedures) viết bằng JavaScript trong Azure Cosmos DB nhằm xử lý các giao dịch xuyên suốt nhiều tài liệu (Multi-document Transactions)?

Middle

Bản chất giao dịch trong Cosmos DB

Azure Cosmos DB hỗ trợ ACID transactions ở cấp độ một Logical Partition thông qua cơ chế Snapshot Isolation. Khi cần thao tác trên nhiều tài liệu trong cùng một partition một cách nguyên tử (atomic), Stored Procedures viết bằng JavaScript là giải pháp cốt lõi.

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