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

Trong Jetpack Compose, cơ chế Recomposition hoạt động như thế nào và làm thế nào để tối ưu hóa hiệu năng bằng cách tránh các lần Recomposition không cần thiết?

Middle

Recomposition là quá trình Jetpack Compose chạy lại các Composable functions khi trạng thái (State) mà chúng đọc thay đổi để cập nhật giao diện lên màn hình. Compose phân chia quá trình này thành 3 giai đoạn: Composition (chạy Composable để xây dựng cây UI), Layout (đo lường và sắp xếp vị trí), và Drawing (vẽ lên canvas).

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

Memory Profiler và LeakCanary hoạt động dựa trên nguyên lý nào để phát hiện Memory Leak trong ứng dụng Android và quy trình chuẩn để xử lý một sự cố rò rỉ bộ nhớ là gì?

Middle

Memory Leak xảy ra khi một đối tượng không còn cần thiết trong ứng dụng nhưng vẫn được giữ tham chiếu bởi một GC Root (như Thread đang chạy, Static variable, hoặc Handler), khiến Garbage Collector (GC) không thể giải phóng bộ nhớ heap, dẫn đến hiện tượng OutOfMemoryError (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...
303

Trong các hệ thống nhúng hoặc ứng dụng xử lý đồ họa yêu cầu hiệu năng cực cao, làm thế nào để thực hiện thao tác bật (set) bit thứ k của một số nguyên 32-bit mà không làm ảnh hưởng đến các giá trị của các bit còn lại bằng kỹ thuật Bit Manipulation?

Middle

Để bật (set) bit thứ k của một số nguyên (nghĩa là chuyển giá trị của bit đó thành 1 nếu nó đang là 0, hoặc giữ nguyên nếu nó đã là 1), chúng ta sử dụng phép toán Bitwise OR kết hợp với toán tử dịch trái (Left Shift Operator). Công thức chuẩn là: number | (1 << k).

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

Trong các thuật toán tối ưu hóa cấu trúc dữ liệu tập hợp (Set Operations) hoặc lập lịch tác vụ, làm thế nào để thực hiện thao tác lật trạng thái (toggle) của bit thứ k trong một số nguyên bằng kỹ thuật Bit Manipulation?

Middle

Để lật trạng thái (toggle) của bit thứ k (nếu bit đang là 1 thì chuyển thành 0, và ngược lại nếu đang là 0 thì chuyển thành 1), chúng ta sử dụng phép toán Bitwise XOR kết hợp với toán tử dịch trái. Công thức chuẩn là: number ^ (1 << k).

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

Trong các bài toán xử lý cấu trúc dữ liệu đồ họa hoặc tìm kiếm đường đi tối ưu, làm thế nào để trích xuất hoặc loại bỏ bit 1 cao cấp nhất (Highest Set Bit) của một số nguyên dương bằng các phép toán Bit Manipulation?

Middle

Để trích xuất bit 1 cao cấp nhất (Highest Set Bit) của một số nguyên dương, chúng ta thường sử dụng kỹ thuật lan truyền bit (Bit Propagation) để lấp đầy tất cả các bit bằng 1 nằm bên phải của bit 1 cao nhất đó, sau đó thực hiện các phép toán logic cơ bản.

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

Trong các hệ thống phân quyền hoặc cấu hình cờ trạng thái, làm thế nào để đếm tổng số lượng bit 1 đang được bật (Population Count hay Hamming Weight) trong một số nguyên 32-bit một cách tối ưu hiệu năng mà không dùng vòng lặp duyệt qua từng bit?

Middle

Để đếm số lượng bit 1 trong một số nguyên mà không cần dùng vòng lặp 32 lần (vốn gây tốn kém hiệu năng trong các vòng lặp lớn), kỹ thuật chuẩn Enterprise sử dụng thuật toán Hamming Weight theo phương pháp chia để trị (Divide and Conquer), thường được gọi là thuật toán SWAR (Simultaneous Within A Register).

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

Trong các bài toán tối ưu hóa thuật toán tìm kiếm và xử lý tập hợp số nguyên, làm thế nào để xác định số nguyên dương n có phải là một số đối xứng nhị phân (Binary Palindrome) hay không bằng các phép toán Bit Manipulation?

Middle

Để kiểm tra xem biểu diễn nhị phân của một số nguyên dương có tính chất đối xứng (Palindrome) hay không, chúng ta cần đảo ngược thứ tự các bit của số đó và so sánh chuỗi bit đảo ngược với số ban đầ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...
308

Trong các hệ thống xử lý dữ liệu lớn, làm thế nào để áp dụng kỹ thuật Bitmasking kết hợp với Dynamic Programming để giải quyết các bài toán tối ưu hóa tổ hợp (Combinatorial Optimization) mà không làm suy giảm hiệu năng do giới hạn bộ nhớ?

Middle

Kỹ thuật Bitmasking trong Dynamic Programming (thường gọi là Bitmask DP) cho phép biểu diễn tập hợp các trạng thái dưới dạng số nguyên, giúp giảm đáng kể không gian trạng thá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...
309

Khi triển khai Dynamic Programming trong kiến trúc Microservices, làm thế nào để đồng bộ hóa trạng thái giữa các dịch vụ khi một bài toán tối ưu hóa cần dữ liệu từ nhiều nguồn khác nhau mà không gây ra hiện tượng nghẽn cổ chai (Bottleneck)?

Middle

Việc giải quyết bài toán DP phân tán yêu cầu sự tách biệt giữa tính toán cục bộ và tổng hợp 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...
310

Tại sao việc sử dụng đệ quy có nhớ (Memoization) trong các ngôn ngữ có cơ chế Garbage Collection (GC) như Java hoặc Go lại có thể gây ra hiện tượng tăng đột biến bộ nhớ (Memory Spike), và cách khắc phục tối ưu nhất là gì?

Middle

Trong các ngôn ngữ có GC, việc sử dụng cấu trúc dữ liệu lớn (như Map hoặc mảng đa chiều) để lưu trữ trạng thái DP có thể khiến GC làm việc liên tục, gây ra hiện tượng Stop-the-world.

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

Trong bài toán Knapsack (Cái túi) với trọng lượng cực lớn, làm thế nào để tối ưu hóa thuật toán khi cách tiếp cận DP truyền thống O(N*W) không còn khả thi do W quá lớn?

Middle

Khi W (trọng lượng) quá lớn, ta không thể tạo bảng DP kích thước W. Cần thay đổi tư duy sang hướng tối ưu hóa không gian hoặc thay đổi biến trạng thá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...
312

Làm thế nào để áp dụng kỹ thuật Rolling Array (Mảng cuộn) để tối ưu hóa không gian trong các bài toán DP hai chiều, và những rủi ro nào cần kiểm soát khi triển khai?

Middle

Kỹ thuật Rolling Array dựa trên quan sát rằng để tính dòng thứ i, ta chỉ cần kết quả của dòng thứ i-1. Do đó, ta chỉ cần duy trì 2 dòng thay vì toàn bộ bảng N*M.

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

Cơ chế Eager Loading (`includes`, `preload`, `eager_load`) trong Active Record khác nhau như thế nào và khi nào nên sử dụng từng loại?

Middle

Cả ba phương thức đều dùng để giải quyết vấn đề N+1 query, nhưng cách thực hiệ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...
314

Trong Ruby on Rails, cơ chế Garbage Collection (GC) hoạt động như thế nào và làm thế nào để tối ưu hóa bộ nhớ cho các ứng dụng xử lý dữ liệu lớn?

Middle

Cơ chế Garbage Collection trong Ruby

Ruby sử dụng thuật toán Mark-and-Sweep để quản lý bộ nhớ. Trình thu gom rác sẽ quét qua các đối tượng (objects) đang tồn tại, đánh dấu những đối tượng còn được tham chiếu và xóa bỏ những đối tượng không còn được sử 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...
315

Sự khác biệt giữa Rack Middleware và Rails Controller Filters là gì, và tại sao việc chọn sai vị trí xử lý lại ảnh hưởng đến hiệu năng và bảo mật?

Middle

Rack Middleware

  • Vị trí: Nằm ở tầng thấp hơn, ngay trước khi request chạm tới Rails Application.
  • Phạm vi: Xử lý mọi request đi qua server (kể cả các file tĩnh, asset).
  • Ứng dụng: Phù hợp cho Logging, Authentication, Caching toàn cục, hoặc nén dữ liệu (Gzip).

Rails Controller Filters

  • Vị trí: Nằm bên trong phạm vi của Rails, sau khi routing đã xác định được Controller.
  • Phạm vi: Chỉ áp dụng cho các hành động cụ thể trong Controller.
  • Ứng dụng: Phù hợp cho việc kiểm tra quyền truy cập (Authorization) dựa trên dữ liệu database hoặc các logic nghiệp vụ cụ thể.

Lưu ý thực chiến

Nếu xử lý logic bảo mật nặng ở Middleware, bạn có thể làm chậm toàn bộ hệ thống vì nó chạy cho cả các request không cần thiết. Ngược lại, nếu đặt logic xử lý chung (như định dạng header) vào từng Controller, bạn sẽ vi phạm nguyên tắc DRY (Don't Repeat Yourself).

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