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.

Tất cả công nghệ .Net (39) ADO.NET (33) Agile scrum (43) Android (44) Angular (121) API Design (53) Arrays (19) ASP.NET (52) ASP.NET MVC (35) ASP.NET Web API (32) Availability & Reliability (2) Azure (53) Backtracking (7) Big-O Notation (16) Binary Tree (19) Bit Manipulation (9) Blockchain (42) C# (105) Caching (2) CAP Theorem (2) CDN (2) Concurrency (2) Cosmos DB (50) Cryptography (4) CSS (63) Data Structures (69) Databases (50) DDD (2) Dependency Injection (4) Design pattern (23) Devops (32) Divide & Conquer (2) Docker (38) Dynamic Programming (10) Entity Framework (57) Fibonacci Series (4) Flutter (136) Git (63) Go lang (60) Graph Theory (19) GraphQL (71) Greedy Algorithms (7) Hash Tables (25) Heaps and Maps (10) HTML (73) Ionic (29) IOS (75) Java (141) Javascript (137) jQuery (95) Kotlin (60) Kubernetes (27) Laravel (90) Layering & Middleware (2) Linked Lists (17) LINQ (30) Load Balancing (2) Microservices (30) Mongodb (27) MySQL (58) Net core (66) Node.js (119) NoSQL (2) Objective-C (33) OOP (75) Package Managerment (60) PHP (78) PostgreSQL (50) PWA (22) Python (82) Queues (11) React Native (38) React.js (116) Reactive Programming (11) Recursion (5) Redis (25) Ruby (79) Ruby on Rails (121) Rust (88) Searching (18) SOA (2) Software Architecture (3) Software Testing (11) Sorting (13) Spring (78) SQL (43) SQL Server (66) Stacks (10) Strings (17) Swift (89) Systems Design (50) T-SQL (43) Trees (31) Trie (8) Typescript (100) Unit testing (22) UX Design (74) Vue.js (84) Web security (45) WebSockets (25) Xamarin (81)
2671

Làm thế nào để thiết kế và triển khai một thành phần hệ thống giải quyết vấn đề Docker Compose trong chủ đề Docker?

Middle

Khi thiết kế hệ thống ở quy mô lớn với Docker, việc giải quyết bài toán Docker Compose yêu cầu kiến thức vững chắc về kiến trúc phân tán:

  1. Tính sẵn sàng (High Availability): Thiết kế dự phòng (Redundancy) và tự động chuyển vùng khi có lỗi xảy ra để tránh Single Point of Failure.
  2. Khả năng mở rộng (Scalability): Ưu tiên mở rộng theo chiều ngang (Scale Out) và sử dụng các cơ chế lưu trữ bất đồng bộ.
  3. Tính an toàn & giám sát: Thiết kế hệ thống bảo mật Zero-Trust kết hợp thu thập số liệu tập trung (Monitoring, Logging) để xử lý sự cố nhanh chóng.
2672

Làm thế nào để thiết kế và triển khai một thành phần hệ thống giải quyết vấn đề GraphQL Schema trong chủ đề API Design?

Middle

Khi thiết kế hệ thống ở quy mô lớn với API Design, việc giải quyết bài toán GraphQL Schema yêu cầu kiến thức vững chắc về kiến trúc phân tán:

  1. Tính sẵn sàng (High Availability): Thiết kế dự phòng (Redundancy) và tự động chuyển vùng khi có lỗi xảy ra để tránh Single Point of Failure.
  2. Khả năng mở rộng (Scalability): Ưu tiên mở rộng theo chiều ngang (Scale Out) và sử dụng các cơ chế lưu trữ bất đồng bộ.
  3. Tính an toàn & giám sát: Thiết kế hệ thống bảo mật Zero-Trust kết hợp thu thập số liệu tập trung (Monitoring, Logging) để xử lý sự cố nhanh chóng.
2673

Làm thế nào để thiết kế và triển khai một thành phần hệ thống giải quyết vấn đề Message Queues trong chủ đề Systems Design?

Middle

Khi thiết kế hệ thống ở quy mô lớn với Systems Design, việc giải quyết bài toán Message Queues yêu cầu kiến thức vững chắc về kiến trúc phân tán:

  1. Tính sẵn sàng (High Availability): Thiết kế dự phòng (Redundancy) và tự động chuyển vùng khi có lỗi xảy ra để tránh Single Point of Failure.
  2. Khả năng mở rộng (Scalability): Ưu tiên mở rộng theo chiều ngang (Scale Out) và sử dụng các cơ chế lưu trữ bất đồng bộ.
  3. Tính an toàn & giám sát: Thiết kế hệ thống bảo mật Zero-Trust kết hợp thu thập số liệu tập trung (Monitoring, Logging) để xử lý sự cố nhanh chóng.
2674

Làm thế nào để thiết kế và triển khai một thành phần hệ thống giải quyết vấn đề Index optimizations trong chủ đề Databases?

Middle

Khi thiết kế hệ thống ở quy mô lớn với Databases, việc giải quyết bài toán Index optimizations yêu cầu kiến thức vững chắc về kiến trúc phân tán:

  1. Tính sẵn sàng (High Availability): Thiết kế dự phòng (Redundancy) và tự động chuyển vùng khi có lỗi xảy ra để tránh Single Point of Failure.
  2. Khả năng mở rộng (Scalability): Ưu tiên mở rộng theo chiều ngang (Scale Out) và sử dụng các cơ chế lưu trữ bất đồng bộ.
  3. Tính an toàn & giám sát: Thiết kế hệ thống bảo mật Zero-Trust kết hợp thu thập số liệu tập trung (Monitoring, Logging) để xử lý sự cố nhanh chóng.
2675

Làm thế nào để thiết kế và triển khai một thành phần hệ thống giải quyết vấn đề RESTful API trong chủ đề API Design?

Middle

Khi thiết kế hệ thống ở quy mô lớn với API Design, việc giải quyết bài toán RESTful API yêu cầu kiến thức vững chắc về kiến trúc phân tán:

  1. Tính sẵn sàng (High Availability): Thiết kế dự phòng (Redundancy) và tự động chuyển vùng khi có lỗi xảy ra để tránh Single Point of Failure.
  2. Khả năng mở rộng (Scalability): Ưu tiên mở rộng theo chiều ngang (Scale Out) và sử dụng các cơ chế lưu trữ bất đồng bộ.
  3. Tính an toàn & giám sát: Thiết kế hệ thống bảo mật Zero-Trust kết hợp thu thập số liệu tập trung (Monitoring, Logging) để xử lý sự cố nhanh chóng.
2676

Làm thế nào để thiết kế và triển khai một thành phần hệ thống giải quyết vấn đề Message Queues trong chủ đề Systems Design?

Middle

Khi thiết kế hệ thống ở quy mô lớn với Systems Design, việc giải quyết bài toán Message Queues yêu cầu kiến thức vững chắc về kiến trúc phân tán:

  1. Tính sẵn sàng (High Availability): Thiết kế dự phòng (Redundancy) và tự động chuyển vùng khi có lỗi xảy ra để tránh Single Point of Failure.
  2. Khả năng mở rộng (Scalability): Ưu tiên mở rộng theo chiều ngang (Scale Out) và sử dụng các cơ chế lưu trữ bất đồng bộ.
  3. Tính an toàn & giám sát: Thiết kế hệ thống bảo mật Zero-Trust kết hợp thu thập số liệu tập trung (Monitoring, Logging) để xử lý sự cố nhanh chóng.
2677

Làm thế nào để thiết kế và triển khai một thành phần hệ thống giải quyết vấn đề Index optimizations trong chủ đề Databases?

Middle

Khi thiết kế hệ thống ở quy mô lớn với Databases, việc giải quyết bài toán Index optimizations yêu cầu kiến thức vững chắc về kiến trúc phân tán:

  1. Tính sẵn sàng (High Availability): Thiết kế dự phòng (Redundancy) và tự động chuyển vùng khi có lỗi xảy ra để tránh Single Point of Failure.
  2. Khả năng mở rộng (Scalability): Ưu tiên mở rộng theo chiều ngang (Scale Out) và sử dụng các cơ chế lưu trữ bất đồng bộ.
  3. Tính an toàn & giám sát: Thiết kế hệ thống bảo mật Zero-Trust kết hợp thu thập số liệu tập trung (Monitoring, Logging) để xử lý sự cố nhanh chóng.
2678

Làm thế nào để thiết kế và triển khai một thành phần hệ thống giải quyết vấn đề Idempotent Keys trong chủ đề API Design?

Middle

Khi thiết kế hệ thống ở quy mô lớn với API Design, việc giải quyết bài toán Idempotent Keys yêu cầu kiến thức vững chắc về kiến trúc phân tán:

  1. Tính sẵn sàng (High Availability): Thiết kế dự phòng (Redundancy) và tự động chuyển vùng khi có lỗi xảy ra để tránh Single Point of Failure.
  2. Khả năng mở rộng (Scalability): Ưu tiên mở rộng theo chiều ngang (Scale Out) và sử dụng các cơ chế lưu trữ bất đồng bộ.
  3. Tính an toàn & giám sát: Thiết kế hệ thống bảo mật Zero-Trust kết hợp thu thập số liệu tập trung (Monitoring, Logging) để xử lý sự cố nhanh chóng.
2679

Làm thế nào để thiết kế và triển khai một thành phần hệ thống giải quyết vấn đề Message Queues trong chủ đề Systems Design?

Middle

Khi thiết kế hệ thống ở quy mô lớn với Systems Design, việc giải quyết bài toán Message Queues yêu cầu kiến thức vững chắc về kiến trúc phân tán:

  1. Tính sẵn sàng (High Availability): Thiết kế dự phòng (Redundancy) và tự động chuyển vùng khi có lỗi xảy ra để tránh Single Point of Failure.
  2. Khả năng mở rộng (Scalability): Ưu tiên mở rộng theo chiều ngang (Scale Out) và sử dụng các cơ chế lưu trữ bất đồng bộ.
  3. Tính an toàn & giám sát: Thiết kế hệ thống bảo mật Zero-Trust kết hợp thu thập số liệu tập trung (Monitoring, Logging) để xử lý sự cố nhanh chóng.
2680

Làm thế nào để thiết kế và triển khai một thành phần hệ thống giải quyết vấn đề Index optimizations trong chủ đề Databases?

Middle

Khi thiết kế hệ thống ở quy mô lớn với Databases, việc giải quyết bài toán Index optimizations yêu cầu kiến thức vững chắc về kiến trúc phân tán:

  1. Tính sẵn sàng (High Availability): Thiết kế dự phòng (Redundancy) và tự động chuyển vùng khi có lỗi xảy ra để tránh Single Point of Failure.
  2. Khả năng mở rộng (Scalability): Ưu tiên mở rộng theo chiều ngang (Scale Out) và sử dụng các cơ chế lưu trữ bất đồng bộ.
  3. Tính an toàn & giám sát: Thiết kế hệ thống bảo mật Zero-Trust kết hợp thu thập số liệu tập trung (Monitoring, Logging) để xử lý sự cố nhanh chóng.
2681

Virtual Threads (Project Loom) trong Java 21 là gì và khác gì so với Platform Threads truyền thống?

Senior

Virtual Threads là các luồng ảo siêu nhẹ được giới thiệu chính thức từ Java 21. Khác biệt cốt lõi:

  • Platform Threads: Được bọc trực tiếp quanh luồng của hệ điều hành (OS Thread), tốn khoảng 1MB bộ nhớ stack và tốn tài nguyên context switch. Số lượng bị giới hạn bởi hệ điều hành (thường vài nghìn).
  • Virtual Threads: Được quản lý bởi JVM, chạy trên nền của các Platform Threads (Carrier Threads). Khi một Virtual Thread gặp tác vụ blocking I/O, JVM sẽ tạm dừng nó và nhường Carrier Thread cho tác vụ khác. Nó chỉ tốn vài trăm byte bộ nhớ, cho phép chạy hàng triệu Virtual Threads đồng thời trên cùng một phần cứng mà không lo quá tải.
2682

Cơ chế Garbage Collection trong JavaScript hoạt động như thế nào? Giải thích thuật toán Mark-and-Sweep?

Senior

JavaScript tự động quản lý bộ nhớ thông qua cơ chế Garbage Collection. Thuật toán chính được sử dụng hiện nay là Mark-and-Sweep (Đánh dấu và Dọn dẹp):

  1. Mark (Đánh dấu): Garbage Collector sẽ xác định một tập hợp các đối tượng gốc (gọi là GC Roots, ví dụ: biến toàn cục, luồng thực thi hiện tại). Sau đó, nó sẽ duyệt đệ quy cây tham chiếu từ Roots để đánh dấu (mark) tất cả các đối tượng có thể tiếp cận được (reachable).
  2. Sweep (Dọn dẹp): GC quét qua toàn bộ vùng nhớ Heap, những đối tượng nào không được đánh dấu (unreachable) sẽ bị giải phóng bộ nhớ (sweep) và thu hồi không gian.
2683

Laravel Service Container là gì?

Senior

Service Container của Laravel là một công cụ mạnh mẽ dùng để quản lý các class dependencies và thực hiện dependency injection (DI).

Nó hoạt động như một kho chứa tập trung, nơi đăng ký cách khởi tạo các dịch vụ (Services). Khi một Controller hoặc Service khác yêu cầu một dependency, Laravel sẽ tự động phân tích và tiêm (inject) dependency đó thông qua Type Hinting.

2684

Làm thế nào để phát hiện và tối ưu hóa lỗi truy vấn N+1 (N+1 query problem) trong Eloquent ORM của Laravel?

Senior

Lỗi N+1 xảy ra khi bạn truy vấn danh sách bản ghi và với mỗi bản ghi, bạn lại thực hiện thêm một truy vấn con để lấy quan hệ liên kết.

  • Phát hiện: Sử dụng các công cụ như Laravel Debugbar hoặc Telescope để theo dõi số lượng câu lệnh SQL được thực thi.
  • Khắc phục: Sử dụng phương pháp Eager Loading bằng cách gọi phương thức with('relation') khi truy vấn. Ví dụ: Book::with('author')->get(). Điều này sẽ gộp truy vấn con lại thành một câu lệnh SQL duy nhất sử dụng IN (...), giảm số lượng truy vấn từ N+1 xuống còn đúng 2 truy vấn.
2685

Sự khác biệt giữa Repository Pattern và Service Layer trong kiến trúc dự án Laravel?

Senior
  • Repository Pattern: Đóng vai trò làm lớp trung gian giữa Business Logic và Data Access. Nó giúp trừu tượng hóa các câu lệnh truy vấn dữ liệu (như Eloquent, raw SQL) ra khỏi Controller/Service, giúp dễ dàng viết Unit Test (mocking) và thay đổi cơ sở dữ liệu về sau.
  • Service Layer: Nơi chứa logic nghiệp vụ (business logic) của hệ thống. Nó điều phối các Repositories, gửi Email, gọi API bên thứ ba, xử lý các phép tính nghiệp vụ phức tạp. Việc phân tách này giúp giữ cho Controllers mỏng (skinny controllers) và mã nguồn dễ bảo trì.
  • vừa nâng cấp PRO khóa 1 phút trước   Tìm hiểu khóa học