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

Cơ chế Partial View trong ASP.NET MVC là gì và lợi ích của việc sử dụng nó trong các dự án Enterprise?

Junior

Định nghĩa

Partial View là một file .cshtml chứa một phần giao diện được tái sử dụng ở nhiều nơi trong ứng dụng (ví dụ: Header, Footer, Sidebar, hoặc một bảng danh sách 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...
137

Trong SQL, tại sao việc sử dụng các cột có độ chọn lọc thấp (Low Cardinality) trong Index lại không mang lại hiệu quả cao và cách xử lý trong các bảng dữ liệu lớn?

Junior

Bản chất của Cardinality

Cardinality là số lượng các giá trị duy nhất trong một cột. Cột có độ chọn lọc thấp (Low Cardinality) là cột có ít giá trị duy nhất (ví dụ: cột giới tính, trạng thái đơn hà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...
138

Sự khác biệt giữa các cấp độ cô lập dữ liệu (Isolation Levels) trong SQL ảnh hưởng thế nào đến hiệu năng và tính toàn vẹn dữ liệu?

Junior

Các cấp độ cô lập

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

Trong Solidity, tại sao việc sử dụng tx.origin để xác thực quyền sở hữu (Authentication) lại tiềm ẩn rủi ro bảo mật nghiêm trọng?

Junior

Việc sử dụng tx.origin để kiểm tra quyền truy cập là một lỗ hổng bảo mật kinh điển vì nó đại diện cho địa chỉ tài khoản đã khởi tạo giao dịch ban đầu, không phải địa chỉ của Smart Contract đang gọi hàm. Kẻ tấn công có thể tạo một hợp đồng trung gian (Attacker Contract) để lừa người dùng (hoặc chủ sở hữu hợp đồng) thực hiện một giao dịch gọi vào hợp đồng của kẻ tấn công. Khi đó, tx.origin vẫn là địa chỉ của người dùng, khiến các hàm kiểm tra quyền bị vượt qua. Thay vào đó, hãy luôn sử dụng msg.sender để xác thực vì nó đại diện cho thực thể trực tiếp gọi vào hàm hiện tại. Ví dụ: thay vì require(tx.origin == owner), hãy dùng require(msg.sender == owner).

140

Giải thích khái niệm Shadowing trong Solidity và tại sao nó lại gây ra các lỗi logic khó phát hiện trong quá trình phát triển Smart Contract?

Junior

Shadowing xảy ra khi một biến trong phạm vi con (ví dụ: biến cục bộ hoặc biến trong hợp đồng kế thừa) có cùng tên với một biến trong phạm vi cha hoặc phạm vi toàn cục. Điều này khiến trình biên dịch ghi đè hoặc gây nhầm lẫn khi truy xuất giá trị, dẫn đến việc hợp đồng đọc sai dữ liệu lưu trữ. Để tránh điều này, cần tuân thủ quy tắc đặt tên rõ ràng, sử dụng tiền tố (như hoặc m) cho các biến trạng thái hoặc biến tham số. Trình biên dịch Solidity hiện đại sẽ đưa ra cảnh báo (warning) khi phát hiện shadowing; nhà phát triển tuyệt đối không được bỏ qua các cảnh báo này để đảm bảo tính toàn vẹn của dữ liệu.

141

Trong kiến trúc Blockchain, tại sao việc sử dụng các hàm tạo số ngẫu nhiên (Random Number Generation) trực tiếp trong Smart Contract lại không an toàn?

Junior

Blockchain là môi trường tất định (deterministic), nghĩa là mọi node đều phải tính toán ra cùng một kết quả. Các biến như block.timestamp, block.difficulty hay blockhash đều có thể bị thao túng bởi các thợ đào (miners) hoặc validator để thay đổi kết quả ngẫu nhiên theo ý muốn. Để tạo số ngẫu nhiên an toàn trong Enterprise, cần sử dụng các giải pháp Oracle phi tập trung như Chainlink VRF (Verifiable Random Function). Chainlink VRF cung cấp bằng chứng mã hóa chứng minh tính ngẫu nhiên của con số được tạo ra, đảm bảo tính công bằng và không thể bị can thiệp bởi bất kỳ bên nào.

142

Sự khác biệt giữa việc sử dụng Event và lưu trữ dữ liệu trực tiếp vào Storage trong Smart Contract về mặt chi phí Gas là gì?

Junior

Lưu trữ dữ liệu vào Storage (biến trạng thái) là thao tác tốn kém nhất trong Solidity vì dữ liệu được ghi vĩnh viễn vào trạng thái của blockchain và mọi node đều phải lưu trữ. Ngược lại, Event là cơ chế ghi dữ liệu vào log của giao dịch. Dữ liệu trong Event không thể được truy cập bởi các Smart Contract khác, nhưng nó rẻ hơn đáng kể và cho phép các ứng dụng Frontend (thông qua Web3.js hoặc Ethers.js) truy vấn dữ liệu lịch sử một cách hiệu quả. Kinh nghiệm thực chiến là chỉ lưu trữ vào Storage những dữ liệu cần thiết cho logic của hợp đồng, còn lại hãy sử dụng Event để lưu trữ dữ liệu phục vụ mục đích hiển thị hoặc phân tích.

143

Tại sao việc sử dụng modifier trong Solidity lại được coi là một Best Practice để tối ưu hóa code và đảm bảo tính bảo mật?

Junior

Modifier giúp tách biệt logic kiểm tra (validation logic) ra khỏi logic nghiệp vụ chính của hàm, giúp mã nguồn trở nên sạch sẽ, dễ đọc và dễ bảo trì (DRY - Don't Repeat Yourself). Về mặt bảo mật, nó đảm bảo các điều kiện tiên quyết (như kiểm tra quyền, trạng thái hợp đồng) được thực thi nhất quán trước khi code chính của hàm chạy. Nếu không sử dụng modifier, việc lặp lại các câu lệnh require() ở đầu mỗi hàm dễ dẫn đến sai sót hoặc quên kiểm tra trong các bản cập nhật sau này. Ví dụ: modifier onlyOwner { require(msg.sender == owner); _; } giúp đảm bảo tính an toàn cho các hàm quản trị quan trọng.

144

Trong PWA, tại sao việc sử dụng Cache Storage API lại được ưu tiên hơn so với Cache-Control header của HTTP khi quản lý tài nguyên tĩnh?

Junior

Cache-Control header phụ thuộc hoàn toàn vào cơ chế của trình duyệt và có thể bị ghi đè bởi các chính sách của server hoặc proxy. Ngược lại, Cache Storage API cung cấp khả năng kiểm soát lập trình (programmatic control) hoàn toàn thông qua Service Worker.

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

Làm thế nào để xử lý việc Service Worker bị kẹt ở trạng thái waiting và ngăn chặn việc người dùng phải tải lại trang để áp dụng bản cập nhật mới?

Junior

Khi một Service Worker mới được cài đặt, nó sẽ ở trạng thái waiting cho đến khi tất cả các tab đang mở của ứng dụng cũ được đóng lại. Để ép buộc cập nhật ngay lập tức, ta sử dụng phương thức skipWaiting().

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

Tại sao việc sử dụng Workbox lại được khuyến khích thay vì tự viết các logic Service Worker thủ công trong các dự án Enterprise?

Junior

Việc viết Service Worker thủ công rất dễ dẫn đến lỗi logic, đặc biệt là trong việc quản lý vòng đời (lifecycle) và các chiến lược caching phức tạp. Workbox là một thư viện được Google phát triển nhằm chuẩn hóa các thao tác này.

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

Trong PWA, sự khác biệt giữa Client-side rendering và việc sử dụng Service Worker để phục vụ nội dung là gì?

Junior

Client-side rendering (CSR) chỉ giải quyết vấn đề hiển thị dữ liệu sau khi ứng dụng đã tải xong. Service Worker đóng vai trò như một Proxy nằm giữa ứng dụng và mạng, giúp ứng dụng tải được ngay cả khi không có mạ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...
148

Làm thế nào để tối ưu hóa việc truyền tải dữ liệu giữa Service Worker và Main Thread trong PWA?

Junior

Việc giao tiếp giữa Service Worker và Main Thread thường được thực hiện thông qua PostMessage API. Tuy nhiên, việc truyền dữ liệu lớn có thể gây nghẽn luồng chính (Main Thread).

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

Trong các hệ thống Database, tại sao việc sử dụng câu lệnh SELECT * lại được coi là một Anti-pattern trong môi trường Enterprise và nó ảnh hưởng thế nào đến hiệu năng của ứng dụng?

Junior

Việc sử dụng SELECT * gây ra nhiều vấn đề nghiêm trọng trong các hệ thống quy mô lớ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...
150

Trong thiết kế Database, khi nào bạn nên sử dụng cơ chế Database Normalization (Chuẩn hóa) và khi nào nên cân nhắc Denormalization (Phi chuẩn hóa)?

Junior

Normalization là quá trình tổ chức dữ liệu nhằm giảm thiểu sự dư thừa và đảm bảo tính toàn vẹn 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...
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