Đề 11 – Bài tập, đề thi trắc nghiệm online Lập trình hướng đối tượng

0

Bạn đã sẵn sàng chưa? 45 phút làm bài bắt đầu!!!

Bạn đã hết giờ làm bài! Xem kết quả các câu hỏi đã làm nhé!!!


Lập trình hướng đối tượng

Đề 11 - Bài tập, đề thi trắc nghiệm online Lập trình hướng đối tượng

1. Trong lập trình hướng đối tượng, 'tính đóng gói′ (encapsulation) nhằm mục đích chính là gì?

A. Cho phép đối tượng kế thừa thuộc tính và phương thức từ lớp cha.
B. Ẩn giấu thông tin và bảo vệ dữ liệu bên trong đối tượng khỏi sự truy cập trực tiếp từ bên ngoài.
C. Tạo ra nhiều hình thức khác nhau của một phương thức trong các lớp khác nhau.
D. Đơn giản hóa các đối tượng phức tạp bằng cách chỉ hiển thị các thông tin cần thiết.

2. Lớp trừu tượng (abstract class) khác với lớp thông thường ở điểm nào?

A. Lớp trừu tượng có thể tạo ra đối tượng trực tiếp.
B. Lớp trừu tượng không thể chứa phương thức trừu tượng.
C. Lớp trừu tượng không thể được kế thừa.
D. Lớp trừu tượng không thể khởi tạo đối tượng trực tiếp và có thể chứa các phương thức trừu tượng (chưa có triển khai).

3. Khái niệm 'tính trừu tượng′ (abstraction) trong OOP giúp giải quyết vấn đề gì?

A. Quản lý sự phức tạp bằng cách ẩn đi các chi tiết không cần thiết và tập trung vào những khía cạnh quan trọng.
B. Đảm bảo tính toàn vẹn dữ liệu bằng cách ngăn chặn truy cập trái phép.
C. Tăng hiệu suất chương trình bằng cách tối ưu hóa việc sử dụng bộ nhớ.
D. Cho phép các đối tượng thuộc các lớp khác nhau phản ứng khác nhau với cùng một thông điệp.

4. Trong lập trình hướng đối tượng, 'đa kế thừa′ (multiple inheritance) là gì?

A. Một lớp kế thừa từ nhiều lớp con.
B. Một lớp con kế thừa từ nhiều lớp cha.
C. Một đối tượng thuộc nhiều lớp khác nhau.
D. Một phương thức được định nghĩa trong nhiều lớp.

5. Khái niệm nào sau đây thể hiện khả năng một đối tượng thuộc nhiều kiểu dữ liệu 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)

6. Thuộc tính (attribute) của một đối tượng trong OOP còn được gọi là gì?

A. Hành vi (Behavior)
B. Trạng thái (State)
C. Phương thức (Method)
D. Giao diện (Interface)

7. Vấn đề 'diamond problem′ (vấn đề hình thoi) thường xuất hiện trong trường hợp nào?

A. Khi sử dụng tính đóng gói.
B. Khi sử dụng tính đa hình.
C. Khi sử dụng đa kế thừa và có sự xung đột tên phương thức từ các lớp cha chung.
D. Khi sử dụng tính trừu tượng.

8. Khi nào nên sử dụng 'tính kế thừa′ (inheritance) thay vì 'tính hợp thành′ (composition) trong thiết kế OOP?

A. Khi muốn tái sử dụng mã mà không có quan hệ 'is-a′ (là một loại).
B. Khi muốn tạo ra một đối tượng phức tạp từ các đối tượng đơn giản hơn.
C. Khi có quan hệ 'is-a′ (là một loại) giữa lớp cha và lớp con, và muốn mở rộng∕chuyên biệt hóa hành vi.
D. Khi muốn ẩn giấu thông tin và bảo vệ dữ liệu.

9. Đặc điểm nào sau đây KHÔNG phải là một trong bốn trụ cột chính của lập trình hướng đối tượng?

A. Tính đóng gói (Encapsulation)
B. Tính đa hình (Polymorphism)
C. Tính trừu tượng (Abstraction)
D. Tính tuần tự (Sequential)

10. Trong ngữ cảnh của 'nguyên tắc thế chỗ Liskov′ (Liskov Substitution Principle), điều gì là quan trọng nhất?

A. Các lớp con phải luôn có thể thay thế cho lớp cha mà không làm thay đổi tính đúng đắn của chương trình.
B. Các lớp con không được phép ghi đè phương thức của lớp cha.
C. Các lớp con phải luôn có nhiều phương thức hơn lớp cha.
D. Các lớp con phải có tên khác hoàn toàn so với lớp cha.

11. Phương thức (method) của một đối tượng trong OOP thể hiện điều gì?

A. Dữ liệu mà đối tượng lưu trữ.
B. Trạng thái của đối tượng.
C. Hành vi hoặc các thao tác mà đối tượng có thể thực hiện.
D. Cấu trúc của đối tượng.

12. Đâu là một nhược điểm tiềm ẩn của việc sử dụng đa kế thừa trong OOP?

A. Giảm khả năng tái sử dụng mã.
B. Tăng tính phức tạp và khó hiểu của cấu trúc lớp, đặc biệt là vấn đề 'diamond problem′.
C. Hạn chế khả năng đa hình.
D. Giảm hiệu suất chương trình.

13. Trong ngữ cảnh OOP, 'message passing′ (truyền thông điệp) đề cập đến điều gì?

A. Việc truyền dữ liệu giữa các đối tượng thông qua việc gọi phương thức.
B. Việc gửi email thông báo lỗi trong chương trình.
C. Việc giao tiếp giữa các tiến trình (processes) khác nhau.
D. Việc chia sẻ bộ nhớ giữa các đối tượng.

14. Phương thức 'ảo′ (virtual method) trong OOP có ý nghĩa gì?

A. Phương thức không thể được ghi đè trong lớp con.
B. Phương thức chỉ được gọi một lần duy nhất.
C. Phương thức có thể được ghi đè (override) trong lớp con để thay đổi hành vi của nó.
D. Phương thức chỉ được sử dụng trong lớp trừu tượng.

15. Trong OOP, 'lớp′ (class) và 'đối tượng′ (object) có mối quan hệ như thế nào?

A. Lớp là một thể hiện cụ thể của đối tượng.
B. Đối tượng là bản thiết kế, còn lớp là thể hiện thực tế.
C. Lớp là bản thiết kế hoặc khuôn mẫu, còn đối tượng là một thể hiện cụ thể của lớp đó.
D. Lớp và đối tượng là hai khái niệm hoàn toàn độc lập và không liên quan.

16. Nguyên tắc 'mở rộng - đóng′ (Open∕Closed Principle) trong SOLID đề xuất điều gì?

A. Một lớp nên có một và chỉ một lý do để thay đổi.
B. Một lớp nên được mở rộng để thêm chức năng mới, nhưng đóng lại đối với việc sửa đổi mã nguồn hiện có.
C. Các lớp con phải có thể thay thế cho lớp cha của chúng.
D. Nên ưu tiên hợp thành hơn kế thừa.

17. Khi một lớp con ghi đè một phương thức của lớp cha, phương thức nào sẽ được thực thi khi đối tượng lớp con gọi phương thức đó?

A. Phương thức của lớp cha luôn được thực thi.
B. Phương thức của lớp con sẽ được thực thi.
C. Cả hai phương thức của lớp cha và lớp con đều được thực thi đồng thời.
D. Không phương thức nào được thực thi.

18. Giao diện (interface) trong OOP có vai trò gì?

A. Cung cấp triển khai chi tiết của các phương thức.
B. Định nghĩa một tập hợp các phương thức mà các lớp thực hiện giao diện đó phải cung cấp.
C. Lưu trữ dữ liệu trạng thái của đối tượng.
D. Tạo ra các đối tượng cụ thể.

19. Trong OOP, thuật ngữ 'is-a relationship′ (quan hệ 'là một loại′) thường liên quan đến khái niệm nào?

A. Composition (hợp thành)
B. Aggregation (tổng hợp)
C. Inheritance (kế thừa)
D. Association (kết hợp)

20. Trong lập trình hướng đối tượng, 'tính đa hình′ (polymorphism) được thể hiện rõ nhất qua cơ chế nào?

A. Đóng gói dữ liệu và phương thức.
B. Nạp chồng phương thức (method overloading) và ghi đè phương thức (method overriding).
C. Kế thừa thuộc tính và phương thức.
D. Ẩn giấu chi tiết triển khai.

21. Trong UML, ký hiệu nào thường được sử dụng để biểu diễn mối quan hệ 'kế thừa′ (inheritance) giữa các lớp?

A. Đường gạch đứt nét có mũi tên rỗng.
B. Đường liền nét có mũi tên rỗng.
C. Đường liền nét có mũi tên đặc.
D. Đường gạch đứt nét có mũi tên đặc.

22. 'Coupling′ (sự liên kết) và 'cohesion′ (tính gắn kết) là hai khái niệm quan trọng trong thiết kế OOP. Thiết kế tốt thường hướng tới…

A. Coupling cao và cohesion cao.
B. Coupling cao và cohesion thấp.
C. Coupling thấp và cohesion cao.
D. Coupling thấp và cohesion thấp.

23. Phương thức 'khởi tạo′ (constructor) trong OOP có chức năng chính là gì?

A. Hủy bỏ đối tượng khi không còn sử dụng.
B. Thay đổi trạng thái của đối tượng sau khi tạo.
C. Tự động được gọi khi một đối tượng được tạo ra, thường để khởi tạo các thuộc tính của đối tượng.
D. Thực hiện các phép toán số học trên đối tượng.

24. Nguyên tắc 'Single Responsibility Principle′ (SRP) trong SOLID phát biểu rằng:

A. Một lớp nên có nhiều lý do để thay đổi.
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 phải luôn có thể thay thế cho lớp cha.
D. Nên ưu tiên kế thừa hơn hợp thành.

25. Mẫu thiết kế 'Factory′ (nhà máy) thuộc nhóm mẫu thiết kế nào?

A. Mẫu thiết kế cấu trúc (Structural Patterns)
B. Mẫu thiết kế hành vi (Behavioral Patterns)
C. Mẫu thiết kế tạo dựng (Creational Patterns)
D. Mẫu thiết kế concurrency (Concurrency Patterns)

26. Phương pháp lập trình hướng đối tượng nào cho phép tạo ra các lớp mới dựa trên các lớp đã tồn tại, tái sử dụng và mở rộng chức năng?

A. Đa hình (Polymorphism)
B. Trừu tượng (Abstraction)
C. Kế thừa (Inheritance)
D. Đóng gói (Encapsulation)

27. Đâu là lợi ích chính của việc sử dụng tính kế thừa trong lập trình hướng đối tượng?

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. Tái sử dụng mã và giảm sự trùng lặp, giúp mã nguồn dễ bảo trì và mở rộng hơn.
D. Hạn chế khả năng mở rộng của chương trình.

28. Mục đích chính của 'nguyên tắc đảo ngược phụ thuộc′ (Dependency Inversion Principle) là gì?

A. Giảm sự phụ thuộc giữa các lớp bằng cách phụ thuộc vào trừu tượng (interfaces hoặc abstract classes) thay vì các lớp cụ thể.
B. Tăng sự phụ thuộc lẫn nhau giữa các lớp để chương trình hoạt động hiệu quả hơn.
C. Loại bỏ hoàn toàn sự phụ thuộc giữa các thành phần trong hệ thống.
D. Đảm bảo rằng các lớp cấp thấp không phụ thuộc vào các lớp cấp cao.

29. Sự khác biệt chính giữa 'composition′ (hợp thành) và 'aggregation′ (tổng hợp) trong OOP là gì?

A. Không có sự khác biệt, hai khái niệm này là giống nhau.
B. Composition thể hiện quan hệ 'has-a′ (có một) mạnh mẽ, trong đó đối tượng thành phần không thể tồn tại nếu không có đối tượng chứa; Aggregation thể hiện quan hệ 'has-a′ yếu hơn, đối tượng thành phần có thể tồn tại độc lập.
C. Composition chỉ áp dụng cho lớp cha, Aggregation chỉ áp dụng cho lớp con.
D. Composition sử dụng kế thừa, Aggregation sử dụng giao diện.

30. Mẫu thiết kế (design pattern) 'Singleton′ được sử dụng để giải quyết vấn đề gì?

A. Đảm bảo một lớp chỉ có duy nhất một thể hiện (instance) và cung cấp một điểm truy cập toàn cục đến thể hiện đó.
B. Tạo ra nhiều thể hiện của một lớp một cách linh hoạt.
C. Điều khiển việc tạo đối tượng của một lớp con.
D. Phân tách giao diện của một trừu tượng khỏi phần triển khai của nó.

1 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

1. Trong lập trình hướng đối tượng, `tính đóng gói′ (encapsulation) nhằm mục đích chính là gì?

2 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

2. Lớp trừu tượng (abstract class) khác với lớp thông thường ở điểm nào?

3 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

3. Khái niệm `tính trừu tượng′ (abstraction) trong OOP giúp giải quyết vấn đề gì?

4 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

4. Trong lập trình hướng đối tượng, `đa kế thừa′ (multiple inheritance) là gì?

5 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

5. Khái niệm nào sau đây thể hiện khả năng một đối tượng thuộc nhiều kiểu dữ liệu khác nhau?

6 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

6. Thuộc tính (attribute) của một đối tượng trong OOP còn được gọi là gì?

7 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

7. Vấn đề `diamond problem′ (vấn đề hình thoi) thường xuất hiện trong trường hợp nào?

8 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

8. Khi nào nên sử dụng `tính kế thừa′ (inheritance) thay vì `tính hợp thành′ (composition) trong thiết kế OOP?

9 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

9. Đặc điểm nào sau đây KHÔNG phải là một trong bốn trụ cột chính của lập trình hướng đối tượng?

10 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

10. Trong ngữ cảnh của `nguyên tắc thế chỗ Liskov′ (Liskov Substitution Principle), điều gì là quan trọng nhất?

11 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

11. Phương thức (method) của một đối tượng trong OOP thể hiện điều gì?

12 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

12. Đâu là một nhược điểm tiềm ẩn của việc sử dụng đa kế thừa trong OOP?

13 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

13. Trong ngữ cảnh OOP, `message passing′ (truyền thông điệp) đề cập đến điều gì?

14 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

14. Phương thức `ảo′ (virtual method) trong OOP có ý nghĩa gì?

15 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

15. Trong OOP, `lớp′ (class) và `đối tượng′ (object) có mối quan hệ như thế nào?

16 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

16. Nguyên tắc `mở rộng - đóng′ (Open∕Closed Principle) trong SOLID đề xuất điều gì?

17 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

17. Khi một lớp con ghi đè một phương thức của lớp cha, phương thức nào sẽ được thực thi khi đối tượng lớp con gọi phương thức đó?

18 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

18. Giao diện (interface) trong OOP có vai trò gì?

19 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

19. Trong OOP, thuật ngữ `is-a relationship′ (quan hệ `là một loại′) thường liên quan đến khái niệm nào?

20 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

20. Trong lập trình hướng đối tượng, `tính đa hình′ (polymorphism) được thể hiện rõ nhất qua cơ chế nào?

21 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

21. Trong UML, ký hiệu nào thường được sử dụng để biểu diễn mối quan hệ `kế thừa′ (inheritance) giữa các lớp?

22 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

22. `Coupling′ (sự liên kết) và `cohesion′ (tính gắn kết) là hai khái niệm quan trọng trong thiết kế OOP. Thiết kế tốt thường hướng tới…

23 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

23. Phương thức `khởi tạo′ (constructor) trong OOP có chức năng chính là gì?

24 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

24. Nguyên tắc `Single Responsibility Principle′ (SRP) trong SOLID phát biểu rằng:

25 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

25. Mẫu thiết kế `Factory′ (nhà máy) thuộc nhóm mẫu thiết kế nào?

26 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

26. Phương pháp lập trình hướng đối tượng nào cho phép tạo ra các lớp mới dựa trên các lớp đã tồn tại, tái sử dụng và mở rộng chức năng?

27 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

27. Đâu là lợi ích chính của việc sử dụng tính kế thừa trong lập trình hướng đối tượng?

28 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

28. Mục đích chính của `nguyên tắc đảo ngược phụ thuộc′ (Dependency Inversion Principle) là gì?

29 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

29. Sự khác biệt chính giữa `composition′ (hợp thành) và `aggregation′ (tổng hợp) trong OOP là gì?

30 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 11

30. Mẫu thiết kế (design pattern) `Singleton′ được sử dụng để giải quyết vấn đề gì?