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)
Khóa học Chuyên sâu Sorting

Làm Chủ Phỏng Vấn & Nâng Cao Trình Độ Chuyên Nghiệp

Hệ thống khóa học thực chiến chuẩn Enterprise giúp bạn tự tin chinh phục mọi kỳ phỏng vấn kỹ thuật và thăng tiến thu nhập.

01

Trong JavaScript, tại sao việc sử dụng hàm so sánh (compare function) trong phương thức Array.prototype.sort() lại là bắt buộc khi làm việc với mảng đối tượng (Array of Objects) thay vì chỉ gọi sort() không tham số?

Junior

Khi gọi sort() không tham số, JavaScript sẽ chuyển đổi các phần tử thành chuỗi (string) và so sánh theo thứ tự mã Unicode (UTF-16). Đối với mảng đối tượng, kết quả sẽ là '[object Object]', dẫn đến việc không thể sắp xếp đúng ý đồ. Để sắp xếp mảng đối tượng, bạn phải cung cấp một hàm so sánh (compare function) nhận vào hai tham số a và b. Ví dụ: data.sort((a, b) => a.price - b.price);. Hàm này trả về giá trị âm nếu a < b, dương nếu a > b, và 0 nếu bằng nhau. Đây là tiêu chuẩn để đảm bảo tính chính xác trong logic nghiệp vụ.

02

Khi làm việc với các hệ thống dữ liệu lớn, tại sao thuật toán Insertion Sort lại thường được sử dụng làm thành phần con trong các thuật toán phức tạp hơn như Timsort hoặc QuickSort?

Junior

Insertion Sort có độ phức tạp O(n^2) trong trường hợp xấu nhất, nhưng nó cực kỳ hiệu quả đối với các tập dữ liệu nhỏ (thường dưới 10-20 phần tử) hoặc dữ liệu đã gần như được sắp xếp sẵn. Do chi phí khởi tạo thấp và tính ổn định (stable), các thuật toán hiện đại như Timsort (sử dụng trong V8 engine của Chrome) kết hợp Merge Sort với Insertion Sort để tối ưu hóa hiệu năng trên các phân đoạn nhỏ, giúp giảm thiểu chi phí đệ quy và tối ưu hóa bộ nhớ đệm (cache locality).

03

Tại sao việc sắp xếp dữ liệu trực tiếp trên Database (sử dụng câu lệnh SQL ORDER BY) thường được ưu tiên hơn so với việc lấy dữ liệu về ứng dụng rồi mới thực hiện sắp xếp?

Junior

Việc sắp xếp tại Database tận dụng tối đa các chỉ mục (Index) đã được tối ưu hóa sẵn. Khi dữ liệu lớn, việc truyền tải toàn bộ tập dữ liệu về ứng dụng (Application-level) gây lãng phí băng thông mạng và tiêu tốn bộ nhớ RAM của Server. Ngoài ra, Database có khả năng thực hiện sắp xếp ngoài (External Sorting) nếu dữ liệu vượt quá RAM. Việc dùng ORDER BY kết hợp với LIMIT và OFFSET còn giúp triển khai tính năng phân trang (pagination) hiệu quả, giảm tải cho hệ thống.

04

Trong bài toán sắp xếp danh sách sản phẩm, tại sao việc sử dụng thuật toán sắp xếp không ổn định (Unstable Sorting) có thể gây ra hiện tượng dữ liệu bị nhảy vị trí không mong muốn khi người dùng thực hiện sắp xếp đa tiêu chí?

Junior

Một thuật toán sắp xếp ổn định (Stable Sort) là thuật toán giữ nguyên thứ tự tương đối của các phần tử có giá trị bằng nhau. Nếu thuật toán không ổn định, khi bạn sắp xếp theo tên sản phẩm sau khi đã sắp xếp theo giá, các sản phẩm có cùng giá sẽ bị xáo trộn thứ tự tên ban đầu. Điều này gây trải nghiệm người dùng kém và khó kiểm soát dữ liệu. Trong thực tế, các thư viện chuẩn như Array.prototype.sort() trong các phiên bản ECMAScript mới đã được quy định là ổn định để đảm bảo tính nhất quán này.

05

Khi thiết kế tính năng sắp xếp cho một danh sách hàng triệu bản ghi, tại sao việc sử dụng thuật toán QuickSort có thể dẫn đến rủi ro tràn bộ nhớ (Stack Overflow) và cách khắc phục?

Junior

QuickSort dựa trên cơ chế đệ quy. Nếu chọn phần tử chốt (pivot) không tốt (ví dụ mảng đã sắp xếp sẵn), độ sâu của đệ quy có thể đạt đến O(n), dẫn đến tràn ngăn xếp (Stack Overflow). Để khắc phục, Junior cần: 1. Sử dụng chiến lược chọn pivot ngẫu nhiên hoặc chọn trung vị (median-of-three). 2. Chuyển đổi đệ quy thành vòng lặp với ngăn xếp thủ công. 3. Sử dụng các thuật toán thay thế như Heap Sort (độ phức tạp O(n log n) ổn định và không cần đệ quy sâu) hoặc tận dụng các thư viện đã được tối ưu hóa của ngôn ngữ lập trình.

06

Khi bạn cần sắp xếp một mảng chứa hàng nghìn phần tử số nguyên trong JavaScript bằng phương thức Array.prototype.sort() nhưng lại nhận được kết quả sai lệch hoàn toàn, nguyên nhân cốt lõi là gì và cách khắc phục chuẩn mực?

Junior

1. Nguyên nhân cốt lõi

Mặc định, phương thức Array.prototype.sort() trong JavaScript sẽ chuyển đổi các phần tử thành chuỗi (string) và thực hiện so sánh theo thứ tự từ điển (lexicographical order) dựa trên mã Unicode của từng ký tự, thay vì so sánh giá trị số họ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...
07

Thuật toán sắp xếp nổi bọt (Bubble Sort) có độ phức tạp thời gian là O(n^2). Tại sao việc sử dụng Bubble Sort để xử lý danh sách sản phẩm trên giao diện web lại là mộtanti-pattern nguy hiểm đối với Main Thread?

Junior

1. Bản chất của Bubble Sort và độ phức tạp

Bubble Sort hoạt động bằng cách liên tục đổi chỗ các phần tử liền kề nếu chúng sai thứ tự. Với độ phức tạp thời gian trường hợp xấu nhất và trung bình là O(n^2), số lượng phép so sánh tăng theo cấp số nhân khi kích thước dữ liệu 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...
08

Trong kiến trúc hệ thống thương mại điện tử, việc cho phép người dùng tùy chỉnh tiêu chí sắp xếp (Dynamic Sorting) qua API query parameters tiềm ẩn rủi ro gì về hiệu năng Database và cách phòng thủ cơ bản cho Junior?

Junior

1. Rủi ro bảo mật và hiệu năng (Security & Performance Risks)

Khi API cho phép client truyền trực tiếp chuỗi sắp xếp (ví dụ: GET /api/products?sortBy=price&order=ASC), hệ thống có thể đối mặt với các vấ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...
09

Khi xây dựng tính năng sắp xếp danh sách sản phẩm trên ứng dụng web, tại sao việc sử dụng thuật toán Bubble Sort trên tập dữ liệu lớn lại gây ảnh hưởng nghiêm trọng đến Main Thread, và phương án giải quyết tối ưu ở cấp độ Junior là gì?

Junior

Bản chất vấn đề

Bubble Sort có độ phức tạp thời gian trong trường hợp trung bình và xấu nhất là O(n^2). Khi số lượng phần tử n lớn (ví dụ n = 10,000), số lượng phép so sánh và hoán đổi sẽ lên tới khoảng n^2 / 2, tương đương hàng chục triệu thao tá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...
10

Trong JavaScript, khi gọi phương thức Array.prototype.sort() cho một mảng số nguyên, kết quả trả về đôi khi không đúng thứ tự tăng dần (ví dụ mảng [10, 2, 5] sau khi sort lại thành [10, 2, 5]). Nguyên nhân gốc rễ là gì và cách khắc phục chính xác?

Junior

Nguyên nhân gốc rễ

Mặc định, nếu không truyền hàm so sánh (Compare Function) vào phương thức Array.prototype.sort(), JavaScript sẽ chuyển đổi tất cả các phần tử trong mảng thành chuỗi ký tự (String conversion) và tiến hành so sánh theo thứ tự mã Unicode (UTF-16 code units order).

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

Tính ổn định (Stability) của một thuật toán sắp xếp là gì? Tại sao tính chất này lại đóng vai trò quan trọng khi bạn cần sắp xếp danh sách nhân viên theo nhiều tiêu chí (ví dụ: sắp xếp theo phòng ban trước, sau đó sắp xếp theo tên) trên giao diện quản trị?

Junior

Khái niệm tính ổn định (Stability)

Một thuật toán sắp xếp được gọi là ổn định (Stable Sorting Algorithm) nếu nó bảo toàn thứ tự ban đầu của các phần tử có khóa sắp xếp bằng nhau. Nói cách khác, nếu phần tử A xuất hiện trước phần tử B trong mảng gốc và cả hai có cùng giá trị khóa, thì sau khi sắp xếp, A chắc chắn vẫn đứng trước B.

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

Khi xây dựng tính năng tìm kiếm và sắp xếp tên người dùng bằng tiếng Việt có dấu trong ứng dụng web, việc sử dụng toán tử so sánh lớn hơn/nhỏ hơn (>, <) hoặc phương thức localeCompare mặc định thường gặp lỗi gì? Giải pháp chuẩn quốc tế hóa (i18n) là gì?

Junior

Vấn đề gặp phải

Trong tiếng Việt, bảng chữ cái chứa các ký tự có dấu (như ă, â, đ, ê, ô, ơ, ư) và các dấu thanh (sắc, huyền, hỏi, ngã, 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...
13

Khi xây dựng một trang thương mại điện tử cấp độ Junior, bạn cần sắp xếp danh sách sản phẩm theo giá hoặc tên. Tại sao trong môi trường JavaScript thực tế, phương thức Array.prototype.sort() mặc định lại có thể gây ra kết quả không chính xác với số nguyên lớn, và cách khắc phục tối ưu nhất là gì?

Junior

Bản chất vấn đề

Trong JavaScript, theo đặc tả ECMAScript, phương thức Array.prototype.sort() mặc định chuyển đổi tất cả các phần tử thành chuỗi (string) trước khi tiến hành so sánh theo mã Unicode (lexicographical sorting). Do đó, khi bạn có một mảng các con số như [10, 5, 20], kết quả trả về sau khi sắp xếp sẽ là [10, 20, 5] vì chuỗi '10' và '20' đứng trước chuỗi '5' theo bảng mã Unicode.

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

Trong quá trình phát triển ứng dụng web, lập trình viên thường phải đối mặt với bài toán sắp xếp mảng chứa tiếng Việt có dấu. Tại sao việc dùng sort thông thường không chính xác và làm thế nào để giải quyết vấn đề này theo chuẩn quốc tế hóa (i18n)?

Junior

Bản chất vấn đề

Mặc định, khi bạn sắp xếp các chuỗi tiếng Việt bằng toán tử so sánh lớn hơn/nhỏ hơn (> hoặc <) hoặc hàm sort thông thường, JavaScript sẽ so sánh dựa trên mã Unicode thô của các ký tự. Do các ký tự có dấu trong Unicode không nằm liền kề nhau theo bảng chữ cái tiếng Việt (ví dụ các nguyên âm có dấu được đặt ở các dải mã khác nhau hoặc được tạo thành từ tổ hợp ký tự combining characters), kết quả sắp xếp sẽ bị sai lệch hoàn toàn so với thứ tự bảng chữ cái tiếng Việt chuẩn (a, ă, â, b, 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...
15

Tính ổn định (Stability) trong thuật toán sắp xếp là gì? Tại sao tính chất này lại đóng vai trò quan trọng khi xử lý các bảng dữ liệu (Data Tables) có nhiều cột sắp xếp trong các ứng dụng Enterprise?

Junior

Định nghĩa tính ổn định (Stability)

Một thuật toán sắp xếp được gọi là ổn định (Stable) nếu nó bảo toàn thứ tự ban đầu của các phần tử có khóa (key) bằng nhau. Nói cách khác, nếu phần tử A xuất hiện trước phần tử B trong mảng gốc và cả hai có cùng giá trị khóa, thì sau khi sắp xếp, A vẫn sẽ đứng trước B.

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