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

Nguyên lý hoạt động của phương pháp Chia để trị (Divide and Conquer) là gì? Nêu 3 thuật toán kinh điển sử dụng phương pháp này?

Middle

Phương pháp Chia để trị giải quyết bài toán phức tạp bằng cách chia nó thành các bài toán con nhỏ hơn cùng loại, giải quyết các bài toán con một cách độc lập, sau đó kết hợp các kết quả đó lại để có lời giải cho bài toán ban đầu.

  • 3 Bước cốt lõi:
    1. Divide (Chia): Chia bài toán lớn thành các bài toán con nhỏ hơn.
    2. Conquer (Trị): Giải quyết các bài toán con một cách đệ quy. Nếu bài toán con đủ nhỏ (Base Case), ta giải quyết trực tiếp.
    3. Combine (Kết hợp): Gộp kết quả của các bài toán con để tạo thành lời giải cuối cùng.
  • 3 Thuật toán kinh điển:
    1. Merge Sort: Chia mảng thành 2 nửa, sắp xếp đệ quy từng nửa rồi gộp hai nửa đã sắp xếp lại trong O(n).
    2. Quick Sort: Phân chia mảng quanh một phần tử chốt (pivot) sao cho bên trái nhỏ hơn pivot và bên phải lớn hơn pivot, sau đó sắp xếp đệ quy hai phần.
    3. Binary Search: Chia đôi mảng đã sắp xếp và chỉ chọn một nửa thích hợp để tiếp tục tìm kiếm đệ quy hoặc lặp.

vừa nâng cấp PRO khóa 1 phút trước   Tìm hiểu khóa học