Đề 12 – 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

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

1. 'Đối tượng′ (object) trong OOP là gì?

A. Một lớp trừu tượng.
B. Một bản thiết kế cho lớp.
C. Một thể hiện cụ thể của một lớp, có trạng thái và hành vi.
D. Một khái niệm lý thuyết, không tồn tại trong bộ nhớ.

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

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

3. Ưu điểm của việc sử dụng 'property′ (thuộc tính) thay vì truy cập trực tiếp vào biến thành viên (member variable) của đối tượng là gì?

A. Tăng tốc độ truy cập dữ liệu.
B. Giảm kích thước bộ nhớ.
C. Cho phép kiểm soát việc truy cập và sửa đổi dữ liệu (getter∕setter) và thực hiện logic bổ sung khi truy cập.
D. Đơn giản hóa cú pháp truy cập.

4. Trong OOP, 'đóng gói′ (encapsulation) đề cập đến điều gì?

A. Che giấu thông tin và hành vi bên trong đối tượng, chỉ cho phép truy cập qua giao diện công khai.
B. Tạo ra nhiều đối tượng từ một lớp.
C. Cho phép một lớp kế thừa các thuộc tính và phương thức từ lớp khác.
D. Khả năng một đối tượng có thể có nhiều hình thức khác nhau.

5. Mối quan hệ 'có một′ (has-a relationship) trong OOP thường được thể hiện thông qua cơ chế nào?

A. Kế thừa (inheritance).
B. Đa hình (polymorphism).
C. Kết hợp (association) hoặc tổng hợp (aggregation).
D. Đóng gói (encapsulation).

6. Trong OOP, 'tính liên kết lỏng lẻo′ (loose coupling) là một mục tiêu thiết kế tốt. Điều này có nghĩa là gì?

A. Các đối tượng nên phụ thuộc chặt chẽ vào nhau để tăng hiệu suất.
B. Các đối tượng nên độc lập và ít phụ thuộc vào chi tiết triển khai của nhau.
C. Các lớp nên được kế thừa sâu để tái sử dụng mã tối đa.
D. Tất cả dữ liệu nên được công khai để dễ dàng truy cập và sửa đổi.

7. Trong ngữ cảnh của SOLID principles, chữ 'S′ trong SOLID đại diện cho nguyên tắc nào?

A. Single Responsibility Principle (Nguyên tắc đơn trách nhiệm).
B. Substitution Principle (Nguyên tắc thay thế Liskov).
C. Segregation Principle (Nguyên tắc phân tách giao diện).
D. Systematic Principle (Nguyên tắc hệ thống).

8. Thuật ngữ nào mô tả việc một lớp con có thể định nghĩa lại một phương thức đã được định nghĩa trong lớp cha?

A. Nạp chồng phương thức (method overloading).
B. Ghi đè phương thức (method overriding).
C. Đóng gói phương thức (method encapsulation).
D. Trừu tượng hóa phương thức (method abstraction).

9. Mẫu thiết kế Adapter trong OOP giúp giải quyết vấn đề gì?

A. Tạo đối tượng phức tạp từ các đối tượng đơn giản.
B. Chuyển đổi giao diện của một lớp thành một giao diện khác mà client mong đợi.
C. Quản lý bộ nhớ cho các đối tượng.
D. Thực hiện logic nghiệp vụ phức tạp.

10. Mẫu thiết kế (design pattern) Singleton trong OOP được sử dụng để làm gì?

A. Tạo ra nhiều thể hiện (instance) của một lớp.
B. Đảm bảo rằng một lớp chỉ có duy nhất một thể hiện và cung cấp một điểm truy cập toàn cục đến thể hiện đó.
C. Quản lý vòng đời của các đối tượng.
D. Thực hiện đa hình tại thời gian chạy.

11. Mẫu thiết kế Decorator trong OOP nhằm mục đích gì?

A. Tạo cấu trúc cây phân cấp của các đối tượng.
B. Gán thêm trách nhiệm cho đối tượng một cách động.
C. Đảm bảo chỉ có một thể hiện của một lớp.
D. Cung cấp một giao diện thống nhất cho một tập hợp các giao diện trong một hệ thống con.

12. Khái niệm 'kế thừa′ (inheritance) trong OOP mang lại lợi ích nào sau đây?

A. Giảm kích thước bộ nhớ chương trình.
B. Tăng tính bảo mật dữ liệu.
C. Tái sử dụng mã nguồn và thiết lập mối quan hệ 'là một′ (is-a) giữa các lớp.
D. Cho phép thực hiện đa nhiệm.

13. Mối quan hệ 'là một′ (is-a relationship) trong OOP thường được thể hiện thông qua cơ chế nào?

A. Kết hợp (association).
B. Tổng hợp (aggregation).
C. Kế thừa (inheritance).
D. Đa hình (polymorphism).

14. Phương thức đặc biệt nào trong lớp được gọi tự động khi một đối tượng được tạo ra?

A. Phương thức tĩnh (static method).
B. Hàm hủy (destructor).
C. Hàm tạo (constructor).
D. Phương thức getter.

15. Mẫu thiết kế Observer trong OOP được sử dụng để làm gì?

A. Tạo đối tượng phức tạp từng bước.
B. Định nghĩa một họ các thuật toán, đóng gói mỗi thuật toán và làm cho chúng có thể hoán đổi cho nhau.
C. Xác định một sự phụ thuộc một-nhiều giữa các đối tượng, sao cho khi một đối tượng thay đổi trạng thái, tất cả các đối tượng phụ thuộc vào nó đều được thông báo và cập nhật tự động.
D. Lọc yêu cầu gửi đến một tài nguyên.

16. Phương thức nào trong lớp được gọi tự động ngay trước khi một đối tượng bị hủy khỏi bộ nhớ?

A. Hàm tạo (constructor).
B. Hàm hủy (destructor).
C. Phương thức setter.
D. Phương thức trừu tượng (abstract method).

17. Trong SOLID principles, chữ 'I′ trong SOLID đại diện cho nguyên tắc nào?

A. Interface Segregation Principle (Nguyên tắc phân tách giao diện).
B. Inversion of Control Principle (Nguyên tắc đảo ngược điều khiển).
C. Inheritance Principle (Nguyên tắc kế thừa).
D. Instantiation Principle (Nguyên tắc khởi tạo).

18. Khái niệm 'giao diện′ (interface) trong OOP khác với 'lớp trừu tượng′ (abstract class) ở điểm nào chính?

A. Giao diện có thể chứa các phương thức đã được triển khai, lớp trừu tượng thì không.
B. Lớp trừu tượng có thể kế thừa từ nhiều lớp, giao diện thì không.
C. Giao diện chỉ định nghĩa hành vi (phương thức) mà không triển khai, lớp trừu tượng có thể có cả phương thức trừu tượng và phương thức đã được triển khai.
D. Không có sự khác biệt đáng kể giữa giao diện và lớp trừu tượng.

19. Lợi ích chính của việc sử dụng OOP so với lập trình hướng thủ tục (procedural programming) là gì?

A. Tốc độ thực thi chương trình nhanh hơn.
B. Quản lý mã nguồn phức tạp dễ dàng hơn, tái sử dụng mã tốt hơn và khả năng bảo trì cao hơn.
C. Sử dụng ít bộ nhớ hơn.
D. Dễ dàng học và sử dụng hơn cho người mới bắt đầu.

20. Nguyên tắc 'Open∕Closed Principle′ trong SOLID nói về điều gì?

A. Phần mềm nên đóng để sửa đổi nhưng mở để mở rộng.
B. Phần mềm nên mở để sửa đổi nhưng đóng để mở rộng.
C. Phần mềm nên đóng cả để sửa đổi lẫn mở rộng.
D. Phần mềm nên mở cả để sửa đổi lẫn mở rộng.

21. Trong OOP, 'lớp′ (class) được hiểu là gì?

A. Một thể hiện cụ thể của một đối tượng.
B. Bản thiết kế hoặc khuôn mẫu để tạo ra các đối tượng.
C. Một phương thức đặc biệt trong đối tượng.
D. Một biến toàn cục trong chương trình.

22. Điểm khác biệt chính giữa 'nạp chồng phương thức′ (method overloading) và 'ghi đè phương thức′ (method overriding) là gì?

A. Nạp chồng xảy ra trong cùng một lớp, ghi đè xảy ra giữa lớp cha và lớp con.
B. Nạp chồng liên quan đến việc thay đổi hành vi, ghi đè liên quan đến việc thêm hành vi mới.
C. Nạp chồng chỉ áp dụng cho hàm tạo, ghi đè chỉ áp dụng cho phương thức thông thường.
D. Không có sự khác biệt, hai thuật ngữ này có thể hoán đổi cho nhau.

23. Nhược điểm tiềm ẩn của việc sử dụng kế thừa sâu trong OOP là gì?

A. Tăng tốc độ thực thi chương trình.
B. Giảm tính linh hoạt của mã nguồn.
C. Có thể dẫn đến 'vấn đề kim cương′ (diamond problem) trong đa kế thừa và làm tăng độ phức tạp.
D. Giảm khả năng tái sử dụng mã.

24. Trong lập trình hướng đối tượng, 'composition′ (tổng hợp) thường được ưu tiên hơn 'inheritance′ (kế thừa) trong trường hợp nào?

A. Khi muốn tái sử dụng mã nguồn một cách triệt để.
B. Khi mối quan hệ giữa các lớp là 'là một′ (is-a).
C. Khi muốn tạo ra các đối tượng phức tạp từ các đối tượng đơn giản hơn và mối quan hệ là 'có một′ (has-a).
D. Khi muốn áp dụng đa hình một cách mạnh mẽ.

25. Mục đích chính của tính 'trừu tượng′ (abstraction) trong OOP là gì?

A. Tăng tốc độ thực thi chương trình.
B. Giảm độ phức tạp bằng cách ẩn đi các chi tiết không cần thiết và chỉ hiển thị thông tin quan trọng.
C. Tái sử dụng mã nguồn.
D. Cải thiện khả năng bảo mật của ứng dụng.

26. Trong OOP, 'tính trừu tượng dữ liệu′ (data abstraction) có liên quan chặt chẽ đến khái niệm nào?

A. Kế thừa (inheritance).
B. Đóng gói (encapsulation).
C. Đa hình (polymorphism).
D. Tính tổng quát hóa (generalization).

27. Nguyên tắc 'Liskov Substitution Principle′ (LSP) phát biểu rằng:

A. Lớp con nên thay thế được lớp cha của nó mà không làm thay đổi tính đúng đắn của chương trình.
B. Mỗi lớp nên chỉ có một trách nhiệm duy nhất.
C. Nên ưu tiên kết hợp hơn là kế thừa.
D. Giao diện nên được thiết kế nhỏ gọn và tập trung vào một mục đích duy nhất.

28. Nguyên tắc 'Dependency Inversion Principle′ (DIP) trong SOLID khuyến khích điều gì?

A. Các module cấp cao nên phụ thuộc vào các module cấp thấp.
B. Các module cấp thấp nên phụ thuộc vào các module cấp cao.
C. Cả module cấp cao và cấp thấp nên phụ thuộc vào trừu tượng (abstraction).
D. Không có sự phụ thuộc giữa module cấp cao và cấp thấp.

29. Mẫu thiết kế Factory Method trong OOP giải quyết vấn đề gì?

A. Quản lý trạng thái của đối tượng.
B. Đóng gói thuật toán.
C. Cung cấp một giao diện để tạo đối tượng trong lớp cha, nhưng cho phép lớp con thay đổi kiểu đối tượng được tạo.
D. Thực hiện đa hình tại thời gian biên dịch.

30. Tính 'đa hình′ (polymorphism) trong OOP thể hiện rõ nhất qua cơ chế nào?

A. Đóng gói dữ liệu.
B. Kế thừa thuộc tính.
C. Nạp chồng phương thức (method overloading) và ghi đè phương thức (method overriding).
D. Trừu tượng hóa giao diện.

1 / 30

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

Tags: Bộ đề 12

1. `Đối tượng′ (object) trong OOP là gì?

2 / 30

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

Tags: Bộ đề 12

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

3 / 30

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

Tags: Bộ đề 12

3. Ưu điểm của việc sử dụng `property′ (thuộc tính) thay vì truy cập trực tiếp vào biến thành viên (member variable) của đối tượng là gì?

4 / 30

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

Tags: Bộ đề 12

4. Trong OOP, `đóng gói′ (encapsulation) đề cập đến điều gì?

5 / 30

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

Tags: Bộ đề 12

5. Mối quan hệ `có một′ (has-a relationship) trong OOP thường được thể hiện thông qua cơ chế nào?

6 / 30

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

Tags: Bộ đề 12

6. Trong OOP, `tính liên kết lỏng lẻo′ (loose coupling) là một mục tiêu thiết kế tốt. Điều này có nghĩa là gì?

7 / 30

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

Tags: Bộ đề 12

7. Trong ngữ cảnh của SOLID principles, chữ `S′ trong SOLID đại diện cho nguyên tắc nào?

8 / 30

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

Tags: Bộ đề 12

8. Thuật ngữ nào mô tả việc một lớp con có thể định nghĩa lại một phương thức đã được định nghĩa trong lớp cha?

9 / 30

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

Tags: Bộ đề 12

9. Mẫu thiết kế Adapter trong OOP giúp giải quyết vấn đề gì?

10 / 30

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

Tags: Bộ đề 12

10. Mẫu thiết kế (design pattern) Singleton trong OOP được sử dụng để làm gì?

11 / 30

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

Tags: Bộ đề 12

11. Mẫu thiết kế Decorator trong OOP nhằm mục đích gì?

12 / 30

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

Tags: Bộ đề 12

12. Khái niệm `kế thừa′ (inheritance) trong OOP mang lại lợi ích nào sau đây?

13 / 30

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

Tags: Bộ đề 12

13. Mối quan hệ `là một′ (is-a relationship) trong OOP thường được thể hiện thông qua cơ chế nào?

14 / 30

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

Tags: Bộ đề 12

14. Phương thức đặc biệt nào trong lớp được gọi tự động khi một đối tượng được tạo ra?

15 / 30

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

Tags: Bộ đề 12

15. Mẫu thiết kế Observer trong OOP được sử dụng để làm gì?

16 / 30

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

Tags: Bộ đề 12

16. Phương thức nào trong lớp được gọi tự động ngay trước khi một đối tượng bị hủy khỏi bộ nhớ?

17 / 30

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

Tags: Bộ đề 12

17. Trong SOLID principles, chữ `I′ trong SOLID đại diện cho nguyên tắc nào?

18 / 30

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

Tags: Bộ đề 12

18. Khái niệm `giao diện′ (interface) trong OOP khác với `lớp trừu tượng′ (abstract class) ở điểm nào chính?

19 / 30

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

Tags: Bộ đề 12

19. Lợi ích chính của việc sử dụng OOP so với lập trình hướng thủ tục (procedural programming) là gì?

20 / 30

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

Tags: Bộ đề 12

20. Nguyên tắc `Open∕Closed Principle′ trong SOLID nói về điều gì?

21 / 30

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

Tags: Bộ đề 12

21. Trong OOP, `lớp′ (class) được hiểu là gì?

22 / 30

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

Tags: Bộ đề 12

22. Điểm khác biệt chính giữa `nạp chồng phương thức′ (method overloading) và `ghi đè phương thức′ (method overriding) là gì?

23 / 30

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

Tags: Bộ đề 12

23. Nhược điểm tiềm ẩn của việc sử dụng kế thừa sâu trong OOP là gì?

24 / 30

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

Tags: Bộ đề 12

24. Trong lập trình hướng đối tượng, `composition′ (tổng hợp) thường được ưu tiên hơn `inheritance′ (kế thừa) trong trường hợp nào?

25 / 30

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

Tags: Bộ đề 12

25. Mục đích chính của tính `trừu tượng′ (abstraction) trong OOP là gì?

26 / 30

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

Tags: Bộ đề 12

26. Trong OOP, `tính trừu tượng dữ liệu′ (data abstraction) có liên quan chặt chẽ đến khái niệm nào?

27 / 30

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

Tags: Bộ đề 12

27. Nguyên tắc `Liskov Substitution Principle′ (LSP) phát biểu rằng:

28 / 30

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

Tags: Bộ đề 12

28. Nguyên tắc `Dependency Inversion Principle′ (DIP) trong SOLID khuyến khích điều gì?

29 / 30

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

Tags: Bộ đề 12

29. Mẫu thiết kế Factory Method trong OOP giải quyết vấn đề gì?

30 / 30

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

Tags: Bộ đề 12

30. Tính `đa hình′ (polymorphism) trong OOP thể hiện rõ nhất qua cơ chế nào?