1. Phương thức khởi tạo (constructor) trong một lớp được sử dụng để làm gì?
A. Hủy bỏ đối tượng khi nó không còn cần thiết.
B. Định nghĩa hành vi của đối tượng.
C. Khởi tạo trạng thái ban đầu của đối tượng khi nó được tạo.
D. Truy cập dữ liệu của đối tượng.
2. Mẫu thiết kế 'Singleton′ thuộc loại mẫu thiết kế nào?
A. Mẫu cấu trúc (Structural Pattern).
B. Mẫu hành vi (Behavioral Pattern).
C. Mẫu khởi tạo (Creational Pattern).
D. Mẫu kiến trúc (Architectural Pattern).
3. Sự khác biệt chính giữa 'composition′ và 'inheritance′ trong OOP là gì?
A. Composition thể hiện quan hệ 'là một′, inheritance thể hiện quan hệ 'có một′.
B. Composition thể hiện quan hệ 'có một′, inheritance thể hiện quan hệ 'là một′.
C. Composition liên quan đến đa hình, inheritance thì không.
D. Không có sự khác biệt đáng kể giữa chúng.
4. Trong OOP, 'cohesion′ (kết dính) đề cập đến điều gì?
A. Mức độ mà một lớp phụ thuộc vào các lớp khác.
B. Mức độ mà các thành phần của một lớp liên kết chặt chẽ và tập trung vào một mục tiêu duy nhất.
C. Khả năng một đối tượng có thể thực hiện nhiều hành vi khác nhau.
D. Mức độ bảo vệ dữ liệu của một lớp.
5. Sự khác biệt chính giữa 'abstract class′ (lớp trừu tượng) và 'interface′ là gì?
A. Lớp trừu tượng có thể có phương thức trừu tượng và phương thức đã được triển khai, trong khi interface chỉ chứa phương thức trừu tượng.
B. Interface có thể có thuộc tính, còn lớp trừu tượng thì không.
C. Lớp trừu tượng hỗ trợ đa kế thừa, interface thì không.
D. Không có sự khác biệt nào, chúng là hai khái niệm tương đương.
6. Phương thức 'protected′ trong một lớp có phạm vi truy cập như thế nào?
A. Chỉ có thể được truy cập từ bên trong lớp chứa nó.
B. Có thể được truy cập từ bất kỳ đâu.
C. Có thể được truy cập từ bên trong lớp chứa nó và các lớp con của nó.
D. Chỉ có thể được truy cập từ các lớp bạn bè.
7. Mẫu thiết kế 'Observer′ thuộc loại mẫu thiết kế nào?
A. Mẫu cấu trúc (Structural Pattern).
B. Mẫu hành vi (Behavioral Pattern).
C. Mẫu khởi tạo (Creational Pattern).
D. Mẫu kiến trúc (Architectural Pattern).
8. Nguyên tắc 'Interface Segregation Principle′ (ISP) trong SOLID đề xuất điều gì?
A. Nên tạo ra các interface lớn và đa năng.
B. Nên chia nhỏ interface thành các interface nhỏ hơn, cụ thể hơn cho từng nhóm client.
C. Interface không nên được sử dụng trong thiết kế OOP.
D. Các lớp không nên thực hiện nhiều interface.
9. Trong OOP, 'coupling′ (kết nối) đề cập đến điều gì?
A. Mức độ mà các thành phần của một lớp liên kết chặt chẽ với nhau.
B. Mức độ mà một lớp phụ thuộc vào các lớp khác.
C. Khả năng một đối tượng có thể thay thế đối tượng khác thuộc lớp cha của nó.
D. Mức độ che giấu thông tin bên trong một lớp.
10. Trong thiết kế hướng đối tượng, Design Pattern (mẫu thiết kế) là gì?
A. Một thuật toán cụ thể để giải quyết một vấn đề lập trình.
B. Một giải pháp đã được chứng minh và tái sử dụng cho các vấn đề thiết kế phần mềm thường gặp.
C. Một ngôn ngữ lập trình đặc biệt cho OOP.
D. Một công cụ để kiểm thử phần mềm OOP.
11. Phương thức 'private′ trong một lớp có ý nghĩa gì?
A. Có thể được truy cập từ bất kỳ đâu.
B. Chỉ có thể được truy cập từ bên trong lớp chứa nó.
C. Có thể được truy cập từ các lớp con.
D. Chỉ có thể được truy cập từ các lớp bạn bè.
12. Ưu điểm chính của việc sử dụng lập trình hướng đối tượng so với lập trình hướng thủ tục là gì?
A. Tốc độ thực thi chương trình nhanh hơn.
B. Mã nguồn ngắn gọn hơn.
C. Tính tái sử dụng mã, khả năng bảo trì và mở rộng tốt hơn.
D. Sử dụng ít bộ nhớ hơn.
13. Trong OOP, 'đối tượng′ (object) là gì?
A. Một lớp trừu tượng.
B. Một bản thiết kế cho các lớp.
C. Một thể hiện cụ thể của một lớp.
D. Một phương thức đặc biệt trong lớp.
14. Khái niệm nào sau đây là trụ cột cơ bản của lập trình hướng đối tượng, cho phép các đối tượng thuộc các lớp khác nhau phản ứng với cùng một thông điệp theo những cách khác nhau?
A. Tính đóng gói (Encapsulation)
B. Tính đa hình (Polymorphism)
C. Tính kế thừa (Inheritance)
D. Tính trừu tượng (Abstraction)
15. Tính kế thừa (inheritance) trong OOP mang lại lợi ích chính nào?
A. Tăng tính phức tạp của mã nguồn.
B. Giảm khả năng tái sử dụng mã.
C. Cho phép tái sử dụng mã và thiết lập quan hệ 'là một′ giữa các lớp.
D. Hạn chế khả năng mở rộng của chương trình.
16. Nguyên tắc 'Dependency Inversion Principle′ (DIP) trong SOLID tập trung vào việc giảm sự phụ thuộc giữa các module như thế nào?
A. Module cấp cao nên phụ thuộc vào module cấp thấp.
B. Module cấp thấp nên phụ thuộc vào module cấp cao.
C. Cả module cấp cao và cấp thấp nên phụ thuộc vào abstraction (trừu tượng).
D. Không có sự phụ thuộc nào giữa các module.
17. Trong OOP, 'interface′ (giao diện) được sử dụng để làm gì?
A. Cung cấp một triển khai cụ thể của một lớp.
B. Định nghĩa một hợp đồng mà các lớp phải tuân theo, quy định các phương thức mà lớp phải thực hiện.
C. Ẩn dữ liệu và phương thức của một lớp.
D. Tạo ra các đối tượng đa hình.
18. Mẫu thiết kế 'Adapter′ thuộc loại mẫu thiết kế nào?
A. Mẫu cấu trúc (Structural Pattern).
B. Mẫu hành vi (Behavioral Pattern).
C. Mẫu khởi tạo (Creational Pattern).
D. Mẫu kiến trúc (Architectural Pattern).
19. Mục đích chính của tính trừu tượng (abstraction) trong OOP là gì?
A. Tăng cường tính bảo mật bằng cách che giấu dữ liệu.
B. Giảm sự phức tạp bằng cách chỉ hiển thị các thông tin cần thiết và ẩn chi tiết không cần thiết.
C. Tạo ra các đối tượng có khả năng đa hình.
D. Cho phép các lớp kế thừa lẫn nhau.
20. Trong lập trình hướng đối tượng, 'lớp′ (class) đóng vai trò gì?
A. Một thể hiện cụ thể của đối tượng.
B. Một bản thiết kế hoặc khuôn mẫu cho các đối tượng.
C. Một phương thức để ẩn dữ liệu.
D. Một cách để thực hiện đa hình.
21. Nguyên tắc 'Single Responsibility Principle′ (SRP) trong SOLID nói về điều gì?
A. Một lớp nên có nhiều trách nhiệm.
B. Một lớp chỉ nên có một và chỉ một lý do để thay đổi.
C. Các lớp con nên thay thế được các lớp cha của chúng.
D. Nên mở rộng để mở rộng, không sửa đổi.
22. Trong ngữ cảnh của tính kế thừa, lớp 'cha′ còn được gọi là gì?
A. Lớp con (child class).
B. Lớp dẫn xuất (derived class).
C. Lớp cơ sở (base class) hoặc lớp siêu cấp (superclass).
D. Lớp giao diện (interface class).
23. Tính đóng gói (encapsulation) trong OOP chủ yếu hướng đến mục tiêu nào?
A. Tăng tốc độ thực thi chương trình.
B. Giảm mức sử dụng bộ nhớ.
C. Bảo vệ dữ liệu và che giấu sự phức tạp bên trong.
D. Cho phép kế thừa giữa các lớp.
24. Khái niệm 'overloading′ (quá tải) phương thức đề cập đến điều gì?
A. Việc ghi đè phương thức của lớp cha trong lớp con.
B. Việc tạo ra nhiều phương thức trong cùng một lớp có cùng tên nhưng khác nhau về tham số.
C. Việc ẩn dữ liệu của một lớp.
D. Việc tạo ra các lớp trừu tượng.
25. Nguyên tắc 'Liskov Substitution Principle′ (LSP) trong SOLID phát biểu điều gì?
A. Các lớp con nên có nhiều chức năng hơn lớp cha.
B. Các lớp con nên thay thế được các lớp cha của chúng mà không làm thay đổi tính đúng đắn của chương trình.
C. Các lớp cha nên biết về các lớp con của chúng.
D. Các lớp nên được thiết kế đóng gói dữ liệu chặt chẽ.
26. Khái niệm 'đa kế thừa′ (multiple inheritance) đề cập đến điều gì?
A. Một lớp kế thừa từ nhiều lớp con.
B. Một lớp có nhiều phương thức khởi tạo.
C. Một lớp kế thừa từ nhiều lớp cha.
D. Một lớp có thể thực hiện đa hình.
27. Nguyên tắc 'Open∕Closed Principle′ (OCP) trong SOLID khuyến khích điều gì?
A. Phần mềm nên được đóng để mở rộng và mở để sửa đổi.
B. Phần mềm nên được mở để mở rộng và đóng để sửa đổi.
C. Phần mềm nên được mở cho cả mở rộng và sửa đổi.
D. Phần mềm nên được đóng cho cả mở rộng và sửa đổi.
28. Trong lập trình hướng đối tượng, 'composition′ (kết hợp) là gì?
A. Một dạng đặc biệt của tính đa hình.
B. Một loại quan hệ 'là một′ giữa các lớp.
C. Một cách để tái sử dụng mã thông qua kế thừa.
D. Một loại quan hệ 'có một′ trong đó một đối tượng chứa các đối tượng khác như là thành phần của nó.
29. Nguyên tắc 'SOLID′ trong OOP là tập hợp các nguyên tắc thiết kế hướng đến mục tiêu nào?
A. Tăng tốc độ thực thi chương trình.
B. Giảm mức sử dụng bộ nhớ.
C. Thiết kế phần mềm dễ bảo trì, mở rộng và linh hoạt hơn.
D. Tối ưu hóa hiệu suất cơ sở dữ liệu.
30. Khái niệm 'overriding′ (ghi đè) phương thức đề cập đến điều gì?
A. Việc tạo ra nhiều phương thức trong cùng một lớp có cùng tên.
B. Việc định nghĩa lại một phương thức đã được định nghĩa trong lớp cha ở lớp con.
C. Việc ẩn dữ liệu của một lớp.
D. Việc tạo ra các lớp giao diện.