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

Những nguyên nhân chính gây ra hiện tượng giật lag (UI Performance Drop) khi hiển thị danh sách lớn (ListView hoặc CollectionView) trong Xamarin.Forms và cách khắc phục?

Junior

Nguyên nhân chính gây giảm hiệu năng

  1. Thiếu sự tái sử dụng Cell (Cell Reuse): Nếu không sử dụng cơ chế caching strategy, mỗi item khi hiển thị sẽ khởi tạo một đối tượng UI mới, gây tốn bộ năng lượng và tài nguyên CPU.
  2. Binding quá phức tạp: Sử dụng quá nhiều giá trị Binding trong một DataTemplate với các bộ chuyển đổi (Value Converters) chạy nặng.
  3. Kích thước ảnh không tối ưu: Tải ảnh có độ phân giải lớn trực tiếp từ URL mà không qua bước resize hoặc caching.
  4. Cấu trúc layout lồng nhau (Deep Layout Nesting): Sử dụng quá nhiều Grid hoặc StackLayout lồng nhau gây tốn thời gian tính toán kích thước (Measure and Layout Pass).

Giải pháp tối ưu hóa chuẩn Enterprise

  • Sử dụng CollectionView thay cho ListView: CollectionView cung cấp kiến trúc hiện đại hơn với ItemsLayout linh hoạt và hiệu suất kết xuất tốt hơn.
  • Sử dụng CachingStrategy cho ListView:
<ListView x:Name="MyListView" CachingStrategy="RecycleElement">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <!-- Nội dung cell tối giản -->
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
  • Sử dụng FastCell: Đối với Xamarin.Forms, FastCell giúp giảm số lượng phần tử visual bằng cách sử dụng Native rendering trực tiếp thay vì các Forms elements trung gian.

Lưu ý kinh nghiệm thực chiến

Lập trình viên Junior cần luôn kiểm tra bằng công cụ Profiler của Visual Studio để xác định chính xác nút thắt cổ chai (bottleneck) thay vì đoán mò khi tối ưu hóa hiệu năng ứng dụng.

1667

Sự khác biệt cốt lõi giữa Xamarin.Forms và Xamarin.Native (Xamarin.iOS và Xamarin.Android) là gì và khi nào một lập trình viên Junior nên chọn giải pháp nào cho dự án doanh nghiệp?

Junior

Bản chất sự khác biệt

  • Xamarin.Forms: Cho phép xây dựng giao diện người dùng chia sẻ dùng chung (Cross-platform UI) cho cả iOS, Android và UWP thông qua XAML và C#. Nó tự động ánh xạ các Controls chung thành các Native Controls tương ứng của từng nền tảng khi runtime.
  • Xamarin.Native (Xamarin.iOS / Xamarin.Android): Cho phép lập trình viên viết giao diện hoàn toàn riêng biệt bằng cách sử dụng các API gốc của từng hệ điều hành thông qua C# bindings, giữ nguyên 100% Native UI và Performance nhưng mã nguồn chia sẻ phần Business Logic (Shared Code thông qua .NET Standard).

Tiêu chí lựa chọn cho dự án Enterprise

  • Chọn Xamarin.Forms khi:

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

Cơ chế quản lý bộ nhớ (Garbage Collection) trong Xamarin hoạt động như thế nào và lập trình viên cần lưu ý gì để tránh hiện tượng rò rỉ bộ nhớ (Memory Leak)?

Junior

Cơ chế hoạt động của GC trong Xamarin

Xamarin sử dụng cả hai bộ thu gom rác: .NET Garbage Collection quản lý các đối tượng được quản lý (Managed Objects) và Native Garbage Collection (Objective-C/Java GC) quản lý các đối tượng gốc (Native Objects).

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

Mô hình MVVM (Model-View-ViewModel) trong Xamarin.Forms hoạt động ra sao và cơ chế Data Binding liên kết dữ liệu giữa View và ViewModel như thế nào?

Junior

Kiến trúc MVVM trong Xamarin.Forms

  • Model: Đại diện cho tầng dữ liệu (Data Entities, Database, API Services).
  • View: Đại diện cho giao diện người dùng (XAML và Code-behind), chịu trách nhiệm hiển thị dữ liệu và nhận tương tác từ người dùng.
  • ViewModel: Đóng vai trò trung gian chứa logic nghiệp vụ, các Commands và các Properties được gắn kết với View thông qua cơ chế Data Binding.

Cơ chế Data Binding

Data Binding cho phép đồng bộ hóa dữ liệu tự động giữa View và ViewModel thông qua giao diện INotifyPropertyChanged. Khi giá trị của một Property trong ViewModel thay đổi, nó sẽ kích hoạt sự kiện PropertyChanged, từ đó thông báo cho View cập nhật lại UI.

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

Sự khác biệt cốt lõi giữa phương thức FirstOrDefault và SingleOrDefault trong Entity Framework là gì và khi nào nên sử dụng từng phương thức?

Junior

Phân tích bản chất cơ chế hoạt động

Trong Entity Framework, cả FirstOrDefault và SingleOrDefault đều dùng để truy vấn lấy ra một phần tử duy nhất thỏa mãn điều kiện từ cơ sở dữ liệu. Tuy nhiên, hành vi và ngoại lệ của chúng 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...
1671

Làm thế nào để xử lý hiện tượng N+1 Query Problem khi sử dụng Entity Framework và dấu hiệu nhận biết là gì?

Junior

Phân tích bản chất cơ chế hoạt động

Hiện tượng N+1 Query Problem xảy ra khi Entity Framework thực hiện một câu lệnh SQL ban đầu để lấy danh sách N bản ghi bảng cha, sau đó tiếp tục thực hiện thêm N câu lệnh SQL riêng lẻ để lấy dữ liệu bảng con cho từng bản ghi cha.

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

Sự khác biệt giữa AsNoTracking và truy vấn thông thường trong Entity Framework là gì? Khi nào Junior cần áp dụng?

Junior

Phân tích bản chất cơ chế hoạt độ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...
1673

Lỗi InvalidOperationException do Multiple Active Result Sets (MARS) trong Entity Framework thường phát sinh từ đâu và cách khắc phục?

Junior

Phân tích bản chất cơ chế hoạt động

Multiple Active Result Sets (MARS) là tính năng cho phép thực hiện nhiều tập kết quả (result sets) trên cùng một kết nối cơ sở dữ liệu. Lỗi liên quan đến MARS thường xảy ra trong Entity Framework khi bạn đang duyệt qua một tập kết quả bằng phương thức trả về kiểu IEnumerable (chưa thực thi ngay lập tức qua ToList()) nhưng lại mở một câu lệnh truy vấn khác trên cùng một DbContext instance.

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

Làm thế nào để thực hiện phân trang dữ liệu (Pagination) hiệu quả trong Entity Framework với khối lượng dữ liệu lớn hàng triệu bản ghi?

Junior

Phân tích bản chất cơ chế hoạt động

Khi làm việc với bảng dữ liệu lớn, lập trình viên thường dùng hai phương pháp phân trang:

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

Cấu trúc một Trie Node cơ bản trong các bài toán thực tế nên được thiết kế như thế nào để vừa đảm bảo hiệu năng tra cứu, vừa tiết kiệm bộ nhớ cho lập trình viên cấp độ Junior?

Junior

Khi thiết kế một Trie Node cho các ứng dụng thực tế, lập trình viên cần cân nhắc giữa tốc độ truy xuất và dung lượng bộ nhớ tiêu thụ. Dưới đây là các phương án thiết kế phổ biế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...
1676

Làm thế nào để triển khai hàm chèn (Insert) một từ vào cấu trúc dữ liệu Trie và phân tích độ phức tạp thời gian, không gian của thao tác này?

Junior

Thao tác chèn (Insert) là nền tảng khi xây dựng một Trie. Để thực hiện, ta duyệt qua từng ký tự của từ cần chèn, đi từ gốc (Root) và kiểm tra xem ký tự đó đã tồn tại trong các node con chưa.

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

Sự khác biệt cốt lõi giữa thuật toán tìm kiếm từ hoàn chỉnh (Search) và tìm kiếm theo tiền tố (StartsWith) trong Trie là gì và cài đặt chúng ra sao?

Junior

Cả hai thao tác Search và StartsWith đều dựa trên việc duyệt qua các node con theo từng ký tự của chuỗi đầu vào, nhưng điểm khác biệt nằm ở điều kiện kiểm tra khi kết thúc quá trình duyệ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...
1678

Làm thế nào để xử lý việc xóa một từ (Delete) khỏi cấu trúc dữ liệu Trie mà không làm ảnh hưởng đến các từ khác có chung tiền tố?

Junior

Thao tác xóa (Delete) trong Trie phức tạp hơn nhiều so với Insert hay Search vì một node có thể được chia sẻ bởi nhiều từ khác nhau. Nếu xóa tùy tiện, ta có thể làm mất các từ liên quan.

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

Tại sao cấu trúc dữ liệu Trie lại ưu việt hơn so với cấu trúc dữ liệu Hash Table thông thường khi triển khai tính năng gợi ý từ khóa tự động (Autocomplete)?

Junior

Trong các hệ thống Web hiện đại, tính năng Autocomplete yêu cầu khả năng truy xuất theo tiền tố (Prefix Matching) cực kỳ nhanh chóng. Khi so sánh Trie với Hash Table, ta thấy rõ các điểm khác biệt về mặt kiến trú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...
1680

Tại sao việc sử dụng SELECT * trong các câu lệnh truy vấn lại bị coi là phản mẫu (anti-pattern) trong môi trường Enterprise?

Junior

Lý do kỹ thuật

  1. Hiệu năng mạng và bộ nhớ: Truy vấn dư thừa dữ liệu không cần thiết làm tăng tải lượng băng thông mạng và chiếm dụng bộ nhớ đệm (Buffer Pool) của SQL Server.
  2. Tối ưu hóa Index: Việc chỉ định rõ cột giúp SQL Server tận dụng được các Covering Index (Index chứa sẵn các cột cần lấy), từ đó tránh được thao tác Key Lookup tốn kém.
  3. Tính ổn định của ứng dụng: Nếu bảng thay đổi cấu trúc (thêm cột, đổi kiểu dữ liệu), ứng dụng có thể bị lỗi logic hoặc lỗi mapping dữ liệu nếu code sử dụng SELECT *.

Ví dụ thực tế

Thay vì viết: SELECT * FROM Employees WHERE DepartmentID = 1; Nên viết: SELECT EmployeeID, FullName, Email FROM Employees WHERE DepartmentID = 1;

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