Đề 9 – Đề thi, câu hỏi 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

Đề 9 - Đề thi, câu hỏi trắc nghiệm online Lập trình hướng đối tượng

1. Phương pháp (method) nào sau đây được gọi tự động khi một đối tượng được tạo ra trong hầu hết các ngôn ngữ lập trình hướng đối tượng?

A. Finalize
B. Constructor
C. Dispose
D. Destructor

2. Nguyên tắc Liskov Substitution Principle (LSP) trong SOLID nói về điều gì?

A. Một lớp chỉ nên có một trách nhiệm duy nhất.
B. Các lớp con (subtypes) phải có khả năng thay thế các lớp cha (base types) của chúng mà không làm thay đổi tính đúng đắn của chương trình.
C. Nên tạo ra nhiều interface đặc thù hơn là một interface lớn.
D. Các lớp nên mở cho việc mở rộng nhưng đóng cho việc sửa đổi.

3. Đa kế thừa (multiple inheritance) là gì?

A. Một lớp chỉ có thể kế thừa từ một lớp duy nhất.
B. Một lớp có thể kế thừa từ nhiều lớp cha khác nhau.
C. Một lớp không thể kế thừa từ bất kỳ lớp nào.
D. Một lớp chỉ có thể kế thừa từ lớp trừu tượng.

4. Phương thức (method) của một đối tượng là gì?

A. Một đặc điểm của đối tượng.
B. Một hành động mà đối tượng có thể thực hiện, thường thao tác trên dữ liệu của đối tượng.
C. Một bản thiết kế của đối tượng.
D. Một lớp mà đối tượng được tạo ra từ đó.

5. Trong lập trình hướng đối tượng, `ghi đè phương thức` (method overriding) là gì?

A. Việc tạo ra một phương thức mới trong một lớp.
B. Việc định nghĩa lại một phương thức đã tồn tại trong lớp cha (superclass) ở lớp con (subclass) để cung cấp một triển khai cụ thể hơn.
C. Việc ẩn một phương thức trong một lớp.
D. Việc xóa một phương thức khỏi một lớp.

6. Tính kế thừa (inheritance) trong lập trình hướng đối tượng cho phép điều gì?

A. Tạo ra các đối tượng độc lập, không liên quan đến nhau.
B. Một lớp (class) có thể kế thừa các thuộc tính và phương thức từ một lớp khác, giúp tái sử dụng mã và xây dựng hệ thống phân cấp lớp.
C. Ẩn các chi tiết triển khai của một đối tượng.
D. Đóng gói dữ liệu và phương thức vào trong một đơn vị.

7. Định nghĩa nào sau đây mô tả đúng nhất về mối quan hệ `has-a` trong lập trình hướng đối tượng?

A. Một lớp kế thừa từ một lớp khác.
B. Một lớp có một hoặc nhiều đối tượng của các lớp khác như là các thuộc tính của nó, thể hiện mối quan hệ thành phần.
C. Các đối tượng thuộc các lớp khác nhau có thể tương tác với nhau.
D. Một lớp sử dụng các phương thức của một lớp khác.

8. Trong lập trình hướng đối tượng, `tính đóng gói` (encapsulation) đề cập đến điều gì?

A. Khả năng một đối tượng có nhiều hình thức khác nhau.
B. Cơ chế cho phép một lớp kế thừa các thuộc tính và phương thức từ một lớp khác.
C. Việc kết hợp dữ liệu và phương thức thao tác dữ liệu đó vào trong một đơn vị duy nhất, đồng thời bảo vệ dữ liệu khỏi sự truy cập trực tiếp từ bên ngoài.
D. Quá trình ẩn các chi tiết triển khai và chỉ hiển thị các chức năng cần thiết cho người dùng.

9. Lợi ích của việc sử dụng tính trừu tượng (abstraction) trong lập trình hướng đối tượng là gì?

A. Tăng tính phức tạp của mã.
B. Giảm khả năng tái sử dụng mã.
C. Cho phép ẩn các chi tiết triển khai phức tạp và chỉ hiển thị các chức năng cần thiết, giúp đơn giản hóa việc sử dụng và bảo trì mã.
D. Làm cho mã khó đọc hơn.

10. SOLID là một tập hợp các nguyên tắc thiết kế hướng đối tượng. 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ế)
C. Segregation Principle (Nguyên tắc phân tách)
D. State Principle (Nguyên tắc trạng thái)

11. Singleton pattern được sử dụng để làm gì?

A. Để tạo ra nhiều thể hiện 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 thể hiện đó.
C. Để tạo ra các đối tượng có thuộc tính khác nhau.
D. Để ẩn các chi tiết triển khai của một lớp.

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

A. Khả năng một đối tượng có nhiều thuộc tính.
B. Khả năng một lớp có nhiều phương thức.
C. Khả năng một đối tượng có thể có nhiều kiểu dữ liệu khác nhau.
D. Khả năng một đối tượng có thể có nhiều hình thức hoặc hành vi khác nhau, thường thông qua kế thừa và ghi đè phương thức.

13. Tại sao đa kế thừa đôi khi được coi là một vấn đề trong thiết kế hướng đối tượng?

A. Vì nó làm cho mã dễ đọc hơn.
B. Vì nó giúp giảm sự phụ thuộc giữa các lớp.
C. Vì nó có thể dẫn đến `vấn đề kim cương` (diamond problem), gây ra sự mơ hồ khi một lớp kế thừa các thuộc tính hoặc phương thức trùng tên từ các lớp cha khác nhau.
D. Vì nó làm tăng hiệu suất của chương trình.

14. Strategy pattern cho phép bạn làm gì?

A. Xác định một họ các thuật toán, đóng gói mỗi thuật toán lại, và làm cho chúng có thể thay thế lẫn nhau.
B. Tạo ra một đối tượng phức tạp bằng cách sử dụng một đối tượng builder.
C. Đảm bảo rằng một lớp chỉ có một thể hiện duy nhất.
D. Định nghĩa một giao diện cho việc tạo ra các đối tượng, nhưng để các lớp con quyết định lớp nào sẽ được khởi tạo.

15. Sự khác biệt chính giữa lớp trừu tượng (abstract class) và interface là gì?

A. Lớp trừu tượng có thể chứa các phương thức đã được triển khai, trong khi interface chỉ chứa các phương thức trừu tượng.
B. Interface có thể chứa các phương thức đã được triển khai, trong khi lớp trừu tượng chỉ chứa các phương thức trừu tượng.
C. Cả hai đều giống nhau và có thể thay thế cho nhau.
D. Lớp trừu tượng không thể kế thừa, trong khi interface có thể kế thừa.

16. Từ khóa nào sau đây thường được sử dụng để chỉ định rằng một thuộc tính hoặc phương thức chỉ có thể được truy cập từ bên trong lớp đó?

A. Public
B. Protected
C. Internal
D. Private

17. Định nghĩa nào sau đây mô tả đúng nhất về mối quan hệ `is-a` trong lập trình hướng đối tượng?

A. Một lớp chứa các đối tượng của các lớp khác.
B. Một lớp kế thừa từ một lớp khác, thể hiện một loại quan hệ phân cấp.
C. Các đối tượng thuộc các lớp khác nhau có thể tương tác với nhau.
D. Một lớp sử dụng các phương thức của một lớp khác.

18. Đặc điểm nào sau đây KHÔNG phải là một lợi ích 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ăng độ phức tạp của mã nguồn
D. Tính kế thừa (Inheritance)

19. Mục đích của việc sử dụng factory pattern trong lập trình hướng đối tượng là gì?

A. Để tạo ra các đối tượng có cùng kiểu dữ liệu.
B. Để tạo ra các đối tượng mà không cần chỉ định lớp cụ thể để tạo, giúp tăng tính linh hoạt và giảm sự phụ thuộc giữa các lớp.
C. Để tạo ra các đối tượng chỉ có một thể hiện duy nhất.
D. Để tạo ra các đối tượng có thuộc tính giống nhau.

20. Trong lập trình hướng đối tượng, `association` (kết hợp) là gì?

A. Một loại quan hệ kế thừa.
B. Một mối quan hệ giữa hai lớp, trong đó cả hai lớp có thể tồn tại độc lập với nhau.
C. Một loại quan hệ thành phần.
D. Một mối quan hệ trong đó một lớp phụ thuộc hoàn toàn vào lớp khác.

21. Dependency Inversion Principle (DIP) trong SOLID khuyến khích điều gì?

A. Các module cấp cao không nên phụ thuộc vào các module cấp thấp, cả hai nên phụ thuộc vào abstraction.
B. Các lớp con nên kế thừa tất cả các phương thức từ lớp cha.
C. Một lớp chỉ nên có một trách nhiệm duy nhất.
D. Nên tạo ra các lớp càng phức tạp càng tốt.

22. Khi nào nên sử dụng tính đa hình (polymorphism) trong thiết kế hướng đối tượng?

A. Khi bạn muốn giảm tính linh hoạt của mã.
B. Khi bạn muốn tạo ra các lớp hoàn toàn độc lập với nhau.
C. Khi bạn muốn cho phép các đối tượng thuộc các lớp khác nhau được xử lý theo cùng một cách thông qua một giao diện chung, giúp viết mã tổng quát và dễ bảo trì hơn.
D. Khi bạn muốn ẩn tất cả các chi tiết triển khai của một lớp.

23. Ưu điểm của việc sử dụng dependency injection (DI) trong lập trình hướng đối tượng là gì?

A. Giảm sự phụ thuộc giữa các lớp, giúp mã dễ kiểm thử, bảo trì và tái sử dụng hơn.
B. Tăng sự phụ thuộc giữa các lớp.
C. Làm cho mã khó kiểm thử hơn.
D. Giảm hiệu suất của chương trình.

24. Đối tượng (object) trong lập trình hướng đối tượng là gì?

A. Một bản thiết kế của một lớp.
B. Một thể hiện cụ thể của một lớp, có trạng thái và hành vi.
C. Một biến toàn cục.
D. Một hàm không trả về giá trị.

25. Interface trong lập trình hướng đối tượng được sử dụng để làm gì?

A. Để tạo ra các đối tượng cụ thể.
B. Để định nghĩa một tập hợp các phương thức mà một lớp phải thực hiện, tạo ra một giao diện chung cho các lớp khác nhau.
C. Để ẩn các chi tiết triển khai của một lớp.
D. Để kế thừa các thuộc tính từ một lớp khác.

26. Trong lập trình hướng đối tượng, một `lớp` (class) là gì?

A. Một thể hiện cụ thể của một đối tượng.
B. Một bản thiết kế hoặc khuôn mẫu để tạo ra các đối tượng.
C. Một biến được sử dụng để lưu trữ dữ liệu.
D. Một hàm được sử dụng để thực hiện một tác vụ cụ thể.

27. Thuộc tính (attribute) của một đối tượng là gì?

A. Một hành động mà đối tượng có thể thực hiện.
B. Một đặc điểm hoặc dữ liệu mô tả trạng thái của đối tượng.
C. Một loại đối tượng khác.
D. Một lớp mà đối tượng kế thừa từ đó.

28. Sự khác biệt chính giữa `aggregation` (tập hợp) và `composition` (thành phần) là gì?

A. Aggregation là một dạng của composition.
B. Trong aggregation, lớp con có thể tồn tại độc lập với lớp cha, trong khi trong composition, lớp con không thể tồn tại nếu không có lớp cha.
C. Composition là một dạng của aggregation.
D. Không có sự khác biệt giữa aggregation và composition.

29. Trong ngữ cảnh của lập trình hướng đối tượng, `thành phần` (composition) là gì?

A. Một cách để tạo ra các lớp mới từ các lớp hiện có thông qua kế thừa.
B. Một kỹ thuật cho phép các đối tượng chứa các đối tượng khác như là các thuộc tính của chúng, tạo ra mối quan hệ `có một` (has-a).
C. Một cách để ẩn các chi tiết triển khai của một đối tượng.
D. Một cách để đảm bảo rằng một lớp chỉ có một thể hiện duy nhất.

30. Lợi ích chính của việc sử dụng các design pattern trong lập trình hướng đối tượng là gì?

A. Giảm kích thước mã nguồn.
B. Tăng tốc độ thực thi của chương trình.
C. 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, giúp cải thiện khả năng tái sử dụng, bảo trì và mở rộng của mã.
D. Giúp mã nguồn trở nên khó đọc hơn.

1 / 30

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

Tags: Bộ đề 9

1. Phương pháp (method) nào sau đây được gọi tự động khi một đối tượng được tạo ra trong hầu hết các ngôn ngữ lập trình hướng đối tượng?

2 / 30

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

Tags: Bộ đề 9

2. Nguyên tắc Liskov Substitution Principle (LSP) trong SOLID nói về điều gì?

3 / 30

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

Tags: Bộ đề 9

3. Đa kế thừa (multiple inheritance) là gì?

4 / 30

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

Tags: Bộ đề 9

4. Phương thức (method) của một đối tượng là gì?

5 / 30

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

Tags: Bộ đề 9

5. Trong lập trình hướng đối tượng, 'ghi đè phương thức' (method overriding) là gì?

6 / 30

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

Tags: Bộ đề 9

6. Tính kế thừa (inheritance) trong lập trình hướng đối tượng cho phép điều gì?

7 / 30

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

Tags: Bộ đề 9

7. Định nghĩa nào sau đây mô tả đúng nhất về mối quan hệ 'has-a' trong lập trình hướng đối tượng?

8 / 30

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

Tags: Bộ đề 9

8. Trong lập trình hướng đối tượng, 'tính đóng gói' (encapsulation) đề cập đến điều gì?

9 / 30

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

Tags: Bộ đề 9

9. Lợi ích của việc sử dụng tính trừu tượng (abstraction) trong lập trình hướng đối tượng là gì?

10 / 30

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

Tags: Bộ đề 9

10. SOLID là một tập hợp các nguyên tắc thiết kế hướng đối tượng. Chữ 'S' trong SOLID đại diện cho nguyên tắc nào?

11 / 30

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

Tags: Bộ đề 9

11. Singleton pattern được sử dụng để làm gì?

12 / 30

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

Tags: Bộ đề 9

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

13 / 30

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

Tags: Bộ đề 9

13. Tại sao đa kế thừa đôi khi được coi là một vấn đề trong thiết kế hướng đối tượng?

14 / 30

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

Tags: Bộ đề 9

14. Strategy pattern cho phép bạn làm gì?

15 / 30

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

Tags: Bộ đề 9

15. Sự khác biệt chính giữa lớp trừu tượng (abstract class) và interface là gì?

16 / 30

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

Tags: Bộ đề 9

16. Từ khóa nào sau đây thường được sử dụng để chỉ định rằng một thuộc tính hoặc phương thức chỉ có thể được truy cập từ bên trong lớp đó?

17 / 30

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

Tags: Bộ đề 9

17. Định nghĩa nào sau đây mô tả đúng nhất về mối quan hệ 'is-a' trong lập trình hướng đối tượng?

18 / 30

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

Tags: Bộ đề 9

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

19 / 30

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

Tags: Bộ đề 9

19. Mục đích của việc sử dụng factory pattern trong lập trình hướng đối tượng là gì?

20 / 30

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

Tags: Bộ đề 9

20. Trong lập trình hướng đối tượng, 'association' (kết hợp) là gì?

21 / 30

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

Tags: Bộ đề 9

21. Dependency Inversion Principle (DIP) trong SOLID khuyến khích điều gì?

22 / 30

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

Tags: Bộ đề 9

22. Khi nào nên sử dụng tính đa hình (polymorphism) trong thiết kế hướng đối tượng?

23 / 30

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

Tags: Bộ đề 9

23. Ưu điểm của việc sử dụng dependency injection (DI) trong lập trình hướng đối tượng là gì?

24 / 30

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

Tags: Bộ đề 9

24. Đối tượng (object) trong lập trình hướng đối tượng là gì?

25 / 30

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

Tags: Bộ đề 9

25. Interface trong lập trình hướng đối tượng được sử dụng để làm gì?

26 / 30

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

Tags: Bộ đề 9

26. Trong lập trình hướng đối tượng, một 'lớp' (class) là gì?

27 / 30

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

Tags: Bộ đề 9

27. Thuộc tính (attribute) của một đối tượng là gì?

28 / 30

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

Tags: Bộ đề 9

28. Sự khác biệt chính giữa 'aggregation' (tập hợp) và 'composition' (thành phần) là gì?

29 / 30

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

Tags: Bộ đề 9

29. Trong ngữ cảnh của lập trình hướng đối tượng, 'thành phần' (composition) là gì?

30 / 30

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

Tags: Bộ đề 9

30. Lợi ích chính của việc sử dụng các design pattern trong lập trình hướng đối tượng là gì?