Bài Tập, Đề Thi Trắc Nghiệm Online – Môn Lập Trình Hướng Đối Tượng – Đề 05

3

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


Môn Lập Trình Hướng Đối Tượng

Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng - Đề 05

Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng - Đề 05 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.

Câu 1: Trong lập trình hướng đối tượng, khái niệm nào sau đây thể hiện khả năng một đối tượng thuộc lớp con có thể hành xử khác với đối tượng thuộc lớp cha khi được gọi cùng một phương thức?

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

Câu 2: Xét tình huống bạn có một lớp `Animal` với phương thức `makeSound()`. Các lớp `Dog` và `Cat` kế thừa từ `Animal`. Để hiện thực tính đa hình, bạn sẽ làm gì?

  • A. Xóa phương thức `makeSound()` trong lớp `Animal`.
  • B. Ghi đè (override) phương thức `makeSound()` trong cả lớp `Dog` và `Cat`.
  • C. Đổi tên phương thức `makeSound()` trong lớp `Dog` và `Cat`.
  • D. Không cần thực hiện gì, tính đa hình tự động xảy ra.

Câu 3: Tính đóng gói (Encapsulation) trong OOP mang lại lợi ích chính nào sau đây?

  • A. Bảo vệ dữ liệu khỏi sự truy cập và sửa đổi trực tiếp từ bên ngoài đối tượng.
  • B. Tăng tốc độ thực thi chương trình.
  • C. Giảm dung lượng bộ nhớ chương trình.
  • D. Cho phép truy cập dữ liệu đối tượng từ bất kỳ đâu trong chương trình.

Câu 4: Trong OOP, "tính trừu tượng" (Abstraction) được thể hiện rõ nhất qua việc nào?

  • A. Sử dụng các biến toàn cục để chia sẻ dữ liệu giữa các đối tượng.
  • B. Hiện thực tất cả các phương thức của một lớp một cách chi tiết.
  • C. Chỉ định nghĩa các thuộc tính và phương thức cần thiết của đối tượng, ẩn đi các chi tiết cài đặt phức tạp.
  • D. Tạo ra nhiều bản sao của đối tượng để tăng tính dự phòng.

Câu 5: Mối quan hệ "IS-A" (là một) trong OOP thường được hiện thực hóa thông qua cơ chế nào?

  • 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)

Câu 6: Khi một lớp `Car` kế thừa từ lớp `Vehicle`, lớp `Car` được gọi là gì?

  • A. Lớp cơ sở (Base class)
  • B. Lớp cha (Parent class)
  • C. Lớp con (Child class) hoặc lớp dẫn xuất (Derived class)
  • D. Lớp trừu tượng (Abstract class)

Câu 7: Phương thức khởi tạo (constructor) trong một lớp có vai trò chính là gì?

  • A. Giải phóng bộ nhớ cấp phát cho đối tượng khi đối tượng không còn được sử dụng.
  • B. Thay đổi giá trị của các thuộc tính của đối tượng sau khi đối tượng đã được tạo.
  • C. Thực hiện các thao tác dọn dẹp trước khi đối tượng bị hủy.
  • D. Khởi tạo trạng thái ban đầu cho đối tượng khi đối tượng được tạo ra.

Câu 8: Từ khóa nào thường được sử dụng để khai báo một lớp trong các ngôn ngữ lập trình hướng đối tượng phổ biến như Java, C++, C#?

  • A. class
  • B. object
  • C. struct
  • D. type

Câu 9: Trong ngữ cảnh của OOP, "đối tượng" (object) là gì?

  • A. Một bản thiết kế hoặc khuôn mẫu để tạo ra các thực thể.
  • B. Một thể hiện cụ thể (instance) của một lớp, có trạng thái và hành vi.
  • C. Một tập hợp các lớp có liên quan đến nhau.
  • D. Một phương pháp lập trình tập trung vào chức năng thay vì dữ liệu.

Câu 10: Thuộc tính (attributes) của một đối tượng thể hiện điều gì?

  • A. Các hành động mà đối tượng có thể thực hiện.
  • B. Cách đối tượng tương tác với các đối tượng khác.
  • C. Trạng thái hoặc dữ liệu của đối tượng.
  • D. Cấu trúc của lớp mà đối tượng thuộc về.

Câu 11: Phương thức (methods) của một đối tượng thể hiện điều gì?

  • A. Các hành động hoặc thao tác mà đối tượng có thể thực hiện.
  • B. Dữ liệu hoặc trạng thái của đối tượng.
  • C. Mối quan hệ giữa đối tượng và các đối tượng khác.
  • D. Đặc điểm kế thừa từ lớp cha của đối tượng.

Câu 12: Trong OOP, "tính kế thừa đa cấp" (multilevel inheritance) nghĩa là gì?

  • A. Một lớp kế thừa từ nhiều lớp cơ sở cùng một lúc.
  • B. Một lớp kế thừa từ một lớp khác, và lớp đó lại kế thừa từ một lớp khác nữa.
  • C. Một lớp có thể có nhiều phương thức khởi tạo khác nhau.
  • D. Một đối tượng có thể thuộc về nhiều lớp khác nhau.

Câu 13: "Tính đa kế thừa" (multiple inheritance) là gì và nó có thể gây ra vấn đề gì?

  • A. Kế thừa từ một lớp cơ sở duy nhất nhưng có nhiều lớp con.
  • B. Một lớp có thể thực hiện nhiều hành động khác nhau (đa hình).
  • C. Kế thừa các thuộc tính và phương thức từ lớp hiện tại sang lớp khác.
  • D. Kế thừa từ nhiều lớp cơ sở, có thể gây ra vấn đề "kim cương" (diamond problem) về xung đột tên.

Câu 14: "Phương thức trừu tượng" (abstract method) là gì?

  • A. Phương thức không thể được gọi từ bên ngoài lớp.
  • B. Phương thức chỉ được sử dụng trong lớp cơ sở, không được kế thừa.
  • C. Phương thức được khai báo mà không có phần thân (body) trong lớp trừu tượng, và phải được hiện thực bởi lớp con.
  • D. Phương thức có thể thực hiện nhiều hành động khác nhau (đa hình).

Câu 15: "Lớp trừu tượng" (abstract class) là gì và vai trò của nó?

  • A. Lớp không thể được khởi tạo trực tiếp, dùng để định nghĩa giao diện chung cho các lớp con kế thừa.
  • B. Lớp có thể chứa tất cả các phương thức và thuộc tính cụ thể.
  • C. Lớp chỉ chứa các thuộc tính, không có phương thức.
  • D. Lớp được sử dụng để tạo ra các đối tượng duy nhất (singleton).

Câu 16: "Giao diện" (interface) trong OOP khác với "lớp trừu tượng" như thế nào?

  • A. Giao diện có thể chứa cả thuộc tính và phương thức đã được hiện thực, còn lớp trừu tượng thì không.
  • B. Lớp trừu tượng định nghĩa hành vi, còn giao diện chỉ định nghĩa cấu trúc dữ liệu.
  • C. Giao diện có thể được khởi tạo trực tiếp, còn lớp trừu tượng thì không.
  • D. Giao diện chỉ chứa các khai báo phương thức trừu tượng, không chứa thuộc tính và không có hiện thực phương thức, trong khi lớp trừu tượng có thể chứa cả hai.

Câu 17: "Tính đóng gói" (Encapsulation) liên quan mật thiết đến khái niệm "che giấu thông tin" (information hiding). Tại sao che giấu thông tin lại quan trọng?

  • A. Để tăng tốc độ truy cập dữ liệu của đối tượng.
  • B. Để giảm sự phụ thuộc lẫn nhau giữa các phần của chương trình, giúp dễ bảo trì và thay đổi mã nguồn hơn.
  • C. Để cho phép truy cập trực tiếp vào dữ liệu của đối tượng từ bên ngoài.
  • D. Để tạo ra các đối tượng phức tạp và khó hiểu.

Câu 18: "Tính trừu tượng hóa dữ liệu" (data abstraction) giúp lập trình viên tập trung vào điều gì?

  • A. Chi tiết cài đặt của dữ liệu bên trong đối tượng.
  • B. Cách dữ liệu được lưu trữ trong bộ nhớ.
  • C. Giao diện và hành vi bên ngoài của đối tượng, thay vì chi tiết bên trong.
  • D. Tối ưu hóa hiệu suất sử dụng bộ nhớ.

Câu 19: Trong OOP, "đa hình thời gian biên dịch" (compile-time polymorphism) thường được hiện thực hóa thông qua cơ chế nào?

  • A. Nạp chồng phương thức (Method Overloading)
  • B. Ghi đè phương thức (Method Overriding)
  • C. Kế thừa (Inheritance)
  • D. Đóng gói (Encapsulation)

Câu 20: "Đa hình thời gian chạy" (runtime polymorphism) thường được hiện thực hóa thông qua cơ chế nào?

  • A. Nạp chồng phương thức (Method Overloading)
  • B. Ghi đè phương thức (Method Overriding)
  • C. Đóng gói (Encapsulation)
  • D. Trừu tượng (Abstraction)

Câu 21: Khi nào nên sử dụng "tính kế thừa" trong thiết kế OOP?

  • A. Khi muốn tạo ra các đối tượng hoàn toàn độc lập và không liên quan đến nhau.
  • B. Khi muốn ẩn hoàn toàn dữ liệu bên trong đối tượng.
  • C. Khi có mối quan hệ "IS-A" giữa các lớp và muốn tái sử dụng mã nguồn từ lớp cha.
  • D. Khi muốn thực hiện đa hình thời gian biên dịch.

Câu 22: "Tính kết hợp" (Association) và "tính tập hợp" (Aggregation) khác nhau như thế nào trong OOP?

  • A. Kết hợp thể hiện mối quan hệ "HAS-A", còn tập hợp thể hiện mối quan hệ "IS-A".
  • B. Kết hợp là mối quan hệ mạnh mẽ hơn tập hợp, thể hiện sự phụ thuộc chặt chẽ.
  • C. Tập hợp là một dạng của kế thừa, còn kết hợp thì không.
  • D. Tập hợp là một dạng đặc biệt của kết hợp, thể hiện mối quan hệ "HAS-A" nhưng các đối tượng thành phần có thể tồn tại độc lập.

Câu 23: "Tính hợp thành" (Composition) khác với "tính tập hợp" (Aggregation) ở điểm nào?

  • A. Hợp thành thể hiện mối quan hệ "IS-A", còn tập hợp thể hiện mối quan hệ "HAS-A".
  • B. Trong hợp thành, đối tượng thành phần không thể tồn tại độc lập nếu đối tượng chứa bị hủy, thể hiện mối quan hệ sở hữu mạnh mẽ hơn.
  • C. Tập hợp là mối quan hệ mạnh mẽ hơn hợp thành.
  • D. Hợp thành chỉ áp dụng cho các lớp trừu tượng, còn tập hợp áp dụng cho lớp cụ thể.

Câu 24: "Nguyên tắc thay thế Liskov" (Liskov Substitution Principle - LSP) trong SOLID nói về điều gì?

  • A. Một lớp chỉ nên có một lý do duy nhất để thay đổi.
  • B. 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 trừu tượng.
  • C. Các lớp con phải có khả năng thay thế hoàn toàn cho lớp cha của chúng mà không làm thay đổi tính đúng đắn của chương trình.
  • D. Giao diện cụ thể không nên bị ép buộc phải phụ thuộc vào các phương thức mà chúng không sử dụng.

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

  • A. Tăng tính tái sử dụng mã nguồn, dễ bảo trì và mở rộng chương trình.
  • B. Chương trình thực thi nhanh hơn và tiêu thụ ít bộ nhớ hơn.
  • C. Cú pháp ngôn ngữ đơn giản và dễ học hơn.
  • D. Phù hợp hơn cho các bài toán nhỏ và đơn giản.

Câu 26: "Tính trừu tượng" (Abstraction) giúp giảm độ phức tạp của hệ thống phần mềm bằng cách nào?

  • A. Tăng số lượng dòng code trong chương trình.
  • B. Ẩn đi các chi tiết cài đặt phức tạp, chỉ hiển thị giao diện đơn giản và dễ sử dụng.
  • C. Cho phép truy cập trực tiếp vào tất cả các thành phần của đối tượng.
  • D. Loại bỏ hoàn toàn các lỗi trong chương trình.

Câu 27: Trong OOP, "phạm vi truy cập" (access modifiers) như `private`, `protected`, `public` dùng để làm gì?

  • A. Tăng tốc độ thực thi của phương thức.
  • B. Giảm dung lượng bộ nhớ của đối tượng.
  • C. Định nghĩa kiểu dữ liệu cho các thuộc tính.
  • D. Kiểm soát mức độ truy cập từ bên ngoài vào các thành viên (thuộc tính, phương thức) của lớp, hỗ trợ tính đóng gói.

Câu 28: Khi một lớp được khai báo là `final` (trong Java) hoặc tương tự trong các ngôn ngữ khác, điều đó có nghĩa là gì?

  • A. Lớp đó chỉ có thể được khởi tạo một lần duy nhất.
  • B. Các phương thức trong lớp đó không thể bị ghi đè.
  • C. Lớp đó không thể bị kế thừa bởi bất kỳ lớp nào khác.
  • D. Các thuộc tính của lớp đó là hằng số và không thể thay đổi giá trị.

Câu 29: Trong thiết kế hướng đối tượng, nguyên tắc "ưu tiên hợp thành hơn kế thừa" (Composition over Inheritance) khuyến khích điều gì?

  • A. Luôn sử dụng kế thừa để tái sử dụng mã nguồn vì nó đơn giản hơn.
  • B. Sử dụng "tính hợp thành" (Composition) để kết hợp các đối tượng và tái sử dụng hành vi, thay vì lạm dụng "tính kế thừa" (Inheritance) khi không thực sự cần mối quan hệ "IS-A".
  • C. Tránh sử dụng cả hợp thành và kế thừa để giảm độ phức tạp.
  • D. Chỉ sử dụng kế thừa đa cấp để tận dụng tối đa khả năng tái sử dụng.

Câu 30: Khi thiết kế một hệ thống quản lý thư viện bằng OOP, bạn có thể tạo lớp `Book`, `Author`, `Library`, `Member`. Mối quan hệ phù hợp nhất giữa `Library` và `Book` là gì?

  • A. Kế thừa (Inheritance) - `Library` kế thừa từ `Book`.
  • B. Đa hình (Polymorphism) - `Library` và `Book` có chung phương thức.
  • C. Tập hợp (Aggregation) hoặc Hợp thành (Composition) - `Library` chứa nhiều đối tượng `Book`.
  • D. Không có mối quan hệ nào - `Library` và `Book` là độc lập.

1 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 1: Trong lập trình hướng đối tượng, khái niệm nào sau đây thể hiện khả năng một đối tượng thuộc lớp con có thể hành xử khác với đối tượng thuộc lớp cha khi được gọi cùng một phương thức?

2 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 2: Xét tình huống bạn có một lớp `Animal` với phương thức `makeSound()`. Các lớp `Dog` và `Cat` kế thừa từ `Animal`. Để hiện thực tính đa hình, bạn sẽ làm gì?

3 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 3: Tính đóng gói (Encapsulation) trong OOP mang lại lợi ích chính nào sau đây?

4 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 4: Trong OOP, 'tính trừu tượng' (Abstraction) được thể hiện rõ nhất qua việc nào?

5 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 5: Mối quan hệ 'IS-A' (là một) trong OOP thường được hiện thực hóa thông qua cơ chế nào?

6 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 6: Khi một lớp `Car` kế thừa từ lớp `Vehicle`, lớp `Car` được gọi là gì?

7 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 7: Phương thức khởi tạo (constructor) trong một lớp có vai trò chính là gì?

8 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 8: Từ khóa nào thường được sử dụng để khai báo một lớp trong các ngôn ngữ lập trình hướng đối tượng phổ biến như Java, C++, C#?

9 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 9: Trong ngữ cảnh của OOP, 'đối tượng' (object) là gì?

10 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 10: Thuộc tính (attributes) của một đối tượng thể hiện điều gì?

11 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 11: Phương thức (methods) của một đối tượng thể hiện điều gì?

12 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 12: Trong OOP, 'tính kế thừa đa cấp' (multilevel inheritance) nghĩa là gì?

13 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 13: 'Tính đa kế thừa' (multiple inheritance) là gì và nó có th?? gây ra vấn đề gì?

14 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 14: 'Phương thức trừu tượng' (abstract method) là gì?

15 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 15: 'Lớp trừu tượng' (abstract class) là gì và vai trò của nó?

16 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 16: 'Giao diện' (interface) trong OOP khác với 'lớp trừu tượng' như thế nào?

17 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 17: 'Tính đóng gói' (Encapsulation) liên quan mật thiết đến khái niệm 'che giấu thông tin' (information hiding). Tại sao che giấu thông tin lại quan trọng?

18 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 18: 'Tính trừu tượng hóa dữ liệu' (data abstraction) giúp lập trình viên tập trung vào điều gì?

19 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 19: Trong OOP, 'đa hình thời gian biên dịch' (compile-time polymorphism) thường được hiện thực hóa thông qua cơ chế nào?

20 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 20: 'Đa hình thời gian chạy' (runtime polymorphism) thường được hiện thực hóa thông qua cơ chế nào?

21 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 21: Khi nào nên sử dụng 'tính kế thừa' trong thiết kế OOP?

22 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 22: 'Tính kết hợp' (Association) và 'tính tập hợp' (Aggregation) khác nhau như thế nào trong OOP?

23 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 23: 'Tính hợp thành' (Composition) khác với 'tính tập hợp' (Aggregation) ở điểm nào?

24 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 24: 'Nguyên tắc thay thế Liskov' (Liskov Substitution Principle - LSP) trong SOLID nói về điều gì?

25 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

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

26 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 26: 'Tính trừu tượng' (Abstraction) giúp giảm độ phức tạp của hệ thống phần mềm bằng cách nào?

27 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 27: Trong OOP, 'phạm vi truy cập' (access modifiers) như `private`, `protected`, `public` dùng để làm gì?

28 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 28: Khi một lớp được khai báo là `final` (trong Java) hoặc tương tự trong các ngôn ngữ khác, điều đó có nghĩa là gì?

29 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 29: Trong thiết kế hướng đối tượng, nguyên tắc 'ưu tiên hợp thành hơn kế thừa' (Composition over Inheritance) khuyến khích điều gì?

30 / 30

Category: Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng

Tags: Bộ đề 5

Câu 30: Khi thiết kế một hệ thống quản lý thư viện bằng OOP, bạn có thể tạo lớp `Book`, `Author`, `Library`, `Member`. Mối quan hệ phù hợp nhất giữa `Library` và `Book` là gì?

Xem kết quả