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)
571

Làm thế nào để thiết kế một cấu trúc dữ liệu Unrolled Linked List trong các hệ thống Enterprise để tối ưu hóa bộ nhớ Cache và giảm thiểu hiệu ứng Cache Miss so với Linked List truyền thống?

Middle

Bản chất vấn đề

Trong các kiến trúc phần cứng hiện đại, việc truy xuất RAM tốn nhiều chu kỳ CPU hơn rất nhiều so với việc truy xuất từ bộ nhớ Cache (L1, L2, L3). Một Singly Linked List truyền thống lưu trữ các node nằm rải rác trên Heap, khiến cho việc duyệt qua danh sách dễ gây ra hiện tượng Cache Miss do tính cục bộ không gian (Spatial Locality) kém. Unrolled Linked List giải quyết vấn đề này bằng cách lưu trữ một mảng nhỏ các phần tử (Node Array) tại mỗi node của danh sách.

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

Trong các hệ thống phân tán hoặc xử lý đa luồng (Multi-threading), việc thực hiện thao tác khóa toàn bộ danh sách (Global Lock) trên Linked List gây ra nút thắt cổ chai hiệu năng nghiêm trọng. Làm thế nào để áp dụng kỹ thuật Hand-over-Hand Locking (Lock Coupling) cho Linked List một cách an toàn?

Middle

Bản chất vấn đề

Khi nhiều luồng cùng thao tác trên một Linked List, việc dùng một Mutex duy nhất cho toàn bộ danh sách sẽ làm mất đi tính song song. Hand-over-Hand Locking cho phép nhiều luồng duyệt qua danh sách cùng một lúc bằng cách chỉ khóa từng node riêng lẻ. Luồng hiện tại giữ khóa của node tiền nhiệm, sau đó lấy khóa của node hiện tại, và chỉ thả khóa của node tiền nhiệm khi đã chuyển thành công sang node tiếp theo.

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

Làm thế nào để sao chép sâu (Deep Copy) một Danh sách liên kết phức tạp trong đó mỗi node có thêm một con trỏ bất kỳ trỏ đến một node ngẫu nhiên bất kỳ trong danh sách (Random Pointer hoặc Arbitrary Pointer) với độ phức tạp thời gian O(N) và độ phức tạp bộ nhớ O(1)?

Middle

Bản chất vấn đề

Bài toán Clone Linked List with Random Pointer thường được giải quyết bằng cách sử dụng một Hash Map để lưu trữ ánh xạ giữa node cũ và node mới, dẫn đến độ phức tạp bộ nhớ O(N). Để tối ưu hóa bộ nhớ xuống mức O(1), chúng ta cần tận dụng chính cấu trúc của danh sách liên kết bằng cách chèn các node bản sao đan xen vào giữa các node gốc.

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

Trong các hệ thống phân tán xử lý dữ liệu lớn (Big Data) hoặc Streaming, việc sử dụng Linked List làm bộ nhớ đệm dạng hàng đợi (Queue) có thể gặp vấn đề về Garbage Collection (GC) áp lực cao. Làm thế nào để thiết kế một Lock-free Concurrent Queue dựa trên Linked List sử dụng thuật toán Michael-Scott để tối ưu hóa thông lượng (Throughput)?

Middle

Bản chất vấn đề

Thuật toán Michael-Scott Queue là một chuẩn công nghiệp trong việc thiết kế hàng đợi đồng tranh chấp không dùng khóa (Lock-free Concurrent Queue) dựa trên Linked List đơn, sử dụng nguyên lý so sánh và trao đổi nguyên tử Compare-And-Swap (CAS).

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

Giải thích khái niệm Shadow Properties trong Entity Framework Core và tình huống thực tế nào cần sử dụng chúng để tối ưu hóa thiết kế Database?

Middle

Shadow Properties là gì?

Shadow Properties là các thuộc tính không tồn tại trong class Entity của bạn nhưng vẫn được lưu trữ trong Database và được EF Core theo dõi. Giá trị của chúng được quản lý thông qua Change Tracker.

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

Trong kiến trúc Microservices với .NET, làm thế nào để thực hiện việc kiểm tra sức khỏe (Health Checks) cho các dịch vụ phụ thuộc và tại sao nó quan trọng?

Middle

Health Checks trong .NET

Health Checks là cơ chế giúp hạ tầng (như Kubernetes hoặc Load Balancer) biết được một Service đang hoạt động bình thường hay đang gặp sự cố.

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

Sự khác biệt giữa Value Task và Task trong .NET là gì? Khi nào việc sử dụng Value Task mang lại lợi ích về hiệu năng?

Middle

Task vs ValueTask

  • Task là kiểu tham chiếu (Reference Type), luôn được cấp phát trên Heap, gây áp lực lên Garbage Collection (GC).
  • ValueTask là kiểu giá trị (Struct), giúp tránh cấp phát bộ nhớ nếu kết quả của tác vụ đã có sẵn (ví dụ: dữ liệu đã nằm trong Cache).

Khi nào nên dùng ValueTask?

  • Khi phương thức thường xuyên trả về kết quả ngay lập tức (synchronous path).
  • Trong các thư viện hiệu năng cao hoặc các vòng lặp xử lý hàng triệu request.

Lưu ý quan trọng:

  • Không được await một ValueTask nhiều lần.
  • Không được gọi .Result hoặc .Wait() trên một ValueTask chưa hoàn thành.

Lưu ý thực chiến: Chỉ chuyển sang dùng ValueTask khi đã đo đạc (Profiling) thấy rằng việc cấp phát Task đang gây ra vấn đề về bộ nhớ hoặc áp lực GC quá lớn.

578

Trong ASP.NET Core, cơ chế Request Localization hoạt động như thế nào để hỗ trợ ứng dụng đa ngôn ngữ (Multi-language)?

Middle

Request Localization

Cơ chế này tự động xác định ngôn ngữ (Culture) của người dùng dựa trên các nguồn như: Query String, Cookie, hoặc Header (Accept-Language).

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

Trong Ruby on Rails, làm thế nào để quản lý hiệu quả các kết nối cơ sở dữ liệu khi ứng dụng sử dụng kiến trúc Database Sharding hoặc Multi-tenancy?

Middle

Để quản lý kết nối cơ sở dữ liệu trong kiến trúc Multi-tenancy hoặc Sharding, lập trình viên cần nắm vững cơ chế ActiveRecord::Base.establish_connection.

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

Cơ chế Metaprogramming trong Ruby mang lại sự linh hoạt, nhưng tại sao nó lại được coi là con dao hai lưỡi trong các dự án Enterprise và cách kiểm soát nó?

Middle

Metaprogramming cho phép viết code tự sinh (dynamic code), giúp giảm thiểu sự lặp lại (DRY), nhưng nếu lạm dụng sẽ làm giảm khả năng bảo trì và gây khó khăn cho việc Debug.

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

Làm thế nào để xử lý bài toán Deadlock trong các giao dịch (Transaction) của Active Record khi hệ thống có lưu lượng truy cập cao?

Middle

Deadlock xảy ra khi hai hoặc nhiều tiến trình chờ đợi lẫn nhau để giải phóng khóa (lock) trên các dòng dữ liệu trong cơ sở dữ liệu.

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

Sự khác biệt giữa việc sử dụng `ActiveSupport::Concern` và Module thông thường trong Ruby on Rails là gì?

Middle

ActiveSupport::Concern là một công cụ mạnh mẽ được Rails cung cấp để giải quyết vấn đề phụ thuộc giữa các module (module dependencies).

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

Trong Ruby on Rails, làm thế nào để tối ưu hóa việc truyền tải dữ liệu lớn qua API bằng cách sử dụng Streaming?

Middle

Khi API trả về hàng chục nghìn bản ghi, việc tải toàn bộ vào bộ nhớ (RAM) sẽ gây ra tình trạng quá tải (OOM - Out of Memory). Streaming là giải pháp tối ưu.

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

Trong môi trường Enterprise, khi nào bạn nên ưu tiên sử dụng TreeMap thay vì HashMap, và các yếu tố về hiệu năng cũng như độ phức tạp thời gian cần cân nhắc là gì?

Middle

Bản chất cơ chế hoạt động của TreeMap

TreeMap trong Java được triển khai dựa trên cấu trúc dữ liệu Red-Black Tree (Cây đỏ-đen), là một dạng cây tìm kiếm nhị phân tự cân bằng. Điều này đảm bảo các khóa (keys) luôn được duy trì ở trạng thái sắp xếp theo thứ tự tự nhiên hoặc thông qua một Comparator tùy chỉnh.

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

Làm thế nào để tùy chỉnh hàm băm (Custom Hash Function) và phương thức equals trong một đối tượng tùy chỉnh khi dùng làm khóa cho HashMap để tránh hiện tượng xung đột cao và lỗ hổng hiệu năng?

Middle

Tầm quan trọng của hashCode và equals

Khi một đối tượng tùy chỉnh được dùng làm khóa (key) trong HashMap, việc ghi đè (override) đúng cả hai phương thức hashCode() và equals() là bắt buộc. Nếu không, HashMap sẽ không thể nhận diện được các đối tượng có cùng giá trị logic nhưng khác tham chiếu bộ nhớ.

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