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

Nguyên tắc FIRST trong Unit Testing là gì? Hãy phân tích từng tiêu chí và cho ví dụ về việc vi phạm nguyên tắc này trong dự án thực tế.

Junior

Nguyên tắc FIRST là tập hợp các chuẩn mực vàng do lập trình viên huyền thoại Robert C. Martin (Uncle Bob) đúc kết nhằm xây dựng một Test Suite chất lượng cao, chạy nhanh và đáng tin cậy trong các dự án 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...
1232

Value Types (Struct, Enum) và Reference Types (Class) trong Swift khác nhau như thế nào và tiêu chí lựa chọn nào cần áp dụng cho ứng dụng Enterprise?

Junior

1. Sự khác biệt cốt lõ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...
1233

Optional Chaining và Optional Binding (if let, guard let) trong Swift hoạt động như thế nào và best practices khi xử lý giá trị nil trong ứng dụng thực tế?

Junior

1. 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...
1234

Closure trong Swift là gì và cách sử dụng Capture List để tránh lỗi Memory Leak (Retain Cycle) khi làm việc với các tác vụ bất đồng bộ?

Junior

1. Bản chất của Closure

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

Extension trong Swift là gì và những điểm cần lưu ý khi áp dụng Extension để mở rộng chức năng của các kiểu dữ liệu có sẵn?

Junior

1. Định nghĩa và Tính nă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...
1236

Giữa Delegate Pattern và Closures trong Swift, khi nào nên sử dụng phương án nào để truyền dữ liệu giữa các View Controller?

Junior

1. Delegate Pattern

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

Sự khác biệt cốt lõi giữa INNER JOIN và LEFT JOIN trong SQL là gì và lập trình viên cấp độ Junior thường gặp những cạm bẫy nào khi sử dụng chúng?

Junior

Bản chất cơ chế hoạt động

  • INNER JOIN: Chỉ trả về các bản ghi có sự khớp nhau (matching rows) ở cả hai bảng dựa trên điều kiện kết nối (ON clause). Nếu không có bản ghi tương ứng ở bảng bên phải hoặc bên trái, dữ liệu đó sẽ bị loại bỏ hoàn toàn khỏi kết quả.
  • LEFT JOIN: Trả về tất cả các bản ghi từ bảng bên trái (Left Table) và các bản ghi khớp từ bảng bên phải (Right Table). Nếu không tìm thấy bản ghi khớp ở bảng bên phải, các cột tương ứng từ bảng bên phải sẽ nhận giá trị NULL.

Cạm bẫy phổ biến của lập trình viên Junior

  1. Đặt điều kiện của bảng bên phải vào mệnh đề WHERE thay vì ON: Khi sử dụng LEFT JOIN, nếu bạn đặt bộ lọc WHERE right_table.status = 'ACTIVE', vô tình điều kiện này sẽ biến LEFT JOIN thành INNER JOIN vì các giá trị NULL được sinh ra từ LEFT JOIN sẽ bị loại bỏ bởi mệnh đề WHERE.
  2. Hiệu năng truy vấn kém do thiếu Index: Khi thực hiện JOIN trên các cột không có Index, Database Engine sẽ phải thực hiện Nested Loops hoặc Hash Match tốn rất nhiều tài nguyên CPU và I/O.

Ví dụ minh họa

-- Sai lầm phổ biến biến LEFT JOIN thành INNER JOIN
SELECT c.customer_name, o.order_id 
FROM customers c 
LEFT JOIN orders o ON c.id = o.customer_id 
WHERE o.status = 'PENDING';

-- Khắc phục đúng bằng cách đưa điều kiện vào mệnh đề ON hoặc xử lý NULL
SELECT c.customer_name, o.order_id 
FROM customers c 
LEFT JOIN orders o ON c.id = o.customer_id AND o.status = 'PENDING';

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

Luôn xác định rõ chiều dữ liệu chính (Main Entity) trước khi viết câu lệnh JOIN. Đảm bảo các cột tham gia điều kiện ON đã được thiết lập Index đầy đủ để tối ưu hóa Execution Plan.

1238

Tại sao việc sử dụng toán tử LIKE với ký tự đại diện ở đầu chuỗi (như '%abc') lại làm suy giảm hiệu năng nghiêm trọng trong SQL và cách khắc phục?

Junior

Bản chất cơ chế hoạt động

Khi bạn thực hiện tìm kiếm với mệnh đề WHERE column_name LIKE 'abc%', Database Engine có thể tận dụng B-Tree Index vì nó biết rõ chuỗi bắt đầu từ đâu và tiến hành Index Seek hiệu quả. Ngược lại, khi sử dụng LIKE '%abc' hoặc LIKE '%abc%', ký tự % ở đầu buộc hệ thống phải quét toàn bộ Index hoặc toàn bộ bảng (Full Table Scan / Index Scan).

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

Sự khác biệt giữa câu lệnh TRUNCATE và DELETE trong SQL là gì? Khi nào lập trình viên nên chọn loại nào trong môi trường sản xuất?

Junior

Bản chất cơ chế hoạt động

  • DELETE: Là một câu lệnh DML (Data Manipulation Language). Nó xóa dữ liệu từng dòng một và ghi lại từng thao tác vào Transaction Log. Cho phép sử dụng mệnh đề WHERE để xóa có điều kiện, kích hoạt các Trigger liên quan và có thể Rollback nếu nằm trong một Transaction.
  • TRUNCATE: Là một câu lệnh DDL (Data Definition Language). Nó hoạt động bằng cách giải phóng các trang dữ liệu (data pages) được cấp phát cho bảng thay vì xóa từng dòng. Không ghi chi tiết từng dòng vào Transaction Log, không kích hoạt Trigger, không thể dùng mệnh đề WHERE và tự động reset lại giá trị Identity (Auto-increment) về ban đầu.

So sánh hiệu năng và an toàn

  • Hiệu năng: TRUNCATE nhanh hơn rất nhiều so với DELETE, đặc biệt trên các bảng có hàng triệu bản ghi vì nó ít tốn tài nguyên Log và khóa (locks) hơn.
  • An toàn: DELETE an toàn hơn khi cần xóa có chọn lọc và có thể khôi phục dữ liệu nếu có lỗi xảy ra trong Transaction. TRUNCATE cực kỳ nguy hiểm nếu thực hiện nhầm vì dữ liệu bị xóa vĩnh viễn và không thể Rollback trong hầu hết các cấu hình thông thường.

Ví dụ minh họa

-- Xóa toàn bộ dữ liệu bảng logs nhưng giữ lại cấu trúc và reset identity
TRUNCATE TABLE system_logs;

-- Xóa dữ liệu có điều kiện trong bảng orders
DELETE FROM orders WHERE status = 'CANCELLED';

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

Trong môi trường Production, không bao giờ chạy TRUNCATE thủ công mà không có sự đồng ý của quản trị viên hệ thống. Hãy sử dụng DELETE kết hợp với Batching (chia nhỏ số lượng bản ghi xóa mỗi lần) để tránh gây ra hiện tượng Lock Escalation làm treo hệ thống.

1240

Tại sao việc sử dụng hàm trên cột trong mệnh đề WHERE (như YEAR(created_date) = 2023) lại làm mất tác dụng của Index và cách viết lại tối ưu?

Junior

Bản chất cơ chế hoạt động

Khi bạn xây dựng một Index trên cột created_date, cấu trúc B-Tree được sắp xếp theo giá trị thời gian thực tế của từng bản ghi. Khi bạn bọc cột đó trong một hàm như YEAR(created_date) hoặc CONVERT(VARCHAR, created_date), Database Engine buộc phải tính toán giá trị của hàm này cho mọi dòng dữ liệu trong bảng trước khi so sánh. Điều này làm cho Index hiện có trở nên vô tác dụng, dẫn đến Full Table Scan.

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

Mục đích và cách sử dụng câu lệnh COALESCE trong SQL là gì? Tại sao nó là lựa chọn tốt hơn so với hàm ISNULL hoặc IFNULL trong các kịch bản thực tế?

Junior

Bản chất cơ chế hoạt động

  • COALESCE: Là một hàm chuẩn thuộc chuẩn SQL ANSI, nhận vào một danh sách các biểu thức và trả về giá trị khác NULL đầu tiên từ trái sang phải. Nếu tất cả các biểu thức đều là NULL, nó sẽ trả về NULL.
  • ISNULL / IFNULL: Thường là các hàm độc quyền (proprietary functions) của từng hệ quản trị cơ sở dữ liệu cụ thể (như ISNULL trong SQL Server hay IFNULL trong MySQL).

Ưu điểm vượt trội của COALESCE

  1. Tính tương thích cao (Portability): Vì tuân thủ chuẩn ANSI SQL, hàm COALESCE hoạt động nhất quán trên hầu hết các hệ quản trị cơ sở dữ liệu phổ biến như SQL Server, PostgreSQL, MySQL và Oracle.
  2. Hỗ trợ đa tham số: Bạn có thể truyền vào nhiều hơn hai giá trị để kiểm tra tuần tự.
  3. Xử lý kiểu dữ liệu chuẩn xác: COALESCE tự động suy diễn kiểu dữ liệu (data type precedence) cho giá trị trả về dựa trên các tham số được truyền vào.

Ví dụ minh họa

-- Sử dụng COALESCE để hiển thị tên thay thế nếu tên chính bị NULL
SELECT employee_id, COALESCE(preferred_name, middle_name, first_name, 'No Name') AS display_name
FROM employees;

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

Khi thiết kế các báo cáo hoặc API trả về dữ liệu cho frontend, việc sử dụng COALESCE giúp giảm thiểu tối đa các lỗi liên quan đến NullPointerException hoặc giá trị undefined ở tầng ứng dụng, đồng thời giúp câu lệnh SQL gọn gàng hơn rất nhiều so với việc lồng nhiều câu lệnh CASE WHEN phức tạp.

1242

Trong quá trình phát triển ứng dụng thời gian thực với WebSockets, tại sao việc theo dõi và quản lý trạng thái kết nối thông qua sự kiện kết nối và ngắt kết nối lại rất quan trọng đối với Junior developer?

Junior

Việc quản lý trạng thái kết nối thông qua các sự kiện kết nối và ngắt kết nối là cốt lõi trong lập trình WebSockets. Đối với một lập trình viên cấp độ Junior, việc hiểu rõ vòng đời của một kết nối giúp ngăn chặn các vấn đề nghiêm trọng như rò rỉ bộ nhớ, treo kết nối không hợp lệ và cung cấp trải nghiệm người dùng tốt hơ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...
1243

Làm thế nào để xử lý việc định dạng và phân tích dữ liệu JSON khi gửi và nhận qua WebSockets một cách an toàn nhằm tránh làm sập ứng dụng?

Junior

Giao thức WebSockets truyền tải dữ liệu dưới dạng chuỗi văn bản hoặc mảng byte nhị phân. Dữ liệu JSON là lựa chọn phổ biến, nhưng việc phân tích sai cú pháp JSON có thể gây ra ngoại lệ làm sập toàn bộ tiến trình Node.js của Server.

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

Tại sao các lập trình viên cấp độ Junior cần hiểu rõ về cơ chế đồng bộ hóa luồng sự kiện (Event-driven) khi lập trình ứng dụng WebSocket phía Client?

Junior

Mô hình lập trình WebSockets dựa hoàn toàn trên sự kiện (Event-driven). Phía Client phải tương tác với Server thông qua việc lắng nghe các sự kiện đến và gửi đi các hành động khi có sự kiện từ 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...
1245

Khi kiểm thử (Testing) các tính năng sử dụng WebSockets trong quá trình phát triển, những vấn đề tiềm ẩn nào thường xuất hiện ở môi trường mạng cục bộ mà Junior hay bỏ qua?

Junior

Khi kiểm thử ứng dụng WebSockets ở môi trường phát triển cục bộ (Localhost), độ trễ mạng gần như bằng không và kết nối luôn ổn định. Tuy nhiên, khi đưa lên môi trường thực tế, các vấn đề về mạng không ổn định sẽ bộc lộ.

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