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

6

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 - Đề 02

Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Hướng Đối Tượng - Đề 02 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 biệt so với đối tượng thuộc lớp cha khi cùng nhận một thông điệp?

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

Câu 2: Xét đoạn mã giả sau:

```
Class Animal {
public method Speak() {
print

  • 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 3: Mục đích chính của tính đóng gói (Encapsulation) trong lập trình hướng đối tượng là gì?

  • A. Tăng tốc độ thực thi chương trình
  • B. Che giấu thông tin và bảo vệ dữ liệu của đối tượng, kiểm soát truy cập
  • C. Giảm dung lượng bộ nhớ sử dụng
  • D. Cho phép tái sử dụng mã nguồn dễ dàng hơn

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

  • A. Chỉ cung cấp giao diện tương tác đơn giản với đối tượng, ẩn giấu chi tiết phức tạp bên trong
  • B. Sao chép thuộc tính và phương thức từ lớp cha sang lớp con
  • C. Cho phép một đối tượng có nhiều hình thức khác nhau
  • D. Gộp nhóm dữ liệu và phương thức liên quan vào trong một đơn vị duy nhất

Câu 5: Phương thức khởi tạo (constructor) trong một lớp đố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. Thực hiện các thao tác tính toán phức tạp
  • C. Khởi tạo giá trị ban đầu cho các thuộc tính của đối tượng
  • D. Truy cập và thay đổi giá trị của các thuộc tính private

Câu 6: Khi một lớp "Con mèo" kế thừa từ lớp "Động vật", lớp "Động vật" được gọi là:

  • A. Lớp cơ sở (Base class)
  • B. Lớp dẫn xuất (Derived class)
  • C. Lớp giao diện (Interface class)
  • D. Lớp trừu tượng (Abstract class)

Câu 7: Trong các ngôn ngữ OOP, phạm vi truy cập "private" của một thuộc tính hoặc phương thức có nghĩa là:

  • A. Có thể truy cập từ bất kỳ đâu trong chương trình
  • B. Chỉ có thể truy cập từ lớp con và lớp hiện tại
  • C. Chỉ có thể truy cập từ bên trong lớp hiện tại
  • D. Chỉ có thể truy cập từ các lớp cùng gói (package)

Câu 8: Lợi ích chính của việc sử dụng tính kế thừa trong OOP là gì?

  • A. Tăng tính bảo mật cho dữ liệu
  • B. Tái sử dụng mã nguồn và giảm sự trùng lặp code
  • C. Nâng cao hiệu suất chương trình
  • D. Đơn giản hóa việc thiết kế giao diện người dùng

Câu 9: Khái niệm nào trong OOP cho phép bạn định nghĩa một lớp "trừu tượng" mà không cần cung cấp đầy đủ cài đặt cho tất cả các phương thức, và các lớp con phải cung cấp cài đặt cụ thể cho các phương thức này?

  • A. Lớp tĩnh (Static class)
  • B. Lớp kín (Sealed class)
  • C. Lớp nội (Inner class)
  • D. Lớp trừu tượng (Abstract class)

Câu 10: "Đối tượng" (Object) trong OOP là gì?

  • A. Một bản thiết kế hoặc khuôn mẫu cho các thực thể
  • 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 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 không sử dụng lớp

Câu 11: Trong OOP, mối quan hệ "is-a" (là một) thường được thể hiện thông qua cơ chế nào?

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

Câu 12: Phương thức hủy (destructor) trong OOP thường được sử dụng để làm gì?

  • A. Giải phóng tài nguyên mà đối tượng đã chiếm giữ khi đối tượng bị hủy
  • B. Khởi tạo giá trị ban đầu cho các thuộc tính của đối tượng
  • C. Thực hiện các thao tác trước khi đối tượng được tạo ra
  • D. Thay đổi kiểu dữ liệu của đối tượng

Câu 13: Chọn phát biểu đúng về "đa kế thừa" (multiple inheritance) trong OOP:

  • A. Đa kế thừa luôn được khuyến khích vì tăng tính tái sử dụng mã nguồn
  • B. Đa kế thừa cho phép một lớp kế thừa từ nhiều lớp cha, nhưng có thể gây phức tạp và xung đột
  • C. Đa kế thừa là một hình thức của tính đa hình
  • D. Đa kế thừa và kế thừa đơn (single inheritance) không có sự khác biệt về bản chất

Câu 14: Trong OOP, "thông điệp" (message) thường được hiểu là:

  • A. Dữ liệu được truyền giữa các đối tượng
  • B. Tên của một lớp đối tượng
  • C. Lời gọi một phương thức của một đối tượng
  • D. Một biến toàn cục trong chương trình

Câu 15: "Tính module hóa" (Modularity) trong OOP được hỗ trợ bởi khái niệm nào?

  • A. Lớp và đối tượng
  • B. Tính đa hình
  • C. Tính kế thừa
  • D. Tính trừu tượng

Câu 16: Phương thức "getter" và "setter" thường được sử dụng để làm gì trong OOP?

  • A. Tăng tốc độ truy cập thuộc tính
  • B. Kiểm soát việc truy cập và sửa đổi các thuộc tính của đối tượng
  • C. Tự động tạo ra các đối tượng mới
  • D. Ẩn hoàn toàn các thuộc tính của đối tượng

Câu 17: 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 các đối tượng
  • B. Quy trình xử lý dữ liệu
  • C. Giao diện người dùng
  • D. Cấu trúc tĩnh của các lớp và mối quan hệ giữa chúng

Câu 18: Nguyên tắc "SOLID" trong thiết kế hướng đối tượng là tập hợp các nguyên tắc hướng dẫn nào?

  • A. Nguyên tắc kiểm thử phần mềm
  • B. Nguyên tắc quản lý dự án
  • C. Nguyên tắc thiết kế lớp và mối quan hệ giữa các lớp
  • D. Nguyên tắc tối ưu hóa hiệu suất

Câu 19: Nguyên tắc "Liskov Substitution" trong SOLID nói về điều gì?

  • A. Mỗi lớp chỉ nên có một lý do duy nhất để thay đổi
  • B. Các lớp con phải có thể thay thế lớp cha mà không làm thay đổi tính đúng đắn của chương trình
  • C. Nên ưu tiên sử dụng nhiều giao diện đặc biệt hơn là một giao diện lớn
  • D. Phụ thuộc vào trừu tượng thay vì phụ thuộc vào lớp cụ thể

Câu 20: "Coupling" (tính liên kết) và "Cohesion" (tính gắn kết) là hai khái niệm quan trọng trong thiết kế OOP. Thiết kế tốt thường hướng tới:

  • A. Coupling thấp (Low coupling) và Cohesion cao (High cohesion)
  • B. Coupling cao (High coupling) và Cohesion thấp (Low cohesion)
  • C. Cả Coupling và Cohesion đều cao
  • D. Cả Coupling và Cohesion đều thấp

Câu 21: Trong ngôn ngữ lập trình hướng đối tượng, từ khóa nào thường được sử dụng để khai báo một lớp?

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

Câu 22: "Tính trừu tượng dữ liệu" (Data Abstraction) khác với "tính trừu tượng điều khiển" (Control Abstraction) như thế nào?

  • A. Không có sự khác biệt, đây chỉ là hai tên gọi khác nhau
  • B. Trừu tượng dữ liệu ẩn giấu cách dữ liệu được biểu diễn, trừu tượng điều khiển ẩn giấu cách thực hiện các thao tác
  • C. Trừu tượng dữ liệu chỉ áp dụng cho dữ liệu nguyên thủy, trừu tượng điều khiển cho đối tượng
  • D. Trừu tượng dữ liệu liên quan đến giao diện người dùng, trừu tượng điều khiển liên quan đến logic nghiệp vụ

Câu 23: "Composition" (tính hợp thành) và "Aggregation" (tính tập hợp) là hai loại quan hệ giữa các lớp trong OOP. Sự khác biệt chính giữa chúng là gì?

  • A. Composition thể hiện quan hệ "is-a", Aggregation thể hiện quan hệ "has-a"
  • B. Aggregation mạnh hơn Composition về mức độ phụ thuộc
  • C. Trong Composition, đối tượng "thành phần" phụ thuộc vào đối tượng "chứa", còn trong Aggregation thì không
  • D. Composition chỉ áp dụng cho dữ liệu tĩnh, Aggregation cho dữ liệu động

Câu 24: Ví dụ nào sau đây thể hiện rõ nhất quan hệ "Composition"?

  • A. Giáo viên và Sinh viên trong một trường học
  • B. Động cơ và Xe ô tô
  • C. Sách và Thư viện
  • D. Bài hát và Danh sách phát nhạc

Câu 25: "Interface" (giao diện) trong OOP có vai trò gì?

  • A. Tăng hiệu suất thực thi của chương trình
  • B. Thay thế hoàn toàn cho lớp trừu tượng
  • C. Giảm tính đóng gói của đối tượng
  • D. Định nghĩa một tập hợp các phương thức mà các lớp thực hiện interface phải cung cấp

Câu 26: Trong lập trình hướng đối tượng, "Dependency Injection" (DI - Tiêm phụ thuộc) là một mẫu thiết kế giúp đạt được mục tiêu nào?

  • A. Tăng tính đóng gói
  • B. Tăng tính kế thừa
  • C. Giảm sự phụ thuộc giữa các lớp và tăng tính module hóa
  • D. Tăng hiệu suất của ứng dụng

Câu 27: "Overloading" (nạp chồng) phương thức là gì?

  • A. Định nghĩa nhiều phương thức cùng tên trong một lớp nhưng khác nhau về tham số
  • B. Ghi đè phương thức của lớp cha trong lớp con
  • C. Gọi một phương thức từ một lớp khác
  • D. Tạo ra một bản sao của một đối tượng

Câu 28: "Overriding" (ghi đè) phương thức là gì?

  • A. Định nghĩa nhiều phương thức cùng tên trong một lớp nhưng khác nhau về tham số
  • B. Lớp con định nghĩa lại phương thức đã có ở lớp cha
  • C. Ẩn giấu phương thức của lớp cha
  • D. Đổi tên phương thức trong quá trình kế thừa

Câu 29: Kiểu dữ liệu "enum" (liệt kê) trong OOP thường được sử dụng để làm gì?

  • A. Lưu trữ danh sách các đối tượng
  • B. Định nghĩa cấu trúc dữ liệu phức tạp
  • C. Định nghĩa một tập hợp hữu hạn các giá trị hằng số có tên
  • D. Thay thế cho kiểu dữ liệu boolean

Câu 30: Trong ngữ cảnh kiểm thử đơn vị (unit testing) phần mềm OOP, "mock object" (đối tượng giả lập) thường được sử dụng để:

  • A. Tăng hiệu suất kiểm thử
  • B. Kiểm thử giao diện người dùng
  • C. Kiểm thử tích hợp giữa các module
  • D. Thay thế các phụ thuộc thực sự của đối tượng đang kiểm thử để cô lập và kiểm tra hành vi của đối tượng đó

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ộ đề 2

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 biệt so với đối tượng thuộc lớp cha khi cùng nhận một thông điệp?

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ộ đề 2

Câu 2: Xét đoạn mã giả sau:

```
Class Animal {
public method Speak() {
print "Generic animal sound";
}
}

Class Dog extends Animal {
override public method Speak() {
print "Woof!";
}
}

Class Cat extends Animal {
override public method Speak() {
print "Meow!";
}
}

Animal myAnimal = new Dog();
myAnimal.Speak();
```

Đoạn mã trên minh họa rõ nhất cho khái niệm OOP nào?

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ộ đề 2

Câu 3: Mục đích chính của tính đóng gói (Encapsulation) trong lập trình hướng đối tượng là gì?

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ộ đề 2

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

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ộ đề 2

Câu 5: Phương thức khởi tạo (constructor) trong một lớp đối tượng thường được sử dụng để làm gì?

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ộ đề 2

Câu 6: Khi một lớp 'Con mèo' kế thừa từ lớp 'Động vật', lớp 'Động vật' được gọi là:

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ộ đề 2

Câu 7: Trong các ngôn ngữ OOP, phạm vi truy cập 'private' của một thuộc tính hoặc phương thức có nghĩa là:

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ộ đề 2

Câu 8: Lợi ích chính của việc sử dụng tính kế thừa trong OOP là gì?

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ộ đề 2

Câu 9: Khái niệm nào trong OOP cho phép bạn định nghĩa một lớp 'trừu tượng' mà không cần cung cấp đầy đủ cài đặt cho tất cả các phương thức, và các lớp con phải cung cấp cài đặt cụ thể cho các phương thức này?

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ộ đề 2

Câu 10: 'Đối tượng' (Object) trong OOP là 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ộ đề 2

Câu 11: Trong OOP, mối quan hệ 'is-a' (là một) thường được thể hiện thông qua cơ chế nào?

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ộ đề 2

Câu 12: Phương thức hủy (destructor) trong OOP thường được sử dụng để làm 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ộ đề 2

Câu 13: Chọn phát biểu đúng về 'đa kế thừa' (multiple inheritance) trong OOP:

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ộ đề 2

Câu 14: Trong OOP, 'thông điệp' (message) thường được hiểu là:

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ộ đề 2

Câu 15: 'Tính module hóa' (Modularity) trong OOP được hỗ trợ bởi khái niệm nào?

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ộ đề 2

Câu 16: Phương thức 'getter' và 'setter' thường được sử dụng để làm gì trong OOP?

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ộ đề 2

Câu 17: 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?

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ộ đề 2

Câu 18: Nguyên tắc 'SOLID' trong thiết kế hướng đối tượng là tập hợp các nguyên tắc hướng dẫn nào?

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ộ đề 2

Câu 19: Nguyên tắc 'Liskov Substitution' trong SOLID nói về điều gì?

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ộ đề 2

Câu 20: 'Coupling' (tính liên kết) và 'Cohesion' (tính gắn kết) là hai khái niệm quan trọng trong thiết kế OOP. Thiết kế tốt thường hướng tới:

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ộ đề 2

Câu 21: Trong ngôn ngữ lập trình hướng đối tượng, từ khóa nào thường được sử dụng để khai báo một lớp?

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ộ đề 2

Câu 22: 'Tính trừu tượng dữ liệu' (Data Abstraction) khác với 'tính trừu tượng điều khiển' (Control Abstraction) như thế nào?

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ộ đề 2

Câu 23: 'Composition' (tính hợp thành) và 'Aggregation' (tính tập hợp) là hai loại quan hệ giữa các lớp trong OOP. Sự khác biệt chính giữa chúng là gì?

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ộ đề 2

Câu 24: Ví dụ nào sau đây thể hiện rõ nhất quan hệ 'Composition'?

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ộ đề 2

Câu 25: 'Interface' (giao diện) trong OOP có vai trò 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ộ đề 2

Câu 26: Trong lập trình hướng đối tượng, 'Dependency Injection' (DI - Tiêm phụ thuộc) là một mẫu thiết kế giúp đạt được mục tiêu 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ộ đề 2

Câu 27: 'Overloading' (nạp chồng) phương thức là 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ộ đề 2

Câu 28: 'Overriding' (ghi đè) phương thức 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ộ đề 2

Câu 29: Kiểu dữ liệu 'enum' (liệt kê) trong OOP thường được sử dụng để làm 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ộ đề 2

Câu 30: Trong ngữ cảnh kiểm thử đơn vị (unit testing) phần mềm OOP, 'mock object' (đối tượng giả lập) thường được sử dụng để:

Xem kết quả