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

Trong lập trình hướng đối tượng, sự khác biệt cốt lõi giữa Abstract Class và Interface là gì và tiêu chí nào để Junior lựa chọn trong dự án Enterprise?

Junior

Bản chất vấn đề

  • Abstract Class: Đại diện cho quan hệ 'Is-A', cho phép chia sẻ mã nguồn chung (state thông qua các biến instance và logic thông qua các phương thức có sẵn). Một lớp chỉ có thể kế thừa một Abstract Class.
  • Interface: Đại diện cho hợp đồng hành vi 'Can-Do', định nghĩa các phương thức mà lớp cài đặt bắt buộc phải có. Từ Java 8 trở lên, Interface hỗ trợ phương thức mặc định (default methods). Một lớp có thể cài đặt nhiều Interface.

Tiêu chí lựa chọn

  1. Sử dụng Abstract Class khi:
    • Cần chia sẻ mã nguồn, trạng thái (fields) chung giữa các lớp có họ hàng gần.
    • Cần kiểm soát quyền truy cập (protected, private modifiers) đối với các thành viên bên trong.
  2. Sử dụng Interface khi:
    • Cần định nghĩa các hành vi chung cho các lớp không có quan hệ họ hàng.
    • Áp dụng đa kế thừa hành vi (Multiple Inheritance of Type) trong thiết kế.

Lưu ý thực chiến

Junior thường dùng Abstract Class quá mức cần thiết. Hãy ưu tiên dùng Interface để giữ cho thiết kế lỏng lẻo (Loose Coupling) và dễ dàng viết Unit Test với Mock Objects.

392

Làm thế nào để áp dụng nguyên lý Dependency Inversion Principle (DIP) để loại bỏ sự phụ thuộc trực tiếp giữa tầng Business Logic và tầng Database trong ứng dụng Enterprise?

Junior

Bản chất vấn đề

Dependency Inversion Principle phát biểu rằng các module cấp cao không nên phụ thuộc vào các module cấp thấp; cả hai nên phụ thuộc vàoabstraction. Hơn nữa, abstraction không nên phụ thuộc vào chi tiết mà chi tiết nên phụ thuộc vào abstraction.

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

Trong PostgreSQL, sự khác nhau cơ bản giữa câu lệnh DELETE, TRUNCATE và DROP là gì, và lập trình viên Junior cần lưu ý những điểm nào về mặt hiệu năng cũng như giao dịch (Transaction)?

Junior

Trong PostgreSQL, mặc dù cả ba câu lệnh DELETE, TRUNCATE và DROP đều được sử dụng để xóa dữ liệu hoặc cấu trúc bảng, nhưng bản chất và cơ chế hoạt động 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...
394

Trong PostgreSQL, tại sao việc sử dụng kiểu dữ liệu VARCHAR không có giới hạn độ dài (ví dụ: chỉ viết VARCHAR hoặc TEXT) không ảnh hưởng đáng kể đến hiệu năng so với VARCHAR(n), và lập trình viên nên chọn loại nào trong thiết kế Enterprise?

Junior

Trong nhiều hệ quản trị cơ sở dữ liệu khác, việc chỉ định kích thước cụ thể như VARCHAR(50) giúp tối ưu hóa bộ nhớ cấp phát. Tuy nhiên, trong PostgreSQL, cơ chế lưu trữ có sự khác biệt rõ rệ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...
395

Trong PostgreSQL, Index đóng vai trò gì trong việc tăng tốc độ truy vấn, và lập trình viên cần lưu ý những bẫy hiệu năng nào khi lạm dụng quá nhiều Index trong một bảng dữ liệu Enterprise?

Junior

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

Giải thích khái niệm N+1 Query Problem khi ứng dụng backend tương tác với PostgreSQL qua ORM, và cách lập trình viên xử lý vấn đề này trong thực tế?

Junior
  1. Khái niệm N+1 Query Problem:
  • Vấn đề N+1 xảy ra khi ứng dụng thực hiện 1 câu lệnh truy vấn để lấy danh sách các bản ghi cha (1 query), sau đó với mỗi bản ghi cha lại thực hiện thêm 1 câu lệnh truy vấn riêng lẻ để lấy danh sách bản ghi con (N queries).
  • Tổng cộng hệ thống phải thực hiện 1 + N câu lệnh truy vấn thay vì chỉ cần 1 hoặc 2 câu lệnh kết hợp.
  1. Ví dụ thực tế:
  • Ứng dụng cần lấy danh sách 100 người dùng (Users) và kèm theo thông tin bài viết (Posts) của từng người.
  • Truy vấn 1: SELECT * FROM users; (trả về 100 users).
  • 100 truy vấn tiếp theo: SELECT * FROM posts WHERE user_id = ?; (chạy lặp lại 100 lần).
  • Kết quả là 101 lượt giao tiếp mạng (Network Round-trips) giữa Backend Server và PostgreSQL Server, làm chậm hệ thống nghiêm trọng.
  1. Cách giải quyết:
  • Sử dụng kỹ thuật Eager Loading (như JOIN, INCLUDE hoặc FETCH JOIN tùy theo cấu hình của ORM như Hibernate, Sequelize, TypeORM, Prisma) để lấy toàn bộ dữ liệu cha và con trong một hoặc hai câu lệnh truy vấn duy nhất.
  • Sử dụng câu lệnh SQL kết hợp hàm JSON aggregation (như json_agg hoặc jsonb_build_object) để gom nhóm dữ liệu ngay tại tầng cơ sở dữ liệu nếu thiết kế API trả về cấu trúc phân cấp phức tạp.

Lưu ý thực chiến cho Junior:

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

Trong kiến trúc PWA, tại sao việc sử dụng HTTPS là yêu cầu bắt buộc đối với Service Worker và điều này ảnh hưởng thế nào đến bảo mật ứng dụng?

Junior

Service Worker có khả năng can thiệp vào các request mạng, chỉnh sửa response và truy cập vào dữ liệu nhạy cảm của người dùng. Nếu không có HTTPS, kẻ tấn công có thể thực hiện tấn công Man-in-the-Middle (MitM) để chèn mã độc vào Service Worker, từ đó chiếm quyền điều khiển toàn bộ ứng dụng trên trình duyệt của 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...
398

Làm thế nào để xử lý việc người dùng thay đổi dữ liệu khi đang ở trạng thái offline bằng cách sử dụng Background Sync API?

Junior

Background Sync API cho phép trì hoãn các hành động của người dùng cho đến khi thiết bị có kết nối mạng ổn định. Quy trình thực hiện bao gồm:

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

Sự khác biệt giữa Scope của Service Worker và phạm vi hoạt động của nó là gì? Điều gì xảy ra nếu bạn đặt file Service Worker ở thư mục con?

Junior

Scope xác định phạm vi các trang mà Service Worker có quyền kiểm soát. Mặc định, scope của Service Worker được xác định bởi vị trí đặt file của 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...
400

Làm thế nào để tối ưu hóa kích thước của Web App Manifest nhằm đảm bảo ứng dụng khởi động nhanh nhất có thể?

Junior

Web App Manifest là file JSON cung cấp thông tin về PWA. Để tối ưu hiệu 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...
401

Tại sao việc sử dụng IndexedDB thay vì LocalStorage là lựa chọn bắt buộc cho các PWA có dữ liệu phức tạp?

Junior

LocalStorage có những hạn chế nghiêm trọng trong môi trường PWA:

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

Trong Reactive Programming, tại sao việc sử dụng toán tử tap lại được khuyến khích cho các tác vụ side-effect thay vì thực hiện trực tiếp bên trong toán tử map?

Junior

Toán tử tap được thiết kế chuyên biệt để thực hiện các side-effect (như ghi log, cập nhật trạng thái UI, hoặc debug) mà không làm thay đổi giá trị của luồng dữ liệu (stream).

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

Toán tử forkJoin hoạt động như thế nào và tại sao nó lại là giải pháp tối ưu khi cần thực hiện nhiều HTTP Request song song trong ứng dụng Enterprise?

Junior

forkJoin là toán tử dùng để kết hợp nhiều Observable và chỉ phát ra giá trị duy nhất khi tất cả các Observable đầu vào đã hoàn thành (complete).

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

Sự khác biệt giữa toán tử delay và delayWhen trong Reactive Programming là gì và khi nào nên sử dụng delayWhen?

Junior

Cả hai toán tử đều dùng để trì hoãn việc phát dữ liệu, nhưng có sự khác biệt về tính linh hoạ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...
405

Tại sao việc sử dụng toán tử retry hoặc retryWhen lại quan trọng trong việc xây dựng các ứng dụng có tính ổn định cao (Resilience) khi kết nối với API?

Junior

Trong môi trường Enterprise, mạng không ổn định là điều khó tránh khỏi. Việc sử dụng retry giúp ứng dụng tự động phục hồi mà không cần người dùng phải tải lại 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...
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