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

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

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

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.

754

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.

755

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.

756

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

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

Làm thế nào để phòng chống lỗ hổng Cross-Site Scripting (XSS) trong các ứng dụng Web hiện đại sử dụng các framework như React hoặc Vue?

Junior

Bản chất lỗ hổng XSS

Cross-Site Scripting (XSS) xảy ra khi ứng dụng web cho phép kẻ tấn công chèn các mã độc (thường là JavaScript) vào trang web được hiển thị cho những người dùng khác. Mã độc này có thể đánh cắp Session Cookie, Token xác thực hoặc thực hiện các hành động mạo danh người 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...
759

Lỗ hổng Cross-Site Request Forgery (CSRF) là gì và tại sao việc sử dụng SameSite Cookie lại là phương pháp hiệu quả để ngăn chặn?

Junior

Bản chất lỗ hổng CSRF

Cross-Site Request Forgery (CSRF) là cuộc tấn công mà kẻ tấn công lừa người dùng đã đăng nhập thực hiện các hành động không mong muốn trên một ứng dụng web mà họ đang có phiên làm việc hợp lệ. Kẻ tấn công lợi dụng việc trình duyệt tự động đính kèm Cookie xác thực vào mọi HTTP request gửi đến server đích, bất kể request đó bắt nguồn từ đâ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...
760

Tại sao việc sử dụng Prepared Statements lại là tiêu chuẩn vàng để ngăn chặn lỗ hổng SQL Injection thay vì chỉ dựa vào việc lọc chuỗi ký tự?

Junior

Bản chất lỗ hổng SQL Injection

SQL Injection (SQLi) xảy ra khi ứng dụng web nhận dữ liệu đầu vào từ người dùng và trực tiếp nối (concatenation) vào câu lệnh truy vấn SQL mà không qua kiểm tra hoặc xử lý biên dịch đúng đắn. Kẻ tấn công có thể thao túng cấu trúc câu lệnh SQL để truy xuất, chỉnh sửa hoặc xóa toàn bộ 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...
761

Phân biệt sự khác nhau giữa CORS (Cross-Origin Resource Sharing) và các cơ chế bảo mật phía Server, và việc cấu hình CORS sai lầm dẫn đến rủi ro gì?

Junior

Bản chất của CORS

CORS (Cross-Origin Resource Sharing) là một cơ chế bảo mật của trình duyệt (Browser security mechanism) dựa trên Same-Origin Policy. Nó cho phép một trang web từ một nguồn (origin) này có thể yêu cầu tài nguyên từ một nguồn khác khác tên miền, cổng hoặc giao thứ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...
762

Tại sao việc kiểm soát phân quyền dựa trên đối tượng (Insecure Direct Object References - IDOR) lại nguy hiểm trong các ứng dụng Enterprise và cách khắc phục?

Junior

Bản chất lỗ hổng IDOR

Insecure Direct Object References (IDOR) xảy ra khi ứng dụng sử dụng các tham số định danh trực tiếp từ phía người dùng (như ID tài khoản, mã hóa đơn, tên file) để truy xuất dữ liệu nội bộ mà không thực hiện kiểm tra xem người dùng hiện tại có quyền sở hữu hoặc quyền truy cập đối tượng đó hay khô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...
763

Trong lập trình hướng đối tượng, tại sao việc khởi tạo quá nhiều thuộc tính trong constructor lại là một dấu hiệu xấu về thiết kế (Anti-pattern) và cách khắc phục như thế nào?

Junior

Bản chất vấn đề

Khi một class có constructor nhận vào quá nhiều tham số (thường từ 5 tham số trở lên), đây là dấu hiệu của lỗi thiết kế được gọi là Telescoping Constructor Anti-pattern hoặc class đang vi phạm Single Responsibility Principle (SRP). Điều này làm cho việc khởi tạo đối tượng trở nên khó đọc, dễ truyền nhầm thứ tự các tham số và khó bảo trì khi class thay đổi cấu 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...
764

Sự khác biệt cốt lõi giữa tính đóng gói (Encapsulation) và tính ẩn thông tin (Information Hiding) trong lập trình hướng đối tượng là gì?

Junior

Bản chất vấn đề

Nhiều lập trình viên cấp độ Junior thường nhầm lẫn hoặc đánh đồng giữa tính đóng gói (Encapsulation) và ẩn thông tin (Information Hiding), mặc dù chúng có ý nghĩa và mục đích bổ trợ khác nhau trong thiết kế 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...
765

Tại sao việc lạm dụng từ khóa static trong lập trình hướng đối tượng lại vi phạm các nguyên lý thiết kế và gây khó khăn cho việc kiểm thử tự động (Unit Test)?

Junior

Bản chất vấn đề

Từ khóa static gắn liền với phạm vi lớp (Class-level) thay vì phạm vi thể hiện (Instance-level). Khi một phương thức hoặc thuộc tính được khai báo là static, nó tồn tại duy nhất trong suốt vòng đời của ứng dụng và được chia sẻ toàn cụ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...
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