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

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

1. Trong UML (Unified Modeling Language), ký hiệu nào thường được sử dụng để biểu diễn một lớp?

A. Hình tròn
B. Hình vuông
C. Hình chữ nhật
D. Hình tam giác

2. Loại quan hệ nào trong OOP biểu thị sự phụ thuộc tạm thời giữa hai lớp, trong đó một lớp sử dụng một lớp khác nhưng không sở hữu nó?

A. Quan hệ kế thừa (Inheritance)
B. Quan hệ kết hợp (Association)
C. Quan hệ tổng hợp (Aggregation)
D. Quan hệ phụ thuộc (Dependency)

3. 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. 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 abstraction (trừu tượng).
D. Không có sự phụ thuộc giữa các module trong thiết kế tốt.

4. Chọn phát biểu ĐÚNG về 'đối tượng′ (object) trong lập trình hướng đối tượng.

A. Đối tượng là một lớp trừu tượng.
B. Đối tượng là một thể hiện cụ thể của một lớp.
C. Đối tượng chứa định nghĩa của các phương thức.
D. Đối tượng là một khuôn mẫu để tạo ra lớp.

5. Khái niệm nào trong lập trình hướng đối tượng cho phép một đối tượng thuộc lớp con có thể thực hiện các phương thức của lớp cha theo cách riêng của nó?

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. Khi nào nên sử dụng 'tính kế thừa′ (inheritance) trong thiết kế hướng đối tượng?

A. Khi các lớp không có mối quan hệ nào với nhau
B. Khi muốn tái sử dụng mã nguồn và thiết lập quan hệ 'is-a′ giữa các lớp
C. Khi muốn ẩn dữ liệu bên trong đối tượng
D. Khi muốn tạo ra các đối tượng độc lập hoàn toàn

7. 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. Tăng tính linh hoạt của chương trình
B. Giảm sự phức tạp bằng cách ẩn thông tin
C. Cho phép đa kế thừa
D. Tối ưu hóa hiệu suất sử dụng bộ nhớ

8. Điều gì KHÔNG phải là lợi ích chính của lập trình hướng đối tượng?

A. Tăng tốc độ thực thi chương trình
B. Tái sử dụng mã
C. Dễ bảo trì và mở rộng
D. Mô hình hóa thế giới thực tốt hơn

9. Ưu điểm chính của việc sử dụng 'composition′ (kết hợp) so với 'inheritance′ (kế thừa) trong tái sử dụng mã là gì?

A. Composition tạo ra cấu trúc lớp phẳng hơn, dễ quản lý hơn.
B. Composition cho phép tái sử dụng mã mà không vi phạm tính đóng gói.
C. Composition tạo ra quan hệ 'is-a′ rõ ràng hơn.
D. Composition luôn hiệu quả hơn inheritance về hiệu suất.

10. Thuật ngữ nào chỉ ra khả năng một phương thức có thể có nhiều phiên bản khác nhau trong cùng một lớp, phân biệt bởi số lượng hoặc kiểu tham số?

A. Ghi đè phương thức (Overriding)
B. Nạp chồng phương thức (Overloading)
C. Tính đa hình (Polymorphism)
D. Tính đóng gói (Encapsulation)

11. Trong lập trình hướng đối tượng, 'tính trừu tượng′ (abstraction) tập trung vào điều gì?

A. Chi tiết cài đặt phức tạp
B. Ẩn 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 ưu hóa hiệu năng của chương trình
D. Tạo ra các lớp con từ lớp cha

12. Mục đích chính của việc sử dụng 'interface′ (giao diện) trong lập trình hướng đối tượng là gì?

A. Cung cấp cài đặt mặc định cho các phương thức
B. Định nghĩa một hợp đồng mà các lớp phải tuân theo
C. Tăng cường tính đóng gói của lớp
D. Cho phép đa kế thừa từ các lớp cụ thể

13. Nguyên tắc SOLID nào trong OOP tập trung vào việc một lớp chỉ nên có một lý do duy nhất để thay đổi?

A. Nguyên tắc đơn nhiệm (Single Responsibility Principle)
B. Nguyên tắc mở đóng (Open∕Closed Principle)
C. Nguyên tắc thay thế Liskov (Liskov Substitution Principle)
D. Nguyên tắc phân tách giao diện (Interface Segregation Principle)

14. Trong lập trình hướng đối tượng, 'đa hình′ (polymorphism) có nghĩa là gì?

A. Một đối tượng có nhiều thuộc tính
B. Một lớp có nhiều phương thức khởi tạo
C. Một đối tượng có thể có nhiều dạng hoặc hành vi khác nhau
D. Một lớp có thể kế thừa từ nhiều lớp khác

15. Khi nào thì nên sử dụng 'lớp trừu tượng′ (abstract class) thay vì 'interface′ (giao diện)?

A. Khi muốn đa kế thừa.
B. Khi muốn cung cấp một số cài đặt mặc định cho các phương thức.
C. Khi chỉ muốn định nghĩa một hợp đồng mà không cần cài đặt.
D. Khi muốn tăng tính đóng gói.

16. Nguyên tắc 'Liskov Substitution Principle′ (LSP) phát biểu điều gì về quan hệ kế thừa?

A. Lớp con có thể thay thế lớp cha mà không làm thay đổi tính đúng đắn của chương trình.
B. Lớp cha phải luôn có nhiều phương thức hơn lớp con.
C. Lớp con không được phép ghi đè phương thức của lớp cha.
D. Quan hệ kế thừa nên được hạn chế tối đa.

17. Mục đích của việc sử dụng 'design patterns′ (mẫu thiết kế) trong lập trình hướng đối tượng là gì?

A. Tăng tốc độ biên dịch chương trình
B. Cung cấp các giải pháp đã được kiểm chứng cho các vấn đề thiết kế thường gặp
C. Giảm dung lượng bộ nhớ sử dụng
D. Tự động sinh mã chương trình

18. Trong OOP, 'kế thừa′ (inheritance) thể hiện mối quan hệ nào giữa các lớp?

A. Quan hệ ngang hàng
B. Quan hệ 'là một loại′ (is-a)
C. Quan hệ 'có một′ (has-a)
D. Quan hệ 'sử dụng′ (uses-a)

19. Phương thức nào cho phép một lớp con ghi đè (override) hành vi của một phương thức được định nghĩa trong lớp cha?

A. Phương thức nạp chồng (overloading)
B. Phương thức tĩnh (static method)
C. Phương thức ảo (virtual method) hoặc phương thức ghi đè (overriding method)
D. Phương thức trừu tượng (abstract method)

20. Khái niệm 'đa kế thừa′ (multiple inheritance) trong OOP có ưu điểm và nhược điểm gì?

A. Ưu điểm: Đơn giản hóa cấu trúc lớp; Nhược điểm: Dễ gây xung đột tên và khó hiểu.
B. Ưu điểm: Tăng tính linh hoạt và tái sử dụng mã; Nhược điểm: Phức tạp hóa thiết kế và có thể gây ra vấn đề 'diamond problem′.
C. Ưu điểm: Tăng hiệu suất chương trình; Nhược điểm: Khó bảo trì.
D. Ưu điểm: Dễ dàng mở rộng ứng dụng; Nhược điểm: Giảm tính đóng gói.

21. Lỗi 'diamond problem′ thường xuất hiện trong loại hình kế thừa nào?

A. Đơn kế thừa (Single inheritance)
B. Đa kế thừa (Multiple inheritance)
C. Kế thừa đa cấp (Multilevel inheritance)
D. Kế thừa theo chiều dọc (Vertical inheritance)

22. Nguyên tắc 'Interface Segregation Principle′ (ISP) khuyến nghị điều gì về giao diện (interface)?

A. Nên tạo ra các giao diện lớn, bao gồm nhiều phương thức.
B. Nên tạo ra nhiều giao diện nhỏ, đặc thù cho từng nhóm hành vi.
C. Không nên sử dụng interface trong thiết kế hướng đối tượng.
D. Giao diện chỉ nên chứa các phương thức trừu tượng.

23. Điều gì KHÔNG phải là một trụ cột chính của lập trình hướng đối tượng?

A. Tính tuần tự (Sequential)
B. Tính kế thừa (Inheritance)
C. Tính đa hình (Polymorphism)
D. Tính đóng gói (Encapsulation)

24. Thuật ngữ nào mô tả một bản thiết kế hoặc khuôn mẫu để tạo ra các đối tượng trong lập trình hướng đối tượng?

A. Đối tượng (Object)
B. Lớp (Class)
C. Phương thức (Method)
D. Thuộc tính (Attribute)

25. Trong lập trình hướng đối tượng, 'coupling′ (tính liên kết) và 'cohesion′ (tính gắn kết) nên được tối ưu hóa như thế nào?

A. Tăng cả coupling và cohesion.
B. Giảm cả coupling và cohesion.
C. Giảm coupling và tăng cohesion.
D. Tăng coupling và giảm cohesion.

26. Phương pháp lập trình hướng đối tượng nào giúp quản lý sự phức tạp của phần mềm lớn bằng cách chia nhỏ thành các thành phần độc lập?

A. Lập trình tuyến tính
B. Lập trình cấu trúc
C. Lập trình hướng đối tượng
D. Lập trình hàm

27. Trong lập trình hướng đối tượng, 'composition′ (kết hợp) và 'aggregation′ (tổng hợp) khác nhau như thế nào?

A. Composition là quan hệ 'is-a′, Aggregation là quan hệ 'has-a′.
B. Composition thể hiện quan hệ sở hữu mạnh (whole-part), Aggregation là quan hệ sở hữu yếu.
C. Composition chỉ dùng cho lớp trừu tượng, Aggregation cho lớp cụ thể.
D. Không có sự khác biệt, chúng là các thuật ngữ thay thế cho nhau.

28. Trong lập trình hướng đối tượng, 'phương thức trừu tượng′ (abstract method) là gì?

A. Phương thức không thể được gọi trực tiếp.
B. Phương thức được định nghĩa trong lớp trừu tượng và không có cài đặt.
C. Phương thức chỉ được sử dụng trong lớp cha.
D. Phương thức có thể được ghi đè bởi bất kỳ lớp nào.

29. Phương thức khởi tạo (constructor) trong một lớp được sử dụng để làm gì?

A. Giải phóng bộ nhớ khi đối tượng không còn được sử dụng
B. Định nghĩa các thuộc tính của lớp
C. Khởi tạo trạng thái ban đầu của một đối tượng
D. Thực hiện các phép toán trên đối tượng

30. Nguyên tắc 'Open∕Closed Principle′ (Nguyên tắc mở đóng) trong SOLID khuyến khích điều gì?

A. Phần mềm nên được đóng để sửa đổi, nhưng mở để mở rộng.
B. Phần mềm nên được mở để sửa đổi, nhưng đóng để mở rộng.
C. Phần mềm nên được mở cho cả sửa đổi và mở rộng.
D. Phần mềm nên được đóng cho cả sửa đổi và mở rộng.

1 / 30

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

Tags: Bộ đề 15

1. Trong UML (Unified Modeling Language), ký hiệu nào thường được sử dụng để biểu diễn một lớp?

2 / 30

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

Tags: Bộ đề 15

2. Loại quan hệ nào trong OOP biểu thị sự phụ thuộc tạm thời giữa hai lớp, trong đó một lớp sử dụng một lớp khác nhưng không sở hữu nó?

3 / 30

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

Tags: Bộ đề 15

3. 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?

4 / 30

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

Tags: Bộ đề 15

4. Chọn phát biểu ĐÚNG về `đối tượng′ (object) trong lập trình hướng đối tượng.

5 / 30

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

Tags: Bộ đề 15

5. Khái niệm nào trong lập trình hướng đối tượng cho phép một đối tượng thuộc lớp con có thể thực hiện các phương thức của lớp cha theo cách riêng của nó?

6 / 30

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

Tags: Bộ đề 15

6. Khi nào nên sử dụng `tính kế thừa′ (inheritance) trong thiết kế hướng đối tượng?

7 / 30

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

Tags: Bộ đề 15

7. 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ì?

8 / 30

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

Tags: Bộ đề 15

8. Điều gì KHÔNG phải là lợi ích chính của lập trình hướng đối tượng?

9 / 30

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

Tags: Bộ đề 15

9. Ưu điểm chính của việc sử dụng `composition′ (kết hợp) so với `inheritance′ (kế thừa) trong tái sử dụng mã là gì?

10 / 30

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

Tags: Bộ đề 15

10. Thuật ngữ nào chỉ ra khả năng một phương thức có thể có nhiều phiên bản khác nhau trong cùng một lớp, phân biệt bởi số lượng hoặc kiểu tham số?

11 / 30

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

Tags: Bộ đề 15

11. Trong lập trình hướng đối tượng, `tính trừu tượng′ (abstraction) tập trung vào điều gì?

12 / 30

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

Tags: Bộ đề 15

12. Mục đích chính của việc sử dụng `interface′ (giao diện) trong lập trình hướng đối tượng là gì?

13 / 30

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

Tags: Bộ đề 15

13. Nguyên tắc SOLID nào trong OOP tập trung vào việc một lớp chỉ nên có một lý do duy nhất để thay đổi?

14 / 30

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

Tags: Bộ đề 15

14. Trong lập trình hướng đối tượng, `đa hình′ (polymorphism) có nghĩa là gì?

15 / 30

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

Tags: Bộ đề 15

15. Khi nào thì nên sử dụng `lớp trừu tượng′ (abstract class) thay vì `interface′ (giao diện)?

16 / 30

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

Tags: Bộ đề 15

16. Nguyên tắc `Liskov Substitution Principle′ (LSP) phát biểu điều gì về quan hệ kế thừa?

17 / 30

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

Tags: Bộ đề 15

17. Mục đích của việc sử dụng `design patterns′ (mẫu thiết kế) trong lập trình hướng đối tượng là gì?

18 / 30

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

Tags: Bộ đề 15

18. Trong OOP, `kế thừa′ (inheritance) thể hiện mối quan hệ nào giữa các lớp?

19 / 30

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

Tags: Bộ đề 15

19. Phương thức nào cho phép một lớp con ghi đè (override) hành vi của một phương thức được định nghĩa trong lớp cha?

20 / 30

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

Tags: Bộ đề 15

20. Khái niệm `đa kế thừa′ (multiple inheritance) trong OOP có ưu điểm và nhược điểm gì?

21 / 30

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

Tags: Bộ đề 15

21. Lỗi `diamond problem′ thường xuất hiện trong loại hình kế thừa nào?

22 / 30

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

Tags: Bộ đề 15

22. Nguyên tắc `Interface Segregation Principle′ (ISP) khuyến nghị điều gì về giao diện (interface)?

23 / 30

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

Tags: Bộ đề 15

23. Điều gì KHÔNG phải là một trụ cột chính của lập trình hướng đối tượng?

24 / 30

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

Tags: Bộ đề 15

24. Thuật ngữ nào mô tả một bản thiết kế hoặc khuôn mẫu để tạo ra các đối tượng trong lập trình hướng đối tượng?

25 / 30

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

Tags: Bộ đề 15

25. Trong lập trình hướng đối tượng, `coupling′ (tính liên kết) và `cohesion′ (tính gắn kết) nên được tối ưu hóa như thế nào?

26 / 30

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

Tags: Bộ đề 15

26. Phương pháp lập trình hướng đối tượng nào giúp quản lý sự phức tạp của phần mềm lớn bằng cách chia nhỏ thành các thành phần độc lập?

27 / 30

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

Tags: Bộ đề 15

27. Trong lập trình hướng đối tượng, `composition′ (kết hợp) và `aggregation′ (tổng hợp) khác nhau như thế nào?

28 / 30

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

Tags: Bộ đề 15

28. Trong lập trình hướng đối tượng, `phương thức trừu tượng′ (abstract method) là gì?

29 / 30

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

Tags: Bộ đề 15

29. Phương thức khởi tạo (constructor) trong một lớp được sử dụng để làm gì?

30 / 30

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

Tags: Bộ đề 15

30. Nguyên tắc `Open∕Closed Principle′ (Nguyên tắc mở đóng) trong SOLID khuyến khích điều gì?