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

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

1. Phương thức khởi tạo (constructor) trong lập trình hướng đối tượng được sử dụng để làm 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. Khởi tạo trạng thái ban đầu của đối tượng khi nó được tạo ra
D. Gọi một phương thức khác của đối tượng

2. Nguyên tắc thay thế Liskov (Liskov Substitution Principle - LSP) trong SOLID nhấn mạnh điều gì về mối quan hệ kế thừa?

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

3. Kiểu quan hệ nào thể hiện sự phụ thuộc mạnh mẽ nhất giữa hai lớp, trong đó vòng đời của một lớp phụ thuộc vào lớp kia?

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

4. Trong lập trình hướng đối tượng, 'message passing′ (truyền thông điệp) đề cập đến điều gì?

A. Việc gửi dữ liệu giữa các đối tượng khác nhau trên mạng
B. Việc một đối tượng gọi một phương thức của đối tượng khác
C. Việc mã nguồn được biên dịch thành mã máy
D. Việc dữ liệu được lưu trữ và truy xuất từ cơ sở dữ liệu

5. Khái niệm nào sau đây thể hiện khả năng một đối tượng có nhiều hình thức khác nhau, cho phép một giao diện có thể được sử dụng cho nhiều lớp khác nhau?

A. Tính đóng gói (Encapsulation)
B. Tính kế thừa (Inheritance)
C. Tính đa hình (Polymorphism)
D. Tính trừu tượng (Abstraction)

6. Nguyên tắc 'Open∕Closed′ trong SOLID phát biểu rằng phần mềm nên 'mở' cho điều gì và 'đóng′ cho điều gì?

A. Mở cho kế thừa, đóng cho sửa đổi
B. Mở cho sửa đổi, đóng cho kế thừa
C. Mở cho mở rộng, đóng cho sửa đổi
D. Mở cho sửa đổi, đóng cho mở rộng

7. Trong lập trình hướng đối tượng, 'tính đóng gói′ (encapsulation) mang lại lợi ích chính nào?

A. Tăng tốc độ thực thi chương trình
B. Giảm dung lượng bộ nhớ sử dụng
C. Bảo vệ dữ liệu và che giấu thông tin chi tiết cài đặt
D. Cho phép tái sử dụng mã nguồn dễ dàng hơn

8. Trong ngữ cảnh của lập trình hướng đối tượng, 'design pattern′ (mẫu thiết kế) là gì?

A. Một khuôn mẫu cố định cho cấu trúc dữ liệu
B. Một giải pháp đã được chứng minh cho một 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 thiết kế giao diện người dùng
D. Một công cụ tự động tạo mã nguồn từ sơ đồ UML

9. Khái niệm 'interface′ (giao diện) trong OOP khác biệt chính so với 'abstract class′ (lớp trừu tượng) là gì?

A. Interface có thể chứa thuộc tính, abstract class thì không
B. Một lớp có thể kế thừa từ nhiều abstract class, nhưng chỉ có thể implement một interface
C. Một lớp có thể implement nhiều interface, nhưng chỉ có thể kế thừa từ một abstract class
D. Interface có thể có phương thức đã được cài đặt, abstract class thì không

10. Trong ngữ cảnh OOP, 'association′, 'aggregation′ và 'composition′ là các loại quan hệ nào?

A. Quan hệ kế thừa
B. Quan hệ giữa các lớp
C. Quan hệ đa hình
D. Quan hệ đóng gói

11. Khái niệm 'garbage collection′ (thu gom rác) trong OOP liên quan đến vấn đề gì?

A. Quản lý lỗi trong quá trình biên dịch mã
B. Tối ưu hóa hiệu suất chương trình
C. Tự động giải phóng bộ nhớ đã cấp phát cho các đối tượng không còn được sử dụng
D. Bảo vệ bộ nhớ khỏi bị truy cập trái phép

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

A. Composition thể hiện mối quan hệ 'là một loại′ (is-a), inheritance thể hiện mối quan hệ 'có một′ (has-a)
B. Inheritance thể hiện mối quan hệ 'là một loại′ (is-a), composition thể hiện mối quan hệ 'có một′ (has-a)
C. Composition tạo ra mối quan hệ mạnh mẽ hơn giữa các lớp so với inheritance
D. Inheritance linh hoạt hơn composition trong việc tái sử dụng mã

13. Mục tiêu của việc giảm 'coupling′ (kết nối) và tăng 'cohesion′ (liên kết) trong thiết kế OOP là gì?

A. Tăng tốc độ phát triển phần mềm
B. Làm cho mã nguồn dễ đọc hơn
C. Tạo ra mã nguồn dễ bảo trì, tái sử dụng và ít bị lỗi hơn
D. Giảm yêu cầu về phần cứng để chạy chương trình

14. Giải pháp nào thường được sử dụng để thay thế cho 'đa kế thừa′ (multiple inheritance) trong các ngôn ngữ OOP hiện đại?

A. Đơn kế thừa (single inheritance)
B. Tổ hợp (composition) và interface (giao diện)
C. Phương thức static
D. Lớp trừu tượng (abstract class)

15. Thuật ngữ 'coupling′ (kết nối) và 'cohesion′ (liên kết) trong thiết kế hướng đối tượng đề cập đến điều gì?

A. Coupling đo độ phức tạp của lớp, cohesion đo số lượng phương thức trong lớp
B. Coupling đo mức độ phụ thuộc giữa các lớp, cohesion đo mức độ liên quan của các thành phần bên trong một lớp
C. Coupling đo hiệu suất chương trình, cohesion đo khả năng tái sử dụng mã
D. Coupling đo kích thước mã nguồn, cohesion đo thời gian thực thi

16. Trong lập trình hướng đối tượng, 'đa kế thừa′ (multiple inheritance) là gì và nó có thể gây ra vấn đề gì?

A. Một lớp kế thừa từ nhiều lớp con; gây ra vấn đề về hiệu suất
B. Một lớp con kế thừa từ nhiều lớp cha; có thể gây ra vấn đề 'diamond problem′ (vấn đề kim cương)
C. Nhiều lớp cùng kế thừa từ một lớp cha; gây ra vấn đề về bảo mật
D. Một đối tượng thuộc nhiều lớp; gây ra vấn đề về quản lý bộ nhớ

17. 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)
B. Mẫu thiết kế hành vi (Behavioral)
C. Mẫu thiết kế khởi tạo (Creational)
D. Mẫu thiết kế đồng thời (Concurrent)

18. Trong UML (Unified Modeling Language), ký hiệu nào thường được sử dụng để biểu diễn quan hệ kế thừa (inheritance)?

A. Đường thẳng liền nét
B. Đường thẳng nét đứt
C. Mũi tên rỗng ruột
D. Mũi tên đặc ruột

19. Trong lập trình hướng đối tượng, 'lớp trừu tượng′ (abstract class) khác với 'lớp cụ thể' (concrete class) ở điểm nào?

A. Lớp trừu tượng có thể tạo ra đối tượng, lớp cụ thể thì không
B. Lớp cụ thể không thể có phương thức, lớp trừu tượng thì có thể
C. Lớp trừu tượng không thể được khởi tạo trực tiếp, lớp cụ thể thì có thể
D. Lớp cụ thể có thể kế thừa từ nhiều lớp, lớp trừu tượng thì không

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

A. Tạo nhiều đối tượng của một lớp
B. Đảm bảo rằng một lớp chỉ có một thể hiện duy nhất và cung cấp một điểm truy cập toàn cục đến nó
C. Quản lý bộ nhớ hiệu quả hơn
D. Tăng cường tính bảo mật cho ứng dụng

21. Thuật ngữ 'method overloading′ (nạp chồng phương thức) trong OOP nghĩa là gì?

A. Thay đổi tên của một phương thức trong lớp con
B. Định nghĩa 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. Kết hợp nhiều phương thức thành một phương thức duy nhất
D. Xóa bỏ một phương thức không còn cần thiết

22. Nguyên tắc 'SOLID′ nào khuyến khích việc các lớp nên có một và chỉ một lý do để thay đổi?

A. Nguyên tắc duy nhất (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)

23. Mẫu thiết kế 'Observer′ (Người quan sát) giúp giải quyết vấn đề gì?

A. Phân tách việc xây dựng và biểu diễn của một đối tượng
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ể thay thế lẫn nhau
C. Xác định sự phụ thuộc một-nhiều giữa các đối tượng để 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. Cung cấp một giao diện thống nhất để truy cập một nhóm các giao diện trong hệ thống

24. Thuật ngữ 'method overriding′ (ghi đè phương thức) trong OOP được sử dụng khi nào?

A. Khi muốn tạo một phương thức mới trong lớp cha
B. Khi muốn thay đổi cách cài đặt của một phương thức đã được định nghĩa trong lớp cha ở lớp con
C. Khi muốn gọi một phương thức từ một lớp khác
D. Khi muốn ẩn một phương thức của lớp cha khỏi lớp con

25. Quan hệ 'aggregation′ (tổng hợp) khác với 'composition′ (hợp thành) ở điểm nào?

A. Aggregation là quan hệ 'is-a′, composition là quan hệ 'has-a′
B. Trong aggregation, lớp 'phần′ có thể tồn tại độc lập với lớp 'toàn thể'; trong composition, lớp 'phần′ phụ thuộc vào lớp 'toàn thể' và không thể tồn tại nếu không có lớp 'toàn thể'
C. Composition mạnh hơn aggregation về hiệu suất
D. Aggregation phức tạp hơn composition trong việc cài đặt

26. Nguyên tắc 'Dependency Inversion′ (DIP) trong SOLID khuyến nghị điều gì về sự phụ thuộc giữa các module?

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 giữa các module

27. Đặ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 kế thừa (Inheritance)
C. Tính trừu tượng (Abstraction)
D. Tính năng động (Dynamism)

28. Phương thức 'static′ (tĩnh) trong lập trình hướng đối tượng khác với phương thức 'instance′ (thể hiện) như thế nào?

A. Phương thức static có thể truy cập thuộc tính instance, phương thức instance thì không
B. Phương thức instance thuộc về lớp, phương thức static thuộc về đối tượng
C. Phương thức static thuộc về lớp và được gọi trực tiếp từ lớp, không cần đối tượng; phương thức instance cần được gọi thông qua một đối tượng cụ thể
D. Phương thức instance không thể trả về giá trị, phương thức static có thể

29. Mục đích chính của tính kế thừa (inheritance) trong lập trình hướng đối tượng là gì?

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

30. Trong UML, ký hiệu nào thường được sử dụng để biểu diễn quan hệ composition (hợp thành)?

A. Đường thẳng liền nét
B. Hình thoi rỗng
C. Hình thoi đặc
D. Mũi tên nét đứt

1 / 30

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

Tags: Bộ đề 1

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

2 / 30

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

Tags: Bộ đề 1

2. Nguyên tắc thay thế Liskov (Liskov Substitution Principle - LSP) trong SOLID nhấn mạnh điều gì về mối quan hệ kế thừa?

3 / 30

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

Tags: Bộ đề 1

3. Kiểu quan hệ nào thể hiện sự phụ thuộc mạnh mẽ nhất giữa hai lớp, trong đó vòng đời của một lớp phụ thuộc vào lớp kia?

4 / 30

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

Tags: Bộ đề 1

4. Trong lập trình hướng đối tượng, `message passing′ (truyền thông điệp) đề cập đến điều gì?

5 / 30

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

Tags: Bộ đề 1

5. Khái niệm nào sau đây thể hiện khả năng một đối tượng có nhiều hình thức khác nhau, cho phép một giao diện có thể được sử dụng cho nhiều lớp khác nhau?

6 / 30

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

Tags: Bộ đề 1

6. Nguyên tắc `Open∕Closed′ trong SOLID phát biểu rằng phần mềm nên `mở` cho điều gì và `đóng′ cho điều gì?

7 / 30

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

Tags: Bộ đề 1

7. Trong lập trình hướng đối tượng, `tính đóng gói′ (encapsulation) mang lại lợi ích chính nào?

8 / 30

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

Tags: Bộ đề 1

8. Trong ngữ cảnh của lập trình hướng đối tượng, `design pattern′ (mẫu thiết kế) là gì?

9 / 30

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

Tags: Bộ đề 1

9. Khái niệm `interface′ (giao diện) trong OOP khác biệt chính so với `abstract class′ (lớp trừu tượng) là gì?

10 / 30

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

Tags: Bộ đề 1

10. Trong ngữ cảnh OOP, `association′, `aggregation′ và `composition′ là các loại quan hệ nào?

11 / 30

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

Tags: Bộ đề 1

11. Khái niệm `garbage collection′ (thu gom rác) trong OOP liên quan đến vấn đề gì?

12 / 30

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

Tags: Bộ đề 1

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

13 / 30

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

Tags: Bộ đề 1

13. Mục tiêu của việc giảm `coupling′ (kết nối) và tăng `cohesion′ (liên kết) trong thiết kế OOP là gì?

14 / 30

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

Tags: Bộ đề 1

14. Giải pháp nào thường được sử dụng để thay thế cho `đa kế thừa′ (multiple inheritance) trong các ngôn ngữ OOP hiện đại?

15 / 30

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

Tags: Bộ đề 1

15. Thuật ngữ `coupling′ (kết nối) và `cohesion′ (liên kết) trong thiết kế hướng đối tượng đề cập đến điều gì?

16 / 30

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

Tags: Bộ đề 1

16. Trong lập trình hướng đối tượng, `đa kế thừa′ (multiple inheritance) là gì và nó có thể gây ra vấn đề gì?

17 / 30

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

Tags: Bộ đề 1

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

18 / 30

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

Tags: Bộ đề 1

18. Trong UML (Unified Modeling Language), ký hiệu nào thường được sử dụng để biểu diễn quan hệ kế thừa (inheritance)?

19 / 30

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

Tags: Bộ đề 1

19. Trong lập trình hướng đối tượng, `lớp trừu tượng′ (abstract class) khác với `lớp cụ thể` (concrete class) ở điểm nào?

20 / 30

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

Tags: Bộ đề 1

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

21 / 30

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

Tags: Bộ đề 1

21. Thuật ngữ `method overloading′ (nạp chồng phương thức) trong OOP nghĩa là gì?

22 / 30

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

Tags: Bộ đề 1

22. Nguyên tắc `SOLID′ nào khuyến khích việc các lớp nên có một và chỉ một lý do để thay đổi?

23 / 30

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

Tags: Bộ đề 1

23. Mẫu thiết kế `Observer′ (Người quan sát) giúp giải quyết vấn đề gì?

24 / 30

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

Tags: Bộ đề 1

24. Thuật ngữ `method overriding′ (ghi đè phương thức) trong OOP được sử dụng khi nào?

25 / 30

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

Tags: Bộ đề 1

25. Quan hệ `aggregation′ (tổng hợp) khác với `composition′ (hợp thành) ở điểm nào?

26 / 30

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

Tags: Bộ đề 1

26. Nguyên tắc `Dependency Inversion′ (DIP) trong SOLID khuyến nghị điều gì về sự phụ thuộc giữa các module?

27 / 30

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

Tags: Bộ đề 1

27. Đặ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?

28 / 30

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

Tags: Bộ đề 1

28. Phương thức `static′ (tĩnh) trong lập trình hướng đối tượng khác với phương thức `instance′ (thể hiện) như thế nào?

29 / 30

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

Tags: Bộ đề 1

29. Mục đích chính của tính kế thừa (inheritance) trong lập trình hướng đối tượng là gì?

30 / 30

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

Tags: Bộ đề 1

30. Trong UML, ký hiệu nào thường được sử dụng để biểu diễn quan hệ composition (hợp thành)?