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

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é!!!


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

Đề 7 - 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ừ khóa `super` thường được sử dụng để làm gì trong một lớp con?

A. Để tạo ra một đối tượng mới của lớp cha.
B. Để truy cập các thuộc tính và phương thức của lớp cha.
C. Để gọi phương thức hủy bỏ (destructor) của lớp cha.
D. Để ngăn chặn lớp con kế thừa từ lớp cha.

2. Điều gì là quan trọng nhất khi thiết kế các lớp và đối tượng trong lập trình hướng đối tượng?

A. Viết càng nhiều mã càng tốt trong mỗi lớp.
B. Tối ưu hóa hiệu suất trước khi quan tâm đến tính dễ đọc và bảo trì.
C. Đảm bảo tính gắn kết cao (high cohesion) trong mỗi lớp và sự kết nối lỏng lẻo (loose coupling) giữa các lớp.
D. Sử dụng càng nhiều kế thừa càng tốt để tái sử dụng mã.

3. Phương thức `static` trong lập trình hướng đối tượng khác với phương thức `instance` như thế nào?

A. Phương thức `static` chỉ có thể được gọi từ bên trong lớp, còn phương thức `instance` có thể được gọi từ bên ngoài.
B. Phương thức `instance` thuộc về lớp, còn phương thức `static` thuộc về đối tượng.
C. Phương thức `static` thuộc về lớp và có thể được gọi trực tiếp thông qua tên lớp, không cần đối tượng; phương thức `instance` thuộc về đối tượng và cần được gọi thông qua một đối tượng cụ thể.
D. Không có sự khác biệt lớn giữa phương thức `static` và `instance`.

4. Phương thức `abstract` (trừu tượng) trong lập trình hướng đối tượng có đặc điểm gì?

A. Có thể được gọi trực tiếp từ bên ngoài lớp.
B. Phải được định nghĩa lại (override) ở lớp con.
C. Không có thân phương thức (body) và phải được định nghĩa trong lớp cha.
D. Chỉ có thể được sử dụng trong các lớp giao diện (interface).

5. Trong lập trình hướng đối tượng, `method overriding` (ghi đè phương thức) và `method overloading` (nạp chồng phương thức) khác nhau như thế nào?

A. `Overriding` xảy ra trong cùng một lớp, còn `overloading` xảy ra giữa lớp cha và lớp con.
B. `Overloading` là định nghĩa lại một phương thức đã có ở lớp cha trong lớp con, còn `overriding` là định nghĩa nhiều phương thức cùng tên nhưng khác tham số trong cùng một lớp.
C. `Overriding` là định nghĩa lại một phương thức đã có ở lớp cha trong lớp con để thay đổi hành vi; `overloading` là định nghĩa nhiều phương thức cùng tên trong cùng một lớp hoặc lớp cha/con nhưng khác nhau về danh sách tham số.
D. `Overriding` và `overloading` là hai tên gọi khác nhau của cùng một khái niệm.

6. Ưu điểm nào sau đây KHÔNG phải là ưu điểm của lập trình hướng đối tượng so với lập trình hướng thủ tục?

A. Khả năng tái sử dụng mã nguồn cao hơn.
B. Dễ dàng quản lý các dự án lớn và phức tạp hơn.
C. Hiệu suất thực thi chương trình nhanh hơn trong mọi trường hợp.
D. Tính bảo trì và khả năng mở rộng tốt hơn.

7. Mục đích của `garbage collection` (thu gom rác) trong các ngôn ngữ lập trình hướng đối tượng là gì?

A. Tăng tốc độ thực thi chương trình.
B. Quản lý bộ nhớ tự động bằng cách giải phóng bộ nhớ không còn được sử dụng bởi chương trình.
C. Phát hiện và sửa lỗi logic trong chương trình.
D. Bảo vệ chương trình khỏi các cuộc tấn công bảo mật.

8. Khái niệm `đa hình tham số` (parametric polymorphism) trong OOP thường được hiện thực hóa thông qua cơ chế nào?

A. Kế thừa (Inheritance)
B. Giao diện (Interface)
C. Templates hoặc Generics
D. Đóng gói (Encapsulation)

9. Trong lập trình hướng đối tượng, `class` và `object` có mối quan hệ như thế nào?

A. Class là một thể hiện cụ thể của object.
B. Object là bản thiết kế, còn class là thể hiện thực tế.
C. Class là bản thiết kế, còn object là thể hiện cụ thể được tạo ra từ class.
D. Class và object là hai khái niệm hoàn toàn độc lập, không liên quan đến nhau.

10. Trong UML (Unified Modeling Language), biểu đồ lớp (class diagram) được sử dụng để mô hình hóa khía cạnh nào của hệ thống hướng đối tượng?

A. Hành vi động của đối tượng trong hệ thống.
B. Cấu trúc tĩnh của các lớp, thuộc tính và mối quan hệ giữa chúng.
C. Quy trình xử lý dữ liệu trong hệ thống.
D. Giao diện người dùng của hệ thống.

11. Tính kế thừa (inheritance) mang lại lợi ích nào sau đây trong lập trình hướng đối tượng?

A. Giảm tính linh hoạt của mã nguồn.
B. Tăng sự phức tạp trong quản lý đối tượng.
C. Cho phép tái sử dụng mã nguồn và xây dựng hệ thống phân cấp các lớp.
D. Hạn chế khả năng mở rộng của ứng dụng.

12. Trong lập trình hướng đối tượng, `coupling` (kết nối) và `cohesion` (gắn kết) là hai khái niệm quan trọng. Bạn muốn thiết kế hệ thống với mức độ `coupling` và `cohesion` như thế nào?

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.

13. Trong lập trình hướng đối tượng, `lớp trừu tượng` (abstract class) thường được sử dụng để làm gì?

A. Để tạo ra các đối tượng cụ thể của lớp đó.
B. Để định nghĩa một giao diện (interface) hoàn chỉnh cho các lớp khác.
C. Để cung cấp một lớp cơ sở chung với một số hành vi mặc định và một số hành vi trừu tượng (cần lớp con cài đặt cụ thể).
D. Để thay thế cho việc sử dụng giao diện (interface) trong mọi trường hợp.

14. Khái niệm nào sau đây của lập trình hướng đối tượng cho phép một đối tượng che giấu thông tin chi tiết bên trong và chỉ hiển thị những thông tin cần thiết ra bên ngoài?

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

15. Mục đích chính 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 độ phức tạp của mã nguồn.
B. Giảm hiệu suất 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ế phần mềm thường gặp.
D. Giới hạn sự sáng tạo của lập trình viên.

16. Lỗi nào sau đây thường gặp khi mới bắt đầu lập trình hướng đối tượng?

A. Sử dụng quá nhiều biến toàn cục.
B. Không sử dụng vòng lặp.
C. Vi phạm nguyên tắc đóng gói bằng cách truy cập trực tiếp vào thuộc tính đối tượng từ bên ngoài lớp.
D. Viết mã quá ngắn gọn và khó hiểu.

17. Khi nào thì việc sử dụng `đa kế thừa` (multiple inheritance) có thể gây ra vấn đề `diamond problem` (vấn đề hình thoi)?

A. Khi có quá nhiều lớp con kế thừa từ một lớp cha duy nhất.
B. Khi một lớp con kế thừa từ hai hoặc nhiều lớp cha có chung một lớp ông bà.
C. Khi các phương thức trong lớp cha và lớp con có cùng tên.
D. Khi sử dụng giao diện (interface) thay vì lớp trừu tượng.

18. Trong lập trình hướng đối tượng, `composition over inheritance` (kết hợp hơn kế thừa) là một nguyên tắc thiết kế khuyến khích điều gì?

A. Sử dụng kế thừa nhiều nhất có thể để tái sử dụng mã.
B. Ưu tiên sử dụng kết hợp (composition) để xây dựng mối quan hệ `có một` (has-a) thay vì kế thừa (inheritance) cho mối quan hệ `là một loại` (is-a).
C. Tránh sử dụng cả kết hợp và kế thừa để giảm độ phức tạp.
D. Sử dụng kế thừa cho mối quan hệ `có một` và kết hợp cho mối quan hệ `là một loại`.

19. Điều gì xảy ra khi bạn cố gắng truy cập một thuộc tính `private` của một đối tượng từ bên ngoài lớp của nó trong hầu hết các ngôn ngữ OOP?

A. Thuộc tính `private` sẽ tự động chuyển thành `public`.
B. Chương trình sẽ biên dịch thành công và truy cập được thuộc tính.
C. Lỗi biên dịch hoặc lỗi thời gian chạy sẽ xảy ra.
D. Giá trị mặc định của thuộc tính `private` sẽ được trả về.

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

A. `Composition` tạo ra mối quan hệ `là một loại` (is-a), còn `inheritance` tạo ra mối quan hệ `có một` (has-a).
B. `Inheritance` tạo ra mối quan hệ `là một loại` (is-a), còn `composition` tạo ra mối quan hệ `có một` (has-a).
C. Cả `composition` và `inheritance` đều tạo ra mối quan hệ `là một loại` (is-a).
D. Cả `composition` và `inheritance` đều tạo ra mối quan hệ `có một` (has-a).

21. Trong ngữ cảnh của lập trình hướng đối tượng, `dependency injection` (DI - tiêm phụ thuộc) là gì và nó giải quyết vấn đề gì?

A. Một kỹ thuật để giảm thiểu việc sử dụng bộ nhớ trong chương trình.
B. Một mẫu thiết kế để quản lý vòng đời của đối tượng.
C. Một kỹ thuật để cung cấp các phụ thuộc (dependencies) của một đối tượng từ bên ngoài, thay vì để đối tượng tự tạo hoặc tìm kiếm chúng.
D. Một phương pháp để tăng hiệu suất thực thi chương trình.

22. Phương thức `getter` và `setter` thường được sử dụng để làm gì trong lập trình hướng đối tượng?

A. Để tạo ra các đối tượng mới.
B. Để quản lý bộ nhớ của đối tượng.
C. Để kiểm soát quyền truy cập và sửa đổi các thuộc tính của đối tượng.
D. Để thực hiện các phép toán trên đối tượng.

23. Đâu là đặc điểm chính của tính đa hình (polymorphism) trong lập trình hướng đối tượng?

A. Khả năng che giấu thông tin chi tiết bên trong đối tượng.
B. Khả năng tạo ra các đối tượng từ các lớp khác nhau.
C. Khả năng một đối tượng có nhiều hình thức hoặc hành vi khác nhau tùy thuộc vào ngữ cảnh.
D. Khả năng một lớp kế thừa từ nhiều lớp khác.

24. Nguyên tắc `SOLID` nào trong lập trình hướng đối tượng khuyến khích việc một lớp chỉ nên có một lý do duy nhất để thay đổi?

A. Nguyên tắc thay thế Liskov (Liskov Substitution Principle)
B. Nguyên tắc đơn trách nhiệm (Single Responsibility Principle)
C. Nguyên tắc mở rộng - đóng (Open/Closed Principle)
D. Nguyên tắc đảo ngược phụ thuộc (Dependency Inversion Principle)

25. Giao diện (interface) và lớp trừu tượng (abstract class) có điểm chung nào sau đây?

A. Cả hai đều có thể chứa các phương thức đã được cài đặt hoàn chỉnh.
B. Cả hai đều có thể được khởi tạo trực tiếp thành đối tượng.
C. Cả hai đều dùng để định nghĩa một khuôn mẫu cho các lớp khác kế thừa.
D. Cả hai đều không hỗ trợ tính đa kế thừa.

26. Điều gì KHÔNG phải là một thành phần cơ bản của lập trình hướng đối tượng?

A. Hàm (Function)
B. Đối tượng (Object)
C. Lớp (Class)
D. Kế thừa (Inheritance)

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

A. Hủy bỏ đối tượng khi nó không còn được sử dụng.
B. Thay đổi trạng thái của đối tượng sau khi nó được tạo.
C. Khởi tạo trạng thái ban đầu của đối tượng khi đối tượng được tạo ra.
D. Gọi các phương thức khác của đối tượng.

28. Trong lập trình hướng đối tượng, `tính đóng gói` (encapsulation) liên quan mật thiết đến khái niệm nào sau đây?

A. Tính kế thừa (Inheritance)
B. Tính trừu tượng (Abstraction)
C. Tính đa hình (Polymorphism)
D. Che giấu thông tin (Information hiding)

29. Khái niệm `covariance` và `contravariance` liên quan đến điều gì trong lập trình hướng đối tượng, đặc biệt là trong ngữ cảnh của kiểu dữ liệu và kế thừa?

A. Quản lý bộ nhớ của đối tượng.
B. Xử lý ngoại lệ trong chương trình.
C. Sự linh hoạt trong việc sử dụng các kiểu dữ liệu dẫn xuất (derived types) ở những nơi mà kiểu dữ liệu cơ sở (base type) được mong đợi.
D. Tối ưu hóa hiệu suất của chương trình.

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

A. Khi muốn tạo ra một lớp có nhiều thuộc tính và phương thức khác nhau.
B. Khi muốn tái sử dụng mã nguồn từ nhiều lớp không liên quan.
C. Khi có mối quan hệ `là một loại` (is-a) theo nhiều cấp độ giữa các lớp.
D. Khi muốn tăng tính phức tạp của hệ thống.

1 / 30

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

Tags: Bộ đề 8

1. Trong lập trình hướng đối tượng, từ khóa 'super' thường được sử dụng để làm gì trong một lớp con?

2 / 30

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

Tags: Bộ đề 8

2. Điều gì là quan trọng nhất khi thiết kế các lớp và đối tượng trong lập trình hướng đối tượng?

3 / 30

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

Tags: Bộ đề 8

3. Phương thức 'static' trong lập trình hướng đối tượng khác với phương thức 'instance' như thế nào?

4 / 30

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

Tags: Bộ đề 8

4. Phương thức 'abstract' (trừu tượng) trong lập trình hướng đối tượng có đặc điểm gì?

5 / 30

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

Tags: Bộ đề 8

5. Trong lập trình hướng đối tượng, 'method overriding' (ghi đè phương thức) và 'method overloading' (nạp chồng phương thức) khác nhau như thế nào?

6 / 30

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

Tags: Bộ đề 8

6. Ưu điểm nào sau đây KHÔNG phải là ưu điểm của lập trình hướng đối tượng so với lập trình hướng thủ tục?

7 / 30

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

Tags: Bộ đề 8

7. Mục đích của 'garbage collection' (thu gom rác) trong các ngôn ngữ lập trình hướng đối tượng là gì?

8 / 30

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

Tags: Bộ đề 8

8. Khái niệm 'đa hình tham số' (parametric polymorphism) trong OOP thường được hiện thực hóa thông qua cơ chế nào?

9 / 30

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

Tags: Bộ đề 8

9. Trong lập trình hướng đối tượng, 'class' và 'object' có mối quan hệ như thế nào?

10 / 30

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

Tags: Bộ đề 8

10. Trong UML (Unified Modeling Language), biểu đồ lớp (class diagram) được sử dụng để mô hình hóa khía cạnh nào của hệ thống hướng đối tượng?

11 / 30

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

Tags: Bộ đề 8

11. Tính kế thừa (inheritance) mang lại lợi ích nào sau đây trong lập trình hướng đối tượng?

12 / 30

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

Tags: Bộ đề 8

12. Trong lập trình hướng đối tượng, 'coupling' (kết nối) và 'cohesion' (gắn kết) là hai khái niệm quan trọng. Bạn muốn thiết kế hệ thống với mức độ 'coupling' và 'cohesion' như thế nào?

13 / 30

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

Tags: Bộ đề 8

13. Trong lập trình hướng đối tượng, 'lớp trừu tượng' (abstract class) thường được sử dụng để làm gì?

14 / 30

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

Tags: Bộ đề 8

14. Khái niệm nào sau đây của lập trình hướng đối tượng cho phép một đối tượng che giấu thông tin chi tiết bên trong và chỉ hiển thị những thông tin cần thiết ra bên ngoài?

15 / 30

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

Tags: Bộ đề 8

15. Mục đích chính 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ì?

16 / 30

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

Tags: Bộ đề 8

16. Lỗi nào sau đây thường gặp khi mới bắt đầu lập trình hướng đối tượng?

17 / 30

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

Tags: Bộ đề 8

17. Khi nào thì việc sử dụng 'đa kế thừa' (multiple inheritance) có thể gây ra vấn đề 'diamond problem' (vấn đề hình thoi)?

18 / 30

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

Tags: Bộ đề 8

18. Trong lập trình hướng đối tượng, 'composition over inheritance' (kết hợp hơn kế thừa) là một nguyên tắc thiết kế khuyến khích điều gì?

19 / 30

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

Tags: Bộ đề 8

19. Điều gì xảy ra khi bạn cố gắng truy cập một thuộc tính 'private' của một đối tượng từ bên ngoài lớp của nó trong hầu hết các ngôn ngữ OOP?

20 / 30

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

Tags: Bộ đề 8

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

21 / 30

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

Tags: Bộ đề 8

21. Trong ngữ cảnh của lập trình hướng đối tượng, 'dependency injection' (DI - tiêm phụ thuộc) là gì và nó giải quyết vấn đề gì?

22 / 30

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

Tags: Bộ đề 8

22. Phương thức 'getter' và 'setter' thường được sử dụng để làm gì trong lập trình hướng đối tượng?

23 / 30

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

Tags: Bộ đề 8

23. Đâu là đặc điểm chính của tính đa hình (polymorphism) trong lập trình hướng đối tượng?

24 / 30

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

Tags: Bộ đề 8

24. Nguyên tắc 'SOLID' nào trong lập trình hướng đối tượng khuyến khích việc một lớp chỉ nên có một lý do duy nhất để thay đổi?

25 / 30

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

Tags: Bộ đề 8

25. Giao diện (interface) và lớp trừu tượng (abstract class) có điểm chung nào sau đây?

26 / 30

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

Tags: Bộ đề 8

26. Điều gì KHÔNG phải là một thành phần cơ bản của lập trình hướng đối tượng?

27 / 30

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

Tags: Bộ đề 8

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

28 / 30

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

Tags: Bộ đề 8

28. Trong lập trình hướng đối tượng, 'tính đóng gói' (encapsulation) liên quan mật thiết đến khái niệm nào sau đây?

29 / 30

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

Tags: Bộ đề 8

29. Khái niệm 'covariance' và 'contravariance' liên quan đến điều gì trong lập trình hướng đối tượng, đặc biệt là trong ngữ cảnh của kiểu dữ liệu và kế thừa?

30 / 30

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

Tags: Bộ đề 8

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