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

Làm thế nào để kiểm tra một số nguyên dương N có phải là lũy thừa của 2 (Power of Two) chỉ bằng các phép toán Bitwise trong O(1)?

Senior

Một số nguyên dương N là lũy thừa của 2 nếu và chỉ nếu biểu diễn nhị phân của nó chỉ chứa duy nhất một bit 1 (ví dụ: 4 = 100_2, 8 = 1000_2, 16 = 10000_2).

  • Giải pháp Bitwise: Sử dụng biểu thức (N & (N - 1)) == 0.
  • Giải thích cơ chế:
    • Số N (lũy thừa của 2) có dạng: 100...0.
    • Số N - 1 sẽ có dạng: 011...1 (tất cả các bit sau bit 1 của N đều bị đảo ngược).
    • Khi thực hiện phép toán AND bitwise (&): (100...0) & (011...1) = 000...0.
    • Đối với bất kỳ số nào không phải là lũy thừa của 2, biểu diễn nhị phân của nó sẽ có nhiều hơn một bit 1. Do đó, phép toán N & (N - 1) sẽ giữ lại các bit 1 phía trước và không thể cho kết quả bằng 0.
  • Lưu ý: Cần kiểm tra thêm điều kiện N phải lớn hơn 0. Hàm hoàn chỉnh: return (N > 0) && ((N & (N - 1)) == 0). Độ phức tạp thời gian và không gian đều là O(1).
02

Làm thế nào để triển khai và tối ưu hóa thuật toán hoặc cấu trúc dữ liệu liên quan đến XOR operations trong chủ đề Bit Manipulation?

Senior

Trong lập trình giải thuật với Bit Manipulation, việc làm chủ XOR operations yêu cầu lập trình viên hiểu rõ cấu trúc vật lý trong bộ nhớ và độ phức tạp tính toán:

  1. Độ phức tạp: Luôn đánh giá Time Complexity (thời gian) và Space Complexity (không gian) tối ưu nhất (ví dụ: tối ưu từ O(n^2) xuống O(n log n)).
  2. Trường hợp biên (Edge Cases): Xử lý kỹ các giá trị null, mảng rỗng, giá trị giới hạn cực đại/cực tiểu của kiểu dữ liệu.
  3. Mã nguồn mẫu: Triển khai giải pháp rõ ràng, súc tích bằng các cấu trúc dữ liệu cơ bản, tránh lạm dụng bộ nhớ phụ khi không cần thiết.

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