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

Trong Swift, cơ chế Property Observers (willSet và didSet) có vai trò gì trong việc quản lý trạng thái của View trong kiến trúc MVVM và khi nào nên tránh sử dụng chúng?

Junior

Vai trò của Property Observers

Property Observers cho phép theo dõi và phản ứng với các thay đổi của giá trị thuộc tính. Trong MVVM, chúng thường được dùng để cập nhật giao diện (UI) ngay khi dữ liệu trong ViewModel thay đổ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...
302

Làm thế nào để tối ưu hóa việc sử dụng tài nguyên khi làm việc với nhiều Image trong một ứng dụng iOS để tránh lỗi Out of Memory (OOM)?

Junior

Nguyên nhân gây lỗi OOM

Việc tải trực tiếp ảnh có độ phân giải cao vào bộ nhớ (RAM) mà không qua xử lý sẽ khiến ứng dụng vượt quá giới hạn bộ nhớ cho phép của hệ điều hành.

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

Trong quá trình phát triển ứng dụng iOS, tại sao việc sử dụng Extension để chia nhỏ các file code lớn lại là một Best Practice và những hạn chế cần lưu ý?

Junior

Lợi ích của Extension

  1. Tổ chức code: Giúp phân tách các nhóm chức năng (ví dụ: tách phần triển khai Protocol, phần xử lý logic, phần UI) giúp file code dễ đọc hơn.
  2. Tính module hóa: Dễ dàng quản lý các đoạn code thực hiện các tác vụ riêng biệt mà không làm thay đổi cấu trúc của class chính.

Hạn chế cần lưu ý

  1. Không thể thêm Stored Properties: Bạn không thể khai báo các biến lưu trữ dữ liệu trong Extension, chỉ có thể thêm Computed Properties.
  2. Khó khăn trong việc Debug: Nếu lạm dụng quá nhiều file nhỏ, việc truy vết luồng thực thi (execution flow) có thể trở nên phức tạp hơn đối với các lập trình viên mới.
  3. Overriding: Bạn không thể override các phương thức đã được định nghĩa trong class cha từ bên trong Extension.

Kinh nghiệm thực chiến

Nên sử dụng Extension để tuân thủ nguyên tắc Single Responsibility Principle (SRP). Ví dụ: một class ViewController có thể có các extension riêng biệt như ViewController+TableViewDataSource.swift và ViewController+Network.swift.

304

Sự khác biệt giữa Serial Queue và Concurrent Queue trong GCD là gì và tại sao việc chọn sai loại Queue có thể dẫn đến Race Condition?

Junior

Phân biệt Serial và Concurrent

  1. Serial Queue: Thực hiện các tác vụ tuần tự, chỉ một tác vụ được chạy tại một thời điểm. Đảm bảo tính thứ tự của dữ liệu.
  2. Concurrent Queue: Cho phép thực hiện nhiều tác vụ cùng lúc. Hệ thống sẽ quyết định số lượng thread tùy thuộc vào tài nguyên phần cứng.

Race Condition là gì?

Race Condition xảy ra khi nhiều thread cùng truy cập và thay đổi một biến (shared resource) tại cùng một thời điểm, dẫn đến kết quả không dự đoán đượ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...
305

Trong Swift, làm thế nào để xử lý các tác vụ bất đồng bộ (Asynchronous) một cách an toàn và hiệu quả thay vì sử dụng Completion Handlers truyền thống?

Junior

Vấn đề với Completion Handlers

Việc sử dụng Completion Handlers dễ dẫn đến tình trạng Callback Hell (lồng ghép nhiều closure), khó quản lý lỗi và dễ gây ra lỗi Retain Cycle nếu không sử dụng [weak self] cẩn thậ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...
306

Sự khác biệt giữa cơ chế Active Health Check và Passive Health Check trong cấu hình Load Balancer là gì?

Junior

Active Health Check là cơ chế Load Balancer chủ động gửi các yêu cầu kiểm tra (như HTTP GET /health) tới Backend Server theo định kỳ để xác định trạng thái sống/chết. Nếu server không phản hồi đúng, nó sẽ bị loại khỏi danh sách cân bằng tải. Ngược lại, Passive Health Check không gửi yêu cầu kiểm tra định kỳ mà quan sát kết quả của các yêu cầu thực tế từ người dùng. Nếu một server trả về lỗi (ví dụ 5xx) vượt quá ngưỡng cho phép trong một khoảng thời gian, Load Balancer sẽ tạm thời đánh dấu server đó là không khả dụng. Sự kết hợp giữa cả hai giúp hệ thống vừa phát hiện sớm sự cố (Active) vừa đảm bảo tính linh hoạt khi có lỗi phát sinh trong quá trình vận hành thực tế (Passive).

307

Trong kiến trúc Load Balancing, tại sao thuật toán Weighted Round Robin lại thường được ưu tiên hơn thuật toán Round Robin thuần túy khi các Backend Server có cấu hình phần cứng không đồng nhất?

Junior

Thuật toán Round Robin thuần túy phân phối yêu cầu theo kiểu xoay vòng đều đặn, giả định rằng mọi Backend Server đều có khả năng xử lý như nhau. Tuy nhiên, trong thực tế Enterprise, các server thường có cấu hình phần cứng khác nhau (CPU, RAM). Nếu sử dụng Round Robin, server yếu sẽ bị quá tải trong khi server mạnh lại nhàn rỗi. Weighted Round Robin giải quyết vấn đề này bằng cách gán trọng số (weight) cho mỗi server. Server có cấu hình mạnh hơn sẽ được gán trọng số cao hơn, từ đó nhận được nhiều yêu cầu hơn theo tỷ lệ tương ứng. Ví dụ: Server A (weight 3) và Server B (weight 1) sẽ nhận yêu cầu theo tỷ lệ 3:1, giúp tối ưu hóa hiệu suất tổng thể của cụm server.

308

Khi cấu hình Load Balancer, tại sao việc sử dụng cơ chế Sticky Sessions (Session Persistence) lại có thể gây ra hiện tượng phân bổ tải không đều và cách khắc phục là gì?

Junior

Sticky Sessions buộc các yêu cầu từ cùng một Client phải đi tới cùng một Backend Server dựa trên Session ID hoặc Cookie. Điều này giúp duy trì trạng thái phiên làm việc (session state) của người dùng. Tuy nhiên, nếu một lượng lớn người dùng cùng truy cập vào một server cụ thể, server đó sẽ bị quá tải trong khi các server khác có thể bị bỏ trống, dẫn đến mất cân bằng tải nghiêm trọng. Để khắc phục, thay vì lưu trữ session tại bộ nhớ của Backend Server, kiến trúc Enterprise hiện đại thường sử dụng các giải pháp lưu trữ tập trung như Redis hoặc Memcached. Khi đó, bất kỳ server nào cũng có thể xử lý yêu cầu của người dùng mà không cần phụ thuộc vào việc kết nối với server cũ, cho phép Load Balancer phân phối tải một cách tự do và hiệu quả hơn.

309

Tại sao việc cấu hình SSL Termination tại Load Balancer lại giúp giảm tải đáng kể cho các Backend Server trong hệ thống?

Junior

SSL Termination là quá trình Load Balancer thực hiện giải mã (decrypt) các yêu cầu HTTPS từ Client trước khi chuyển tiếp chúng tới Backend Server qua giao thức HTTP thông thường. Việc thực hiện bắt tay (handshake) SSL và mã hóa/giải mã tiêu tốn rất nhiều tài nguyên CPU. Nếu để mỗi Backend Server tự xử lý SSL, chúng sẽ mất đi một phần tài nguyên đáng kể vốn dành cho việc xử lý logic nghiệp vụ. Bằng cách tập trung việc giải mã tại Load Balancer (thường được tối ưu hóa bằng phần cứng hoặc các thư viện chuyên dụng), các Backend Server chỉ cần tập trung xử lý các yêu cầu HTTP, từ đó tăng cường khả năng phục vụ (throughput) và giảm độ trễ phản hồi cho người dùng cuối.

310

Trong bối cảnh Load Balancing, khái niệm Connection Draining là gì và tại sao nó lại quan trọng trong quá trình triển khai cập nhật hệ thống?

Junior

Connection Draining (hay còn gọi là Deregistration Delay) là cơ chế cho phép Load Balancer ngừng gửi các yêu cầu mới tới một Backend Server đang chuẩn bị tắt hoặc khởi động lại, nhưng vẫn cho phép server đó hoàn thành các yêu cầu đang xử lý dở dang. Nếu không có cơ chế này, khi một server bị ngắt kết nối đột ngột, các yêu cầu đang thực thi sẽ bị hủy bỏ (timeout), gây ra lỗi 502 Bad Gateway hoặc 504 Gateway Timeout cho người dùng. Việc cấu hình Connection Draining đảm bảo tính toàn vẹn của dữ liệu và trải nghiệm người dùng mượt mà trong quá trình bảo trì hoặc triển khai phiên bản mới (Deployment).

311

Trong MySQL, tại sao việc sử dụng hàm xử lý dữ liệu trực tiếp trên cột trong mệnh đề WHERE lại làm vô hiệu hóa Index và cách khắc phục?

Junior

Khi bạn sử dụng một hàm (như YEAR(), DATE(), UPPER()) trực tiếp lên cột trong mệnh đề WHERE, MySQL không thể sử dụng Index của cột đó vì giá trị trong Index đã được lưu trữ ở dạng gốc, không phải dạng đã qua xử 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...
312

Giải thích khái niệm Covering Index trong MySQL và tại sao nó giúp tối ưu hóa truy vấn đáng kể?

Junior

Covering Index là trường hợp mà tất cả các cột cần thiết cho một câu lệnh SELECT đều nằm trong cùng một Index. Khi đó, MySQL có thể lấy dữ liệu trực tiếp từ cấu trúc B-Tree của Index mà không cần thực hiện thao tác 'Bookmark Lookup' (truy cập vào bảng dữ liệu chính để lấy các cột còn thiế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...
313

Tại sao việc sử dụng kiểu dữ liệu ENUM trong MySQL đôi khi được coi là con dao hai lưỡi trong thiết kế database?

Junior

Kiểu dữ liệu ENUM cho phép lưu trữ một tập hợp các giá trị định trước, giúp tiết kiệm không gian lưu trữ và đảm bảo tính toàn vẹn dữ liệu ở mức cơ bả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...
314

Trong MySQL, sự khác biệt giữa EXPLAIN và EXPLAIN ANALYZE là gì và khi nào nên sử dụng chúng?

Junior

Cả hai đều là công cụ quan trọng để phân tích kế hoạch thực thi truy vấn (Query Execution Plan).

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

Tại sao việc sử dụng các cột có độ chọn lọc (selectivity) thấp để làm Index lại không mang lại hiệu quả cao?

Junior

Độ chọn lọc (selectivity) được tính bằng tỷ lệ số giá trị duy nhất (cardinality) trên tổng số dòng dữ liệu. Một cột có độ chọn lọc thấp (ví dụ: cột 'giới tính' chỉ có 2 giá trị) sẽ khiến Index không hiệu quả.

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