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

Trong ADO.NET, tại sao việc sử dụng câu lệnh 'using' khi khởi tạo các đối tượng SqlConnection, SqlCommand và SqlDataReader lại là quy tắc bắt buộc trong phát triển Enterprise?

Junior

Trong ADO.NET, các đối tượng như SqlConnection, SqlCommand và SqlDataReader đều triển khai giao diện IDisposable vì chúng nắm giữ các tài nguyên không được quản lý (unmanaged resources) như kết nối mạng hoặc handle của hệ điều hành. Việc sử dụng khối 'using' đảm bảo rằng phương thức Dispose() được gọi tự động ngay cả khi có ngoại lệ xảy ra, giúp giải phóng tài nguyên ngay lập tức thay vì chờ đợi Garbage Collection. Nếu không giải phóng đúng cách, ứng dụng sẽ nhanh chóng rơi vào tình trạng cạn kiệt Connection Pool, dẫn đến lỗi 'Timeout expired' hoặc treo hệ thống. Ví dụ:

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

Sự khác biệt giữa thuộc tính 'Initial Catalog' và 'Database' trong chuỗi kết nối (Connection String) của ADO.NET là gì và khi nào nên sử dụng từng loại?

Junior

Thực tế, 'Initial Catalog' và 'Database' là hai từ khóa đồng nghĩa trong chuỗi kết nối của SQL Server ADO.NET. Cả hai đều chỉ định tên cơ sở dữ liệu mặc định mà kết nối sẽ truy cập khi mở. Không có sự khác biệt về mặt kỹ thuật hay hiệu năng giữa chúng. Tuy nhiên, trong các dự án Enterprise, việc sử dụng 'Initial Catalog' được khuyến khích hơn vì đây là thuật ngữ chuẩn được Microsoft tài liệu hóa chính thức cho SQL Server, giúp mã nguồn trở nên đồng nhất và dễ bảo trì hơn đối với các lập trình viên khác trong đội ngũ.

888

Khi làm việc với ADO.NET, tại sao chúng ta nên ưu tiên sử dụng SqlDbType thay vì chỉ truyền giá trị trực tiếp vào SqlParameter?

Junior

Việc chỉ định rõ SqlDbType khi khai báo SqlParameter mang lại ba lợi ích 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...
889

Cơ chế 'Connection Pooling' trong ADO.NET hoạt động như thế nào và làm sao để kiểm soát số lượng kết nối tối đa trong một ứng dụng?

Junior

Connection Pooling là cơ chế giúp tái sử dụng các kết nối cơ sở dữ liệu thay vì tạo mới mỗi khi cần. Khi ứng dụng đóng kết nối (Close), kết nối đó không bị hủy thực sự mà được đưa vào một 'pool' để chờ tái sử dụng cho yêu cầu tiếp theo. Điều này giúp giảm đáng kể chi phí thiết lập kết nối (handshake). Để kiểm soát số lượng, chúng ta cấu hình trong Connection String thông qua các tham số:

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

Làm thế nào để thực hiện truy vấn dữ liệu an toàn với ADO.NET trong trường hợp tên bảng hoặc tên cột cần được truyền vào động từ phía người dùng?

Junior

Việc sử dụng Parameterized Queries thông thường không áp dụng được cho tên bảng hoặc tên cột (vì tham số chỉ thay thế cho giá trị dữ liệu). Để xử lý an toàn, tuyệt đối không được ghép chuỗi (concatenation) trực tiếp vì sẽ dẫn đến SQL Injection. Cách giải quyết là sử dụng danh sách trắng (Whitelist):

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

Sự khác biệt cơ bản giữa kiểu dữ liệu VARCHAR và CHAR trong MySQL là gì và khi nào nên ưu tiên sử dụng từng loại trong thiết kế cơ sở dữ liệu cho ứng dụng thực tế?

Junior

Trong MySQL, việc lựa chọn giữa VARCHAR và CHAR ảnh hưởng trực tiếp đến không gian lưu trữ và hiệu suất của bả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...
892

Trong MySQL, tại sao việc sử dụng câu lệnh SELECT * lại được coi là phản mẫu (anti-pattern) trong môi trường sản xuất (production) có tải cao?

Junior

Sử dụng SELECT * là lỗi phổ biến của lập trình viên Junior nhưng lại tiềm ẩn nhiều rủi ro lớn đối với hiệu năng và độ ổn định của hệ thống Enterprise.

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

Giải thích vai trò của các Storage Engines trong MySQL, sự khác biệt chính giữa InnoDB và MyISAM, và tại sao InnoDB lại là lựa chọn mặc định trong các hệ thống hiện đại?

Junior

Storage Engine (Bộ lưu trữ) là thành phần cốt lõi chịu trách nhiệm quản lý cách dữ liệu được lưu trữ, đọc và ghi trên đĩa trong cơ sở dữ liệu MySQL.

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

Sự khác biệt giữa câu lệnh DELETE, TRUNCATE và DROP trong MySQL là gì? Hãy phân tích dưới góc độ hiệu năng và cơ chế hoạt động của InnoDB.

Junior

Ba câu lệnh này đều dùng để xóa dữ liệu hoặc cấu trúc trong MySQL nhưng có bản chất cơ chế hoạt độ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...
895

Trong MySQL, khái niệm NULL là gì và tại sao việc lạm dụng cột cho phép giá trị NULL lại có thể gây ảnh hưởng xấu đến hiệu năng truy vấn và logic ứng dụng?

Junior

Giá trị NULL trong cơ sở dữ liệu biểu thị sự vắng mặt của một giá trị hoặc giá trị không xác định. Nó không giống với số 0 hay chuỗi rỗ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...
896

Trong ASP.NET Core, sự khác biệt giữa IActionFilter và IAsyncActionFilter là gì và khi nào bạn nên ưu tiên sử dụng phiên bản Async?

Junior

Phân tích cơ chế

  • IActionFilter: Cung cấp các phương thức đồng bộ OnActionExecuting và OnActionExecuted. Nó phù hợp với các tác vụ xử lý nhanh, không liên quan đến I/O.
  • IAsyncActionFilter: Cung cấp phương thức OnActionExecutionAsync. Đây là tiêu chuẩn hiện đại trong .NET Core.

Tại sao nên dùng Async?

  • Khi filter cần thực hiện các tác vụ I/O như truy vấn Database, gọi API bên thứ ba hoặc ghi log vào hệ thống tập trung.
  • Sử dụng Async giúp giải phóng Thread từ Thread Pool trong khi chờ đợi kết quả I/O, từ đó tăng khả năng phục vụ (Scalability) của ứng dụng.

Ví dụ code

public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
    // Logic trước khi thực thi Action
    await next(); // Gọi Action tiếp theo
    // Logic sau khi thực thi Action
}

Lưu ý: Luôn ưu tiên IAsyncActionFilter để tránh hiện tượng Thread Starvation trong các ứng dụng Enterprise.

897

Làm thế nào để quản lý cấu hình (Configuration) trong ASP.NET Core một cách bảo mật, tránh việc lộ các thông tin nhạy cảm như Connection String hoặc API Key trong Source Code?

Junior

Giải pháp thực chiến

  • User Secrets: Chỉ sử dụng trong môi trường Development. Dữ liệu được lưu trữ ngoài thư mục dự án, tránh bị commit lên Git.
  • Environment Variables: Sử dụng cho môi trường Production. Các biến môi trường được thiết lập trực tiếp trên Server hoặc Container (Docker).
  • Azure Key Vault / AWS Secrets Manager: Đối với các hệ thống Enterprise, đây là tiêu chuẩn để quản lý tập trung các Secret.

Cách triển khai

Trong Program.cs, ASP.NET Core tự động nạp các nguồn cấu hình theo thứ tự ưu tiên. Bạn nên sử dụng IOptions<T> pattern để truy xuất cấu hình một cách type-safe thay vì truy cập trực tiếp qua IConfiguration.

898

Tại sao việc sử dụng trực tiếp các Entity Framework Core Model (Database Entities) làm Data Transfer Object (DTO) trong các API Response lại là một rủi ro bảo mật và kiến trúc?

Junior

Các rủi ro chính

  1. Over-posting/Mass Assignment: Người dùng có thể gửi các thuộc tính không mong muốn (ví dụ: IsAdmin = true) và EF Core sẽ tự động cập nhật vào Database nếu bạn dùng trực tiếp Entity.
  2. Lộ dữ liệu nhạy cảm: Entity thường chứa các trường như PasswordHash, InternalNotes mà bạn không muốn trả về cho Client.
  3. Tight Coupling: Khi thay đổi cấu trúc Database, API Contract bị thay đổi theo, gây phá vỡ (Breaking Change) cho các ứng dụng Client (Frontend/Mobile).

Giải pháp

Luôn sử dụng DTO (Data Transfer Object) và các thư viện như AutoMapper hoặc Mapster để thực hiện ánh xạ (Mapping) từ Entity sang DTO trước khi trả về cho Client.

899

Trong ASP.NET Core, cơ chế Background Tasks được thực hiện như thế nào và sự khác biệt giữa IHostedService và BackgroundService là gì?

Junior

Cơ chế

ASP.NET Core cung cấp các dịch vụ chạy ngầm (Background Tasks) để thực hiện các công việc định kỳ hoặc xử lý hàng đợ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...
900

Giải thích khái niệm Response Compression trong ASP.NET Core và tại sao nó lại quan trọng đối với việc tối ưu hóa hiệu năng ứng dụng Web?

Junior

Bản chất

Response Compression là kỹ thuật nén dữ liệu (thường là JSON hoặc HTML) trước khi gửi từ Server về Client. Các thuật toán phổ biến là Gzip hoặc Brotli.

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