15+ Đề Thi Thử Trắc Nghiệm – Môn Lập Trình Hướng Đối Tượng

Đề 01

Đề 02

Đề 03

Đề 04

Đề 05

Đề 06

Đề 07

Đề 08

Đề 09

Đề 10

Đề 11

Đề 12

Đề 13

Đề 14

Đề 15

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


Trắc nghiệm Lập trình hướng đối tượng

Trắc nghiệm Lập trình hướng đối tượng - Đề 01

Trắc nghiệm Lập trình hướng đối tượng - Đề 01 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 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: Điều gì KHÔNG phải là lợi ích chính của lập trình hướng đối tượng?

  • A. Tăng tốc độ thực thi chương trình so với lập trình hướng cấu trúc.
  • B. Tái sử dụng mã nguồn thông qua kế thừa.
  • C. Quản lý mã nguồn phức tạp dễ dàng hơn.
  • D. Mô hình hóa thế giới thực một cách tự nhiên hơn.

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

```
Class DongVat:
phuong_thuc_keu()
tra_ve

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

Câu 4: Trong OOP, "tính đóng gói" (encapsulation) chủ yếu đạt được thông qua cơ chế nào?

  • A. Kế thừa lớp
  • B. Sử dụng các từ khóa xác định phạm vi truy cập (public, private, protected)
  • C. Phương thức ảo
  • D. Giao diện (interface)

Câu 5: Một lớp "XeHoi" có các thuộc tính như "mau_sac", "so_banh", "dong_co" và phương thức "bat_dau_di_chuyen()". "XeHoi" trong trường hợp này được gọi là gì?

  • A. Đối tượng
  • B. Thuộc tính
  • C. Lớp
  • D. Phương thức

Câu 6: Khi một lớp "SinhVien" kế thừa từ lớp "Nguoi", lớp "SinhVien" được gọi là:

  • A. Lớp cơ sở
  • B. Lớp dẫn xuất
  • C. Lớp trừu tượng
  • D. Lớp đa hình

Câu 7: Phương thức đặc biệt nào trong lớp tự động được gọi khi một đối tượng của lớp đó được tạo ra?

  • A. Hàm khởi tạo (Constructor)
  • B. Hàm hủy (Destructor)
  • C. Phương thức getter
  • D. Phương thức setter

Câu 8: "Tính trừu tượng" (abstraction) trong OOP giúp ích gì cho việc lập trình?

  • A. Tăng cường tính bảo mật bằng cách mã hóa dữ liệu.
  • B. Cho phép thực thi đa luồng.
  • C. Giảm độ phức tạp và giúp quản lý các hệ thống lớn dễ dàng hơn.
  • D. Tối ưu hóa hiệu suất sử dụng bộ nhớ.

Câu 9: Trong ngữ cảnh của kế thừa, từ khóa "protected" dùng để chỉ định thành viên lớp có phạm vi truy cập như thế nào?

  • A. Chỉ có thể truy cập từ bên trong lớp chứa nó.
  • B. Có thể truy cập từ bất kỳ đâu.
  • C. Chỉ có thể truy cập từ bên ngoài lớp, không giới hạn.
  • D. Có thể truy cập từ lớp chứa nó và các lớp con kế thừa.

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

  • A. Tính đóng gói
  • B. Kế thừa
  • C. Đa hình
  • D. Trừu tượng

Câu 11: Điều gì KHÔNG phải là mục đích của việc sử dụng "interface" (giao diện) trong OOP?

  • A. Định nghĩa một tập hợp các phương thức mà các lớp thực thi interface phải cung cấp.
  • B. Tạo ra sự ràng buộc về hành vi giữa các lớp không liên quan đến nhau trong hệ thống kế thừa.
  • C. Cung cấp một cách để chia sẻ mã nguồn và logic thực thi giữa các lớp khác nhau.
  • D. Hỗ trợ đa kế thừa hành vi (trong một số ngôn ngữ).

Câu 12: Trong lập trình hướng đối tượng, thuật ngữ "composition" (tổng hợp) mô tả loại quan hệ nào giữa các lớp?

  • A. Quan hệ kế thừa
  • B. Quan hệ sử dụng
  • C. Quan hệ liên kết yếu (association)
  • D. Quan hệ sở hữu mạnh (has-a relationship, whole-part relationship)

Câu 13: Khi nào nên sử dụng "đa hình nạp chồng" (method overloading)?

  • A. Khi muốn thay đổi cách thức hoạt động của một phương thức đã được định nghĩa ở lớp cha.
  • B. Khi muốn cung cấp nhiều phương thức có cùng tên nhưng khác nhau về tham số trong cùng một lớp.
  • C. Khi muốn tạo ra một lớp con hoàn toàn mới từ một lớp cha.
  • D. Khi muốn ẩn giấu thông tin chi tiết bên trong của lớp.

Câu 14: "Đố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 tập hợp các lớp có liên quan đến nhau.
  • C. Một thể hiện cụ thể của một lớp, có trạng thái và hành vi.
  • D. Một phương pháp lập trình để quản lý dữ liệu.

Câu 15: Trong một lớp, "thuộc tính" (attribute) dùng để làm gì?

  • A. Lưu trữ trạng thái (dữ liệu) của đối tượng.
  • B. Định nghĩa hành vi (phương thức) của đối tượng.
  • C. Kiểm soát truy cập vào đối tượng.
  • D. Tạo ra các lớp con.

Câu 16: "Phương thức" (method) trong lớp dùng để làm gì?

  • A. Lưu trữ dữ liệu của đối tượng.
  • B. Định nghĩa hành vi và các thao tác mà đối tượng có thể thực hiện.
  • C. Xác định kiểu dữ liệu của đối tượng.
  • D. Khởi tạo đối tượng.

Câu 17: "Tính kế thừa đa cấp" (multilevel inheritance) là gì?

  • A. Một lớp kế thừa từ nhiều lớp cơ sở cùng một lúc.
  • B. Nhiều lớp con kế thừa từ một lớp cơ sở duy nhất.
  • C. Một lớp kế thừa từ một lớp khác, lớp này lại kế thừa từ một lớp khác nữa.
  • D. Một lớp không kế thừa từ bất kỳ lớp nào.

Câu 18: Lợi ích chính của việc sử dụng "tính tái sử dụng mã nguồn" trong OOP là gì?

  • A. Tăng tốc độ thực thi chương trình.
  • B. Tăng tính bảo mật của dữ liệu.
  • C. Giảm dung lượng bộ nhớ sử dụng.
  • D. Giảm thời gian phát triển và công sức lập trình.

Câu 19: Trong OOP, "phạm vi truy cập" (access modifier) "private" có nghĩa là gì?

  • A. Thành viên chỉ có thể được truy cập từ bên trong lớp chứa nó.
  • B. Thành viên có thể được truy cập từ bất kỳ đâu.
  • C. Thành viên có thể được truy cập từ lớp chứa nó và các lớp con.
  • D. Thành viên có thể được truy cập từ các lớp trong cùng gói.

Câu 20: "Lớp trừu tượng" (abstract class) là gì?

  • A. Một lớp có thể được khởi tạo đối tượng một cách trực tiếp.
  • B. Một lớp không thể được khởi tạo đối tượng trực tiếp và có thể chứa các phương thức trừu tượng.
  • C. Một lớp chỉ chứa các thuộc tính, không có phương thức.
  • D. Một lớp chỉ chứa các phương thức tĩnh.

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

  • A. Một phương thức có phần thân (triển khai) đầy đủ trong lớp cơ sở.
  • B. Một phương thức chỉ có thể được gọi từ bên trong lớp chứa nó.
  • C. Một phương thức tĩnh của lớp.
  • D. Một phương thức được khai báo mà không có phần thân và phải được hiện thực ở lớp con.

Câu 22: Khi một lớp thực thi một "interface", lớp đó phải làm gì?

  • A. Kế thừa tất cả các thuộc tính của interface.
  • B. Kế thừa một phần các phương thức của interface.
  • C. Hiện thực (cung cấp phần thân) cho tất cả các phương thức được định nghĩa trong interface.
  • D. Không cần thực hiện bất kỳ hành động cụ thể nào.

Câu 23: Trong OOP, "đa hình thời gian biên dịch" (compile-time polymorphism) thường được thực hiện 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
  • D. Interface

Câu 24: "Đa hình thời gian chạy" (runtime polymorphism) thường được thực hiện 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. Tính đóng gói
  • D. Tính trừu tượng

Câu 25: Mục đích chính của "hàm hủy" (destructor) trong một lớp là gì?

  • A. Khởi tạo các thuộc tính của đối tượng.
  • B. Thực hiện các thao tác chính của đối tượng.
  • C. Giải phóng tài nguyên mà đối tượng đã sử dụng khi đối tượng bị hủy.
  • D. Kiểm tra tính hợp lệ của đối tượng.

Câu 26: "Quan hệ kết hợp" (association) giữa các lớp trong OOP là gì?

  • A. Một dạng kế thừa giữa các lớp.
  • B. Một mối quan hệ "has-a" giữa các đối tượng, trong đó các đối tượng có thể tồn tại độc lập.
  • C. Một mối quan hệ "part-of" mạnh mẽ, trong đó một đối tượng sở hữu và quản lý vòng đời của đối tượng khác.
  • D. Một cơ chế để thực hiện đa hình.

Câu 27: "Quan hệ tập hợp" (aggregation) khác với "quan hệ tổng hợp" (composition) ở điểm nào?

  • A. Aggregation thể hiện quan hệ "is-a", còn composition thể hiện quan hệ "has-a".
  • B. Aggregation là một dạng đa hình, còn composition là một dạng kế thừa.
  • C. Trong aggregation, lớp chứa sở hữu và quản lý vòng đời của lớp thành phần, còn trong composition thì không.
  • D. Trong composition, lớp chứa sở hữu và quản lý vòng đời của lớp thành phần, còn trong aggregation thì lớp thành phần có thể tồn tại độc lập.

Câu 28: Khi nào thì việc sử dụng "lớp tĩnh" (static class) là phù hợp?

  • A. Khi cần tạo ra nhiều đối tượng của một lớp.
  • B. Khi cần hiện thực tính đa hình.
  • C. Khi cần tạo ra một tập hợp các phương thức và thuộc tính tiện ích mà không cần khởi tạo đối tượng.
  • D. Khi cần tạo ra một lớp cơ sở cho các lớp khác kế thừa.

Câu 29: "Phương thức tĩnh" (static method) khác với "phương thức instance" (instance method) như thế nào?

  • A. Phương thức tĩnh thuộc về lớp và được gọi trực tiếp qua tên lớp, trong khi 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ể.
  • B. Phương thức tĩnh có thể truy cập vào các thuộc tính instance, còn phương thức instance thì không.
  • C. Phương thức tĩnh 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ất kỳ đâu.
  • D. Phương thức tĩnh được thực thi nhanh hơn phương thức instance.

Câu 30: Trong thiết kế hướng đối tượng, nguyên tắc "SOLID" nào khuyến khích việc các lớp nên mở rộng để phát triển nhưng phải đóng cho việc sửa đổi?

  • A. Nguyên tắc đơn nhiệm (Single Responsibility Principle)
  • B. Nguyên tắc mở rộng - đóng (Open/Closed Principle)
  • C. Nguyên tắc thay thế Liskov (Liskov Substitution Principle)
  • D. Nguyên tắc phân tách interface (Interface Segregation Principle)

1 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

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 gọi cùng một phương thức?

2 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 2: Điều gì KHÔNG phải là lợi ích chính của lập trình hướng đối tượng?

3 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

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

```
Class DongVat:
phuong_thuc_keu()
tra_ve "Tiếng kêu chung chung"

Class Meo KeThua DongVat:
phuong_thuc_keu()
tra_ve "Meo meo"

Class Cho KeThua DongVat:
phuong_thuc_keu()
tra_ve "Gau gau"

dong_vat = DongVat()
meo = Meo()
cho = Cho()

in_ra(dong_vat.phuong_thuc_keu())
in_ra(meo.phuong_thuc_keu())
in_ra(cho.phuong_thuc_keu())
```

Đoạn mã trên minh họa rõ nhất đặc điểm nào của OOP?

4 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 4: Trong OOP, 'tính đóng gói' (encapsulation) chủ yếu đạt được thông qua cơ chế nào?

5 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 5: Một lớp 'XeHoi' có các thuộc tính như 'mau_sac', 'so_banh', 'dong_co' và phương thức 'bat_dau_di_chuyen()'. 'XeHoi' trong trường hợp này được gọi là gì?

6 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 6: Khi một lớp 'SinhVien' kế thừa từ lớp 'Nguoi', lớp 'SinhVien' được gọi là:

7 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 7: Phương thức đặc biệt nào trong lớp tự động được gọi khi một đối tượng của lớp đó được tạo ra?

8 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 8: 'Tính trừu tượng' (abstraction) trong OOP giúp ích gì cho việc lập trình?

9 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 9: Trong ngữ cảnh của kế thừa, từ khóa 'protected' dùng để chỉ định thành viên lớp có phạm vi truy cập như thế nào?

10 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

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

11 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 11: Điều gì KHÔNG phải là mục đích của việc sử dụng 'interface' (giao diện) trong OOP?

12 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 12: Trong lập trình hướng đối tượng, thuật ngữ 'composition' (tổng hợp) mô tả loại quan hệ nào giữa các lớp?

13 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 13: Khi nào nên sử dụng 'đa hình nạp chồng' (method overloading)?

14 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 14: 'Đối tượng' (object) trong OOP là gì?

15 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 15: Trong một lớp, 'thuộc tính' (attribute) dùng để làm gì?

16 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 16: 'Phương thức' (method) trong lớp dùng để làm gì?

17 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 17: 'Tính kế thừa đa cấp' (multilevel inheritance) là gì?

18 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 18: Lợi ích chính của việc sử dụng 'tính tái sử dụng mã nguồn' trong OOP là gì?

19 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 19: Trong OOP, 'phạm vi truy cập' (access modifier) 'private' có nghĩa là gì?

20 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 20: 'Lớp trừu tượng' (abstract class) là gì?

21 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

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

22 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 22: Khi một lớp thực thi một 'interface', lớp đó phải làm gì?

23 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

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

24 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

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

25 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 25: Mục đích chính của 'hàm hủy' (destructor) trong một lớp là gì?

26 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 26: 'Quan hệ kết hợp' (association) giữa các lớp trong OOP là gì?

27 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 27: 'Quan hệ tập hợp' (aggregation) khác với 'quan hệ tổng hợp' (composition) ở điểm nào?

28 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 28: Khi nào thì việc sử dụng 'lớp tĩnh' (static class) là phù hợp?

29 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 29: 'Phương thức tĩnh' (static method) khác với 'phương thức instance' (instance method) như thế nào?

30 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 01

Câu 30: Trong thiết kế hướng đối tượng, nguyên tắc 'SOLID' nào khuyến khích việc các lớp nên mở rộng để phát triển nhưng phải đóng cho việc sửa đổi?

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


Trắc nghiệm Lập trình hướng đối tượng

Trắc nghiệm Lập trình hướng đối tượng - Đề 02

Trắc nghiệm 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 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: Điều gì KHÔNG phải là lợi ích chính của tính đóng gói (Encapsulation) trong lập trình hướng đối tượng?

  • A. Bảo vệ dữ liệu khỏi bị truy cập và sửa đổi trực tiếp từ bên ngoài.
  • B. Giảm sự phụ thuộc lẫn nhau giữa các thành phần của chương trình.
  • C. Tăng tốc độ thực thi chương trình.
  • D. Đơn giản hóa giao diện sử dụng của đối tượng, chỉ cung cấp các phương thức cần thiết.

Câu 3: Xét tình huống có các lớp "Động vật", "Chó", "Mèo". "Chó" và "Mèo" kế thừa từ "Động vật". Phát biểu nào sau đây thể hiện đúng mối quan hệ kế thừa?

  • A. "Động vật" là một loại của "Chó" và "Mèo".
  • B. "Chó" và "Mèo" là các loại "Động vật".
  • C. "Động vật" bao gồm "Chó" và "Mèo" nhưng không có quan hệ kế thừa.
  • D. "Chó", "Mèo" và "Động vật" là các lớp độc lập, không liên quan.

Câu 4: Trong lập trình hướng đối tượng, "tính trừu tượng" (Abstraction) được thể hiện rõ nhất qua việc nào?

  • A. Chỉ định nghĩa các thuộc tính và phương thức cần thiết cho người dùng, ẩn đi chi tiết cài đặt phức tạp.
  • B. Sao chép mã nguồn từ các lớp đã có để tái sử dụng.
  • C. Phân chia chương trình thành các hàm và thủ tục nhỏ.
  • D. Sử dụng các biến toàn cục để chia sẻ dữ liệu giữa các phần của chương trình.

Câu 5: "Đối tượng" (Object) trong lập trình hướng đối tượng là gì?

  • A. Một bản thiết kế hoặc khuôn mẫu để tạo ra các 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 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 cấu trúc dữ liệu.

Câu 6: "Lớp" (Class) trong lập trình hướng đối tượng đóng vai trò gì?

  • A. Là một thể hiện đã được tạo ra từ một đối tượng.
  • B. Là một thành phần của đối tượng, chứa dữ liệu.
  • C. Là bản thiết kế hoặc khuôn mẫu để tạo ra các đối tượng.
  • D. Là một phương thức đặc biệt để khởi tạo đối tượng.

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

  • A. Để hủy bỏ một đối tượng khi nó không còn cần thiết.
  • B. Để truy cập vào các thuộc tính private của đối tượng.
  • C. Để định nghĩa hành vi của đối tượng.
  • D. Để khởi tạo trạng thái ban đầu của một đối tượng khi nó được tạo ra.

Câu 8: Điều gì xảy ra khi bạn tạo một đối tượng từ một lớp?

  • A. Lớp đó sẽ bị xóa khỏi bộ nhớ.
  • B. Bộ nhớ được cấp phát để lưu trữ đối tượng và phương thức khởi tạo được gọi.
  • C. Chương trình sẽ bắt đầu thực thi các phương thức của lớp.
  • D. Không có gì đặc biệt xảy ra, đối tượng chỉ tồn tại trên lý thuyết.

Câu 9: Trong ngữ cảnh kế thừa, lớp "dẫn xuất" (derived class) còn được gọi là gì?

  • A. Lớp cơ sở (base class)
  • B. Lớp cha (parent class)
  • C. Lớp con (child class)
  • D. Lớp trừu tượng (abstract class)

Câu 10: Từ khóa nào thường được sử dụng để khai báo tính kế thừa trong nhiều ngôn ngữ lập trình hướng đối tượng?

  • A. new
  • B. extends/:
  • C. class
  • D. object

Câu 11: Mục đích chính của việc sử dụng tính kế thừa trong lập trình hướng đối tượng là gì?

  • A. Tái sử dụng mã nguồn và xây dựng hệ thống phân cấp lớp.
  • B. Tăng tốc độ thực thi chương trình.
  • C. Bảo vệ dữ liệu khỏi bị truy cập từ bên ngoài.
  • D. Đơn giản hóa giao diện người dùng.

Câu 12: Trong lập trình hướng đối tượng, "phương thức" (method) là gì?

  • A. Một biến được khai báo bên trong lớp.
  • B. Một lớp cha mà lớp khác kế thừa.
  • C. Một thể hiện cụ thể của một lớp.
  • D. Một hàm được định nghĩa bên trong một lớp để thực hiện các hành động trên đối tượng.

Câu 13: Thuộc tính (attribute) của một đối tượng trong OOP còn được gọi là gì?

  • A. Phương thức (method)
  • B. Dữ liệu thành viên (data member)
  • C. Lớp (class)
  • D. Đối tượng (object)

Câu 14: Điều gì KHÔNG phải là một trong ba loại phạm vi truy cập (access modifiers) phổ biến trong OOP?

  • A. public
  • B. private
  • C. protected
  • D. internal

Câu 15: Phạm vi truy cập "private" có nghĩa là thành viên của lớp chỉ có thể được truy cập từ đâu?

  • A. Chỉ bên trong lớp mà nó được định nghĩa.
  • B. Từ bất kỳ đâu trong chương trình.
  • C. Từ các lớp con kế thừa.
  • D. Từ các lớp bạn bè (friend classes).

Câu 16: Phạm vi truy cập "public" có nghĩa là thành viên của lớp có thể được truy cập từ đâu?

  • A. Chỉ bên trong lớp mà nó được định nghĩa.
  • B. Từ bất kỳ đâu trong chương trình.
  • C. Từ các lớp con kế thừa, nhưng không bên ngoài hệ thống phân cấp kế thừa.
  • D. Chỉ từ các đối tượng của cùng lớp.

Câu 17: Phạm vi truy cập "protected" thường liên quan đến khái niệm nào trong OOP?

  • 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 18: Trong lập trình hướng đối tượng, "đa hình thời gian biên dịch" (compile-time polymorphism) thường được thực hiện thông qua cơ chế nào?

  • A. Nạp chồng hàm (Function overloading)
  • B. Kế thừa (Inheritance)
  • C. Giao diện (Interface)
  • D. Tính đóng gói (Encapsulation)

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

  • A. Nạp chồng hàm (Function overloading)
  • B. Ghi đè phương thức (Method overriding)
  • C. Tính đóng gói (Encapsulation)
  • D. Trừu tượng hóa dữ liệu (Data abstraction)

Câu 20: Phương pháp lập trình hướng đối tượng tập trung vào điều gì?

  • A. Các bước tuần tự để giải quyết vấn đề.
  • B. Cấu trúc dữ liệu và thuật toán hiệu quả.
  • C. Đối tượng và tương tác giữa các đối tượng.
  • D. Các hàm và thủ tục để thực hiện các chức năng cụ thể.

Câu 21: Trong lập trình hướng đối tượng, "thông điệp" (message) thường được dùng để chỉ điều gì?

  • A. Dữ liệu được truyền giữa các hàm.
  • B. Các biến toàn cục trong chương trình.
  • C. Các thông báo lỗi hoặc cảnh báo.
  • D. Lời gọi một phương thức của một đối tượng khác.

Câu 22: Ưu điểm nào của OOP giúp chương trình dễ bảo trì và mở rộng hơn?

  • A. Tính module hóa và giảm sự phụ thuộc giữa các phần.
  • B. Tốc độ thực thi nhanh hơn.
  • C. Sử dụng ít bộ nhớ hơn.
  • D. Dễ dàng viết code hơn.

Câu 23: Nhược điểm tiềm ẩn của việc lạm dụng kế thừa trong OOP là gì?

  • A. Giảm hiệu suất chương trình.
  • B. Tăng kích thước mã nguồn.
  • C. Hệ thống phân cấp lớp trở nên phức tạp và khó bảo trì.
  • D. Khó tái sử dụng mã nguồn.

Câu 24: "Tính trừu tượng hóa 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, chúng là cùng một khái niệm.
  • B. Trừu tượng hóa dữ liệu ẩn cách dữ liệu được lưu trữ và thao tác, trừu tượng hóa điều khiển ẩn cách thực hiện một chức năng.
  • C. Trừu tượng hóa dữ liệu chỉ áp dụng cho lớp, trừu tượng hóa điều khiển chỉ áp dụng cho đối tượng.
  • D. Trừu tượng hóa dữ liệu liên quan đến tính đóng gói, trừu tượng hóa điều khiển liên quan đến tính kế thừa.

Câu 25: Trong thiết kế hướng đối tượng, nguyên tắc "SOLID" thứ nhất, "Single Responsibility Principle" (SRP), phát biểu điều gì?

  • A. Các lớp con nên thay thế được lớp cha của chúng.
  • B. Chương trình nên mở cho mở rộng nhưng đóng cho sửa đổi.
  • C. Nhiều giao diện đặc thù tốt hơn là một giao diện lớn.
  • D. Một lớp chỉ nên có một và chỉ một lý do để thay đổi.

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

  • A. 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.
  • B. Một lớp chỉ nên có một trách nhiệm duy nhất.
  • C. Chương trình nên phụ thuộc vào các trừu tượng, không phụ thuộc vào các cài đặt cụ thể.
  • D. Giao diện của lớp nên được tách thành nhiều giao diện nhỏ hơn, đặc thù cho từng nhóm client.

Câu 27: "Dependency Inversion Principle" (DIP) trong "SOLID" khuyến khích điều gì?

  • A. Các lớp nên có trách nhiệm đơn lẻ.
  • B. Các lớp con nên thay thế được lớp cha.
  • C. Phụ thuộc vào các trừu tượng thay vì các cài đặt cụ thể.
  • D. Giao diện nên nhỏ và tập trung vào client.

Câu 28: Trong mô hình hóa hướng đối tượng, sơ đồ lớp (class diagram) UML được sử dụng để làm gì?

  • A. Mô tả luồng điều khiển của chương trình.
  • B. Mô hình hóa cấu trúc tĩnh của các lớp và mối quan hệ giữa chúng.
  • C. Mô tả tương tác giữa các đối tượng theo thời gian.
  • D. Phân tích yêu cầu của người dùng.

Câu 29: Điều gì KHÔNG phải là một loại quan hệ phổ biến trong sơ đồ lớp UML?

  • A. Kế thừa (Generalization)
  • B. Kết hợp (Association)
  • C. Tập hợp (Aggregation)
  • D. Thực thi (Implementation)

Câu 30: Trong lập trình hướng đối tượng, khi nào thì nên sử dụng "Composition" thay vì "Aggregation"?

  • A. Khi các đối tượng có tuổi thọ độc lập với nhau.
  • B. Khi muốn tái sử dụng mã nguồn của các lớp.
  • C. Khi đối tượng thành phần không thể tồn tại nếu không có đối tượng chứa (quan hệ "phần-toàn bộ" mạnh).
  • D. Khi muốn thực hiện đa hình thời gian chạy.

1 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

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: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 2: Điều gì KHÔNG phải là lợi ích chính của tính đóng gói (Encapsulation) trong lập trình hướng đối tượng?

3 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 3: Xét tình huống có các lớp 'Động vật', 'Chó', 'Mèo'. 'Chó' và 'Mèo' kế thừa từ 'Động vật'. Phát biểu nào sau đây thể hiện đúng mối quan hệ kế thừa?

4 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 4: Trong lập trình hướng đối tượng, 'tính trừu tượng' (Abstraction) được thể hiện rõ nhất qua việc nào?

5 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 5: 'Đối tượng' (Object) trong lập trình hướng đối tượng là gì?

6 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 6: 'Lớp' (Class) trong lập trình hướng đối tượng đóng vai trò gì?

7 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

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

8 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 8: Điều gì xảy ra khi bạn tạo một đối tượng từ một lớp?

9 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 9: Trong ngữ cảnh kế thừa, lớp 'dẫn xuất' (derived class) còn được gọi là gì?

10 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 10: Từ khóa nào thường được sử dụng để khai báo tính kế thừa trong nhiều ngôn ngữ lập trình hướng đối tượng?

11 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 11: Mục đích chính của việc sử dụng tính kế thừa trong lập trình hướng đối tượng là gì?

12 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 12: Trong lập trình hướng đối tượng, 'phương thức' (method) là gì?

13 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 13: Thuộc tính (attribute) của một đối tượng trong OOP còn được gọi là gì?

14 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 14: Điều gì KHÔNG phải là một trong ba loại phạm vi truy cập (access modifiers) phổ biến trong OOP?

15 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 15: Phạm vi truy cập 'private' có nghĩa là thành viên của lớp chỉ có thể được truy cập từ đâu?

16 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 16: Phạm vi truy cập 'public' có nghĩa là thành viên của lớp có thể được truy cập từ đâu?

17 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 17: Phạm vi truy cập 'protected' thường liên quan đến khái niệm nào trong OOP?

18 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 18: Trong lập trình hướng đối tượng, 'đa hình thời gian biên dịch' (compile-time polymorphism) thường được thực hiện thông qua cơ chế nào?

19 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

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

20 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 20: Phương pháp lập trình hướng đối tượng tập trung vào điều gì?

21 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 21: Trong lập trình hướng đối tượng, 'thông điệp' (message) thường được dùng để chỉ điều gì?

22 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 22: Ưu điểm nào của OOP giúp chương trình dễ bảo trì và mở rộng hơn?

23 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 23: Nhược điểm tiềm ẩn của việc lạm dụng kế thừa trong OOP là gì?

24 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 24: 'Tính trừu tượng hóa 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?

25 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 25: Trong thiết kế hướng đối tượng, nguyên tắc 'SOLID' thứ nhất, 'Single Responsibility Principle' (SRP), phát biểu điều gì?

26 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

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

27 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 27: 'Dependency Inversion Principle' (DIP) trong 'SOLID' khuyến khích điều gì?

28 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 28: Trong mô hình hóa hướng đối tượng, sơ đồ lớp (class diagram) UML được sử dụng để làm gì?

29 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 29: Điều gì KHÔNG phải là một loại quan hệ phổ biến trong sơ đồ lớp UML?

30 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 02

Câu 30: Trong lập trình hướng đối tượng, khi nào thì nên sử dụng 'Composition' thay vì 'Aggregation'?

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


Trắc nghiệm Lập trình hướng đối tượng

Trắc nghiệm Lập trình hướng đối tượng - Đề 03

Trắc nghiệm Lập trình hướng đối tượng - Đề 03 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ù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 kế thừa (Inheritance)
  • D. Tính đa hình (Polymorphism)

Câu 2: Một lớp "Động vật" có phương thức "Tiếng kêu". Lớp "Chó" và "Mèo" kế thừa từ "Động vật" và định nghĩa lại phương thức "Tiếng kêu" cho riêng mình ("Gâu gâu" cho Chó, "Meo meo" cho Mèo). Đây là ví dụ minh họa cho tính chất nào của OOP?

  • A. Đa hình (Polymorphism)
  • B. Đóng gói (Encapsulation)
  • C. Trừu tượng (Abstraction)
  • D. Kế thừa (Inheritance)

Câu 3: Điều gì KHÔNG phải là lợi ích chính của tính đóng gói (Encapsulation) trong lập trình hướng đối tượng?

  • A. Giảm sự phụ thuộc giữa các phần của chương trình
  • B. Tăng tính bảo mật và kiểm soát truy cập dữ liệu
  • C. Cho phép các đối tượng khác nhau phản ứng khác nhau với cùng một thông điệp
  • D. Đơn giản hóa việc bảo trì và sửa đổi mã nguồn

Câu 4: Trong OOP, "tính trừu tượng hóa" (Abstraction) đạt được chủ yếu thông qua cơ chế nào?

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

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

```
class HìnhHọc {
phương_thức TínhDiệnTích() {}
}

class HìnhVuông kế_thừa HìnhHọc {
thuộc_tính cạnh;
phương_thức TínhDiệnTích() { return cạnh * cạnh; }
}

class HìnhTròn kế_thừa HìnhHọc {
thuộc_tính bán_kính;
phương_thức TínhDiệnTích() { return PI * bán_kính * bán_kính; }
}
```

Đoạn mã trên thể hiện rõ nhất điều gì?

  • A. Tính đóng gói của lớp HìnhHọc
  • B. Tính trừu tượng của lớp HìnhHọc
  • C. Tính kế thừa đơn trong OOP
  • D. Tính đa hình thông qua kế thừa và ghi đè phương thức

Câu 6: Trong lập trình hướng đối tượng, "đối tượng" (object) là gì?

  • A. Một bản thiết kế 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 khái niệm trừu tượng đại diện cho một nhóm các lớp
  • D. Một đơn vị mã độc lập thực hiện một chức năng cụ thể

Câu 7: "Lớp" (class) trong OOP đóng vai trò như thế nào?

  • A. Là một thể hiện cụ thể của dữ liệu và hành vi
  • B. Là một thực thể duy nhất tồn tại trong bộ nhớ
  • C. Là một khuôn mẫu hoặc bản thiết kế để tạo ra các đối tượng
  • D. Là một tập hợp các đối tượng có cùng chức năng

Câu 8: Khi nào nên sử dụng "tính kế thừa" (Inheritance) trong thiết kế hướng đối tượng?

  • A. Khi có mối quan hệ "là một" (is-a) giữa các lớp và muốn tái sử dụng mã
  • B. Khi cần tạo ra nhiều đối tượng độc lập với cấu trúc khác nhau
  • C. Khi muốn ẩn giấu thông tin chi tiết bên trong đối tượng
  • D. Khi cần thực hiện các hành động khác nhau tùy thuộc vào ngữ cảnh

Câu 9: Phương thức "khởi tạo" (constructor) trong lớp có chức năng chính là gì?

  • A. Hủy bỏ đối tượng khi nó không còn được sử dụng
  • B. Khởi tạo trạng thái ban đầu của đối tượng khi nó được tạo ra
  • C. Thực hiện các thao tác dọn dẹp bộ nhớ sau khi đối tượng được sử dụng
  • D. Định nghĩa hành vi của đối tượng khi nhận một thông điệp

Câu 10: Điều gì xảy ra khi một lớp con kế thừa từ một lớp cha?

  • A. Lớp con mất đi tất cả các thuộc tính và phương thức của lớp cha
  • B. Lớp con chỉ kế thừa các thuộc tính của lớp cha
  • C. Lớp con kế thừa các thuộc tính và phương thức của lớp cha
  • D. Lớp cha có thể truy cập trực tiếp vào các thuộc tính của lớp con

Câu 11: Trong OOP, "tính đa hình" (Polymorphism) mang lại lợi ích gì cho việc phát triển phần mềm?

  • A. Giảm kích thước mã nguồn
  • B. Tăng tốc độ thực thi chương trình
  • C. Đơn giản hóa việc quản lý bộ nhớ
  • D. Tăng tính linh hoạt, khả năng mở rộng và tái sử dụng mã

Câu 12: Phạm vi truy cập "private" trong lớp có ý nghĩa gì?

  • A. Cho phép truy cập từ bất kỳ đâu trong chương trình
  • B. Chỉ cho phép truy cập từ bên trong lớp đó
  • C. Cho phép truy cập từ lớp con và lớp cha
  • D. Cho phép truy cập từ các lớp bạn bè

Câu 13: Phương thức "ảo" (virtual method) thường được sử dụng để hỗ trợ tính chất nào của OOP?

  • 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 14: Trong sơ đồ lớp UML, hình nào biểu diễn một lớp?

  • A. Hình tròn
  • B. Hình elip
  • C. Hình thoi
  • D. Hình chữ nhật

Câu 15: Mối quan hệ "tổng hợp" (aggregation) giữa các lớp trong OOP thể hiện điều gì?

  • A. Một lớp hoàn toàn chứa và quản lý vòng đời của lớp khác (quan hệ hợp thành)
  • B. Một lớp chứa các đối tượng của lớp khác, nhưng các đối tượng thành phần có thể tồn tại độc lập
  • C. Một lớp kế thừa các thuộc tính và phương thức từ lớp khác
  • D. Các lớp có chung một giao diện nhưng thực hiện khác nhau

Câu 16: "Interface" trong OOP khác với "lớp trừu tượng" (abstract class) ở điểm nào chính yếu?

  • A. Interface có thể chứa thuộc tính, lớp trừu tượng thì không
  • B. Lớp trừu tượng hỗ trợ đa kế thừa, interface thì không
  • C. Interface chỉ định nghĩa hành vi (phương thức trừu tượng), lớp trừu tượng có thể chứa cài đặt
  • D. Interface không thể được khởi tạo, lớp trừu tượng thì có thể

Câu 17: Trong thiết kế hướng đối tượng, 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 đơn trách nhiệm (Single Responsibility Principle)
  • B. Nguyên tắc đóng mở (Open/Closed Principle)
  • C. Nguyên tắc thay thế Liskov (Liskov Substitution Principle)
  • D. Nguyên tắc phân tách Interface (Interface Segregation Principle)

Câu 18: "Phương thức tĩnh" (static method) trong lớp có đặc điểm gì?

  • A. Luôn được gọi tự động khi đối tượng được tạo ra
  • B. Chỉ có thể được gọi từ bên trong lớp đó
  • C. Có thể truy cập trực tiếp vào các thuộc tính không tĩnh của lớp
  • D. Thuộc về lớp và có thể được gọi trực tiếp thông qua tên lớp

Câu 19: "Phương thức trừu tượng" (abstract method) trong lớp trừu tượng có đặc điểm gì?

  • A. Có thể được gọi trực tiếp từ lớp trừu tượng
  • B. Chỉ được khai báo trong lớp trừu tượng và không có cài đặt
  • C. Tự động được kế thừa và sử dụng bởi tất cả các lớp con
  • D. Không thể được ghi đè bởi lớp con

Câu 20: Mục đích chính của việc sử dụng "design patterns" (mẫu thiết kế) trong OOP là gì?

  • A. Tăng tốc độ biên dịch chương trình
  • B. Giảm thiểu sử dụng bộ nhớ
  • C. Cung cấp giải pháp đã được kiểm chứng cho các vấn đề thiết kế thường gặp
  • D. Thay thế hoàn toàn việc lập trình thủ công

Câu 21: Khi nào nên sử dụng quan hệ "hợp thành" (composition) thay vì "kế thừa" (inheritance)?

  • A. Khi muốn tạo ra một lớp mới là một loại đặc biệt của lớp đã có
  • B. Khi muốn kế thừa toàn bộ giao diện của lớp đã có
  • C. Khi muốn tạo ra một hệ thống phân cấp lớp phức tạp
  • D. Khi muốn tái sử dụng hành vi của một lớp khác mà không tạo quan hệ "is-a"

Câu 22: "Dependency Injection" (DI - Tiêm phụ thuộc) là một kỹ thuật trong OOP nhằm mục đích gì?

  • A. Giảm sự phụ thuộc giữa các lớp, tăng tính module hóa và khả năng kiểm thử
  • B. Tăng cường tính đóng gói của đối tượng
  • C. Hiện thực tính đa hình tại thời điểm biên dịch
  • D. Tối ưu hóa hiệu suất sử dụng bộ nhớ

Câu 23: Trong mô hình MVC (Model-View-Controller), các lớp "View" (Giao diện) thường tương tác chủ yếu với thành phần nào?

  • A. Model (Mô hình dữ liệu)
  • B. Controller (Bộ điều khiển)
  • C. Database (Cơ sở dữ liệu)
  • D. Service Layer (Tầng dịch vụ)

Câu 24: Điều gì 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ã cao hơn
  • B. Dễ bảo trì và mở rộng hệ thống
  • C. Tăng tốc độ thực thi chương trình
  • D. Mô hình hóa bài toán gần với thế giới thực hơn

Câu 25: 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 tính kế thừa?

  • A. import
  • B. extends (hoặc ":")
  • C. class
  • D. interface

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

  • A. Việc ghi đè phương thức của lớp cha trong lớp con
  • B. Việc tạo ra nhiều lớp con từ một lớp cha
  • C. Việc ẩn giấu thông tin chi tiết bên trong đối tượng
  • D. Việc đị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ố

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

  • A. Việc lớp con định nghĩa lại phương thức đã có của lớp cha
  • B. Việc định nghĩa nhiều phương thức cùng tên trong một lớp
  • C. Việc tạo ra một bản sao của đối tượng
  • D. Việc kết hợp nhiều đối tượng thành một đối tượng phức tạp

Câu 28: "Tính trừu tượng dữ liệu" (data abstraction) trong OOP giúp người dùng tập trung vào điều gì?

  • A. Chi tiết cài đặt bên trong của đối tượng
  • B. Giao diện và hành vi bên ngoài của đối tượng
  • C. Cấu trúc bộ nhớ của đối tượng
  • D. Thời gian tồn tại của đối tượng

Câu 29: Trong OOP, thuật ngữ nào mô tả việc tạo ra một đối tượng từ một lớp?

  • A. Inheritance (Kế thừa)
  • B. Encapsulation (Đóng gói)
  • C. Instantiation (Khởi tạo)
  • D. Abstraction (Trừu tượng)

Câu 30: Cho đoạn code Python sau:

```python
class Animal:
def speak(self):
print(

  • A. Encapsulation (Đóng gói)
  • B. Abstraction (Trừu tượng)
  • C. Inheritance (Kế thừa)
  • D. Polymorphism (Đa hình)

1 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

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ùng nhận một thông điệp?

2 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 2: Một lớp 'Động vật' có phương thức 'Tiếng kêu'. Lớp 'Chó' và 'Mèo' kế thừa từ 'Động vật' và định nghĩa lại phương thức 'Tiếng kêu' cho riêng mình ('Gâu gâu' cho Chó, 'Meo meo' cho Mèo). Đây là ví dụ minh họa cho tính chất nào của OOP?

3 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 3: Điều gì KHÔNG phải là lợi ích chính của tính đóng gói (Encapsulation) trong lập trình hướng đối tượng?

4 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 4: Trong OOP, 'tính trừu tượng hóa' (Abstraction) đạt được chủ yếu thông qua cơ chế nào?

5 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

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

```
class HìnhHọc {
phương_thức TínhDiệnTích() {}
}

class HìnhVuông kế_thừa HìnhHọc {
thuộc_tính cạnh;
phương_thức TínhDiệnTích() { return cạnh * cạnh; }
}

class HìnhTròn kế_thừa HìnhHọc {
thuộc_tính bán_kính;
phương_thức TínhDiệnTích() { return PI * bán_kính * bán_kính; }
}
```

Đoạn mã trên thể hiện rõ nhất điều gì?

6 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 6: Trong lập trình hướng đối tượng, 'đối tượng' (object) là gì?

7 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 7: 'Lớp' (class) trong OOP đóng vai trò như thế nào?

8 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 8: Khi nào nên sử dụng 'tính kế thừa' (Inheritance) trong thiết kế hướng đối tượng?

9 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 9: Phương thức 'khởi tạo' (constructor) trong lớp có chức năng chính là gì?

10 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 10: Điều gì xảy ra khi một lớp con kế thừa từ một lớp cha?

11 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 11: Trong OOP, 'tính đa hình' (Polymorphism) mang lại lợi ích gì cho việc phát triển phần mềm?

12 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 12: Phạm vi truy cập 'private' trong lớp có ý nghĩa gì?

13 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 13: Phương thức 'ảo' (virtual method) thường được sử dụng để hỗ trợ tính chất nào của OOP?

14 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 14: Trong sơ đồ lớp UML, hình nào biểu diễn một lớp?

15 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 15: Mối quan hệ 'tổng hợp' (aggregation) giữa các lớp trong OOP thể hiện điều gì?

16 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 16: 'Interface' trong OOP khác với 'lớp trừu tượng' (abstract class) ở điểm nào chính yếu?

17 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 17: Trong thiết kế hướng đối tượng, 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?

18 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 18: 'Phương thức tĩnh' (static method) trong lớp có đặc điểm gì?

19 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 19: 'Phương thức trừu tượng' (abstract method) trong lớp trừu tượng có đặc điểm gì?

20 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 20: Mục đích chính của việc sử dụng 'design patterns' (mẫu thiết kế) trong OOP là gì?

21 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 21: Khi nào nên sử dụng quan hệ 'hợp thành' (composition) thay vì 'kế thừa' (inheritance)?

22 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 22: 'Dependency Injection' (DI - Tiêm phụ thuộc) là một kỹ thuật trong OOP nhằm mục đích gì?

23 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 23: Trong mô hình MVC (Model-View-Controller), các lớp 'View' (Giao diện) thường tương tác chủ yếu với thành phần nào?

24 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 24: Điều gì 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?

25 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 25: 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 tính kế thừa?

26 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

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

27 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

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

28 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 28: 'Tính trừu tượng dữ liệu' (data abstraction) trong OOP giúp người dùng tập trung vào điều gì?

29 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 29: Trong OOP, thuật ngữ nào mô tả việc tạo ra một đối tượng từ một lớp?

30 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 03

Câu 30: Cho đoạn code Python sau:

```python
class Animal:
def speak(self):
print("Generic animal sound")

class Dog(Animal):
def speak(self):
print("Woof!")

def animal_sound(animal):
animal.speak()

my_dog = Dog()
animal_sound(my_dog)
```

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

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


Trắc nghiệm Lập trình hướng đối tượng

Trắc nghiệm Lập trình hướng đối tượng - Đề 04

Trắc nghiệm Lập trình hướng đối tượng - Đề 04 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ù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 kế thừa (Inheritance)
  • D. Tính đa hình (Polymorphism)

Câu 2: Phát biểu nào sau đây mô tả đúng nhất về "tính đóng gói" trong lập trình hướng đối tượng?

  • A. Cơ chế cho phép một lớp kế thừa các thuộc tính và phương thức từ lớp khác.
  • B. Cơ chế kết hợp dữ liệu và phương thức thao tác trên dữ liệu đó vào trong một đơn vị duy nhất, đồng thời ẩn giấu thông tin.
  • C. Khả năng một đối tượng có thể có nhiều hình thức khác nhau.
  • D. Quá trình đơn giản hóa các đối tượng phức tạp bằng cách chỉ hiển thị các thông tin cần thiết.

Câu 3: "Tính trừu tượng" trong OOP giúp ích gì cho việc thiết kế và phát triển phần mềm?

  • A. Tăng tốc độ thực thi chương trình.
  • B. Giảm dung lượng bộ nhớ sử dụng.
  • C. Giảm độ phức tạp, tập trung vào các đặc điểm thiết yếu và ẩn đi các chi tiết cài đặt không cần thiết.
  • D. Cải thiện khả năng tương thích giữa các ngôn ngữ lập trình.

Câu 4: Trong ngữ cảnh của "tính kế thừa", lớp nào được xem là lớp cơ sở (base class) hoặc lớp cha?

  • A. Lớp cung cấp các thuộc tính và phương thức được kế thừa.
  • B. Lớp được tạo ra để kế thừa từ lớp khác.
  • C. Lớp không có thuộc tính hoặc phương thức.
  • D. Lớp chỉ chứa các phương thức trừu tượng.

Câu 5: Điều gì xảy ra khi bạn tạo một đối tượng (instance) từ một lớp (class)?

  • A. Lớp đó sẽ bị xóa khỏi bộ nhớ.
  • B. Một vùng nhớ được cấp phát để lưu trữ dữ liệu và phương thức của đối tượng theo khuôn mẫu của lớp.
  • C. Chương trình sẽ biên dịch lại toàn bộ mã nguồn của lớp.
  • D. Không có gì xảy ra cho đến khi đối tượng được sử dụng.

Câu 6: Phương thức khởi tạo (constructor) trong một lớp có vai trò chính là 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 phép tính số học trên thuộc tính của đối tượng.
  • C. Khởi tạo trạng thái ban đầu cho đối tượng khi nó được tạo ra.
  • D. Định nghĩa hành vi của đối tượng khi tương tác với các đối tượng khác.

Câu 7: 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 như Java, C++, hoặc C#?

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

Câu 8: Trong OOP, "thuộc tính" (attribute) của một đối tượng thường được dùng để biểu diễn điều gì?

  • A. Hành động mà đối tượng có thể thực hiện.
  • B. Trạng thái hoặc đặc điểm của đối tượng.
  • C. Mối quan hệ giữa các đối tượng.
  • D. Cách đối tượng giao tiếp với môi trường bên ngoài.

Câu 9: "Phương thức" (method) trong OOP dùng để làm gì?

  • A. Định nghĩa hành vi hoặc thao tác mà đối tượng có thể thực hiện.
  • B. Lưu trữ dữ liệu về trạng thái của đối tượng.
  • C. Xác định kiểu dữ liệu của đối tượng.
  • D. Quản lý bộ nhớ cho đối tượng.

Câu 10: Phạm vi truy cập "private" có ý nghĩa gì đối với thành viên (thuộc tính hoặc phương thức) của một lớp?

  • A. Thành viên có thể được truy cập từ bất kỳ đâu.
  • B. Thành viên chỉ có thể được truy cập từ các lớp con.
  • C. Thành viên chỉ có thể được truy cập từ bên trong lớp đó.
  • D. Thành viên có thể được truy cập từ các lớp khác trong cùng gói (package).

Câu 11: Phạm vi truy cập "public" có ý nghĩa gì đối với thành viên của một lớp?

  • A. Thành viên có thể được truy cập từ bất kỳ đâu.
  • B. Thành viên chỉ có thể được truy cập từ bên trong lớp đó.
  • C. Thành viên chỉ có thể được truy cập từ các lớp con.
  • D. Thành viên chỉ có thể được truy cập từ các lớp cùng gói.

Câu 12: Phạm vi truy cập "protected" khác biệt như thế nào so với "private"?

  • A. "Protected" hạn chế truy cập hơn "private".
  • B. "Protected" cho phép lớp con truy cập, trong khi "private" thì không.
  • C. Không có sự khác biệt, "protected" và "private" là giống nhau.
  • D. "Protected" chỉ áp dụng cho phương thức, "private" chỉ áp dụng cho thuộc tính.

Câu 13: Trong một hệ thống quản lý thư viện, "Sách", "Độc giả", và "Thủ thư" có thể được mô hình hóa như là gì trong OOP?

  • A. Hàm (functions)
  • B. Biến (variables)
  • C. Lớp (classes)
  • D. Giao diện (interfaces)

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

  • 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 15: Mối quan hệ "has-a" (có một) thể hiện điều gì giữa các đối tượng?

  • A. Một đối tượng là một loại của đối tượng khác.
  • B. Một đối tượng chứa hoặc sở hữu đối tượng khác như một thành phần.
  • C. Các đối tượng có cùng hành vi.
  • D. Các đối tượng được tạo ra cùng một lúc.

Câu 16: Trong lập trình hướng đối tượng, "đa hình thời gian biên dịch" (compile-time polymorphism) thường được thực hiện thông qua kỹ thuật nào?

  • A. Nạp chồng phương thức (Method Overloading)
  • B. Ghi đè phương thức (Method Overriding)
  • C. Tính kế thừa (Inheritance)
  • D. Tính trừu tượng (Abstraction)

Câu 17: "Đa hình thời gian chạy" (runtime polymorphism) thường liên quan đến kỹ thuật nào trong OOP?

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

Câu 18: Lớp trừu tượng (abstract class) trong OOP có đặc điểm gì nổi bật?

  • A. Không thể có thuộc tính.
  • B. Chỉ chứa các phương thức tĩnh.
  • C. Không thể tạo đối tượng trực tiếp từ lớp trừu tượng.
  • D. Tự động được kế thừa bởi tất cả các lớp khác.

Câu 19: 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 thuộc tính, lớp trừu tượng thì không.
  • B. Lớp trừu tượng hỗ trợ đa kế thừa, giao diện thì không.
  • C. Lớp trừu tượng định nghĩa hành vi, giao diện thì không.
  • D. Giao diện chỉ định nghĩa các phương thức trừu tượng, lớp trừu tượng có thể có phương thức đã được cài đặt.

Câu 20: Nguyên tắc "DRY" (Don"t Repeat Yourself) có liên quan đến khía cạnh nào của OOP?

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

Câu 21: SOLID là một tập hợp các nguyên tắc thiết kế quan trọng trong OOP. Chữ "L" trong SOLID đại diện cho nguyên tắc nào?

  • A. Single Responsibility Principle
  • B. Open/Closed Principle
  • C. Liskov Substitution Principle
  • D. Interface Segregation Principle

Câu 22: Trong thiết kế hướng đối tượng, "coupling" (mức độ liên kết) nên được hướng tới mức độ nào?

  • A. Liên kết chặt chẽ (tight coupling)
  • B. Liên kết lỏng lẻo (loose coupling)
  • C. Liên kết trung bình (medium coupling)
  • D. Mức độ liên kết không quan trọng

Câu 23: "Cohesion" (tính gắn kết) trong thiết kế hướng đối tượng nên được hướng tới mức độ nào?

  • A. Tính gắn kết cao (high cohesion)
  • B. Tính gắn kết thấp (low cohesion)
  • C. Tính gắn kết trung bình (medium cohesion)
  • D. Mức độ gắn kết không quan trọng

Câu 24: Ưu điểm chính của việc sử dụng lập trình hướng đối tượng so với lập trình hướng cấu trúc là gì?

  • A. Tốc độ thực thi chương trình nhanh hơn.
  • B. Dễ dàng viết mã hơn cho các bài toán đơn giản.
  • C. Khả năng quản lý độ phức tạp của dự án lớn và khả năng tái sử dụng mã tốt hơn.
  • D. Yêu cầu ít tài nguyên hệ thống hơn.

Câu 25: Nhược điểm tiềm ẩn của việc lạm dụng tính kế thừa trong OOP là gì?

  • A. Giảm hiệu suất chương trình.
  • B. Tăng dung lượng bộ nhớ sử dụng.
  • C. Giảm tính linh hoạt của chương trình.
  • D. Tạo ra hệ thống phân cấp lớp phức tạp, khó hiểu và bảo trì.

Câu 26: Design Pattern (mẫu thiết kế) trong OOP dùng để làm gì?

  • A. Tăng tốc độ biên dịch chương trình.
  • B. 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.
  • C. Thay thế hoàn toàn việc lập trình thủ công.
  • D. Tự động tạo mã nguồn chương trình.

Câu 27: UML (Unified Modeling Language) được sử dụng để làm gì trong phát triển phần mềm hướng đối tượng?

  • A. Biên dịch mã nguồn chương trình.
  • B. Kiểm thử phần mềm tự động.
  • C. Mô hình hóa và trực quan hóa thiết kế hệ thống hướng đối tượng.
  • D. Quản lý phiên bản mã nguồn.

Câu 28: Trong OOP, thuật ngữ "composition" (tính hợp thành) thường mô tả loại quan hệ nào giữa các đối tượng?

  • A. Quan hệ kế thừa (inheritance)
  • B. Quan hệ sử dụng (using)
  • C. Quan hệ phụ thuộc (dependency)
  • D. Quan hệ thành phần (part-of) mà trong đó đối tượng thành phần không thể tồn tại độc lập.

Câu 29: So sánh "composition" và "aggregation" trong OOP, điểm khác biệt chính là gì?

  • A. Composition mạnh hơn Aggregation về hiệu suất.
  • B. Trong Composition, đối tượng thành phần phụ thuộc vào đối tượng chứa và có vòng đời phụ thuộc, trong Aggregation thì đối tượng thành phần có thể tồn tại độc lập.
  • C. Aggregation thể hiện quan hệ "is-a", Composition thể hiện "has-a".
  • D. Không có sự khác biệt đáng kể giữa Composition và Aggregation.

Câu 30: Khi nào thì nên ưu tiên sử dụng "composition" thay vì "inheritance" trong thiết kế OOP?

  • A. Khi cần tái sử dụng mã một cách tối đa.
  • B. Khi các lớp có quan hệ "is-a" rõ ràng.
  • C. Khi muốn tạo ra các đối tượng phức tạp từ các đối tượng đơn giản hơn và tăng tính linh hoạt, giảm sự phụ thuộc giữa các lớp.
  • D. Khi hiệu suất chương trình là yếu tố quan trọng nhất.

1 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

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ùng nhận một thông điệp?

2 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 2: Phát biểu nào sau đây mô tả đúng nhất về 'tính đóng gói' trong lập trình hướng đối tượng?

3 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 3: 'Tính trừu tượng' trong OOP giúp ích gì cho việc thiết kế và phát triển phần mềm?

4 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 4: Trong ngữ cảnh của 'tính kế thừa', lớp nào được xem là lớp cơ sở (base class) hoặc lớp cha?

5 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 5: Điều gì xảy ra khi bạn tạo một đối tượng (instance) từ một lớp (class)?

6 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

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

7 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 7: 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 như Java, C++, hoặc C#?

8 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 8: Trong OOP, 'thuộc tính' (attribute) của một đối tượng thường được dùng để biểu diễn điều gì?

9 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 9: 'Phương thức' (method) trong OOP dùng để làm gì?

10 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 10: Phạm vi truy cập 'private' có ý nghĩa gì đối với thành viên (thuộc tính hoặc phương thức) của một lớp?

11 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 11: Phạm vi truy cập 'public' có ý nghĩa gì đối với thành viên của một lớp?

12 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 12: Phạm vi truy cập 'protected' khác biệt như thế nào so với 'private'?

13 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 13: Trong một hệ thống quản lý thư viện, 'Sách', 'Độc giả', và 'Thủ thư' có thể được mô hình hóa như là gì trong OOP?

14 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

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

15 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 15: Mối quan hệ 'has-a' (có một) thể hiện điều gì giữa các đối tượng?

16 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 16: Trong lập trình hướng đối tượng, 'đa hình thời gian biên dịch' (compile-time polymorphism) thường được thực hiện thông qua kỹ thuật nào?

17 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 17: 'Đa hình thời gian chạy' (runtime polymorphism) thường liên quan đến kỹ thuật nào trong OOP?

18 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 18: Lớp trừu tượng (abstract class) trong OOP có đặc điểm gì nổi bật?

19 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

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

20 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 20: Nguyên tắc 'DRY' (Don't Repeat Yourself) có liên quan đến khía cạnh nào của OOP?

21 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 21: SOLID là một tập hợp các nguyên tắc thiết kế quan trọng trong OOP. Chữ 'L' trong SOLID đại diện cho nguyên tắc nào?

22 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 22: Trong thiết kế hướng đối tượng, 'coupling' (mức độ liên kết) nên được hướng tới mức độ nào?

23 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 23: 'Cohesion' (tính gắn kết) trong thiết kế hướng đối tượng nên được hướng tới mức độ nào?

24 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 24: Ưu điểm chính của việc sử dụng lập trình hướng đối tượng so với lập trình hướng cấu trúc là gì?

25 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 25: Nhược điểm tiềm ẩn của việc lạm dụng tính kế thừa trong OOP là gì?

26 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 26: Design Pattern (mẫu thiết kế) trong OOP dùng để làm gì?

27 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 27: UML (Unified Modeling Language) được sử dụng để làm gì trong phát triển phần mềm hướng đối tượng?

28 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 28: Trong OOP, thuật ngữ 'composition' (tính hợp thành) thường mô tả loại quan hệ nào giữa các đối tượng?

29 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 29: So sánh 'composition' và 'aggregation' trong OOP, điểm khác biệt chính là gì?

30 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 04

Câu 30: Khi nào thì nên ưu tiên sử dụng 'composition' thay vì 'inheritance' trong thiết kế OOP?

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


Trắc nghiệm Lập trình hướng đối tượng

Trắc nghiệm Lập trình hướng đối tượng - Đề 05

Trắc nghiệm 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: Điều gì KHÔNG phải là lợi ích chính của tính đóng gói (Encapsulation) trong lập trình hướng đối tượng?

  • A. Bảo vệ dữ liệu khỏi sự truy cập và sửa đổi không mong muốn từ bên ngoài.
  • B. Giảm sự phụ thuộc lẫn nhau giữa các thành phần của chương trình, tăng tínhModule hóa.
  • C. Tăng tốc độ thực thi chương trình nhờ giảm thiểu thao tác kiểm tra kiểu dữ liệu.
  • D. Cho phép thay đổi cách cài đặt bên trong của một lớp mà không ảnh hưởng đến các lớp khác sử dụng nó.

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

```
Class Animal {
phương_thức Speak() {
in_ra

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

Câu 4: Trong lập trình hướng đối tượng, "lớp" (class) và "đối tượng" (object) có mối quan hệ như thế nào?

  • A. Lớp là khuôn mẫu hoặc bản thiết kế, còn đối tượng là một thể hiện cụ thể được tạo ra từ lớp.
  • B. Đối tượng là khuôn mẫu chung, còn lớp là một trường hợp cụ thể của đối tượng.
  • C. Lớp và đối tượng là hai khái niệm hoàn toàn độc lập và không liên quan đến nhau.
  • D. Lớp và đối tượng là các tên gọi khác nhau cho cùng một khái niệm trong lập trình hướng đối tượng.

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ỏ một đối tượng khi nó không còn được sử dụng nữa.
  • B. Để định nghĩa các hành vi (phương thức) mà đối tượng có thể thực hiện.
  • C. Để khởi tạo các thuộc tính (dữ liệu) của đối tượng với các giá trị ban đầu.
  • D. Để kiểm tra kiểu dữ liệu của đối tượng trước khi thực hiện các thao tác.

Câu 6: Tính trừu tượng (Abstraction) trong lập trình hướng đối tượng giúp giải quyết vấn đề nào sau đây?

  • A. Vấn đề về hiệu suất của chương trình khi xử lý dữ liệu lớn.
  • B. Vấn đề về sự phức tạp của hệ thống phần mềm lớn, giúp dễ quản lý và bảo trì hơn.
  • C. Vấn đề về bảo mật dữ liệu khi có nhiều người dùng truy cập.
  • D. Vấn đề về khả năng tương thích giữa các hệ điều hành khác nhau.

Câu 7: Trong ngữ cảnh của tính kế thừa (Inheritance), lớp "con" (derived class) còn được gọi là gì?

  • A. Lớp cơ sở (base class)
  • B. Lớp cha (parent class)
  • C. Lớp giao diện (interface class)
  • D. Lớp dẫn xuất (subclass/derived class)

Câu 8: Phương thức hủy (destructor) trong một số ngôn ngữ lập trình hướng đối tượng (như C++) có chức năng chính là gì?

  • A. Khởi tạo giá trị ban đầu cho các thuộc tính của đối tượng.
  • B. Giải phóng bộ nhớ và các tài nguyên khác mà đối tượng đã chiếm giữ.
  • C. Thực hiện các thao tác trước khi đối tượng được tạo ra.
  • D. Kiểm tra trạng thái của đối tượng trước khi thực hiện một phương thức nào đó.

Câu 9: Khi một lớp con kế thừa từ lớp cha, điều gì KHÔNG được lớp con tự động kế thừa?

  • A. Các thuộc tính (biến thành viên) public và protected.
  • B. Các phương thức public và protected.
  • C. Phương thức khởi tạo (constructor) của lớp cha.
  • D. Các phương thức và thuộc tính có phạm vi truy cập protected.

Câu 10: Trong lập trình hướng đối tượng, "đa kế thừa" (multiple inheritance) là gì?

  • A. Một lớp kế thừa từ chính nó nhiều lần.
  • B. Một lớp kế thừa đồng thời từ nhiều lớp cha khác nhau.
  • C. Nhiều lớp con kế thừa từ cùng một lớp cha.
  • D. Một lớp có thể có nhiều đối tượng (thể hiện) khác nhau.

Câu 11: Phạm vi truy cập "private" của một thành viên trong lớp có ý nghĩa gì?

  • A. Thành viên đó chỉ có thể được truy cập từ bên trong lớp chứa nó.
  • B. Thành viên đó có thể được truy cập từ bất kỳ đâu trong chương trình.
  • C. Thành viên đó có thể được truy cập từ lớp con và bên trong lớp cha.
  • D. Thành viên đó chỉ có thể được truy cập bởi các đối tượng cùng lớp.

Câu 12: Giao diện (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ó khả năng tự động thay đổi trạng thái.
  • B. Để ẩn giấu hoàn toàn việc cài đặt chi tiết của một lớp.
  • C. Để quản lý bộ nhớ và tài nguyên của chương trình một cách hiệu quả hơn.
  • D. Để định nghĩa một hợp đồng, ràng buộc các lớp phải thực hiện một tập hợp các phương thức nhất định.

Câu 13: "Tính trừu tượng hóa dữ liệu" (data abstraction) khác với "tính đóng gói" (encapsulation) ở điểm nào?

  • A. Tính trừu tượng hóa dữ liệu là một dạng đặc biệt của tính đóng gói.
  • B. Tính đóng gói bao gồm cả tính trừu tượng hóa dữ liệu và tính đa hình.
  • C. Tính trừu tượng hóa dữ liệu tập trung vào việc ẩn các chi tiết cài đặt phức tạp, trong khi tính đóng gói tập trung vào việc bảo vệ dữ liệu và phương thức bên trong đối tượng.
  • D. Không có sự khác biệt rõ ràng, hai khái niệm này có thể sử dụng thay thế cho nhau.

Câu 14: Trong lập trình hướng đối tượng, "thông điệp" (message) thường được hiểu là gì?

  • A. Một đoạn văn bản mô tả chức năng của một đối tượng.
  • B. Một yêu cầu hoặc lệnh được gửi từ một đối tượng này đến một đối tượng khác, thường là việc gọi một phương thức.
  • C. Dữ liệu được truyền giữa các đối tượng khi chúng tương tác.
  • D. Một sự kiện xảy ra trong hệ thống và cần được các đối tượng khác xử lý.

Câu 15: Mục đích chính của việc sử dụng "tính kế thừa" (inheritance) trong lập trình hướng đối tượng là gì?

  • A. Tăng cường tính bảo mật cho dữ liệu của đối tượng.
  • B. Giảm thiểu kích thước bộ nhớ chương trình khi chạy.
  • C. Đơn giản hóa quá trình gỡ lỗi và kiểm thử phần mềm.
  • D. Tái sử dụng mã nguồn, giảm sự trùng lặp và xây dựng mối quan hệ "là một" (is-a relationship) giữa các lớp.

Câu 16: Kiểu quan hệ nào sau đây được thể hiện rõ nhất thông qua cơ chế "kế thừa" trong lập trình hướng đối tượng?

  • A. Quan hệ "sở hữu" (has-a relationship)
  • B. Quan hệ "sử dụng" (uses-a relationship)
  • C. Quan hệ "là một" (is-a relationship)
  • D. Quan hệ "thành phần" (part-of relationship)

Câu 17: Trong lập trình hướng đối tượng, thuật ngữ "phương thức" (method) thường được dùng để chỉ điều gì?

  • A. Một hành động hoặc thao tác mà một đối tượng có thể thực hiện.
  • B. Một thuộc tính hoặc đặc điểm của một đối tượng.
  • C. Một lớp khuôn mẫu để tạo ra các đối tượng.
  • D. Một cách để bảo vệ dữ liệu bên trong đối tượng.

Câu 18: Điều gì KHÔNG phải là một nguyên tắc SOLID trong thiết kế hướng đối tượng?

  • A. Nguyên tắc đơn trách nhiệm (Single Responsibility Principle)
  • B. Nguyên tắc đóng mở (Open/Closed Principle)
  • C. Nguyên tắc thay thế Liskov (Liskov Substitution Principle)
  • D. Nguyên tắc đừng lặp lại chính mình (Don"t Repeat Yourself - DRY)

Câu 19: Nguyên tắc "Đóng - Mở" (Open/Closed Principle) trong SOLID phát biểu rằng:

  • A. Một lớp nên chỉ có một lý do duy nhất để thay đổi.
  • B. Các thực thể phần mềm (lớp, module, hàm...) nên mở cho việc mở rộng nhưng đóng cho việc sửa đổi.
  • C. Các lớp con có thể thay thế các 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. Nhiều giao diện đặc thù tốt hơn là một giao diện đa năng.

Câu 20: Trong lập trình hướng đối tượng, "tính đa hình thời gian biên dịch" (compile-time polymorphism) thường được thực hiện thông qua cơ chế nào?

  • A. Kế thừa (Inheritance)
  • B. Giao diện (Interface)
  • C. Nạp chồng hàm (Function overloading) hoặc nạp chồng toán tử (Operator overloading)
  • D. Ghi đè phương thức (Method overriding)

Câu 21: "Tính đa hình thời gian chạy" (runtime polymorphism) thường được thực 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. Nạp chồng hàm (Function overloading)
  • D. Ghi đè phương thức (Method overriding) và sử dụng tính kế thừa

Câu 22: Ưu điểm chính của việc sử dụng "thiết kế hướng đối tượng" (object-oriented design) so với "thiết kế hướng chức năng" (functional design) là gì?

  • A. Chương trình hướng đối tượng thường chạy nhanh hơn chương trình hướng chức năng.
  • B. Thiết kế hướng đối tượng giúp quản lý độ phức tạp của phần mềm tốt hơn, dễ bảo trì và mở rộng.
  • C. Thiết kế hướng đối tượng ít tốn bộ nhớ hơn so với thiết kế hướng chức năng.
  • D. Thiết kế hướng đối tượng phù hợp hơn với các bài toán tính toán khoa học phức tạp.

Câu 23: 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 hệ thống, ví dụ như trình tự các tương tác giữa các đối tượng.
  • B. Luồng dữ liệu và xử lý thông tin trong hệ thống.
  • C. Cấu trúc tĩnh của hệ thống, bao gồm các lớp, thuộc tính, phương thức và mối quan hệ giữa chúng.
  • D. Giao diện người dùng và trải nghiệm người dùng của hệ thống.

Câu 24: "Tính kết hợp" (Association) và "tính tập hợp" (Aggregation) trong lập trình hướng đối tượng khác nhau như thế nào?

  • A. Tính tập hợp là một dạng đặc biệt của tính kết hợp, trong đó thể hiện quan hệ "toàn - bộ" nhưng các thành phần có thể tồn tại độc lập ngoài tập hợp.
  • B. Tính kết hợp thể hiện quan hệ "toàn - bộ" mạnh mẽ hơn tính tập hợp, trong đó các thành phần không thể tồn tại độc lập.
  • C. Tính kết hợp chỉ áp dụng cho các lớp có quan hệ kế thừa, còn tính tập hợp áp dụng cho các lớp không có quan hệ kế thừa.
  • D. Không có sự khác biệt về bản chất, hai thuật ngữ này có thể dùng thay thế cho nhau.

Câu 25: Mẫu thiết kế (design pattern) Singleton giải quyết vấn đề gì?

  • A. Đảm bảo rằng một nhóm các đối tượng hoạt động đồng bộ với nhau.
  • B. Đảm bảo rằng một lớp chỉ có duy nhất một thể hiện (instance) và cung cấp một điểm truy cập toàn cục đến nó.
  • C. Cho phép một đối tượng thay đổi hành vi của nó tại thời gian chạy.
  • D. Giảm sự phụ thuộc giữa các lớp và tăng tính linh hoạt của hệ thống.

Câu 26: Mẫu thiết kế Factory Method thuộc nhóm mẫu thiết kế nào?

  • A. Nhóm mẫu cấu trúc (Structural Patterns)
  • B. Nhóm mẫu hành vi (Behavioral Patterns)
  • C. Nhóm mẫu khởi tạo (Creational Patterns)
  • D. Nhóm mẫu đồng thời (Concurrent Patterns)

Câu 27: Trong lập trình hướng đối tượng, "composition" (hợp thành) khác với "aggregation" (tập hợp) chủ yếu ở điểm nào?

  • A. Composition thể hiện quan hệ "là một" (is-a relationship), còn aggregation thể hiện quan hệ "sở hữu" (has-a relationship).
  • B. Aggregation có hiệu suất cao hơn composition trong việc quản lý bộ nhớ.
  • C. Composition cho phép tái sử dụng mã tốt hơn aggregation.
  • D. Trong composition, vòng đời của đối tượng "bộ phận" phụ thuộc vào vòng đời của đối tượng "toàn thể", còn trong aggregation thì không.

Câu 28: Điều gì KHÔNG phải là một lợi ích của việc sử dụng mẫu thiết kế (design patterns) trong phát triển phần mềm hướng đối tượng?

  • A. Tái sử dụng các giải pháp thiết kế đã được kiểm chứng và tối ưu.
  • B. Cải thiện khả năng giao tiếp và hiểu biết chung giữa các thành viên trong nhóm phát triển.
  • C. Đảm bảo chương trình sau khi phát triển sẽ luôn chạy nhanh hơn và hiệu quả hơn về mặt hiệu suất.
  • D. Tăng tốc độ phát triển phần mềm bằng cách sử dụng các khuôn mẫu có sẵn.

Câu 29: Trong lập trình hướng đối tượng, "dependency injection" (tiêm phụ thuộc) là kỹ thuật để làm gì?

  • A. Giảm sự phụ thuộc giữa các thành phần phần mềm, tăng tính module hóa và khả năng kiểm thử.
  • B. Tối ưu hóa hiệu suất bộ nhớ bằng cách tự động giải phóng các đối tượng không còn sử dụng.
  • C. Tăng cường tính bảo mật bằng cách mã hóa dữ liệu truyền giữa các đối tượng.
  • D. Đơn giản hóa quá trình quản lý vòng đời của đối tượng trong ứng dụng.

Câu 30: Khi nào nên sử dụng "tính kế thừa" (inheritance) và khi nào nên ưu tiên sử dụng "composition" (hợp thành) trong thiết kế hướng đối tượng?

  • A. Luôn ưu tiên sử dụng kế thừa vì nó đơn giản và dễ hiểu hơn composition.
  • B. Sử dụng kế thừa khi có quan hệ "là một" (is-a relationship) rõ ràng và phù hợp, ưu tiên composition khi muốn tái sử dụng hành vi và có quan hệ "sở hữu" (has-a relationship) hoặc cần sự linh hoạt cao hơn.
  • C. Chỉ sử dụng composition khi cần đa kế thừa, vì kế thừa đơn không đủ mạnh.
  • D. Không có quy tắc cụ thể, việc lựa chọn giữa kế thừa và composition phụ thuộc hoàn toàn vào sở thích của người lập trình.

1 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

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: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 2: Điều gì KHÔNG phải là lợi ích chính của tính đóng gói (Encapsulation) trong lập trình hướng đối tượng?

3 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

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

```
Class Animal {
phương_thức Speak() {
in_ra "Tiếng kêu chung chung của động vật"
}
}

Class Dog kế_thừa Animal {
phương_thức Speak() {
in_ra "Gâu gâu!"
}
}

Class Cat kế_thừa Animal {
phương_thức Speak() {
in_ra "Meo meo!"
}
}

func Main() {
animal1 = Dog()
animal2 = Cat()
animal1.Speak()
animal2.Speak()
}
```

Đoạn mã trên minh họa rõ nhất đặc điểm nào của lập trình hướng đối tượng?

4 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 4: Trong lập trình hướng đối tượng, 'lớp' (class) và 'đối tượng' (object) có mối quan hệ như thế nào?

5 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

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: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 6: Tính trừu tượng (Abstraction) trong lập trình hướng đối tượng giúp giải quyết vấn đề nào sau đây?

7 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 7: Trong ngữ cảnh của tính kế thừa (Inheritance), lớp 'con' (derived class) còn được gọi là gì?

8 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 8: Phương thức hủy (destructor) trong một số ngôn ngữ lập trình hướng đối tượng (như C++) có chức năng chính là gì?

9 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 9: Khi một lớp con kế thừa từ lớp cha, điều gì KHÔNG được lớp con tự động kế thừa?

10 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 10: Trong lập trình hướng đối tượng, 'đa kế thừa' (multiple inheritance) là gì?

11 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 11: Phạm vi truy cập 'private' của một thành viên trong lớp có ý nghĩa gì?

12 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 12: Giao diện (interface) trong lập trình hướng đối tượng được sử dụng để làm gì?

13 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 13: 'Tính trừu tượng hóa dữ liệu' (data abstraction) khác với 'tính đóng gói' (encapsulation) ở điểm nào?

14 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 14: Trong lập trình hướng đối tượng, 'thông điệp' (message) thường được hiểu là gì?

15 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 15: Mục đích chính của việc sử dụng 'tính kế thừa' (inheritance) trong lập trình hướng đối tượng là gì?

16 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 16: Kiểu quan hệ nào sau đây được thể hiện rõ nhất thông qua cơ chế 'kế thừa' trong lập trình hướng đối tượng?

17 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 17: Trong lập trình hướng đối tượng, thuật ngữ 'phương thức' (method) thường được dùng để chỉ điều gì?

18 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 18: Điều gì KHÔNG phải là một nguyên tắc SOLID trong thiết kế hướng đối tượng?

19 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 19: Nguyên tắc 'Đóng - Mở' (Open/Closed Principle) trong SOLID phát biểu rằng:

20 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 20: Trong lập trình hướng đối tượng, 'tính đa hình thời gian biên dịch' (compile-time polymorphism) thường được thực hiện thông qua cơ chế nào?

21 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

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

22 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 22: Ưu điểm chính của việc sử dụng 'thiết kế hướng đối tượng' (object-oriented design) so với 'thiết kế hướng chức năng' (functional design) là gì?

23 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

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

24 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 24: 'Tính kết hợp' (Association) và 'tính tập hợp' (Aggregation) trong lập trình hướng đối tượng khác nhau như thế nào?

25 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 25: Mẫu thiết kế (design pattern) Singleton giải quyết vấn đề gì?

26 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 26: Mẫu thiết kế Factory Method thuộc nhóm mẫu thiết kế nào?

27 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 27: Trong lập trình hướng đối tượng, 'composition' (hợp thành) khác với 'aggregation' (tập hợp) chủ yếu ở điểm nào?

28 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 28: Điều gì KHÔNG phải là một lợi ích của việc sử dụng mẫu thiết kế (design patterns) trong phát triển phần mềm hướng đối tượng?

29 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 29: Trong lập trình hướng đối tượng, 'dependency injection' (tiêm phụ thuộc) là kỹ thuật để làm gì?

30 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 05

Câu 30: Khi nào nên sử dụng 'tính kế thừa' (inheritance) và khi nào nên ưu tiên sử dụng 'composition' (hợp thành) trong thiết kế 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é!!!


Trắc nghiệm Lập trình hướng đối tượng

Trắc nghiệm Lập trình hướng đối tượng - Đề 06

Trắc nghiệm Lập trình hướng đối tượng - Đề 06 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 đa hình (Polymorphism)
  • D. Tính kế thừa (Inheritance)

Câu 2: Điều gì KHÔNG phải là lợi ích chính của lập trình hướng đối tượng so với lập trình hướng cấu trúc?

  • A. Tái sử dụng mã nguồn thông qua kế thừa
  • B. Quản lý độ phức tạp của dự án lớn tốt hơn
  • C. Mô hình hóa thế giới thực tự nhiên hơn
  • D. Tăng tốc độ thực thi chương trình

Câu 3: Xét đoạn mã giả sau về lớp `Animal` và lớp `Dog` kế thừa từ `Animal`:

```
class Animal {
phương thức Speak() {
in ra

  • 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 4: Trong OOP, "tính đóng gói" (encapsulation) chủ yếu đạt được thông qua cơ chế nào?

  • A. Kế thừa (Inheritance)
  • B. Các từ khóa kiểm soát truy cập (access modifiers) như `private`, `protected`, `public`
  • C. Đa hình (Polymorphism)
  • D. Trừu tượng hóa (Abstraction)

Câu 5: Một lớp `Xe` có các thuộc tính chung như `màu sắc`, `số bánh`, và phương thức `di chuyển()`. Lớp `XeTải` và `XeDuLịch` kế thừa từ lớp `Xe`. Đây là ví dụ minh họa cho tính chất 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 6: "Tính trừu tượng" (abstraction) trong OOP giúp lập trình viên tập trung vào điều gì?

  • A. Chi tiết cài đặt phức tạp của đối tượng
  • B. Các đặc điểm và hành vi thiết yếu của đối tượng, bỏ qua chi tiết không cần thiết
  • C. Mối quan hệ kế thừa giữa các lớp
  • D. Cách thức dữ liệu được đóng gói và bảo vệ

Câu 7: Trong ngữ cảnh của OOP, "lớp" (class) được xem như là gì?

  • A. Một thể hiện cụ thể của dữ liệu
  • B. Một hành động mà đối tượng có thể thực hiện
  • C. Một bản thiết kế hoặc khuôn mẫu cho các đối tượng
  • D. Một biến toàn cục trong chương trình

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

  • A. Một thể hiện cụ thể của một lớp
  • B. Một bản thiết kế cho các lớp
  • C. Một tập hợp các lớp có liên quan
  • D. Một phương thức tĩnh trong lớp

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

  • A. Hủy bỏ đối tượng khi nó không còn cần thiết
  • B. Khởi tạo trạng thái ban đầu cho đối tượng khi nó được tạo ra
  • C. Thực hiện các phép toán số học trên đối tượng
  • D. Định nghĩa hành vi của đối tượng

Câu 10: Từ khóa nào thường được sử dụng để khai báo tính kế thừa trong nhiều ngôn ngữ lập trình OOP?

  • A. `public`
  • B. `private`
  • C. `extends` hoặc `:` hoặc tương tự
  • D. `static`

Câu 11: Trong một lớp, thành phần nào được ẩn khỏi truy cập trực tiếp từ bên ngoài đối tượng, thể hiện tính đóng gói?

  • A. Thành phần `public`
  • B. Thành phần `private`
  • C. Thành phần `protected`
  • D. Thành phần `internal`

Câu 12: Thành phần `protected` trong một lớp có ý nghĩa gì về mặt truy cập?

  • A. Chỉ có thể truy cập từ bên trong lớp đó.
  • B. Có thể truy cập từ bất kỳ đâu.
  • C. Có thể truy cập từ bên trong lớp đó và các lớp con kế thừa.
  • D. Chỉ có thể truy cập từ các lớp cùng gói (package).

Câu 13: "Phương thức" (method) trong OOP tương ứng với khái niệm nào trong lập trình hướng cấu trúc?

  • A. Hàm (function) hoặc thủ tục (procedure)
  • B. Biến (variable)
  • C. Cấu trúc dữ liệu (data structure)
  • D. Toán tử (operator)

Câu 14: "Thuộc tính" (attribute) hay "trường dữ liệu" (data field) của một lớp mô tả điều gì về đối tượng?

  • A. Hành vi của đối tượng
  • B. Trạng thái hoặc đặc điểm của đối tượng
  • C. Mối quan hệ với các đối tượng khác
  • D. Cách đối tượng được tạo ra

Câu 15: Một lớp "HìnhDạng" có phương thức trừu tượng "tínhDiệnTích()". Lớp "HìnhTròn" và "HìnhVuông" kế thừa "HìnhDạng" và hiện thực phương thức "tínhDiệnTích()" theo cách riêng. Đây là ví dụ về:

  • A. Tính đóng gói (Encapsulation)
  • B. Tính trừu tượng (Abstraction) nhưng không phải đa hình
  • C. Tính đa hình (Polymorphism) và tính trừu tượng (Abstraction)
  • D. Tính kế thừa đơn thuần

Câu 16: Giao diện (interface) trong OOP khác với lớp trừu tượng (abstract class) ở điểm nào chính?

  • A. Giao diện có thể chứa thuộc tính, lớp trừu tượng thì không.
  • B. Lớp trừu tượng hỗ trợ đa kế thừa, giao diện thì không.
  • C. Lớp trừu tượng định nghĩa hành vi, giao diện thì định nghĩa cấu trúc dữ liệu.
  • D. Giao diện chỉ chứa định nghĩa phương thức (không có hiện thực), lớp trừu tượng có thể chứa cả định nghĩa và hiện thực.

Câu 17: Mục đích chính của việc sử dụng "tính kế thừa" (inheritance) là gì?

  • A. Tăng tốc độ thực thi chương trình
  • B. Tái sử dụng mã nguồn và xây dựng hệ thống phân cấp lớp
  • C. Giảm thiểu sử dụng bộ nhớ
  • D. Tăng cường tính bảo mật dữ liệu

Câu 18: Khi một lớp con kế thừa từ lớp cha, điều gì xảy ra với các thành phần `private` của lớp cha?

  • A. Chúng được tự động trở thành `public` trong lớp con.
  • B. Chúng có thể được truy cập trực tiếp từ lớp con.
  • C. Chúng được kế thừa nhưng không thể truy cập trực tiếp từ lớp con.
  • D. Chúng hoàn toàn không được kế thừa.

Câu 19: Trong thiết kế hướng đối tượng, mối quan hệ "is-a" (là một) thường được hiện thực hóa bằng cơ chế nào?

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

Câu 20: Mối quan hệ "has-a" (có một) giữa các lớp trong OOP thường được hiện thực hóa bằng cơ chế nào?

  • A. Kế thừa (Inheritance)
  • B. Đa hình (Polymorphism)
  • C. Trừu tượng hóa (Abstraction)
  • D. Tập hợp (Composition) hoặc kết hợp (Aggregation)

Câu 21: Kiểu dữ liệu trừu tượng (Abstract Data Type - ADT) có liên quan mật thiết đến khái niệm nào trong OOP?

  • A. Lớp (Class)
  • B. Đối tượng (Object)
  • C. Phương thức (Method)
  • D. Thuộc tính (Attribute)

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

Câu 23: SOLID là một tập hợp các nguyên tắc thiết kế quan trọng trong OOP. Chữ "L" trong SOLID đại diện cho nguyên tắc nào?

  • A. Single Responsibility Principle
  • B. Open/Closed Principle
  • C. Liskov Substitution Principle
  • D. Interface Segregation Principle

Câu 24: Nguyên tắc "Single Responsibility Principle" (SRP) trong SOLID khuyến khích điều gì?

  • A. Mỗi lớp chỉ nên có một trách nhiệm duy nhất.
  • B. Các lớp nên mở rộng để dễ dàng thêm chức năng mới.
  • C. Các lớp con có thể thay thế lớp cha mà không làm thay đổi tính đúng đắn của chương trình.
  • D. Nên chia nhỏ interface thành nhiều interface nhỏ hơn, đặc thù cho từng client.

Câu 25: Design Pattern (mẫu thiết kế) trong OOP là gì?

  • A. Một lỗi thường gặp trong thiết kế OOP.
  • B. Một giải pháp thiết kế tổng quát, có thể tái sử dụng cho các vấn đề thường gặp trong OOP.
  • C. Một ngôn ngữ mô hình hóa hệ thống hướng đối tượng.
  • D. Một công cụ để kiểm thử mã nguồn OOP.

Câu 26: Ví dụ nào sau đây thể hiện rõ nhất tính "đa hình" trong thực tế cuộc sống?

  • A. Một chiếc hộp có thể chứa nhiều đồ vật khác nhau.
  • B. Các loại xe khác nhau đều có bánh xe và động cơ.
  • C. Một công tắc đèn có thể bật hoặc tắt đèn.
  • D. Cùng một hành động "mở cửa" nhưng cách thực hiện khác nhau cho cửa nhà, cửa xe, cửa tủ lạnh...

Câu 27: Trong OOP, thuật ngữ "message passing" (truyền thông điệp) thường liên quan đến hành động nào?

  • A. Đóng gói dữ liệu và phương thức vào trong lớp.
  • B. Kế thừa thuộc tính và phương thức từ lớp cha.
  • C. Một đối tượng gửi yêu cầu thực hiện một hành động đến đối tượng khác (gọi phương thức).
  • D. Ẩn giấu chi tiết cài đặt bên trong đối tượng.

Câu 28: Ưu điểm của việc sử dụng các Design Pattern trong phát triển phần mềm hướng đối tượng là gì?

  • A. Giảm số lượng dòng code cần viết.
  • B. Tăng tốc độ biên dịch chương trình.
  • C. Giúp chương trình chạy nhanh hơn.
  • D. Cải thiện khả năng tái sử dụng, bảo trì, và giao tiếp giữa các lập trình viên.

Câu 29: Khi nào nên sử dụng "tập hợp" (composition) thay vì "kế thừa" (inheritance) trong thiết kế OOP?

  • A. Khi muốn tái sử dụng mã nguồn một cách tối đa.
  • B. Khi muốn thể hiện mối quan hệ "has-a" (có một) và tăng tính linh hoạt trong thiết kế.
  • C. Khi muốn tạo ra hệ thống phân cấp lớp phức tạp.
  • D. Khi cần tối ưu hiệu suất chương trình.

Câu 30: Điều gì KHÔNG phải là một nguyên tắc cơ bản 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 đa hình (Polymorphism)
  • D. Tính tuần tự (Sequentiality)

1 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

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: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 2: Điều gì KHÔNG phải là lợi ích chính của lập trình hướng đối tượng so với lập trình hướng cấu trúc?

3 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 3: Xét đoạn mã giả sau về lớp `Animal` và lớp `Dog` kế thừa từ `Animal`:

```
class Animal {
phương thức Speak() {
in ra "Tiếng động chung chung của động vật"
}
}

class Dog kế thừa Animal {
phương thức Speak() {
in ra "Gâu Gâu!"
}
}

Animal myAnimal = Dog mới();
myAnimal.Speak();
```

Đoạn mã trên minh họa rõ nhất đặc điểm nào của OOP?

4 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 4: Trong OOP, 'tính đóng gói' (encapsulation) chủ yếu đạt được thông qua cơ chế nào?

5 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 5: Một lớp `Xe` có các thuộc tính chung như `màu sắc`, `số bánh`, và phương thức `di chuyển()`. Lớp `XeTải` và `XeDuLịch` kế thừa từ lớp `Xe`. Đây là ví dụ minh họa cho tính chất nào?

6 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 6: 'Tính trừu tượng' (abstraction) trong OOP giúp lập trình viên tập trung vào điều gì?

7 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 7: Trong ngữ cảnh của OOP, 'lớp' (class) được xem như là gì?

8 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 8: 'Đối tượng' (object) trong OOP là gì?

9 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

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

10 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 10: Từ khóa nào thường được sử dụng để khai báo tính kế thừa trong nhiều ngôn ngữ lập trình OOP?

11 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 11: Trong một lớp, thành phần nào được ẩn khỏi truy cập trực tiếp từ bên ngoài đối tượng, thể hiện tính đóng gói?

12 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 12: Thành phần `protected` trong một lớp có ý nghĩa gì về mặt truy cập?

13 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 13: 'Phương thức' (method) trong OOP tương ứng với khái niệm nào trong lập trình hướng cấu trúc?

14 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 14: 'Thuộc tính' (attribute) hay 'trường dữ liệu' (data field) của một lớp mô tả điều gì về đối tượng?

15 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 15: Một lớp 'HìnhDạng' có phương thức trừu tượng 'tínhDiệnTích()'. Lớp 'HìnhTròn' và 'HìnhVuông' kế thừa 'HìnhDạng' và hiện thực phương thức 'tínhDiệnTích()' theo cách riêng. Đây là ví dụ về:

16 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 16: Giao diện (interface) trong OOP khác với lớp trừu tượng (abstract class) ở điểm nào chính?

17 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 17: Mục đích chính của việc sử dụng 'tính kế thừa' (inheritance) là gì?

18 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 18: Khi một lớp con kế thừa từ lớp cha, điều gì xảy ra với các thành phần `private` của lớp cha?

19 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 19: Trong thiết kế hướng đối tượng, mối quan hệ 'is-a' (là một) thường được hiện thực hóa bằng cơ chế nào?

20 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 20: Mối quan hệ 'has-a' (có một) giữa các lớp trong OOP thường được hiện thực hóa bằng cơ chế nào?

21 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 21: Kiểu dữ liệu trừu tượng (Abstract Data Type - ADT) có liên quan mật thiết đến khái niệm nào trong OOP?

22 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

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

23 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 23: SOLID là một tập hợp các nguyên tắc thiết kế quan trọng trong OOP. Chữ 'L' trong SOLID đại diện cho nguyên tắc nào?

24 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 24: Nguyên tắc 'Single Responsibility Principle' (SRP) trong SOLID khuyến khích điều gì?

25 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 25: Design Pattern (mẫu thiết kế) trong OOP là gì?

26 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 26: Ví dụ nào sau đây thể hiện rõ nhất tính 'đa hình' trong thực tế cuộc sống?

27 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 27: Trong OOP, thuật ngữ 'message passing' (truyền thông điệp) thường liên quan đến hành động nào?

28 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 28: Ưu điểm của việc sử dụng các Design Pattern trong phát triển phần mềm hướng đối tượng là gì?

29 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 29: Khi nào nên sử dụng 'tập hợp' (composition) thay vì 'kế thừa' (inheritance) trong thiết kế OOP?

30 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 06

Câu 30: Điều gì KHÔNG phải là một nguyên tắc cơ bản của 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é!!!


Trắc nghiệm Lập trình hướng đối tượng

Trắc nghiệm Lập trình hướng đối tượng - Đề 07

Trắc nghiệm Lập trình hướng đối tượng - Đề 07 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 (OOP), khái niệm nào mô tả việc nhóm dữ liệu (thuộc tính) và các phương thức (hành vi) làm việc trên dữ liệu đó vào một đơn vị duy nhất (ví dụ: một lớp), đồng thời kiểm soát quyền truy cập từ bên ngoài?

  • A. Kế thừa (Inheritance)
  • B. Đa hình (Polymorphism)
  • C. Đóng gói (Encapsulation)
  • D. Trừu tượng (Abstraction)

Câu 2: Khi thiết kế một hệ thống quản lý thư viện bằng OOP, bạn tạo một lớp `Sach` (Sách) và một lớp `TapChi` (Tạp chí). Cả hai đều có các thuộc tính chung như `TieuDe`, `SoLuongBanSao` và phương thức `HienThiThongTin()`. Khái niệm OOP nào cho phép bạn định nghĩa một lớp chung `AnPham` (Ấn phẩm) chứa các thuộc tính và phương thức chung này, sau đó để `Sach` và `TapChi` kế thừa từ đó?

  • A. Kế thừa (Inheritance)
  • B. Đa hình (Polymorphism)
  • C. Đóng gói (Encapsulation)
  • D. Trừu tượng (Abstraction)

Câu 3: Xét các lớp `HinhHoc` (lớp cha), `HinhTron` và `HinhVuong` (lớp con). Lớp `HinhHoc` có một phương thức ảo (virtual method) `TinhDienTich()`. Cả `HinhTron` và `HinhVuong` đều ghi đè (override) phương thức này để tính diện tích theo công thức riêng của chúng. Khi bạn có một danh sách các đối tượng kiểu `HinhHoc` (có thể là `HinhTron` hoặc `HinhVuong`), và gọi phương thức `TinhDienTich()` trên từng đối tượng, hệ thống sẽ tự động gọi phương thức `TinhDienTich()` phù hợp với kiểu thực tế của đối tượng đó tại thời điểm chạy. Hiện tượng này thể hiện tính chất nào của OOP?

  • A. Kế thừa (Inheritance)
  • B. Đa hình (Polymorphism)
  • C. Đóng gói (Encapsulation)
  • D. Trừu tượng (Abstraction)

Câu 4: Bạn đang thiết kế một hệ thống xử lý thanh toán trực tuyến. Có nhiều phương thức thanh toán khác nhau (thẻ tín dụng, PayPal, chuyển khoản ngân hàng). Mặc dù chi tiết xử lý mỗi phương thức là khác nhau, tất cả đều cần có các bước chung như `NhapThongTinThanhToan()`, `XacThucThanhToan()`, `GuiThongBao()`. Khái niệm OOP nào giúp bạn định nghĩa một giao diện chung hoặc lớp trừu tượng `PhuongThucThanhToan` để đảm bảo tất cả các phương thức cụ thể tuân theo một cấu trúc và hành vi nhất định mà không cần quan tâm đến chi tiết triển khai bên trong của từng phương thức?

  • A. Kế thừa (Inheritance)
  • B. Đa hình (Polymorphism)
  • C. Đóng gói (Encapsulation)
  • D. Trừu tượng (Abstraction)

Câu 5: Trong OOP, đâu là sự khác biệt cốt lõi giữa một `lớp` (Class) và một `đối tượng` (Object)?

  • A. Lớp là một thể hiện cụ thể, còn đối tượng là bản thiết kế.
  • B. Lớp là bản thiết kế (blueprint), còn đối tượng là một thể hiện (instance) cụ thể của lớp đó.
  • C. Lớp chứa dữ liệu, còn đối tượng chứa phương thức.
  • D. Lớp chỉ tồn tại trong mã nguồn, còn đối tượng chỉ tồn tại khi chương trình chạy.

Câu 6: Cho đoạn mã giả sau:
```
class Xe
protected string tenModel
public int soBanh
private string soKhung

public void HienThiThongTin()
// In tenModel, soBanh

private void KiemTraSoKhung()
// Kiem tra soKhung

class XeCon(inherits Xe)
// ...
```
Trong lớp `XeCon`, thành viên nào của lớp `Xe` có thể được truy cập trực tiếp?

  • A. Chỉ `soKhung` và `KiemTraSoKhung()`
  • B. Chỉ `tenModel` và `soKhung`
  • C. Chỉ `soBanh` và `soKhung`
  • D. Chỉ `tenModel`, `soBanh` và `HienThiThongTin()`

Câu 7: Trong một ngôn ngữ lập trình hỗ trợ OOP, đâu là mục đích chính của một phương thức khởi tạo (Constructor)?

  • A. Để giải phóng bộ nhớ khi đối tượng không còn được sử dụng.
  • B. Để thực hiện một hành động cụ thể sau khi đối tượng đã được tạo xong.
  • C. Để khởi tạo trạng thái (thuộc tính) ban đầu cho một đối tượng khi nó được tạo ra.
  • D. Để định nghĩa các phương thức mà lớp con phải triển khai.

Câu 8: Phân tích lợi ích chính của việc sử dụng tính đóng gói (Encapsulation) trong thiết kế phần mềm hướng đối tượng.

  • A. Bảo vệ dữ liệu nội bộ của đối tượng, giúp kiểm soát cách dữ liệu được truy cập và sửa đổi, từ đó tăng tính an toàn và dễ bảo trì.
  • B. Cho phép một đối tượng có nhiều hình thức khác nhau tại thời điểm chạy.
  • C. Giúp tái sử dụng mã nguồn bằng cách tạo các lớp mới từ các lớp hiện có.
  • D. Giúp tập trung vào các đặc điểm cốt lõi và bỏ qua chi tiết không cần thiết.

Câu 9: Giả sử bạn có một lớp `DongVat` (động vật) và các lớp con như `Cho`, `Meo`, `Bo` kế thừa từ `DongVat`. Lớp `DongVat` có phương thức `Keu()`. Mỗi lớp con ghi đè phương thức `Keu()` để phát ra âm thanh đặc trưng của loài đó ("Gau gau", "Meo meo", "O o"). Khi bạn có một mảng các đối tượng kiểu `DongVat` chứa cả `Cho`, `Meo`, `Bo` và lặp qua mảng để gọi `Keu()` trên từng đối tượng, kết quả là mỗi đối tượng sẽ kêu đúng theo loài của nó. Đây là ví dụ cụ thể nhất cho tính chất nào của OOP?

  • A. Kế thừa (Inheritance)
  • B. Đa hình (Polymorphism)
  • C. Đóng gói (Encapsulation)
  • D. Trừu tượng (Abstraction)

Câu 10: Trong một số ngôn ngữ OOP, bạn có thể định nghĩa nhiều phương thức cùng tên trong một lớp, miễn là chúng có danh sách tham số khác nhau (số lượng, kiểu hoặc thứ tự tham số). Khái niệm này được gọi là gì?

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

Câu 11: Một lớp trừu tượng (Abstract Class) trong OOP:

  • A. Chỉ có thể chứa các phương thức trừu tượng (abstract methods).
  • B. Có thể tạo ra các đối tượng trực tiếp từ nó.
  • C. Không thể có bất kỳ phương thức cụ thể (concrete methods) nào.
  • D. Không thể tạo ra các đối tượng trực tiếp từ nó và thường chứa ít nhất một phương thức trừu tượng mà các lớp con phải triển khai.

Câu 12: Giao diện (Interface) trong OOP chủ yếu dùng để:

  • A. Định nghĩa một lớp cơ sở để các lớp khác kế thừa thuộc tính và phương thức.
  • B. Định nghĩa một bộ các phương thức mà một lớp phải triển khai, tạo ra một "hợp đồng" về hành vi.
  • C. Che giấu dữ liệu nội bộ của một đối tượng.
  • D. Cung cấp một khuôn mẫu cho việc tạo đối tượng với trạng thái ban đầu.

Câu 13: Phân biệt giữa Kế thừa (Inheritance) và Thành phần hóa (Composition) trong OOP.

  • A. Kế thừa mô tả mối quan hệ "là một loại của" (is-a), còn Thành phần hóa mô tả mối quan hệ "có một" (has-a).
  • B. Kế thừa giúp tái sử dụng mã, còn Thành phần hóa thì không.
  • C. Kế thừa là một dạng của Đa hình, còn Thành phần hóa là một dạng của Đóng gói.
  • D. Kế thừa áp dụng cho các lớp con, còn Thành phần hóa áp dụng cho các giao diện.

Câu 14: Trong ngôn ngữ C#, từ khóa nào được sử dụng để chỉ ra rằng một phương thức trong lớp con sẽ cung cấp một triển khai cụ thể cho một phương thức ảo (virtual) hoặc trừu tượng (abstract) đã được định nghĩa trong lớp cha?

  • A. virtual
  • B. override
  • C. abstract
  • D. new

Câu 15: Đâu là nhược điểm tiềm tàng của việc lạm dụng tính kế thừa trong thiết kế OOP?

  • A. Làm giảm khả năng tái sử dụng mã.
  • B. Làm cho chương trình khó biên dịch hơn.
  • C. Tạo ra sự ràng buộc chặt chẽ giữa lớp cha và lớp con (tight coupling), có thể gây khó khăn khi thay đổi hoặc mở rộng hệ thống.
  • D. Làm tăng đáng kể dung lượng bộ nhớ chương trình.

Câu 16: Xem xét đoạn mã giả sau:
```
class MayTinh {
public void KhoiDong() { print

  • A. May tinh khoi dong
  • B. Laptop dang bat nguon
  • C. Lỗi biên dịch
  • D. Cả hai dòng sẽ được in ra

Câu 17: Giả sử bạn có một lớp `NhanVien` với các thuộc tính `MaNhanVien`, `Ten`, `LuongCoBan`. Bạn muốn tạo các lớp con `NhanVienFullTime` và `NhanVienPartTime`, mỗi lớp có cách tính lương khác nhau nhưng vẫn kế thừa các thuộc tính chung. Để đảm bảo mọi `NhanVien` đều có một phương thức `TinhLuong()`, nhưng việc tính toán cụ thể được thực hiện ở lớp con, bạn nên định nghĩa `TinhLuong()` trong lớp `NhanVien` như thế nào?

  • A. Là một phương thức trừu tượng (abstract) hoặc phương thức ảo (virtual).
  • B. Là một phương thức private.
  • C. Là một thuộc tính (property).
  • D. Không cần định nghĩa trong lớp `NhanVien`, chỉ cần định nghĩa ở các lớp con.

Câu 18: Khi nào thì nên ưu tiên sử dụng Thành phần hóa (Composition) thay vì Kế thừa (Inheritance)?

  • A. Khi bạn muốn mô hình hóa mối quan hệ "là một loại của" (is-a).
  • B. Khi bạn muốn mô hình hóa mối quan hệ "có một" (has-a) và cần sự linh hoạt trong việc thay đổi hành vi thành phần.
  • C. Khi bạn muốn tái sử dụng mã nguồn từ nhiều lớp khác nhau mà ngôn ngữ không hỗ trợ đa kế thừa.
  • D. Khi lớp con cần truy cập trực tiếp vào các thành viên private của lớp cha.

Câu 19: Giả sử bạn đang phát triển một ứng dụng vẽ đồ họa. Bạn có một lớp `HinhDang` (Shape) và các lớp con như `DuongThang`, `HinhChuNhat`, `HinhTron`. Mỗi lớp con cần có khả năng lưu/tải trạng thái của nó từ/đến một tệp. Thay vì thêm phương thức `Luu()` và `Tai()` vào lớp `HinhDang` và ghi đè ở lớp con, bạn quyết định tạo một giao diện `ILuuTru` (ISavable) với hai phương thức `LuuVaoTep(string tenTep)` và `TaiTuTep(string tenTep)`. Các lớp `DuongThang`, `HinhChuNhat`, `HinhTron` sau đó sẽ triển khai giao diện này. Cách tiếp cận này thể hiện việc sử dụng giao diện để đạt được điều gì?

  • A. Giúp các lớp con kế thừa dữ liệu từ lớp cha.
  • B. Buộc các lớp con phải có cùng cách triển khai phương thức `Luu()` và `Tai()`.
  • C. Hạn chế truy cập vào các thuộc tính nội bộ của lớp.
  • D. Định nghĩa một khả năng (saving/loading) mà nhiều lớp khác nhau có thể có, bất kể vị trí của chúng trong cây kế thừa.

Câu 20: Trong ngữ cảnh của Đa hình (Polymorphism), "đa hình lúc biên dịch" (Compile-time Polymorphism) thường được thực hiện thông qua kỹ thuật 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. Trừu tượng hóa dữ liệu (Data Abstraction)

Câu 21: Phân tích lý do tại sao Lập trình hướng đối tượng được cho là giúp tăng khả năng tái sử dụng mã nguồn.

  • A. Vì mọi thứ đều được đóng gói trong các đối tượng riêng biệt.
  • B. Vì nó sử dụng các phương thức trừu tượng và giao diện.
  • C. Thông qua tính kế thừa, cho phép lớp con sử dụng lại thuộc tính và phương thức của lớp cha, và tính thành phần hóa, cho phép một lớp sử dụng các đối tượng của lớp khác.
  • D. Vì nó cho phép định nghĩa nhiều phương thức cùng tên (đa hình).

Câu 22: Khi nào thì một lớp nên được khai báo là `sealed` (trong C#) hoặc `final` (trong Java)?

  • A. Khi lớp đó chỉ chứa các phương thức trừu tượng.
  • B. Khi bạn muốn ngăn chặn các lớp khác kế thừa từ lớp này.
  • C. Khi lớp đó cần được tạo ra nhiều đối tượng.
  • D. Khi lớp đó triển khai một giao diện.

Câu 23: Trong thiết kế OOP, mối quan hệ nào được thể hiện bằng cụm từ "một phần của" (part-of), trong đó đối tượng thành phần không thể tồn tại độc lập nếu đối tượng chứa nó bị phá hủy? (Ví dụ: các Bánh xe là một phần của Chiếc xe hơi, nếu Chiếc xe hơi bị phá hủy thì các Bánh xe đó cũng không còn ý nghĩa tồn tại trong ngữ cảnh đó).

  • A. Thành phần hóa chặt (Composition)
  • B. Tổng hợp (Aggregation)
  • C. Kế thừa (Inheritance)
  • D. Hiệp hội (Association)

Câu 24: Xem xét đoạn mã giả sau:
```
class DongHo {
private int gio, phut, giay;

// Constructor 1
public DongHo(int h, int m, int s) { ... }

// Constructor 2
public DongHo(int h, int m) { ... }

// Constructor 3
public DongHo(int h) { ... }
}
```
Ví dụ trên thể hiện tính chất nào của OOP?

  • A. Ghi đè phương thức (Method Overriding)
  • B. Nạp chồng (Overloading)
  • C. Kế thừa (Inheritance)
  • D. Đa hình lúc chạy (Runtime Polymorphism)

Câu 25: Trong một số ngôn ngữ OOP, phương thức nào được gọi tự động khi một đối tượng không còn được sử dụng và bộ nhớ nó chiếm giữ sắp được giải phóng?

  • A. Constructor
  • B. Main method
  • C. Destructor (hoặc Finalizer)
  • D. Static method

Câu 26: Phân tích sự khác biệt chính giữa Đa hình lúc biên dịch (Compile-time Polymorphism) và Đa hình lúc chạy (Runtime Polymorphism).

  • A. Đa hình lúc biên dịch được quyết định tại thời điểm biên dịch (thường qua nạp chồng), còn đa hình lúc chạy được quyết định tại thời điểm thực thi (thường qua ghi đè).
  • B. Đa hình lúc biên dịch áp dụng cho phương thức, còn đa hình lúc chạy áp dụng cho thuộc tính.
  • C. Đa hình lúc biên dịch yêu cầu kế thừa, còn đa hình lúc chạy thì không.
  • D. Đa hình lúc biên dịch sử dụng từ khóa `virtual`, còn đa hình lúc chạy sử dụng từ khóa `static`.

Câu 27: Bạn đang thiết kế một hệ thống cho phép người dùng nhập các loại dữ liệu khác nhau (số nguyên, chuỗi, ngày tháng) và hiển thị chúng. Để xử lý việc hiển thị một cách linh hoạt, bạn tạo một phương thức `HienThi(object data)`. Khi gọi phương thức này, bạn muốn hành vi hiển thị phụ thuộc vào kiểu dữ liệu thực tế của `data` (ví dụ: hiển thị số nguyên khác với hiển thị chuỗi). Tính chất OOP nào giúp bạn đạt được điều này một cách hiệu quả?

  • A. Đóng gói (Encapsulation)
  • B. Kế thừa (Inheritance)
  • C. Trừu tượng (Abstraction)
  • D. Đa hình (Polymorphism)

Câu 28: Trong OOP, đâu là mục đích chính của việc sử dụng các phạm vi truy cập (access modifiers) như `public`, `private`, `protected`?

  • A. Kiểm soát quyền truy cập vào các thành viên của lớp từ bên ngoài, hỗ trợ tính đóng gói.
  • B. Xác định thứ tự thực thi của các phương thức trong lớp.
  • C. Định nghĩa các phương thức có thể được ghi đè bởi lớp con.
  • D. Ngăn chặn việc tạo đối tượng trực tiếp từ lớp.

Câu 29: Phân tích ưu điểm của Lập trình hướng đối tượng so với Lập trình hướng cấu trúc (Procedural Programming).

  • A. Lập trình hướng đối tượng thường tạo ra các chương trình có kích thước nhỏ hơn.
  • B. Lập trình hướng đối tượng giúp quản lý sự phức tạp tốt hơn, tăng khả năng tái sử dụng, dễ bảo trì và mở rộng hệ thống.
  • C. Lập trình hướng đối tượng thực thi nhanh hơn vì gần với mã máy hơn.
  • D. Lập trình hướng đối tượng chỉ sử dụng các kiểu dữ liệu cơ bản.

Câu 30: Trong một hệ thống kế thừa đa cấp (ví dụ: `DongVat` -> `Chim` -> `ChimCanhCut`), nếu lớp `ChimCanhCut` muốn gọi một phương thức đã được định nghĩa trong lớp `DongVat` (lớp ông), nhưng đã bị ghi đè bởi lớp `Chim` (lớp cha), bạn sẽ sử dụng từ khóa nào (trong C# hoặc Java) để truy cập phiên bản của lớp cha trực tiếp (`Chim`)?

  • A. this
  • B. root
  • C. base (C#) / super (Java)
  • D. parent

1 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 1: Trong Lập trình hướng đối tượng (OOP), khái niệm nào mô tả việc nhóm dữ liệu (thuộc tính) và các phương thức (hành vi) làm việc trên dữ liệu đó vào một đơn vị duy nhất (ví dụ: một lớp), đồng thời kiểm soát quyền truy cập từ bên ngoài?

2 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 2: Khi thiết kế một hệ thống quản lý thư viện bằng OOP, bạn tạo một lớp `Sach` (Sách) và một lớp `TapChi` (Tạp chí). Cả hai đều có các thuộc tính chung như `TieuDe`, `SoLuongBanSao` và phương thức `HienThiThongTin()`. Khái niệm OOP nào cho phép bạn định nghĩa một lớp chung `AnPham` (Ấn phẩm) chứa các thuộc tính và phương thức chung này, sau đó để `Sach` và `TapChi` kế thừa từ đó?

3 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 3: Xét các lớp `HinhHoc` (lớp cha), `HinhTron` và `HinhVuong` (lớp con). Lớp `HinhHoc` có một phương thức ảo (virtual method) `TinhDienTich()`. Cả `HinhTron` và `HinhVuong` đều ghi đè (override) phương thức này để tính diện tích theo công thức riêng của chúng. Khi bạn có một danh sách các đối tượng kiểu `HinhHoc` (có thể là `HinhTron` hoặc `HinhVuong`), và gọi phương thức `TinhDienTich()` trên từng đối tượng, hệ thống sẽ tự động gọi phương thức `TinhDienTich()` phù hợp với kiểu thực tế của đối tượng đó tại thời điểm chạy. Hiện tượng này thể hiện tính chất nào của OOP?

4 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 4: Bạn đang thiết kế một hệ thống xử lý thanh toán trực tuyến. Có nhiều phương thức thanh toán khác nhau (thẻ tín dụng, PayPal, chuyển khoản ngân hàng). Mặc dù chi tiết xử lý mỗi phương thức là khác nhau, tất cả đều cần có các bước chung như `NhapThongTinThanhToan()`, `XacThucThanhToan()`, `GuiThongBao()`. Khái niệm OOP nào giúp bạn định nghĩa một giao diện chung hoặc lớp trừu tượng `PhuongThucThanhToan` để đảm bảo tất cả các phương thức cụ thể tuân theo một cấu trúc và hành vi nhất định mà không cần quan tâm đến chi tiết triển khai bên trong của từng phương thức?

5 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 5: Trong OOP, đâu là sự khác biệt cốt lõi giữa một `lớp` (Class) và một `đối tượng` (Object)?

6 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 6: Cho đoạn mã giả sau:
```
class Xe
protected string tenModel
public int soBanh
private string soKhung

public void HienThiThongTin()
// In tenModel, soBanh

private void KiemTraSoKhung()
// Kiem tra soKhung

class XeCon(inherits Xe)
// ...
```
Trong lớp `XeCon`, thành viên nào của lớp `Xe` có thể được truy cập trực tiếp?

7 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 7: Trong một ngôn ngữ lập trình hỗ trợ OOP, đâu là mục đích chính của một phương thức khởi tạo (Constructor)?

8 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 8: Phân tích lợi ích chính của việc sử dụng tính đóng gói (Encapsulation) trong thiết kế phần mềm hướng đối tượng.

9 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 9: Giả sử bạn có một lớp `DongVat` (động vật) và các lớp con như `Cho`, `Meo`, `Bo` kế thừa từ `DongVat`. Lớp `DongVat` có phương thức `Keu()`. Mỗi lớp con ghi đè phương thức `Keu()` để phát ra âm thanh đặc trưng của loài đó ('Gau gau', 'Meo meo', 'O o'). Khi bạn có một mảng các đối tượng kiểu `DongVat` chứa cả `Cho`, `Meo`, `Bo` và lặp qua mảng để gọi `Keu()` trên từng đối tượng, kết quả là mỗi đối tượng sẽ kêu đúng theo loài của nó. Đây là ví dụ cụ thể nhất cho tính chất nào của OOP?

10 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 10: Trong một số ngôn ngữ OOP, bạn có thể định nghĩa nhiều phương thức cùng tên trong một lớp, miễn là chúng có danh sách tham số khác nhau (số lượng, kiểu hoặc thứ tự tham số). Khái niệm này được gọi là gì?

11 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 11: Một lớp trừu tượng (Abstract Class) trong OOP:

12 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 12: Giao diện (Interface) trong OOP chủ yếu dùng để:

13 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 13: Phân biệt giữa Kế thừa (Inheritance) và Thành phần hóa (Composition) trong OOP.

14 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 14: Trong ngôn ngữ C#, từ khóa nào được sử dụng để chỉ ra rằng một phương thức trong lớp con sẽ cung cấp một triển khai cụ thể cho một phương thức ảo (virtual) hoặc trừu tượng (abstract) đã được định nghĩa trong lớp cha?

15 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 15: Đâu là nhược điểm tiềm tàng của việc lạm dụng tính kế thừa trong thiết kế OOP?

16 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 16: Xem xét đoạn mã giả sau:
```
class MayTinh {
public void KhoiDong() { print "May tinh khoi dong" }
}

class Laptop extends MayTinh {
public void KhoiDong() { print "Laptop dang bat nguon" }
}

MayTinh m = new Laptop();
m.KhoiDong();
```
Nếu phương thức `KhoiDong` trong lớp `MayTinh` được đánh dấu là `virtual` và trong lớp `Laptop` được đánh dấu là `override`, kết quả in ra màn hình sẽ là gì?

17 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 17: Giả sử bạn có một lớp `NhanVien` với các thuộc tính `MaNhanVien`, `Ten`, `LuongCoBan`. Bạn muốn tạo các lớp con `NhanVienFullTime` và `NhanVienPartTime`, mỗi lớp có cách tính lương khác nhau nhưng vẫn kế thừa các thuộc tính chung. Để đảm bảo mọi `NhanVien` đều có một phương thức `TinhLuong()`, nhưng việc tính toán cụ thể được thực hiện ở lớp con, bạn nên định nghĩa `TinhLuong()` trong lớp `NhanVien` như thế nào?

18 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 18: Khi nào thì nên ưu tiên sử dụng Thành phần hóa (Composition) thay vì Kế thừa (Inheritance)?

19 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 19: Giả sử bạn đang phát triển một ứng dụng vẽ đồ họa. Bạn có một lớp `HinhDang` (Shape) và các lớp con như `DuongThang`, `HinhChuNhat`, `HinhTron`. Mỗi lớp con cần có khả năng lưu/tải trạng thái của nó từ/đến một tệp. Thay vì thêm phương thức `Luu()` và `Tai()` vào lớp `HinhDang` và ghi đè ở lớp con, bạn quyết định tạo một giao diện `ILuuTru` (ISavable) với hai phương thức `LuuVaoTep(string tenTep)` và `TaiTuTep(string tenTep)`. Các lớp `DuongThang`, `HinhChuNhat`, `HinhTron` sau đó sẽ triển khai giao diện này. Cách tiếp cận này thể hiện việc sử dụng giao diện để đạt được điều gì?

20 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 20: Trong ngữ cảnh của Đa hình (Polymorphism), 'đa hình lúc biên dịch' (Compile-time Polymorphism) thường được thực hiện thông qua kỹ thuật nào?

21 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 21: Phân tích lý do tại sao Lập trình hướng đối tượng được cho là giúp tăng khả năng tái sử dụng mã nguồn.

22 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 22: Khi nào thì một lớp nên được khai báo là `sealed` (trong C#) hoặc `final` (trong Java)?

23 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 23: Trong thiết kế OOP, mối quan hệ nào được thể hiện bằng cụm từ 'một phần của' (part-of), trong đó đối tượng thành phần không thể tồn tại độc lập nếu đối tượng chứa nó bị phá hủy? (Ví dụ: các Bánh xe là một phần của Chiếc xe hơi, nếu Chiếc xe hơi bị phá hủy thì các Bánh xe đó cũng không còn ý nghĩa tồn tại trong ngữ cảnh đó).

24 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 24: Xem xét đoạn mã giả sau:
```
class DongHo {
private int gio, phut, giay;

// Constructor 1
public DongHo(int h, int m, int s) { ... }

// Constructor 2
public DongHo(int h, int m) { ... }

// Constructor 3
public DongHo(int h) { ... }
}
```
Ví dụ trên thể hiện tính chất nào của OOP?

25 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 25: Trong một số ngôn ngữ OOP, phương thức nào được gọi tự động khi một đối tượng không còn được sử dụng và bộ nhớ nó chiếm giữ sắp được giải phóng?

26 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 26: Phân tích sự khác biệt chính giữa Đa hình lúc biên dịch (Compile-time Polymorphism) và Đa hình lúc chạy (Runtime Polymorphism).

27 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 27: Bạn đang thiết kế một hệ thống cho phép người dùng nhập các loại dữ liệu khác nhau (số nguyên, chuỗi, ngày tháng) và hiển thị chúng. Để xử lý việc hiển thị một cách linh hoạt, bạn tạo một phương thức `HienThi(object data)`. Khi gọi phương thức này, bạn muốn hành vi hiển thị phụ thuộc vào kiểu dữ liệu thực tế của `data` (ví dụ: hiển thị số nguyên khác với hiển thị chuỗi). Tính chất OOP nào giúp bạn đạt được điều này một cách hiệu quả?

28 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 28: Trong OOP, đâu là mục đích chính của việc sử dụng các phạm vi truy cập (access modifiers) như `public`, `private`, `protected`?

29 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 29: Phân tích ưu điểm của Lập trình hướng đối tượng so với Lập trình hướng cấu trúc (Procedural Programming).

30 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 07

Câu 30: Trong một hệ thống kế thừa đa cấp (ví dụ: `DongVat` -> `Chim` -> `ChimCanhCut`), nếu lớp `ChimCanhCut` muốn gọi một phương thức đã được định nghĩa trong lớp `DongVat` (lớp ông), nhưng đã bị ghi đè bởi lớp `Chim` (lớp cha), bạn sẽ sử dụng từ khóa nào (trong C# hoặc Java) để truy cập phiên bản của lớp cha trực tiếp (`Chim`)?

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


Trắc nghiệm Lập trình hướng đối tượng

Trắc nghiệm Lập trình hướng đối tượng - Đề 08

Trắc nghiệm Lập trình hướng đối tượng - Đề 08 được biên soạn kỹ lưỡng với nhiều câu hỏi phong phú, hấp dẫn và bám sát nội dung chương trình học. Đây là cơ hội tuyệt vời để bạn ôn luyện, kiểm tra và nâng cao kiến thức một cách hiệu quả. Hãy cùng bắt đầu làm bài tập ngay hôm nay để tự tin hơn trên hành trình chinh phục môn học này!

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 so 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: Một lớp "Động vật" có phương thức "Kêu". Lớp "Chó" và "Mèo" kế thừa từ "Động vật" và cài đặt lại phương thức "Kêu" cho riêng mình (Chó sủa "Gâu gâu", Mèo kêu "Meo meo"). Đây là ví dụ minh họa rõ nhất cho tính chất nào của OOP?

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

Câu 3: Tính đóng gói (Encapsulation) trong OOP giúp đạt được điều gì quan trọng nhất?

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

Câu 4: Khi thiết kế một lớp "Xe", bạn quyết định chỉ cho phép truy cập trực tiếp vào phương thức "Khởi động" và "Dừng", còn các thuộc tính như "tốc độ", "màu sắc" được truy cập và thay đổi gián tiếp qua các phương thức get/set. Bạn đang áp dụng nguyên tắc nào của OOP?

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

Câu 5: Tính trừu tượng (Abstraction) trong OOP tập trung vào việc:

  • A. Hiện thực hóa chi tiết các chức năng
  • B. Mô hình hóa các đối tượng ở mức khái niệm, bỏ qua chi tiết không cần thiết
  • C. Tăng tính bảo mật cho dữ liệu
  • D. Tối ưu hóa hiệu suất chương trình

Câu 6: Xét lớp "Hình dạng" có các lớp con như "Hình tròn", "Hình vuông", "Hình tam giác". Lớp "Hình dạng" có thể được coi là một lớp:

  • A. Lớp giao diện (Interface)
  • B. Lớp đối tượng (Object Class)
  • C. Lớp dẫn xuất (Derived Class)
  • D. Lớp trừu tượng (Abstract Class)

Câu 7: Tính kế thừa (Inheritance) mang lại lợi ích nào sau đây trong lập trình?

  • A. Tái sử dụng mã nguồn và giảm sự trùng lặp
  • B. Tăng tính phức tạp của chương trình
  • C. Giảm tính linh hoạt của chương trình
  • D. Yêu cầu viết lại mã cho mỗi đối tượng

Câu 8: Trong mối quan hệ kế thừa, lớp con (derived class) KHÔNG được kế thừa điều gì từ lớp cha (base class)?

  • A. Các thuộc tính và phương thức public
  • B. Các thuộc tính và phương thức protected
  • C. Các thuộc tính và phương thức private
  • D. Cấu trúc dữ liệu của lớp cha

Câu 9: Thuật ngữ "lớp" (class) trong OOP được hiểu là:

  • A. Một thể hiện cụ thể của đối tượng
  • B. Bản thiết kế hoặc khuôn mẫu cho các đối tượng
  • C. Một hàm hoặc thủ tục trong chương trình
  • D. Một biến lưu trữ dữ liệu

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

  • A. Một khái niệm trừu tượng
  • B. Một bản thiết kế
  • C. Một thể hiện cụ thể của một lớp
  • D. Một tập hợp các lớp

Câu 11: Phương thức khởi tạo (constructor) trong lớp có vai trò gì?

  • A. Hủy bỏ đối tượng khi không còn sử dụng
  • B. Thực hiện các thao tác tính toán trên đối tượng
  • C. Truy cập vào các thuộc tính private của đối tượng
  • D. Khởi tạo trạng thái ban đầu cho đối tượng

Câu 12: Phương thức hủy (destructor) trong lớp được sử dụng khi nào?

  • A. Ngay trước khi đối tượng bị hủy
  • B. Khi đối tượng được tạo ra
  • C. Khi một phương thức public của đối tượng được gọi
  • D. Không bao giờ được sử dụng trong OOP

Câu 13: Từ khóa nào sau đây thường được sử dụng để khai báo tính kế thừa trong nhiều ngôn ngữ OOP?

  • A. import
  • B. extends
  • C. implements
  • D. new

Câu 14: Trong OOP, "tính đ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. Kế thừa (Inheritance)
  • B. Giao diện (Interface)
  • C. Nạp chồng phương thức (Method Overloading)
  • D. Ghi đè phương thức (Method Overriding)

Câu 15: "Tính đ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. Đóng gói (Encapsulation)
  • B. Trừu tượng (Abstraction)
  • C. Nạp chồng toán tử (Operator Overloading)
  • D. Ghi đè phương thức (Method Overriding)

Câu 16: Ưu điểm chính của việc sử dụng lập trình hướng đối tượng so với lập trình hướng thủ tục là gì?

  • A. Chương trình thực thi nhanh hơn
  • B. Khả năng tái sử dụng mã và tổ chức chương trình tốt hơn
  • C. Sử dụng ít bộ nhớ hơn
  • D. Dễ dàng viết mã hơn cho người mới bắt đầu

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

  • A. Một biến toàn cục
  • B. Một đoạn mã chương trình độc lập
  • C. Lời gọi một phương thức của đối tượng
  • D. Một sự kiện hệ thống

Câu 18: "Tính kết hợp" (Association) và "tính tập hợp" (Aggregation) là các loại quan hệ nào trong OOP?

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

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

  • A. Mức độ bảo mật
  • B. Khả năng tái sử dụng
  • C. Loại phương thức truy cập
  • D. Tính phụ thuộc về vòng đời của đối tượng thành phần

Câu 20: Mục đích của việc sử dụng "giao diện" (interface) trong OOP là gì?

  • A. Tăng hiệu suất chương trình
  • B. Định nghĩa một hợp đồng về hành vi mà các lớp phải tuân thủ
  • C. Thay thế cho kế thừa đa lớp
  • D. Che giấu thông tin cài đặt

Câu 21: Phương thức "ảo" (virtual method) thường được sử dụng để hỗ trợ tính chất nào của OOP?

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

Câu 22: "Lớp trừu tượng" (abstract class) có đặc điểm nào sau đây?

  • A. Có thể tạo ra đối tượng trực tiếp từ lớp trừu tượng
  • B. Chỉ chứa các phương thức đã được hiện thực hóa
  • C. Không liên quan đến tính kế thừa
  • D. Không thể khởi tạo đối tượng trực tiếp và có thể chứa phương thức trừu tượng

Câu 23: "Phương thức thuần ảo" (pure virtual method) là gì?

  • A. Phương thức ảo có định nghĩa mặc định
  • B. Phương thức ảo không có định nghĩa trong lớp trừu tượng và phải được hiện thực ở lớp con
  • C. Phương thức private của lớp
  • D. Phương thức static của lớp

Câu 24: Trong OOP, "đa kế thừa" (multiple inheritance) là gì?

  • A. Một lớp kế thừa từ nhiều lớp cha
  • B. Một lớp cha có nhiều lớp con
  • C. Một đối tượng thuộc nhiều lớp
  • D. Một phương thức được kế thừa nhiều lần

Câu 25: "Design patterns" (mẫu thiết kế) trong OOP giúp giải quyết vấn đề gì?

  • A. Tăng tốc độ biên dịch chương trình
  • B. Giảm dung lượng bộ nhớ sử dụng
  • C. Các vấn đề thiết kế phần mềm thường gặp
  • D. Các lỗi cú pháp trong mã nguồn

Câu 26: "SOLID" là một tập hợp các nguyên tắc thiết kế hướng đối tượng. Chữ "L" trong SOLID đại diện cho nguyên tắc nào?

  • A. Loosely Coupled
  • B. Liskov Substitution
  • C. Law of Demeter
  • D. Least Knowledge

Câu 27: Nguyên tắc "Dependency Inversion Principle" (DIP) trong SOLID khuyến khích điều gì?

  • A. Phụ thuộc chặt chẽ vào các lớp cụ thể
  • B. Tránh sử dụng giao diện
  • C. Tăng cường sự phụ thuộc giữa các module
  • D. Phụ thuộc vào abstraction (trừu tượng) thay vì implementation (hiện thực)

Câu 28: "Coupling" (tính liên kết) trong thiết kế phần mềm hướng đối tượng nên ở mức độ nào để đảm bảo tính linh hoạt và dễ bảo trì?

  • A. Thấp (Loose Coupling)
  • B. Cao (Tight Coupling)
  • C. Trung bình
  • D. Không quan trọng

Câu 29: "Cohesion" (tính gắn kết) trong thiết kế phần mềm hướng đối tượng nên ở mức độ nào để module thực hiện một chức năng rõ ràng và tập trung?

  • A. Thấp (Low Cohesion)
  • B. Cao (High Cohesion)
  • C. Trung bình
  • D. Không quan trọng

Câu 30: Khi nào thì nên sử dụng "Composition" (hợp thành) thay vì "Aggregation" (tập hợp) trong mô hình hóa quan hệ giữa các đối tượng?

  • A. Khi muốn tái sử dụng đối tượng thành phần ở nhiều nơi
  • B. Khi đối tượng thành phần không quan trọng bằng đối tượng chứa
  • C. Khi đối tượng thành phần là một phần không thể thiếu và có vòng đời phụ thuộc vào đối tượng chứa
  • D. Không có sự khác biệt, có thể dùng thay thế nhau

1 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

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 so 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: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 2: Một lớp 'Động vật' có phương thức 'Kêu'. Lớp 'Chó' và 'Mèo' kế thừa từ 'Động vật' và cài đặt lại phương thức 'Kêu' cho riêng mình (Chó sủa 'Gâu gâu', Mèo kêu 'Meo meo'). Đây là ví dụ minh họa rõ nhất cho tính chất nào của OOP?

3 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 3: Tính đóng gói (Encapsulation) trong OOP giúp đạt được điều gì quan trọng nhất?

4 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 4: Khi thiết kế một lớp 'Xe', bạn quyết định chỉ cho phép truy cập trực tiếp vào phương thức 'Khởi động' và 'Dừng', còn các thuộc tính như 'tốc độ', 'màu sắc' được truy cập và thay đổi gián tiếp qua các phương thức get/set. Bạn đang áp dụng nguyên tắc nào của OOP?

5 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 5: Tính trừu tượng (Abstraction) trong OOP tập trung vào việc:

6 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 6: Xét lớp 'Hình dạng' có các lớp con như 'Hình tròn', 'Hình vuông', 'Hình tam giác'. Lớp 'Hình dạng' có thể được coi là một lớp:

7 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 7: Tính kế thừa (Inheritance) mang lại lợi ích nào sau đây trong lập trình?

8 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 8: Trong mối quan hệ kế thừa, lớp con (derived class) KHÔNG được kế thừa điều gì từ lớp cha (base class)?

9 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 9: Thuật ngữ 'lớp' (class) trong OOP được hiểu là:

10 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

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

11 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 11: Phương thức khởi tạo (constructor) trong lớp có vai trò gì?

12 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 12: Phương thức hủy (destructor) trong lớp được sử dụng khi nào?

13 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 13: Từ khóa nào sau đây thường được sử dụng để khai báo tính kế thừa trong nhiều ngôn ngữ OOP?

14 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 14: Trong OOP, 'tính đ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?

15 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 15: 'Tính đ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?

16 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 16: Ưu điểm chính của việc sử dụng lập trình hướng đối tượng so với lập trình hướng thủ tục là gì?

17 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

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

18 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 18: 'Tính kết hợp' (Association) và 'tính tập hợp' (Aggregation) là các loại quan hệ nào trong OOP?

19 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

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

20 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 20: Mục đích của việc sử dụng 'giao diện' (interface) trong OOP là gì?

21 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 21: Phương thức 'ảo' (virtual method) thường được sử dụng để hỗ trợ tính chất nào của OOP?

22 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 22: 'Lớp trừu tượng' (abstract class) có đặc điểm nào sau đây?

23 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 23: 'Phương thức thuần ảo' (pure virtual method) là gì?

24 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 24: Trong OOP, 'đa kế thừa' (multiple inheritance) là gì?

25 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 25: 'Design patterns' (mẫu thiết kế) trong OOP giúp giải quyết vấn đề gì?

26 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

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

27 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 27: Nguyên tắc 'Dependency Inversion Principle' (DIP) trong SOLID khuyến khích điều gì?

28 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 28: 'Coupling' (tính liên kết) trong thiết kế phần mềm hướng đối tượng nên ở mức độ nào để đảm bảo tính linh hoạt và dễ bảo trì?

29 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 29: 'Cohesion' (tính gắn kết) trong thiết kế phần mềm hướng đối tượng nên ở mức độ nào để module thực hiện một chức năng rõ ràng và tập trung?

30 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 08

Câu 30: Khi nào thì nên sử dụng 'Composition' (hợp thành) thay vì 'Aggregation' (tập hợp) trong mô hình hóa quan hệ giữa các đố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é!!!


Trắc nghiệm Lập trình hướng đối tượng

Trắc nghiệm Lập trình hướng đối tượng - Đề 09

Trắc nghiệm Lập trình hướng đối tượng - Đề 09 được biên soạn kỹ lưỡng với nhiều câu hỏi phong phú, hấp dẫn và bám sát nội dung chương trình học. Đây là cơ hội tuyệt vời để bạn ôn luyện, kiểm tra và nâng cao kiến thức một cách hiệu quả. Hãy cùng bắt đầu làm bài tập ngay hôm nay để tự tin hơn trên hành trình chinh phục môn học này!

Câu 1: Trong lập trình hướng đối tượng, khái niệm nào cho phép 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 (message)?

  • 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: Một lớp "Động vật" có phương thức "Kêu". Lớp "Chó" và "Mèo" kế thừa từ "Động vật". Nếu "Chó" kêu "Gâu gâu" và "Mèo" kêu "Meo meo", đây là ví dụ minh họa rõ nhất cho tính chất nào của OOP?

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

Câu 3: Điều gì KHÔNG phải là lợi ích chính của tính đóng gói (Encapsulation) trong lập trình hướng đối tượng?

  • 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.
  • B. Tăng tính module hóa và khả năng tái sử dụng code.
  • C. Giảm sự phụ thuộc lẫn nhau giữa các thành phần của chương trình.
  • D. Tăng tốc độ thực thi chương trình.

Câu 4: Trong thiết kế lớp, phạm vi truy cập "private" được sử dụng để:

  • A. Cho phép truy cập tự do từ bất kỳ đâu trong chương trình.
  • B. Giới hạn truy cập chỉ từ bên trong lớp đó.
  • C. Cho phép lớp con kế thừa truy cập, nhưng không cho phép truy cập từ bên ngoài.
  • D. Đánh dấu thành viên là không quan trọng và có thể bỏ qua.

Câu 5: Tính trừu tượng (Abstraction) trong OOP giúp giải quyết vấn đề gì chính trong phát triển phần mềm?

  • A. Giảm độ phức tạp của hệ thống bằng cách tập trung vào những đặc điểm thiết yếu và bỏ qua chi tiết không liên quan.
  • B. Tăng cường khả năng tái sử dụng code thông qua kế thừa.
  • C. Đảm bảo an toàn dữ liệu bằng cách giới hạn quyền truy cập.
  • D. Tối ưu hóa hiệu suất thực thi của chương trình.

Câu 6: Khi nào nên sử dụng kế thừa (Inheritance) trong lập trình hướng đối tượng?

  • A. Khi cần tạo ra các đối tượng độc lập, không liên quan đến nhau.
  • B. Khi muốn ẩn giấu thông tin và bảo vệ dữ liệu.
  • C. Khi có mối quan hệ "là một" (is-a) giữa các lớp và muốn tái sử dụng code cũng như mở rộng chức năng.
  • D. Khi cần thực hiện đa hình tại thời gian biên dịch.

Câu 7: Cho đoạn code (giả mã):

```
class HìnhHọc {
phương_thức TínhDiệnTích() {
// ...
}
}

class HìnhVuông kế_thừa HìnhHọc {
thuộc_tính cạnh
phương_thức TínhDiệnTích() {
trả_về cạnh * cạnh
}
}

class HìnhTròn kế_thừa HìnhHọc {
thuộc_tính bán_kính
phương_thức TínhDiệnTích() {
trả_về 3.14 * bán_kính * bán_kính
}
}
```

Đoạn code trên thể hiện rõ nhất điều gì?

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

Câu 8: Trong lập trình hướng đối tượng, "đố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 tập hợp các lớp có liên quan đến nhau.
  • C. Một thể hiện cụ thể của một lớp, có trạng thái và hành vi.
  • D. Một phương pháp lập trình tập trung vào chức năng.

Câu 9: "Lớp" (class) trong OOP đóng vai trò như thế nào?

  • A. Bản thiết kế hoặc khuôn mẫu để tạo ra các đối tượng.
  • B. Một thể hiện cụ thể của dữ liệu và phương thức.
  • C. Một chức năng hoặc hành động mà đối tượng có thể thực hiện.
  • D. Một giá trị cụ thể mà đối tượng lưu trữ.

Câu 10: Phương thức khởi tạo (constructor) trong lớp đượ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. Khởi tạo trạng thái ban đầu cho đối tượng khi nó được tạo ra.
  • C. Thực hiện các thao tác dọn dẹp sau khi đối tượng được sử dụng.
  • D. Định nghĩa hành vi của đối tượng trong suốt vòng đời của nó.

Câu 11: Điều gì xảy ra khi bạn tạo một đối tượng (instance) từ một lớp?

  • A. Lớp đó sẽ bị xóa khỏi bộ nhớ.
  • B. Một bản sao của lớp được tạo ra.
  • C. Bộ nhớ được cấp phát để lưu trữ đối tượng và phương thức khởi tạo được gọi.
  • D. Chương trình sẽ kết thúc và trả về lỗi.

Câu 12: Trong OOP, "thông điệp" (message) giữa các đối tượng thường được thể hiện dưới hình thức nào?

  • A. Truyền dữ liệu trực tiếp vào thuộc tính của đối tượng khác.
  • B. Sử dụng biến toàn cục để chia sẻ thông tin.
  • C. Giao tiếp thông qua cơ sở dữ liệu chung.
  • D. Gọi phương thức của đối tượng khác.

Câu 13: Ưu điểm chính của việc sử dụng lập trình hướng đối tượng so với lập trình hướng cấu trúc là gì?

  • A. Tốc độ thực thi chương trình nhanh hơn.
  • B. Khả năng quản lý độ phức tạp của dự án lớn, tính tái sử dụng và bảo trì code tốt hơn.
  • C. Sử dụng ít bộ nhớ hơn.
  • D. Dễ học và dễ tiếp cận hơn cho người mới bắt đầu.

Câu 14: Trong OOP, thuật ngữ nào mô tả việc một lớp con có thể ghi đè (override) một phương thức đã được định nghĩa ở lớp cha?

  • A. Nạp chồng phương thức (Method overloading)
  • B. Ẩn phương thức (Method hiding)
  • C. Ghi đè phương thức (Method overriding)
  • D. Phương thức ảo (Virtual method)

Câu 15: Phạm vi truy cập "protected" khác với "private" ở điểm nào?

  • A. "protected" cho phép truy cập từ bất kỳ đâu, "private" thì không.
  • B. "protected" cho phép lớp con kế thừa truy cập, "private" thì không.
  • C. "protected" bảo vệ dữ liệu tốt hơn "private".
  • D. "protected" chỉ dùng cho phương thức, "private" chỉ dùng cho thuộc tính.

Câu 16: Cho sơ đồ lớp sau: "Xe" -> "Ô tô" -> "XeCon". Mối quan hệ giữa "XeCon" và "Ô tô" là gì?

  • A. Kế thừa (is-a relationship)
  • B. Quan hệ hợp thành (has-a relationship)
  • C. Quan hệ sử dụng (uses-a relationship)
  • D. Không có quan hệ

Câu 17: Trong thiết kế hướng đối tượng, nguyên tắc "SOLID" nào khuyến khích việc các lớp nên dễ mở rộng nhưng khó sửa đổi?

  • A. Single Responsibility Principle (SRP)
  • B. Liskov Substitution Principle (LSP)
  • C. Open/Closed Principle (OCP)
  • D. Interface Segregation Principle (ISP)

Câu 18: Hãy xem xét tình huống: Một hệ thống quản lý thư viện cần xử lý các loại tài liệu khác nhau như "Sách", "Tạp chí", "Báo". Mỗi loại có thuộc tính và hành vi riêng. Cách tiếp cận OOP nào phù hợp nhất để thiết kế hệ thống này?

  • A. Sử dụng cấu trúc dữ liệu mảng để lưu trữ tất cả thông tin.
  • B. Sử dụng kế thừa để tạo ra các lớp con cho từng loại tài liệu, kế thừa từ lớp cha "Tài liệu".
  • C. Sử dụng lập trình hàm để xử lý từng loại tài liệu riêng biệt.
  • D. Kết hợp lập trình hướng cấu trúc và hướng sự kiện.

Câu 19: Mục đích chính của việc sử dụng "interface" (giao diện) trong OOP là gì?

  • A. Tăng cường tính đóng gói của lớp.
  • B. Giảm sự phụ thuộc giữa các lớp con và lớp cha.
  • C. Thay thế cho việc sử dụng lớp trừu tượng.
  • D. Định nghĩa một "hợp đồng" mà các lớp khác có thể thực hiện, đảm bảo tính tương thích và đa hình.

Câu 20: "Tính đ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 trong OOP?

  • A. Phương thức ảo (Virtual methods) và kế thừa.
  • B. Nạp chồng phương thức (Method overloading).
  • C. Tính đóng gói (Encapsulation).
  • D. Sử dụng biến toàn cục.

Câu 21: Trong mô hình hóa hướng đối tượng, "quan hệ hợp thành" (composition) thể hiện điều gì?

  • A. Một lớp kế thừa các thuộc tính và phương thức từ lớp khác.
  • B. Một đối tượng chứa các đối tượng khác như là thành phần không thể tách rời, và chịu trách nhiệm quản lý vòng đời của chúng.
  • C. Các đối tượng tương tác với nhau thông qua việc gửi thông điệp.
  • D. Một nhóm các lớp có chung một giao diện.

Câu 22: Điều gì KHÔNG phải là một thành phần cơ bản của một lớp trong OOP?

  • A. Thuộc tính (Attributes/Fields)
  • B. Phương thức (Methods/Functions)
  • C. Phương thức khởi tạo (Constructor)
  • D. Module

Câu 23: Trong OOP, "đ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 cha duy nhất, gây ra vấn đề về tính đóng gói.
  • B. Kế thừa từ một lớp cha duy nhất, giúp tăng cường tính đa hình.
  • C. Kế thừa từ nhiều lớp cha, có thể gây ra vấn đề "diamond problem" (vấn đề kim cương) khi có xung đột tên.
  • D. Kế thừa từ nhiều lớp cha, giúp đơn giản hóa cấu trúc kế thừa.

Câu 24: Khi thiết kế một hệ thống OOP, bước đầu tiên quan trọng nhất là gì?

  • A. Chọn ngôn ngữ lập trình phù hợp.
  • B. Phân tích bài toán và xác định các đối tượng và tương tác giữa chúng.
  • C. Viết code cho các lớp và đối tượng.
  • D. Kiểm thử và gỡ lỗi chương trình.

Câu 25: Trong OOP, "phương thức tĩnh" (static method) khác với "phương thức instance" (instance method) như thế nào?

  • A. Phương thức tĩnh thuộc về lớp và được gọi thông qua tên lớp, không cần đối tượng cụ thể; 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.
  • B. Phương thức tĩnh có thể truy cập các thuộc tính instance, phương thức instance thì không.
  • C. Phương thức tĩnh được kế thừa, phương thức instance thì không.
  • D. Phương thức tĩnh chạy nhanh hơn phương thức instance.

Câu 26: Mẫu thiết kế (design pattern) Singleton trong OOP được sử dụng để làm gì?

  • A. Tạo ra nhiều đối tượng khác nhau từ một lớp duy nhất.
  • B. Đơn giản hóa quá trình kế thừa.
  • C. Đảm bảo rằng một lớp chỉ có duy nhất một thể hiện (instance) và cung cấp một điểm truy cập toàn cục đến thể hiện đó.
  • D. Tăng hiệu suất bằng cách tái sử dụng đối tượng.

Câu 27: "Tính liên kết lỏng lẻo" (loose coupling) là một mục tiêu quan trọng trong thiết kế OOP. Điều này có nghĩa là gì?

  • A. Các lớp và đối tượng trong hệ thống phụ thuộc chặt chẽ vào nhau để hoạt động.
  • B. Các lớp và đối tượng trong hệ thống nên ít phụ thuộc vào nhau càng tốt, để thay đổi ở một phần không ảnh hưởng nhiều đến các phần khác.
  • C. Tất cả các đối tượng phải thuộc cùng một lớp.
  • D. Chương trình phải được viết theo phong cách hướng thủ tục.

Câu 28: Trong OOP, "phương thức trừu tượng" (abstract method) là gì và nó thường được sử dụng trong lớp nào?

  • A. Một phương thức đã được hoàn thiện và không thể ghi đè.
  • B. Một phương thức tĩnh thuộc về lớp chứ không phải đối tượng.
  • C. Một phương thức có phạm vi truy cập "private".
  • D. Một phương thức chỉ được khai báo mà không có phần thân (body), và thường được định nghĩa trong lớp trừu tượng hoặc interface, buộc các lớp con phải hiện thực nó.

Câu 29: Khi nào thì việc sử dụng "lớp trừu tượng" (abstract class) phù hợp hơn so với "interface"?

  • A. Khi chỉ cần định nghĩa "hợp đồng" mà không cần cung cấp bất kỳ hiện thực nào.
  • B. Khi muốn đa kế thừa (multiple inheritance).
  • C. Khi muốn cung cấp một số hành vi mặc định (phương thức đã được hiện thực) cho các lớp con, bên cạnh các phương thức trừu tượng.
  • D. Khi muốn tăng tính đóng gói và bảo vệ dữ liệu.

Câu 30: Trong lập trình hướng đối tượng, nguyên tắc "DRY" (Don"t Repeat Yourself) có ý nghĩa gì và nó liên quan đến khái niệm OOP nào?

  • A. Tránh lặp lại code; liên quan đến tính kế thừa và tái sử dụng code.
  • B. Viết code dễ đọc và dễ hiểu; liên quan đến tính trừu tượng.
  • C. Đảm bảo tính đóng gói và bảo vệ dữ liệu; liên quan đến tính đóng gói.
  • D. Tối ưu hóa hiệu suất chương trình; liên quan đến tính đa hình.

1 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 1: Trong lập trình hướng đối tượng, khái niệm nào cho phép 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 (message)?

2 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 2: Một lớp 'Động vật' có phương thức 'Kêu'. Lớp 'Chó' và 'Mèo' kế thừa từ 'Động vật'. Nếu 'Chó' kêu 'Gâu gâu' và 'Mèo' kêu 'Meo meo', đây là ví dụ minh họa rõ nhất cho tính chất nào của OOP?

3 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 3: Điều gì KHÔNG phải là lợi ích chính của tính đóng gói (Encapsulation) trong lập trình hướng đối tượng?

4 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 4: Trong thiết kế lớp, phạm vi truy cập 'private' được sử dụng để:

5 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 5: Tính trừu tượng (Abstraction) trong OOP giúp giải quyết vấn đề gì chính trong phát triển phần mềm?

6 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 6: Khi nào nên sử dụng kế thừa (Inheritance) trong lập trình hướng đối tượng?

7 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 7: Cho đoạn code (giả mã):

```
class HìnhHọc {
phương_thức TínhDiệnTích() {
// ...
}
}

class HìnhVuông kế_thừa HìnhHọc {
thuộc_tính cạnh
phương_thức TínhDiệnTích() {
trả_về cạnh * cạnh
}
}

class HìnhTròn kế_thừa HìnhHọc {
thuộc_tính bán_kính
phương_thức TínhDiệnTích() {
trả_về 3.14 * bán_kính * bán_kính
}
}
```

Đoạn code trên thể hiện rõ nhất điều gì?

8 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 8: Trong lập trình hướng đối tượng, 'đối tượng' (object) là gì?

9 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 9: 'Lớp' (class) trong OOP đóng vai trò như thế nào?

10 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

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

11 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 11: Điều gì xảy ra khi bạn tạo một đối tượng (instance) từ một lớp?

12 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 12: Trong OOP, 'thông điệp' (message) giữa các đối tượng thường được thể hiện dưới hình thức nào?

13 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 13: Ưu điểm chính của việc sử dụng lập trình hướng đối tượng so với lập trình hướng cấu trúc là gì?

14 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 14: Trong OOP, thuật ngữ nào mô tả việc một lớp con có thể ghi đè (override) một phương thức đã được định nghĩa ở lớp cha?

15 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 15: Phạm vi truy cập 'protected' khác với 'private' ở điểm nào?

16 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 16: Cho sơ đồ lớp sau: 'Xe' -> 'Ô tô' -> 'XeCon'. Mối quan hệ giữa 'XeCon' và 'Ô tô' là gì?

17 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 17: Trong thiết kế hướng đối tượng, nguyên tắc 'SOLID' nào khuyến khích việc các lớp nên dễ mở rộng nhưng khó sửa đổi?

18 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 18: Hãy xem xét tình huống: Một hệ thống quản lý thư viện cần xử lý các loại tài liệu khác nhau như 'Sách', 'Tạp chí', 'Báo'. Mỗi loại có thuộc tính và hành vi riêng. Cách tiếp cận OOP nào phù hợp nhất để thiết kế hệ thống này?

19 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 19: Mục đích chính của việc sử dụng 'interface' (giao diện) trong OOP là gì?

20 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 20: 'Tính đ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 trong OOP?

21 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 21: Trong mô hình hóa hướng đối tượng, 'quan hệ hợp thành' (composition) thể hiện điều gì?

22 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 22: Điều gì KHÔNG phải là một thành phần cơ bản của một lớp trong OOP?

23 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 23: Trong OOP, 'đa kế thừa' (multiple inheritance) là gì và nó có thể gây ra vấn đề gì?

24 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 24: Khi thiết kế một hệ thống OOP, bước đầu tiên quan trọng nhất là gì?

25 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 25: Trong OOP, 'phương thức tĩnh' (static method) khác với 'phương thức instance' (instance method) như thế nào?

26 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 26: Mẫu thiết kế (design pattern) Singleton trong OOP được sử dụng để làm gì?

27 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 27: 'Tính liên kết lỏng lẻo' (loose coupling) là một mục tiêu quan trọng trong thiết kế OOP. Điều này có nghĩa là gì?

28 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 28: Trong OOP, 'phương thức trừu tượng' (abstract method) là gì và nó thường được sử dụng trong lớp nào?

29 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 29: Khi nào thì việc sử dụng 'lớp trừu tượng' (abstract class) phù hợp hơn so với 'interface'?

30 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 09

Câu 30: Trong lập trình hướng đối tượng, nguyên tắc 'DRY' (Don't Repeat Yourself) có ý nghĩa gì và nó liên quan đến khái niệm OOP nào?

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


Trắc nghiệm Lập trình hướng đối tượng

Trắc nghiệm Lập trình hướng đối tượng - Đề 10

Trắc nghiệm Lập trình hướng đối tượng - Đề 10 được biên soạn kỹ lưỡng với nhiều câu hỏi phong phú, hấp dẫn và bám sát nội dung chương trình học. Đây là cơ hội tuyệt vời để bạn ôn luyện, kiểm tra và nâng cao kiến thức một cách hiệu quả. Hãy cùng bắt đầu làm bài tập ngay hôm nay để tự tin hơn trên hành trình chinh phục môn học này!

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 kế thừa (Inheritance)
  • C. Tính đa hình (Polymorphism)
  • D. Tính trừu tượng (Abstraction)

Câu 2: Một lớp "Động vật" có phương thức "Tiếng kêu". Lớp "Chó" và "Mèo" kế thừa từ "Động vật". Khi gọi phương thức "Tiếng kêu" trên đối tượng "Chó", kết quả là "Gâu gâu", còn trên đối tượng "Mèo" là "Meo meo". Đây là ví dụ minh họa rõ nhất cho tính chất nào của OOP?

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

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

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

Câu 4: Xét đoạn mã giả sau:
`class Hình dạng {
phương thức Tính diện tích() {
// ...
}
}
class Hình tròn kế thừa Hình dạng {
// ...
}
class Hình vuông kế thừa Hình dạng {
// ...
}`
Đây là ví dụ về khái niệm OOP nào?

  • A. Đa hình
  • B. Đóng gói
  • C. Kế thừa
  • D. Trừu tượng

Câu 5: "Tính trừu tượng" (Abstraction) trong OOP giúp lập trình viên giải quyết vấn đề bằng cách nào?

  • A. Chỉ tập trung vào các đặc điểm thiết yếu của đối tượng và bỏ qua các chi tiết phức tạp không liên quan
  • B. Tạo ra nhiều hình thức khác nhau của một đối tượng
  • C. Kết hợp dữ liệu và phương thức thành một đơn vị duy nhất
  • D. Cho phép lớp con kế thừa các thuộc tính và phương thức của lớp cha

Câu 6: Trong OOP, "lớp" (Class) được xem như là gì?

  • A. Một thể hiện cụ thể của dữ liệu
  • B. Bản thiết kế hoặc khuôn mẫu để tạo ra các đối tượng
  • C. Một hành động mà đối tượng có thể thực hiện
  • D. Một giá trị thuộc tính của đối tượng

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

  • A. Một bản thiết kế trừu tượng
  • B. Một tập hợp các lớp có liên quan
  • C. Một phương thức chung của tất cả các lớp
  • D. Một thể hiện cụ thể của một lớp, có trạng thái và hành vi

Câu 8: Thuộc tính (Attribute) của một đối tượng trong OOP còn được gọi là gì?

  • A. Dữ liệu hoặc trạng thái
  • B. Hành vi hoặc phương thức
  • C. Lớp hoặc kiểu
  • D. Giao diện hoặc khuôn mẫu

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

  • A. Dữ liệu mà đối tượng lưu trữ
  • B. Hành vi hoặc thao tác mà đối tượng có thể thực hiện
  • C. Kiểu dữ liệu của đối tượng
  • D. Mối quan hệ giữa các đối tượng

Câu 10: Trong ngữ cảnh OOP, "thông điệp" (Message) thường được hiểu là gì?

  • A. Một đoạn văn bản mô tả đối tượng
  • B. Dữ liệu được truyền giữa các đối tượng
  • C. Lời gọi một phương thức từ một đối tượng đến đối tượng khác
  • D. Một sự kiện xảy ra trong hệ thống

Câu 11: Mục đích chính của việc sử dụng "tính kế thừa" (Inheritance) trong OOP là gì?

  • A. Tái sử dụng mã nguồn và xây dựng hệ thống phân cấp lớp
  • B. Tăng tính bảo mật cho dữ liệu
  • C. Giảm độ phức tạp của chương trình
  • D. Tăng tốc độ xử lý của chương trình

Câu 12: Phương thức khởi tạo (Constructor) trong lớp có vai trò gì?

  • A. Thực hiện các thao tác sau khi đối tượng bị hủy
  • B. Khởi tạo trạng thái ban đầu cho đối tượng khi nó được tạo ra
  • C. Truy cập và sửa đổi dữ liệu của đối tượng
  • D. Xóa đối tượng khỏi bộ nhớ

Câu 13: Phương thức hủy (Destructor) trong lớp được sử dụng khi nào?

  • A. Khi đối tượng được tạo ra
  • B. Khi một phương thức của đối tượng được gọi
  • C. Khi dữ liệu của đối tượng được truy cập
  • D. Ngay trước khi đối tượng bị hủy và giải phóng bộ nhớ

Câu 14: 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
  • B. Tính đa hình
  • C. Tính kế thừa
  • D. Tính trừu tượng

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

  • A. Kế thừa
  • B. Kết hợp (Composition/Aggregation)
  • C. Đa hình
  • D. Trừu tượng

Câu 16: "Tính đa hình thời gian biên dịch" (Compile-time Polymorphism) còn được gọi là gì?

  • A. Nạp chồng phương thức (Method Overloading)
  • B. Ghi đè phương thức (Method Overriding)
  • C. Tính trừu tượng hóa dữ liệu
  • D. Tính đóng gói thông tin

Câu 17: "Tính đa hình thời gian chạy" (Runtime Polymorphism) thường được thực hiện thông qua cơ chế nào?

  • A. Nạp chồng toán tử
  • B. Ghi đè phương thức (Method Overriding) và giao diện (Interface)
  • C. Tính đóng gói
  • D. Tính trừu tượng

Câu 18: Trong thiết kế hướng đối tượng, nguyên tắc "SOLID" là viết tắt của những nguyên tắc thiết kế nào?

  • A. Simple, Open, Logical, Iterative, Detailed
  • B. Structured, Organized, Layered, Independent, Dynamic
  • C. Scalable, Optimal, Understandable, Reliable,кономичный
  • D. Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion

Câu 19: Nguyên tắc "Single Responsibility Principle" (SRP) trong SOLID khuyến khích điều gì?

  • A. Các lớp nên được mở rộng để thêm chức năng mới, nhưng không sửa đổi mã hiện có.
  • B. Lớp con có thể thay thế lớp cha ở bất cứ đâu mà không làm thay đổi tính đúng đắn của chương trình.
  • C. Một lớp chỉ nên có một và chỉ một lý do để thay đổi.
  • D. Nhiều giao diện đặc thù tốt hơn là một giao diện chung.

Câu 20: Nguyên tắc "Open/Closed Principle" (OCP) trong SOLID phát biểu rằng:

  • A. Các lớp nên mở để mở rộng, nhưng đóng để sửa đổi.
  • B. Các lớp nên có nhiều trách nhiệm để tối ưu hóa hiệu suất.
  • C. Các lớp nên kế thừa từ càng nhiều lớp cha càng tốt để tái sử dụng tối đa mã nguồn.
  • D. Các lớp nên được thiết kế càng phức tạp càng tốt để thể hiện đầy đủ nghiệp vụ.

Câu 21: Trong OOP, "giao diện" (Interface) khác với "lớp trừu tượng" (Abstract Class) ở điểm nào chính?

  • A. Lớp trừu tượng có thể được khởi tạo trực tiếp, còn giao diện thì không.
  • B. Giao diện có thể chứa các phương thức đã được triển khai, còn lớp trừu tượng thì không.
  • C. Giao diện chỉ định nghĩa hành vi (phương thức trừu tượng), trong khi lớp trừu tượng có thể chứa cả trạng thái và hành vi.
  • D. Lớp trừu tượng hỗ trợ đa kế thừa, còn giao diện thì không.

Câu 22: Khi nào nên sử dụng "lớp trừu tượng" (Abstract Class) thay vì "giao diện" (Interface)?

  • A. Khi chỉ cần định nghĩa các hành vi mà không cần trạng thái.
  • B. Khi muốn chia sẻ một số trạng thái (thuộc tính) và hành vi (phương thức đã triển khai) chung giữa các lớp con.
  • C. Khi muốn thực hiện đa kế thừa.
  • D. Khi muốn tạo ra các đối tượng mà không cần định nghĩa lớp cụ thể.

Câu 23: "Tính liên kết lỏng lẻo" (Loose Coupling) trong OOP là gì và tại sao nó quan trọng?

  • A. Mối quan hệ chặt chẽ giữa các đối tượng để tăng hiệu suất.
  • B. Việc sử dụng nhiều kế thừa để tái sử dụng mã tối đa.
  • C. Việc ẩn giấu thông tin chi tiết bên trong đối tượng.
  • D. Sự phụ thuộc tối thiểu giữa các lớp, giúp hệ thống linh hoạt và dễ bảo trì hơn.

Câu 24: "Dependency Injection" (DI) là một kỹ thuật trong OOP nhằm mục đích gì?

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

Câu 25: Mẫu thiết kế (Design Pattern) Singleton giải quyết vấn đề gì?

  • A. Tạo ra các đối tượng phức tạp một cách tuần tự.
  • B. Đảm bảo một lớp có nhiều thể hiện để tăng hiệu suất.
  • C. Đảm bảo một lớp chỉ có một thể hiện duy nhất và cung cấp điểm truy cập toàn cục.
  • D. Cho phép các đối tượng tương tác với nhau mà không cần biết chi tiết về nhau.

Câu 26: Mẫu thiết kế Factory (Nhà máy) thường được sử dụng khi nào?

  • A. Khi cần tạo ra các đối tượng thuộc các lớp khác nhau tùy thuộc vào điều kiện hoặc cấu hình.
  • B. Khi muốn đảm bảo chỉ có một thể hiện duy nhất của một lớp.
  • C. Khi muốn thêm chức năng mới vào các đối tượng hiện có một cách linh hoạt.
  • D. Khi muốn định nghĩa một thuật toán nhưng cho phép các lớp con quyết định cấu trúc của thuật toán đó.

Câu 27: Mẫu thiết kế Observer (Người quan sát) giúp giải quyết vấn đề gì?

  • A. Tạo ra một cấu trúc cây phân cấp các đối tượng.
  • B. Thiết lập mối quan hệ một-nhiều giữa các đối tượng, cho phép thông báo và cập nhật tự động khi trạng thái thay đổi.
  • C. Đóng gói một thuật toán và cho phép thay đổi thuật toán đó một cách độc lập.
  • D. Cung cấp một giao diện thống nhất để truy cập các đối tượng trong một hệ thống con.

Câu 28: Kiểu quan hệ nào thể hiện sự phụ thuộc yếu hơn, khi một lớp "sử dụng" chức năng của lớp khác nhưng không "sở hữu" hoặc "là một phần" của lớp đó?

  • A. Kết hợp (Composition)
  • B. Kế thừa (Inheritance)
  • C. Phụ thuộc (Dependency)
  • D. Tổng hợp (Aggregation)

Câu 29: 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. Cấu trúc tĩnh của hệ thống, bao gồm lớp, thuộc tính, phương thức và quan hệ giữa các lớp.
  • B. Hành vi động của hệ thống, bao gồm luồng sự kiện và tương tác giữa các đối tượng.
  • C. Giao diện người dùng của hệ thống.
  • D. Cấu trúc dữ liệu của hệ thống.

Câu 30: Khi thiết kế một hệ thống quản lý thư viện bằng OOP, bạn quyết định tạo lớp "Sách", "Độc giả", "Thủ thư", "Phiếu mượn". Đây là bước nào trong quy trình phát triển phần mềm hướng đối tượng?

  • A. Kiểm thử hệ thống
  • B. Triển khai hệ thống
  • C. Bảo trì hệ thống
  • D. Phân tích và thiết kế hệ thống, xác định các lớp và đối tượng

1 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

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: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 2: Một lớp 'Động vật' có phương thức 'Tiếng kêu'. Lớp 'Chó' và 'Mèo' kế thừa từ 'Động vật'. Khi gọi phương thức 'Tiếng kêu' trên đối tượng 'Chó', kết quả là 'Gâu gâu', còn trên đối tượng 'Mèo' là 'Meo meo'. Đây là ví dụ minh họa rõ nhất cho tính chất nào của OOP?

3 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

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

4 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 4: Xét đoạn mã giả sau:
`class Hình dạng {
phương thức Tính diện tích() {
// ...
}
}
class Hình tròn kế thừa Hình dạng {
// ...
}
class Hình vuông kế thừa Hình dạng {
// ...
}`
Đây là ví dụ về khái niệm OOP nào?

5 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 5: 'Tính trừu tượng' (Abstraction) trong OOP giúp lập trình viên giải quyết vấn đề bằng cách nào?

6 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 6: Trong OOP, 'lớp' (Class) được xem như là gì?

7 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

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

8 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 8: Thuộc tính (Attribute) của một đối tượng trong OOP còn được gọi là gì?

9 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

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

10 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 10: Trong ngữ cảnh OOP, 'thông điệp' (Message) thường được hiểu là gì?

11 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 11: Mục đích chính của việc sử dụng 'tính kế thừa' (Inheritance) trong OOP là gì?

12 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 12: Phương thức khởi tạo (Constructor) trong lớp có vai trò gì?

13 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 13: Phương thức hủy (Destructor) trong lớp được sử dụng khi nào?

14 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

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

15 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

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

16 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 16: 'Tính đa hình thời gian biên dịch' (Compile-time Polymorphism) còn được gọi là gì?

17 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 17: 'Tính đa hình thời gian chạy' (Runtime Polymorphism) thường được thực hiện thông qua cơ chế nào?

18 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 18: Trong thiết kế hướng đối tượng, nguyên tắc 'SOLID' là viết tắt của những nguyên tắc thiết kế nào?

19 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 19: Nguyên tắc 'Single Responsibility Principle' (SRP) trong SOLID khuyến khích điều gì?

20 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 20: Nguyên tắc 'Open/Closed Principle' (OCP) trong SOLID phát biểu rằng:

21 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 21: Trong OOP, 'giao diện' (Interface) khác với 'lớp trừu tượng' (Abstract Class) ở điểm nào chính?

22 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 22: Khi nào nên sử dụng 'lớp trừu tượng' (Abstract Class) thay vì 'giao diện' (Interface)?

23 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 23: 'Tính liên kết lỏng lẻo' (Loose Coupling) trong OOP là gì và tại sao nó quan trọng?

24 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 24: 'Dependency Injection' (DI) là một kỹ thuật trong OOP nhằm mục đích gì?

25 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 25: Mẫu thiết kế (Design Pattern) Singleton giải quyết vấn đề gì?

26 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 26: Mẫu thiết kế Factory (Nhà máy) thường được sử dụng khi nào?

27 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 27: Mẫu thiết kế Observer (Người quan sát) giúp giải quyết vấn đề gì?

28 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 28: Kiểu quan hệ nào thể hiện sự phụ thuộc yếu hơn, khi một lớp 'sử dụng' chức năng của lớp khác nhưng không 'sở hữu' hoặc 'là một phần' của lớp đó?

29 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

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

30 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 10

Câu 30: Khi thiết kế một hệ thống quản lý thư viện bằng OOP, bạn quyết định tạo lớp 'Sách', 'Độc giả', 'Thủ thư', 'Phiếu mượn'. Đây là bước nào trong quy trình phát triển phần mềm 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é!!!


Trắc nghiệm Lập trình hướng đối tượng

Trắc nghiệm Lập trình hướng đối tượng - Đề 11

Trắc nghiệm Lập trình hướng đối tượng - Đề 11 được biên soạn kỹ lưỡng với nhiều câu hỏi phong phú, hấp dẫn và bám sát nội dung chương trình học. Đây là cơ hội tuyệt vời để bạn ôn luyện, kiểm tra và nâng cao kiến thức một cách hiệu quả. Hãy cùng bắt đầu làm bài tập ngay hôm nay để tự tin hơn trên hành trình chinh phục môn học này!

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ù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: Phát biểu nào sau đây mô tả đúng nhất về "tính đóng gói" (encapsulation) trong lập trình hướng đối tượng?

  • A. Cơ chế cho phép một lớp kế thừa các thuộc tính và phương thức từ lớp khác.
  • B. Cơ chế kết hợp dữ liệu (thuộc tính) và phương thức (hành vi) của đối tượng thành một đơn vị duy nhất, đồng thời che giấu thông tin.
  • C. Khả năng một đối tượng có thể thuộc nhiều lớp khác nhau.
  • D. Quá trình đơn giản hóa các đối tượng phức tạp bằng cách chỉ tập trung vào các đặc điểm thiết yếu.

Câu 3: Xét đoạn mã giả sau (pseudocode):

```
class DongVat {
phuongThuc Keu() {
in ra

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

Câu 4: Trong lập trình hướng đối tượng, "lớp" (class) và "đối tượng" (object) có mối quan hệ như thế nào?

  • A. Lớp và đối tượng là hai khái niệm hoàn toàn độc lập và không liên quan đến nhau.
  • B. Lớp là khuôn mẫu hoặc bản thiết kế, còn đối tượng là một thể hiện cụ thể (instance) của lớp đó.
  • C. Đối tượng chứa định nghĩa của lớp.
  • D. Lớp là một thể hiện đặc biệt của đối tượng.

Câu 5: "Tính trừu tượng" (abstraction) trong OOP giúp ích gì cho việc phát triển phần mềm?

  • A. Tăng cường khả năng truy cập trực tiếp vào dữ liệu bên trong đối tượng.
  • B. Giảm tính linh hoạt của chương trình.
  • C. Giảm độ phức tạp bằng cách ẩn đi các chi tiết không cần thiết và tập trung vào các đặc điểm cốt lõi.
  • D. Ngăn chặn việc sử dụng lại mã nguồn.

Câu 6: Phương thức đặc biệt nào trong lớp được tự động gọi khi một đối tượng của lớp đó được tạo ra?

  • A. Phương thức khởi tạo (Constructor)
  • B. Phương thức hủy (Destructor)
  • C. Phương thức getter
  • D. Phương thức setter

Câu 7: Trong ngữ cảnh kế thừa, lớp "cha" (parent class) còn được gọi là gì?

  • A. Lớp con (Child class)
  • B. Lớp dẫn xuất (Derived class)
  • C. Lớp giao diện (Interface class)
  • D. Lớp cơ sở (Base class)

Câu 8: Mục đích chính của việc sử dụng "tính kế thừa" (inheritance) trong OOP là gì?

  • A. Tăng tính phức tạp của mã nguồn.
  • B. Tái sử dụng mã nguồn, giảm sự trùng lặp và xây dựng mối quan hệ "là một loại" (is-a) giữa các lớp.
  • C. Giảm khả năng bảo trì của chương trình.
  • D. Che giấu hoàn toàn dữ liệu của lớp cha đối với lớp con.

Câu 9: Loại quan hệ nào sau đây thể hiện mối quan hệ "là một loại" (is-a relationship) trong OOP?

  • A. Quan hệ "sử dụng" (uses-a relationship)
  • B. Quan hệ "có một" (has-a relationship - composition)
  • C. Quan hệ kế thừa (Inheritance relationship)
  • D. Quan hệ "thành phần của" (part-of relationship - aggregation)

Câu 10: Phương thức "ảo" (virtual method) thường được sử dụng để hỗ trợ tính năng nào của OOP?

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

Câu 11: "Giao diện" (interface) trong OOP có vai trò gì?

  • A. Cung cấp cài đặt mặc định cho các phương thức.
  • B. Cho phép kế thừa đa lớp.
  • C. Ẩn hoàn toàn dữ liệu bên trong đối tượng.
  • D. Định nghĩa một hợp đồng, quy định các lớp thực thi interface phải cung cấp những phương thức cụ thể.

Câu 12: "Tính đa hình" (polymorphism) "thời gian biên dịch" (compile-time polymorphism) còn được gọi là gì?

  • A. Nạp chồng phương thức (Method Overloading)
  • B. Ghi đè phương thức (Method Overriding)
  • C. Đa hình tham số (Parametric Polymorphism)
  • D. Ép kiểu đối tượng (Object Casting)

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

  • A. Nạp chồng toán tử (Operator Overloading)
  • B. Ghi đè phương thức (Method Overriding) và kế thừa
  • C. Sử dụng template (Template)
  • D. Sử dụng macro (Macro)

Câu 14: Trong OOP, "quan hệ kết hợp" (association) giữa các lớp là gì?

  • A. Một dạng đặc biệt của kế thừa.
  • B. Quan hệ mà một đối tượng chứa hoàn toàn các đối tượng khác và vòng đời của chúng phụ thuộc lẫn nhau (composition).
  • C. Quan hệ mà các đối tượng liên quan đến nhau nhưng có thể tồn tại độc lập.
  • D. Quan hệ mà một lớp được tạo ra từ một hoặc nhiều lớp khác (đa kế thừa).

Câu 15: "Quan hệ hợp thành" (composition) khác với "quan hệ tập hợp" (aggregation) ở điểm nào?

  • A. Quan hệ hợp thành thể hiện mối quan hệ "là một loại", còn quan hệ tập hợp thể hiện mối quan hệ "có một".
  • B. Trong quan hệ hợp thành, đối tượng "thành phần" không thể tồn tại nếu không có đối tượng "chứa", trong khi ở quan hệ tập hợp thì có thể.
  • C. Quan hệ hợp thành chỉ áp dụng cho các lớp trừu tượng, còn quan hệ tập hợp áp dụng cho lớp cụ thể.
  • D. Không có sự khác biệt đáng kể giữa quan hệ hợp thành và quan hệ tập hợp.

Câu 16: Thuộc tính (attribute) và phương thức (method) của một lớp còn được gọi chung là gì?

  • A. Giao diện lớp (Class interface)
  • B. Đặc điểm lớp (Class characteristics)
  • C. Cấu trúc lớp (Class structure)
  • D. Thành viên lớp (Class members)

Câu 17: "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 cha và không thể kế thừa.
  • C. Phương thức được khai báo trong lớp trừu tượng nhưng không có cài đặt cụ thể, và lớp con phải cung cấp cài đặt.
  • D. Phương thức có thể thay đổi hành vi của các phương thức khác trong lớp.

Câu 18: Lớp "trừu tượng" (abstract class) có đặc điểm gì?

  • A. Có thể tạo trực tiếp đối tượng từ lớp trừu tượng.
  • B. Không thể tạo trực tiếp đối tượng và thường chứa ít nhất một phương thức trừu tượng.
  • C. Chỉ chứa các phương thức đã được cài đặt hoàn chỉnh.
  • D. Không thể có lớp con kế thừa từ lớp trừu tượng.

Câu 19: Trong các ngôn ngữ OOP, từ khóa nào thường được sử dụng để khai báo tính kế thừa?

  • A. extends (hoặc tương tự như ":")
  • B. implements
  • C. new
  • D. class

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

  • A. Một lớp chỉ có thể kế thừa từ một lớp cha duy nhất.
  • B. Kế thừa từ nhiều lớp cha, giúp tăng tính đơn giản của hệ thống.
  • C. Kế thừa từ nhiều lớp cha, có thể gây ra xung đột (ví dụ: "diamond problem") khi các lớp cha có cùng tên thành viên.
  • D. Một kỹ thuật để tạo ra các đối tượng có nhiều thuộc tính và phương thức.

Câu 21: "Phương thức tĩnh" (static method) khác với "phương thức đối tượng" (instance method) như thế nào?

  • A. Phương thức tĩnh chỉ có thể được gọi từ bên trong lớp, còn phương thức đối tượng có thể gọi từ mọi nơi.
  • B. Phương thức tĩnh được gọi trực tiếp thông qua tên lớp, không cần đối tượng cụ thể, còn phương thức đối tượng cần được gọi thông qua một đối tượng của lớp.
  • C. Phương thức tĩnh không thể truy cập các thuộc tính của lớp, còn phương thức đối tượng thì có thể.
  • D. Phương thức tĩnh luôn trả về giá trị, còn phương thức đối tượng thì không.

Câu 22: "Thuộc tính tĩnh" (static attribute) được chia sẻ như thế nào giữa các đối tượng của cùng một lớp?

  • A. Mỗi đối tượng có một bản sao riêng của thuộc tính tĩnh.
  • B. Thuộc tính tĩnh chỉ tồn tại khi có ít nhất một đối tượng của lớp.
  • C. Tất cả các đối tượng của cùng một lớp chia sẻ cùng một bản sao của thuộc tính tĩnh.
  • D. Thuộc tính tĩnh không thể được truy cập từ bên ngoài lớp.

Câu 23: "Tính đa hình" mang lại lợi ích gì trong việc mở rộng và bảo trì phần mềm?

  • A. Giảm tính linh hoạt và khả năng tái sử dụng mã.
  • B. Tăng tính linh hoạt, cho phép dễ dàng mở rộng chức năng và bảo trì mã nguồn vì có thể thêm các lớp mới mà không ảnh hưởng đến mã đã có.
  • C. Làm cho mã nguồn trở nên phức tạp và khó hiểu hơn.
  • D. Hạn chế khả năng tương tác giữa các đối tượng.

Câu 24: "SOLID" là một tập hợp các nguyên tắc thiết kế hướng đối tượng. Chữ "L" 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. Open/Closed Principle (Nguyên tắc đóng mở)
  • C. Liskov Substitution Principle (Nguyên tắc thay thế Liskov)
  • D. Interface Segregation Principle (Nguyên tắc phân tách giao diện)

Câu 25: Nguyên tắc "Open/Closed" (đóng/mở) trong SOLID có nghĩa là gì?

  • A. Lớp nên được mở hoàn toàn cho cả việc mở rộng và sửa đổi.
  • B. Lớp nên "mở" cho việc mở rộng (thêm chức năng mới) nhưng "đóng" cho việc sửa đổi (mã nguồn hiện có nên ổn định và ít bị thay đổi).
  • C. Lớp nên được đóng hoàn toàn, không cho phép mở rộng hay sửa đổi.
  • D. Nguyên tắc này không liên quan đến việc mở rộng hay sửa đổi lớp.

Câu 26: "Dependency Injection" (DI - Tiêm phụ thuộc) là một mẫu thiết kế (design pattern) trong OOP, nó giúp giải quyết vấn đề gì?

  • A. Tăng cường tính đóng gói của đối tượng.
  • B. Đơn giản hóa quá trình kế thừa.
  • C. Tối ưu hiệu suất của chương trình.
  • D. Giảm sự phụ thuộc giữa các thành phần (decoupling) của phần mềm, giúp tăng tính module hóa và khả năng kiểm thử.

Câu 27: Mẫu thiết kế "Singleton" (Singleton pattern) được sử dụng khi nào?

  • A. Khi cần đảm bảo chỉ có duy nhất một thể hiện (instance) của một lớp trong toàn bộ ứng dụng.
  • B. Khi cần tạo ra nhiều thể hiện của một lớp một cách nhanh chóng.
  • C. Khi cần ẩn hoàn toàn dữ liệu bên trong đối tượng.
  • D. Khi cần thực hiện đa kế thừa.

Câu 28: 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 trong hệ thống.
  • B. Quy trình nghiệp vụ của hệ thống.
  • C. Cấu trúc tĩnh của hệ thống, bao gồm các lớp, thuộc tính, phương thức và quan hệ giữa chúng.
  • D. Giao diện người dùng của hệ thống.

Câu 29: Ưu điểm chính của lập trình hướng đối tượng so với lập trình hướng cấu trúc (procedural programming) là gì?

  • A. Tốc độ thực thi chương trình nhanh hơn.
  • B. Tính module hóa cao hơn, khả năng tái sử dụng mã tốt hơn và dễ quản lý độ phức tạp của dự án lớn.
  • C. Yêu cầu phần cứng thấp hơn.
  • D. Dễ học và dễ tiếp cận hơn cho người mới bắt đầu.

Câu 30: Nhược điểm tiềm ẩn của việc lạm dụng kế thừa (inheritance) trong thiết kế OOP là gì?

  • A. Giảm khả năng tái sử dụng mã.
  • B. Làm tăng tính đóng gói của chương trình.
  • C. Giảm tính đa hình.
  • D. Tạo ra hệ thống phân cấp lớp phức tạp, khó hiểu và bảo trì, tăng sự phụ thuộc giữa lớp cha và lớp con (tight coupling).

1 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

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ùng nhận một thông điệp?

2 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 2: Phát biểu nào sau đây mô tả đúng nhất về 'tính đóng gói' (encapsulation) trong lập trình hướng đối tượng?

3 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 3: Xét đoạn mã giả sau (pseudocode):

```
class DongVat {
phuongThuc Keu() {
in ra "Tiếng kêu chung của động vật"
}
}

class Meo ke thua DongVat {
phuongThuc Keu() {
in ra "Meo meo"
}
}

class Cho ke thua DongVat {
phuongThuc Keu() {
in ra "Gau gau"
}
}

// ...

DongVat myPet = new Meo()
myPet.Keu()
```

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

4 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 4: Trong lập trình hướng đối tượng, 'lớp' (class) và 'đối tượng' (object) có mối quan hệ như thế nào?

5 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 5: 'Tính trừu tượng' (abstraction) trong OOP giúp ích gì cho việc phát triển phần mềm?

6 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 6: Phương thức đặc biệt nào trong lớp được tự động gọi khi một đối tượng của lớp đó được tạo ra?

7 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 7: Trong ngữ cảnh kế thừa, lớp 'cha' (parent class) còn được gọi là gì?

8 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 8: Mục đích chính của việc sử dụng 'tính kế thừa' (inheritance) trong OOP là gì?

9 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 9: Loại quan hệ nào sau đây thể hiện mối quan hệ 'là một loại' (is-a relationship) trong OOP?

10 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 10: Phương thức 'ảo' (virtual method) thường được sử dụng để hỗ trợ tính năng nào của OOP?

11 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 11: 'Giao diện' (interface) trong OOP có vai trò gì?

12 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 12: 'Tính đa hình' (polymorphism) 'thời gian biên dịch' (compile-time polymorphism) còn được gọi là gì?

13 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

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

14 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 14: Trong OOP, 'quan hệ kết hợp' (association) giữa các lớp là gì?

15 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 15: 'Quan hệ hợp thành' (composition) khác với 'quan hệ tập hợp' (aggregation) ở điểm nào?

16 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 16: Thuộc tính (attribute) và phương thức (method) của một lớp còn được gọi chung là gì?

17 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

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

18 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 18: Lớp 'trừu tượng' (abstract class) có đặc điểm gì?

19 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 19: Trong các ngôn ngữ OOP, từ khóa nào thường được sử dụng để khai báo tính kế thừa?

20 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

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

21 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 21: 'Phương thức tĩnh' (static method) khác với 'phương thức đối tượng' (instance method) như thế nào?

22 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 22: 'Thuộc tính tĩnh' (static attribute) được chia sẻ như thế nào giữa các đối tượng của cùng một lớp?

23 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 23: 'Tính đa hình' mang lại lợi ích gì trong việc mở rộng và bảo trì phần mềm?

24 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

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

25 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 25: Nguyên tắc 'Open/Closed' (đóng/mở) trong SOLID có nghĩa là gì?

26 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 26: 'Dependency Injection' (DI - Tiêm phụ thuộc) là một mẫu thiết kế (design pattern) trong OOP, nó giúp giải quyết vấn đề gì?

27 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 27: Mẫu thiết kế 'Singleton' (Singleton pattern) được sử dụng khi nào?

28 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

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

29 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 29: Ưu điểm chính của lập trình hướng đối tượng so với lập trình hướng cấu trúc (procedural programming) là gì?

30 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 11

Câu 30: Nhược điểm tiềm ẩn của việc lạm dụng kế thừa (inheritance) trong thiết kế OOP là gì?

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


Trắc nghiệm Lập trình hướng đối tượng

Trắc nghiệm Lập trình hướng đối tượng - Đề 12

Trắc nghiệm Lập trình hướng đối tượng - Đề 12 được biên soạn kỹ lưỡng với nhiều câu hỏi phong phú, hấp dẫn và bám sát nội dung chương trình học. Đây là cơ hội tuyệt vời để bạn ôn luyện, kiểm tra và nâng cao kiến thức một cách hiệu quả. Hãy cùng bắt đầu làm bài tập ngay hôm nay để tự tin hơn trên hành trình chinh phục môn học này!

Câu 1: Phương pháp lập trình hướng đối tượng (OOP) tập trung vào yếu tố nào là chính?

  • A. Các bước thực hiện tuần tự của chương trình.
  • B. Dữ liệu và các thao tác xử lý dữ liệu đó, được gọi là đối tượng.
  • C. Cấu trúc chương trình theo dạng phân cấp các chức năng.
  • D. Tối ưu hóa tốc độ thực thi của chương trình.

Câu 2: Đặc điểm "tính đóng gói" (encapsulation) trong OOP mang lại lợi ích chính nào?

  • A. Tăng tốc độ biên dịch chương trình.
  • B. Giảm thiểu dung lượng bộ nhớ chương trình.
  • C. Bảo vệ dữ liệu khỏi sự truy cập và sửa đổi không mong muốn từ bên ngoài.
  • D. Cho phép tái sử dụng mã nguồn một cách dễ dàng.

Câu 3: "Tính kế thừa" (inheritance) trong OOP cho phép điều gì?

  • A. Tạo ra các lớp mới dựa trên các lớp đã tồn tại, kế thừa các thuộc tính và phương thức.
  • B. Gộp nhiều đối tượng thành một đối tượng lớn hơn.
  • C. Phân chia chương trình thành các phần nhỏ, dễ quản lý hơn.
  • D. Thay đổi hành vi của đối tượng trong thời gian chạy chương trình.

Câu 4: "Tính đa hình" (polymorphism) trong OOP nghĩa là gì?

  • A. Một đối tượng có nhiều thuộc tính.
  • B. Một lớp có thể có nhiều phương thức.
  • C. Các đối tượng khác nhau có thể giao tiếp với nhau.
  • D. Các đối tượng thuộc các lớp khác nhau có thể phản ứng khác nhau với cùng một thông điệp hoặc lệnh gọi phương thức.

Câu 5: "Tính trừu tượng" (abstraction) trong OOP giúp người lập trình như thế nào?

  • A. Tăng cường tính bảo mật cho chương trình.
  • B. Giảm độ phức tạp bằng cách ẩn đi các chi tiết không cần thiết và tập trung vào những khía cạnh quan trọng.
  • C. Cải thiện hiệu suất của chương trình.
  • D. Cho phép tạo ra các đối tượng ảo trong chương trình.

Câu 6: Trong OOP, "lớp" (class) được hiểu là gì?

  • A. Một thể hiện cụ thể của dữ liệu.
  • B. Một hành động mà đối tượng có thể thực hiện.
  • C. Một khuôn mẫu hoặc bản thiết kế để tạo ra các đối tượng.
  • D. Một biến toàn cục trong chương trình.

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

  • A. Một thể hiện cụ thể của một lớp, có trạng thái và hành vi.
  • B. Một tập hợp các lớp có liên quan với nhau.
  • C. Một phương thức đặc biệt của lớp.
  • D. Một kiểu dữ liệu cơ bản trong lập trình.

Câu 8: Điều gì KHÔNG phải là một lợi ích chính của lập trình hướng đối tượng?

  • A. Tái sử dụng mã nguồn.
  • B. Dễ bảo trì và mở rộng.
  • C. Mô hình hóa thế giới thực một cách tự nhiên hơn.
  • D. Tăng tốc độ thực thi chương trình so với lập trình hướng cấu trúc trong mọi trường hợp.

Câu 9: Trong OOP, "phương thức" (method) là gì?

  • A. Một thuộc tính của đối tượng.
  • B. Một hành động hoặc thao tác mà đối tượng có thể thực hiện.
  • C. Một cách để tạo ra đối tượng mới.
  • D. Một phần dữ liệu được lưu trữ trong đối tượng.

Câu 10: "Thuộc tính" (attribute) của một đối tượng trong OOP dùng để làm gì?

  • A. Thực hiện các hành động trên đối tượng.
  • B. Xác định kiểu dữ liệu của đối tượng.
  • C. Lưu trữ thông tin hoặc trạng thái của đối tượng.
  • D. Điều khiển luồng thực thi của chương trình.

Câu 11: Từ khóa nào thường được sử dụng để khai báo một lớp trong các ngôn ngữ OOP phổ biến?

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

Câu 12: "Tính đa kế thừa" (multiple inheritance) là gì?

  • A. Một lớp kế thừa từ chính nó.
  • B. Một lớp kế thừa từ nhiều lớp cha.
  • C. Nhiều lớp kế thừa từ một lớp cha duy nhất.
  • D. Kế thừa giữa các đối tượng, không phải giữa các lớp.

Câu 13: Trong ngữ cảnh OOP, "tính trừu tượng hóa dữ liệu" (data abstraction) liên quan mật thiết đến khái niệm nào?

  • A. Tính kế thừa.
  • B. Tính đa hình.
  • C. Tính đóng gói.
  • D. Tính tái sử dụng.

Câu 14: "Phương thức khởi tạo" (constructor) trong OOP có vai trò gì?

  • A. Khởi tạo trạng thái ban đầu cho đối tượng khi nó được tạo ra.
  • B. Hủy bỏ đối tượng khi nó không còn được sử dụng.
  • C. Thực hiện các phép tính toán trên đối tượng.
  • D. Truy cập vào các thuộc tính riêng tư của đối tượng.

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

  • A. Khởi tạo trạng thái ban đầu cho đối tượng.
  • B. Giải phóng tài nguyên mà đối tượng đã sử dụng khi nó bị hủy.
  • C. Sao chép đối tượng sang một vị trí khác trong bộ nhớ.
  • D. Kiểm tra lỗi trong quá trình tạo đối tượng.

Câu 16: Trong OOP, "tính liên kết lỏng lẻo" (loose coupling) giữa các đối tượng là một mục tiêu thiết kế tốt vì sao?

  • A. Tăng tốc độ giao tiếp giữa các đối tượng.
  • B. Giảm dung lượng bộ nhớ sử dụng.
  • C. Giúp hệ thống dễ bảo trì và thay đổi hơn, vì sự thay đổi ở một đối tượng ít ảnh hưởng đến các đối tượng khác.
  • D. Đảm bảo tính bảo mật cao hơn cho dữ liệu.

Câu 17: Xét đoạn mã giả sau (pseudocode):

```
class Animal {
method makeSound() {
print

  • A. Tính đóng gói.
  • B. Tính đa hình (thông qua ghi đè phương thức).
  • C. Tính trừu tượng.
  • D. Tính tái sử dụng.

Câu 18: Trong OOP, "giao diện" (interface) khác với "lớp trừu tượng" (abstract class) ở điểm nào chính?

  • A. Lớp trừu tượng không thể có phương thức, còn giao diện thì có.
  • B. Giao diện có thể chứa thuộc tính, còn lớp trừu tượng thì không.
  • C. Lớp trừu tượng thể hiện mối quan hệ "is-a", còn giao diện thể hiện mối quan hệ "has-a".
  • D. Giao diện chỉ định nghĩa hành vi (các phương thức) mà không cung cấp cài đặt, trong khi lớp trừu tượng có thể cung cấp cài đặt cho một số phương thức.

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

  • A. Truy cập được và trả về giá trị mặc định.
  • B. Truy cập được nhưng có cảnh báo.
  • C. Gây ra lỗi biên dịch hoặc lỗi thời gian chạy (tùy ngôn ngữ).
  • D. Tự động chuyển sang truy cập thuộc tính "protected".

Câu 20: "Phương thức tĩnh" (static method) trong OOP có đặc điểm gì?

  • A. Có thể được gọi trực tiếp thông qua tên lớp mà không cần tạo đối tượng.
  • B. Chỉ có thể được gọi từ bên trong các phương thức khác của cùng lớp.
  • C. Không thể truy cập vào các thuộc tính của lớp.
  • D. Luôn luôn trả về giá trị là null.

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

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

Câu 22: Mối quan hệ "has-a" trong OOP thường được thể hiện thông qua cơ chế nào?

  • A. Tính kế thừa.
  • B. Tính đa hình.
  • C. Tính hợp thành (composition) hoặc tập hợp (aggregation).
  • D. Tính trừu tượng.

Câu 23: Chọn phát biểu đúng về sự khác biệt giữa lập trình hướng đối tượng và lập trình hướng cấu trúc.

  • A. OOP tập trung vào hàm, còn lập trình cấu trúc tập trung vào đối tượng.
  • B. Lập trình cấu trúc có tính tái sử dụng mã tốt hơn OOP.
  • C. OOP không sử dụng cấu trúc điều khiển như vòng lặp và rẽ nhánh.
  • D. OOP tổ chức chương trình dựa trên đối tượng và lớp, còn lập trình cấu trúc tổ chức dựa trên hàm và thủ tục.

Câu 24: Khi nào lập trình hướng đối tượng thường được ưu tiên sử dụng hơn so với lập trình hướng cấu trúc?

  • A. Khi chương trình có quy mô nhỏ và đơn giản.
  • B. Khi xây dựng các hệ thống phần mềm lớn, phức tạp, và cần khả năng tái sử dụng, bảo trì cao.
  • C. Khi cần tối ưu hóa hiệu suất chương trình đến mức cao nhất.
  • D. Khi ngôn ngữ lập trình không hỗ trợ các tính năng OOP.

Câu 25: "Nguyên tắc thay thế Liskov" (Liskov Substitution Principle) trong SOLID đề cập đến điều gì?

  • A. Các lớp nên chỉ có một trách nhiệm duy nhất.
  • B. Các module phần mềm nên mở cho mở rộng nhưng đóng cho sửa đổi.
  • C. Các lớp con (derived classes) phải có khả năng thay thế hoàn toàn cho lớp cha (base classes) mà không làm thay đổi tính đúng đắn của chương trình.
  • D. Nên ưu tiên hợp thành (composition) hơn là kế thừa (inheritance).

Câu 26: "Phương thức ảo" (virtual method) trong OOP (như C++) có vai trò quan trọng trong việc hiện thực hóa tính năng nào?

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

Câu 27: "Hàm bạn" (friend function) hoặc "lớp bạn" (friend class) (trong C++) được sử dụng để làm gì?

  • A. Tăng tốc độ truy cập thuộc tính của lớp.
  • B. Cho phép các hàm hoặc lớp bên ngoài truy cập vào các thành viên "private" và "protected" của một lớp.
  • C. Hạn chế quyền truy cập vào các thành viên của lớp.
  • D. Tạo ra các lớp kế thừa đặc biệt.

Câu 28: "Che giấu thông tin" (information hiding) là một khía cạnh quan trọng của tính đóng gói. Nó có nghĩa là gì?

  • A. Giấu toàn bộ mã nguồn của chương trình.
  • B. Giấu tên lớp và đối tượng.
  • C. Ẩn đi cách cài đặt chi tiết bên trong của đối tượng và chỉ cho phép truy cập thông qua giao diện công khai.
  • D. Mã hóa dữ liệu bên trong đối tượng.

Câu 29: "Giao tiếp thông điệp" (message passing) giữa các đối tượng trong OOP là gì?

  • A. Sự chia sẻ dữ liệu trực tiếp giữa các đối tượng.
  • B. Sự kế thừa thuộc tính và phương thức giữa các đối tượng.
  • C. Sự tạo ra đối tượng mới từ đối tượng đã tồn tại.
  • D. Cách các đối tượng tương tác với nhau bằng cách gửi và nhận các yêu cầu thực hiện hành động (gọi phương thức).

Câu 30: Xét tình huống: Bạn cần thiết kế một hệ thống quản lý thư viện. Các đối tượng chính có thể là "Sách", "Độc giả", "Thủ thư", "Phiếu mượn". Theo hướng tiếp cận OOP, bạn sẽ bắt đầu bằng việc xác định điều gì trước tiên?

  • A. Xác định các lớp (classes) tương ứng với các đối tượng chính: Lớp Sach, Lớp DocGia, Lớp ThuThu, Lớp PhieuMuon.
  • B. Xác định các chức năng chính của hệ thống: Mượn sách, Trả sách, Tìm kiếm sách, Quản lý độc giả.
  • C. Lựa chọn ngôn ngữ lập trình OOP phù hợp để phát triển hệ thống.
  • D. Thiết kế giao diện người dùng cho hệ thống.

1 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 1: Phương pháp lập trình hướng đối tượng (OOP) tập trung vào yếu tố nào là chính?

2 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 2: Đặc điểm 'tính đóng gói' (encapsulation) trong OOP mang lại lợi ích chính nào?

3 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 3: 'Tính kế thừa' (inheritance) trong OOP cho phép điều gì?

4 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 4: 'Tính đa hình' (polymorphism) trong OOP nghĩa là gì?

5 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 5: 'Tính trừu tượng' (abstraction) trong OOP giúp người lập trình như thế nào?

6 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 6: Trong OOP, 'lớp' (class) được hiểu là gì?

7 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 7: 'Đối tượng' (object) trong OOP là gì?

8 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 8: Điều gì KHÔNG phải là một lợi ích chính của lập trình hướng đối tượng?

9 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 9: Trong OOP, 'phương thức' (method) là gì?

10 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 10: 'Thuộc tính' (attribute) của một đối tượng trong OOP dùng để làm gì?

11 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 11: Từ khóa nào thường được sử dụng để khai báo một lớp trong các ngôn ngữ OOP phổ biến?

12 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 12: 'Tính đa kế thừa' (multiple inheritance) là gì?

13 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 13: Trong ngữ cảnh OOP, 'tính trừu tượng hóa dữ liệu' (data abstraction) liên quan mật thiết đến khái niệm nào?

14 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 14: 'Phương thức khởi tạo' (constructor) trong OOP có vai trò gì?

15 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

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

16 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 16: Trong OOP, 'tính liên kết lỏng lẻo' (loose coupling) giữa các đối tượng là một mục tiêu thiết kế tốt vì sao?

17 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 17: Xét đoạn mã giả sau (pseudocode):

```
class Animal {
method makeSound() {
print "Generic animal sound"
}
}

class Dog extends Animal {
method makeSound() {
print "Woof!"
}
}

class Cat extends Animal {
method makeSound() {
print "Meow!"
}
}

Animal myAnimal = new Animal()
Dog myDog = new Dog()
Cat myCat = new Cat()

myAnimal.makeSound()
myDog.makeSound()
myCat.makeSound()
```

Đoạn mã trên thể hiện rõ nhất đặc điểm nào của OOP?

18 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 18: Trong OOP, 'giao diện' (interface) khác với 'lớp trừu tượng' (abstract class) ở điểm nào chính?

19 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

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

20 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 20: 'Phương thức tĩnh' (static method) trong OOP có đặc điểm gì?

21 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

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

22 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 22: Mối quan hệ 'has-a' trong OOP thường được thể hiện thông qua cơ chế nào?

23 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 23: Chọn phát biểu đúng về sự khác biệt giữa lập trình hướng đối tượng và lập trình hướng cấu trúc.

24 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 24: Khi nào lập trình hướng đối tượng thường được ưu tiên sử dụng hơn so với lập trình hướng cấu trúc?

25 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 25: 'Nguyên tắc thay thế Liskov' (Liskov Substitution Principle) trong SOLID đề cập đến điều gì?

26 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 26: 'Phương thức ảo' (virtual method) trong OOP (như C++) có vai trò quan trọng trong việc hiện thực hóa tính năng nào?

27 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 27: 'Hàm bạn' (friend function) hoặc 'lớp bạn' (friend class) (trong C++) được sử dụng để làm gì?

28 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 28: 'Che giấu thông tin' (information hiding) là một khía cạnh quan trọng của tính đóng gói. Nó có nghĩa là gì?

29 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 29: 'Giao tiếp thông điệp' (message passing) giữa các đối tượng trong OOP là gì?

30 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 12

Câu 30: Xét tình huống: Bạn cần thiết kế một hệ thống quản lý thư viện. Các đối tượng chính có thể là 'Sách', 'Độc giả', 'Thủ thư', 'Phiếu mượn'. Theo hướng tiếp cận OOP, bạn sẽ bắt đầu bằng việc xác định điều gì trước tiên?

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


Trắc nghiệm Lập trình hướng đối tượng

Trắc nghiệm Lập trình hướng đối tượng - Đề 13

Trắc nghiệm Lập trình hướng đối tượng - Đề 13 được biên soạn kỹ lưỡng với nhiều câu hỏi phong phú, hấp dẫn và bám sát nội dung chương trình học. Đây là cơ hội tuyệt vời để bạn ôn luyện, kiểm tra và nâng cao kiến thức một cách hiệu quả. Hãy cùng bắt đầu làm bài tập ngay hôm nay để tự tin hơn trên hành trình chinh phục môn học này!

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ù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 (pseudocode):

```
class Animal {
phương_thức TiếngKêu() {
in_ra

  • A. Tính đóng gói
  • B. Tính đa hình
  • C. Tính trừu tượng
  • D. Tính kế thừa đơn

Câu 3: Trong OOP, "tính đóng gói" (encapsulation) 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, tăng tính toàn vẹn dữ liệu.
  • B. Cho phép tái sử dụng mã nguồn giữa các lớp khác nhau thông qua cơ chế kế thừa.
  • C. Giảm sự phức tạp của hệ thống bằng cách ẩn đi các chi tiết cài đặt phức tạp, chỉ hiển thị giao diện cần thiết.
  • D. Cho phép các đối tượng thuộc các lớp khác nhau có thể giao tiếp và tương tác với nhau một cách linh hoạt.

Câu 4: "Lớp" (Class) và "Đối tượng" (Object) có mối quan hệ như thế nào trong lập trình hướng đối tượng?

  • A. Lớp là một thể hiện cụ thể của đối tượng.
  • B. Đối tượng là một khái niệm trừu tượng hơn lớp.
  • C. Lớp và đối tượng là hai khái niệm hoàn toàn độc lập, không liên quan đến nhau.
  • D. Lớp là khuôn mẫu hoặc bản thiết kế, còn đối tượng là một thể hiện cụ thể (instance) được tạo ra từ lớp đó.

Câu 5: Trong lập trình hướng đối tượng, "tính trừu tượng" (abstraction) được thể hiện rõ nhất qua cơ chế nào?

  • A. Kế thừa đa cấp (Multilevel Inheritance)
  • B. Lớp trừu tượng và giao diện (Abstract classes and Interfaces)
  • C. Nạp chồng phương thức (Method Overloading)
  • D. Đa kế thừa (Multiple Inheritance)

Câu 6: Khi thiết kế một lớp `Vehicle` (Phương tiện giao thông) với các thuộc tính chung như `brand` (nhãn hiệu), `model` (mô hình), và phương thức `startEngine()` (khởi động động cơ), bạn đang áp dụng nguyên tắc OOP nào?

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

Câu 7: Giả sử bạn có một lớp `Shape` (Hình dạng) với phương thức `calculateArea()` (tính diện tích). Các lớp `Circle` (Hình tròn) và `Rectangle` (Hình chữ nhật) kế thừa từ `Shape` và cài đặt phương thức `calculateArea()` theo cách riêng của chúng. Đây là ví dụ về:

  • A. Tính đóng gói
  • B. Tính trừu tượng
  • C. Tính kế thừa
  • D. Tính đa hình (ghi đè phương thức - Method Overriding)

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

  • A. Hủy bỏ đối tượng khi nó không còn được sử dụng.
  • B. Khởi tạo trạng thái ban đầu cho đối tượng khi nó được tạo ra.
  • C. Định nghĩa các hành vi (phương thức) mà đối tượng có thể thực hiện.
  • D. Truy cập và sửa đổi các thuộc tính (dữ liệu) của đối tượng.

Câu 9: "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
  • B. Tính đa hình
  • C. Tính kế thừa
  • D. Tính trừu tượng

Câu 10: Chọn phát biểu đúng về "tính kế thừa" (inheritance) trong lập trình hướng đối tượng.

  • A. Cho phép lớp con (lớp dẫn xuất) kế thừa các thuộc tính và phương thức của lớp cha (lớp cơ sở), giúp tái sử dụng và mở rộng mã nguồn.
  • B. Đảm bảo rằng dữ liệu bên trong đối tượng được bảo vệ và không thể truy cập trực tiếp từ bên ngoài.
  • C. Cho phép một phương thức có thể có nhiều hình thức triển khai khác nhau tùy thuộc vào đối tượng gọi phương thức đó.
  • D. Giúp đơn giản hóa việc sử dụng đối tượng bằng cách ẩn đi các chi tiết phức tạp bên trong.

Câu 11: "Phương thức ảo" (virtual method) trong OOP thường được sử dụng để hỗ trợ tính năng nào?

  • A. Tính đóng gói
  • B. Tính đa hình động (Runtime Polymorphism)
  • C. Tính trừu tượng hóa dữ liệu
  • D. Tính kế thừa đa lớp

Câu 12: Điều gì sẽ xảy ra nếu bạn cố gắng truy cập trực tiếp vào một thuộc tính được khai báo là "private" của một đối tượng từ bên ngoài lớp chứa đối tượng đó?

  • A. Truy cập sẽ thành công và bạn có thể đọc/ghi giá trị thuộc tính.
  • B. Chương trình sẽ cảnh báo nhưng vẫn cho phép truy cập.
  • C. Trình biên dịch sẽ báo lỗi (compile-time error) hoặc chương trình sẽ gây ra ngoại lệ (runtime exception) tùy ngôn ngữ.
  • D. Thuộc tính private sẽ tự động chuyển thành "protected" và có thể truy cập từ lớp con.

Câu 13: Trong ngữ cảnh của OOP, thuật ngữ "message passing" (truyền thông điệp) thường liên quan đến hành động nào?

  • A. Gọi một phương thức (method) của một đối tượng.
  • B. Truyền dữ liệu giữa các đối tượng mà không thông qua phương thức.
  • C. Định nghĩa giao diện (interface) cho các lớp.
  • D. Tạo ra một bản sao (clone) của một đối tượng.

Câu 14: "Giao diện" (Interface) trong OOP khác với "lớp trừu tượng" (Abstract Class) ở điểm nào chính yếu?

  • A. Lớp trừu tượng có thể được khởi tạo trực tiếp, còn giao diện thì không.
  • B. Giao diện có thể chứa các phương thức đã được cài đặt (có thân), còn lớp trừu tượng thì không.
  • C. Lớp trừu tượng hỗ trợ đa kế thừa, còn giao diện thì chỉ hỗ trợ đơn kế thừa.
  • D. Giao diện chỉ định nghĩa các phương thức trừu tượng (abstract methods) mà không chứa bất kỳ thuộc tính hay cài đặt phương thức nào, trong khi lớp trừu tượng có thể chứa cả hai.

Câu 15: Khi nào bạn nên sử dụng "tính kế thừa" thay vì "tính hợp thành" (composition) trong thiết kế OOP?

  • A. Khi bạn muốn tái sử dụng mã nguồn mà không muốn tạo ra mối quan hệ "is-a" giữa các lớp.
  • B. Khi có mối quan hệ "is-a" (là một) rõ ràng giữa lớp cha và lớp con, và lớp con thực sự là một dạng đặc biệt của lớp cha.
  • C. Khi bạn muốn tạo ra sự linh hoạt cao trong việc thay đổi hành vi của đối tượng tại thời gian chạy.
  • D. Khi bạn muốn ẩn đi các chi tiết cài đặt phức tạp bên trong đối tượng.

Câu 16: "Đa kế thừa" (Multiple Inheritance) là gì và nó có thể gây ra vấn đề gì trong thiết kế OOP?

  • A. Một lớp có thể kế thừa từ nhiều lớp con.
  • B. Một lớp con có thể kế thừa từ một lớp cha duy nhất nhưng có thể thực thi nhiều giao diện.
  • C. Một lớp con có thể kế thừa trực tiếp từ nhiều lớp cha, nhưng có thể dẫn đến vấn đề "kim cương kế thừa" (diamond problem) khi có xung đột tên hoặc hành vi từ các lớp cha.
  • D. Khả năng một đối tượng có thể thuộc nhiều lớp khác nhau đồng thời.

Câu 17: Trong OOP, "phương thức tĩnh" (static method) khác với "phương thức thể hiện" (instance method) như thế nào?

  • A. Phương thức tĩnh có thể truy cập vào các thuộc tính thể hiện, còn phương thức thể hiện thì không.
  • B. Phương thức tĩnh được gọi thông qua đối tượng, còn phương thức thể hiện được gọi trực tiếp từ lớp.
  • C. Phương thức tĩnh có thể được ghi đè (overridden) trong lớp con, còn phương thức thể hiện thì không.
  • D. Phương thức tĩnh thuộc về lớp và được gọi trực tiếp thông qua tên lớp, không cần đối tượng cụ thể, trong khi phương thức thể hiện thuộc về đối tượng và cần được gọi thông qua một thể hiện của lớp.

Câu 18: "Overloading" (Nạp chồng) và "Overriding" (Ghi đè) là hai khái niệm khác nhau trong OOP. "Overloading" (nạp chồng) phương thức là gì?

  • A. Đị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ề danh sách tham số (số lượng, kiểu dữ liệu, hoặc thứ tự tham số).
  • B. Thay thế việc cài đặt một phương thức của lớp cha bằng một cài đặt khác trong lớp con.
  • C. Gọi một phương thức của lớp cha từ bên trong một phương thức của lớp con.
  • D. Tạo ra một bản sao của một đối tượng với các thuộc tính được thay đổi.

Câu 19: Cho đoạn code Java sau:

```java
public class Animal {
public void makeSound() {
System.out.println(

  • A. Tính đóng gói
  • B. Tính trừu tượng
  • C. Tính đa hình (thông qua ghi đè phương thức)
  • D. Tính kế thừa đơn

Câu 20: Trong OOP, "tính module hóa" (modularity) và "tính tái sử dụng" (reusability) thường được tăng cường thông qua cơ chế nào?

  • A. Tính đóng gói
  • B. Tính đa hình
  • C. Tính trừu tượng
  • D. Sử dụng lớp và đối tượng (Classes and Objects)

Câu 21: "Dependency Injection" (DI - Tiêm phụ thuộc) là một nguyên tắc thiết kế quan trọng trong OOP. DI giúp đạt được mục tiêu nào?

  • A. Tăng cường tính đóng gói dữ liệu trong đối tượng.
  • B. Giảm sự phụ thuộc lẫn nhau (coupling) giữa các thành phần, tăng tính linh hoạt và khả năng kiểm thử.
  • C. Hiện thực hóa tính đa hình động một cách hiệu quả hơn.
  • D. Đơn giản hóa việc quản lý bộ nhớ và vòng đời đối tượng.

Câu 22: "SOLID" là một tập hợp các nguyên tắc thiết kế hướng đối tượng. Chữ "L" trong SOLID đại diện cho nguyên tắc nào?

  • A. Single Responsibility Principle
  • B. Open/Closed Principle
  • C. Liskov Substitution Principle
  • D. Interface Segregation Principle

Câu 23: Nguyên tắc "Liskov Substitution Principle" (LSP) trong SOLID phát biểu điều gì?

  • A. Một lớp chỉ nên có một lý do duy nhất để thay đổi.
  • B. Các lớp nên mở để mở rộng nhưng đóng để sửa đổi.
  • C. Nhiều giao diện đặc thù tốt hơn là một giao diện lớn, đa năng.
  • D. Các đối tượng của lớp con có thể thay thế các đố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âu 24: Trong mô hình MVC (Model-View-Controller), các lớp "Model" (Mô hình) thường chịu trách nhiệm chính về điều gì?

  • A. Quản lý dữ liệu của ứng dụng, logic nghiệp vụ và tương tác với cơ sở dữ liệu.
  • B. Hiển thị dữ liệu cho người dùng và xử lý tương tác người dùng.
  • C. Điều phối tương tác giữa Model và View.
  • D. Định nghĩa giao diện người dùng và bố cục trang.

Câu 25: "Design Pattern" (Mẫu thiết kế) trong OOP là gì?

  • A. Một ngôn ngữ lập trình hướng đối tượng cụ thể.
  • B. Một giải pháp thiết kế tổng quát, có thể tái sử dụng cho các vấn đề thường gặp trong thiết kế phần mềm hướng đối tượng.
  • C. Một công cụ để tự động tạo mã nguồn OOP.
  • D. Một phương pháp kiểm thử phần mềm hướng đối tượng.

Câu 26: Mẫu thiết kế "Singleton" (Đơn thể) được sử dụng để giải quyết vấn đề gì?

  • A. Tạo ra các đối tượng phức tạp một cách tuần tự.
  • B. Đảm bảo rằng một lớp có nhiều thể hiện để tăng hiệu suất.
  • C. Đảm bảo rằng một lớp chỉ có duy nhất một thể hiện (instance) và cung cấp một điểm truy cập toàn cục đến thể hiện đó.
  • D. Phân tách giao diện của một lớp khỏi phần cài đặt của nó.

Câu 27: Mẫu thiết kế "Factory" (Nhà máy) thường được sử dụng khi nào?

  • A. Khi bạn muốn tạo đối tượng nhưng không muốn chỉ định lớp cụ thể của đối tượng được tạo ra tại thời điểm biên dịch.
  • B. Khi bạn muốn quản lý vòng đời của đối tượng một cách chặt chẽ.
  • C. Khi bạn muốn tạo ra các đối tượng phức tạp với nhiều thành phần con.
  • D. Khi bạn muốn thay đổi hành vi của đối tượng tại thời gian chạy.

Câu 28: Lợi ích chính của việc sử dụng "interface" (giao diện) trong lập trình hướng đối tượng là gì?

  • A. Tăng hiệu suất thực thi chương trình.
  • B. Tăng tính linh hoạt, giảm sự phụ thuộc giữa các lớp, và cho phép đa kế thừa giao diện (trong một số ngôn ngữ).
  • C. Đơn giản hóa việc quản lý bộ nhớ.
  • D. Bảo vệ dữ liệu tốt hơn so với lớp trừu tượng.

Câu 29: Kiểu quan hệ "has-a" (có một) giữa các lớp trong OOP thường được hiện thực hóa thông qua cơ chế nào?

  • A. Tính kế thừa
  • B. Tính đa hình
  • C. Tính hợp thành (Composition) hoặc tập hợp (Aggregation)
  • D. Tính trừu tượng

Câu 30: Trong thiết kế hướng đối tượng, nguyên tắc "Open/Closed Principle" (OCP) khuyến khích điều gì?

  • A. Các lớp nên có trách nhiệm duy nhất.
  • B. Giao diện nên được chia nhỏ, đặc thù cho từng client.
  • C. Các lớp con phải có khả năng thay thế hoàn toàn lớp cha.
  • D. Các lớp nên mở để mở rộng (open for extension) nhưng đóng để sửa đổi (closed for modification).

1 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

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ùng nhận một thông điệp?

2 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

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

```
class Animal {
phương_thức TiếngKêu() {
in_ra "Tiếng kêu chung chung"
}
}

class Dog kế_thừa Animal {
phương_thức TiếngKêu() {
in_ra "Gâu gâu!"
}
}

class Cat kế_thừa Animal {
phương_thức TiếngKêu() {
in_ra "Meo meo!"
}
}

đối_tượng myDog là Dog()
đối_tượng myCat là Cat()

myDog.TiếngKêu()
myCat.TiếngKêu()
```

Đoạn mã trên minh họa rõ nhất đặc điểm nào của lập trình hướng đối tượng?

3 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 3: Trong OOP, 'tính đóng gói' (encapsulation) mang lại lợi ích chính nào sau đây?

4 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 4: 'Lớp' (Class) và 'Đối tượng' (Object) có mối quan hệ như thế nào trong lập trình hướng đối tượng?

5 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 5: Trong lập trình hướng đối tượng, 'tính trừu tượng' (abstraction) được thể hiện rõ nhất qua cơ chế nào?

6 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 6: Khi thiết kế một lớp `Vehicle` (Phương tiện giao thông) với các thuộc tính chung như `brand` (nhãn hiệu), `model` (mô hình), và phương thức `startEngine()` (khởi động động cơ), bạn đang áp dụng nguyên tắc OOP nào?

7 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 7: Giả sử bạn có một lớp `Shape` (Hình dạng) với phương thức `calculateArea()` (tính diện tích). Các lớp `Circle` (Hình tròn) và `Rectangle` (Hình chữ nhật) kế thừa từ `Shape` và cài đặt phương thức `calculateArea()` theo cách riêng của chúng. Đây là ví dụ về:

8 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

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

9 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

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

10 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 10: Chọn phát biểu đúng về 'tính kế thừa' (inheritance) trong lập trình hướng đối tượng.

11 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 11: 'Phương thức ảo' (virtual method) trong OOP thường được sử dụng để hỗ trợ tính năng nào?

12 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 12: Điều gì sẽ xảy ra nếu bạn cố gắng truy cập trực tiếp vào một thuộc tính được khai báo là 'private' của một đối tượng từ bên ngoài lớp chứa đối tượng đó?

13 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 13: Trong ngữ cảnh của OOP, thuật ngữ 'message passing' (truyền thông điệp) thường liên quan đến hành động nào?

14 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 14: 'Giao diện' (Interface) trong OOP khác với 'lớp trừu tượng' (Abstract Class) ở điểm nào chính yếu?

15 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 15: Khi nào bạn nên sử dụng 'tính kế thừa' thay vì 'tính hợp thành' (composition) trong thiết kế OOP?

16 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 16: 'Đa kế thừa' (Multiple Inheritance) là gì và nó có thể gây ra vấn đề gì trong thiết kế OOP?

17 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 17: Trong OOP, 'phương thức tĩnh' (static method) khác với 'phương thức thể hiện' (instance method) như thế nào?

18 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 18: 'Overloading' (Nạp chồng) và 'Overriding' (Ghi đè) là hai khái niệm khác nhau trong OOP. 'Overloading' (nạp chồng) phương thức là gì?

19 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 19: Cho đoạn code Java sau:

```java
public class Animal {
public void makeSound() {
System.out.println("Generic animal sound");
}
}

public class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Woof!");
}
}

public class Main {
public static void main(String[] args) {
Animal myAnimal = new Dog();
myAnimal.makeSound();
}
}
```

Đoạn code trên minh họa khái niệm OOP nào?

20 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 20: Trong OOP, 'tính module hóa' (modularity) và 'tính tái sử dụng' (reusability) thường được tăng cường thông qua cơ chế nào?

21 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 21: 'Dependency Injection' (DI - Tiêm phụ thuộc) là một nguyên tắc thiết kế quan trọng trong OOP. DI giúp đạt được mục tiêu nào?

22 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

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

23 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 23: Nguyên tắc 'Liskov Substitution Principle' (LSP) trong SOLID phát biểu điều gì?

24 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 24: Trong mô hình MVC (Model-View-Controller), các lớp 'Model' (Mô hình) thường chịu trách nhiệm chính về điều gì?

25 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 25: 'Design Pattern' (Mẫu thiết kế) trong OOP là gì?

26 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 26: Mẫu thiết kế 'Singleton' (Đơn thể) được sử dụng để giải quyết vấn đề gì?

27 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 27: Mẫu thiết kế 'Factory' (Nhà máy) thường được sử dụng khi nào?

28 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 28: Lợi ích chính của việc sử dụng 'interface' (giao diện) trong lập trình hướng đối tượng là gì?

29 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 29: Kiểu quan hệ 'has-a' (có một) giữa các lớp trong OOP thường được hiện thực hóa thông qua cơ chế nào?

30 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 13

Câu 30: Trong thiết kế hướng đối tượng, nguyên tắc 'Open/Closed Principle' (OCP) khuyến khích điều gì?

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


Trắc nghiệm Lập trình hướng đối tượng

Trắc nghiệm Lập trình hướng đối tượng - Đề 14

Trắc nghiệm Lập trình hướng đối tượng - Đề 14 được biên soạn kỹ lưỡng với nhiều câu hỏi phong phú, hấp dẫn và bám sát nội dung chương trình học. Đây là cơ hội tuyệt vời để bạn ôn luyện, kiểm tra và nâng cao kiến thức một cách hiệu quả. Hãy cùng bắt đầu làm bài tập ngay hôm nay để tự tin hơn trên hành trình chinh phục môn học này!

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: Điều gì KHÔNG phải là lợi ích chính của lập trình hướng đối tượng?

  • A. Tăng tính tái sử dụng mã nguồn
  • B. Giảm độ phức tạp của chương trình
  • C. Tăng tốc độ thực thi chương trình
  • D. Nâng cao khả năng bảo trì và mở rộng

Câu 3: Trong ngữ cảnh 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 lớp kế thừa các thuộc tính và phương thức từ lớp khác.
  • B. Việc kết hợp dữ liệu (thuộc tính) và phương thức thao tác trên dữ liệu đó vào trong một đơn vị duy nhất (đối tượng).
  • C. Cơ chế cho phép các đối tượng thuộc các lớp khác nhau phản ứng khác nhau với cùng một thông điệp.
  • D. Quá trình ẩn giấu các chi tiết triển khai phức tạp và chỉ hiển thị giao diện cần thiết cho người dùng.

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

  • A. Lớp cơ sở (Base class)
  • B. Lớp dẫn xuất (Derived class)
  • C. Lớp con (Child class)
  • D. Lớp cha (Parent class)

Câu 5: Phương thức đặc biệt nào trong lớp tự động được gọi khi một đối tượng của lớp đó được tạo ra?

  • A. Phương thức hủy (Destructor)
  • B. Phương thức tĩnh (Static method)
  • C. Phương thức khởi tạo (Constructor)
  • D. Phương thức ảo (Virtual method)

Câu 6: Từ khóa nào thường được sử dụng để khai báo tính kế thừa trong nhiều ngôn ngữ lập trình hướng đối tượng?

  • A. import
  • B. extends hoặc :
  • C. class
  • D. new

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

  • A. Thuộc tính sẽ được trả về với giá trị mặc định.
  • B. Chương trình sẽ biên dịch nhưng có thể gây ra lỗi thời gian chạy.
  • C. Thuộc tính sẽ được tự động chuyển thành "public" để cho phép truy cập.
  • D. Trình biên dịch sẽ báo lỗi vì vi phạm nguyên tắc đóng gói.

Câu 8: Trong OOP, "đa hình" (polymorphism) mang lại lợi ích gì chính cho việc phát triển phần mềm?

  • A. Cho phép viết mã linh hoạt và dễ dàng mở rộng, thay đổi hành vi của đối tượng mà không cần sửa đổi nhiều nơi trong code.
  • B. Giúp che giấu thông tin và bảo vệ dữ liệu khỏi sự truy cập trái phép.
  • C. Tạo ra cấu trúc dữ liệu phức tạp để quản lý thông tin hiệu quả hơn.
  • D. Tăng cường hiệu suất thực thi của chương trình bằng cách tối ưu hóa sử dụng bộ nhớ.

Câu 9: Chọn phát biểu đúng về "lớp" và "đối tượng" trong lập trình hướng đối tượng.

  • A. Lớp là một thể hiện cụ thể của đối tượng.
  • B. Đối tượng là bản thiết kế, khuôn mẫu để tạo ra lớp.
  • C. Lớp là bản thiết kế, khuôn mẫu, còn đối tượng là thể hiện cụ thể của lớp.
  • D. Lớp và đối tượng là hai khái niệm hoàn toàn tương đồng và có thể thay thế cho nhau.

Câu 10: "Tính trừu tượng" (abstraction) trong OOP giúp giải quyết vấn đề gì trong lập trình?

  • A. Đảm bảo tính toàn vẹn dữ liệu bằng cách ngăn chặn truy cập trực tiếp.
  • B. Giảm độ phức tạp bằng cách chỉ tập trung vào những đặc điểm thiết yếu và ẩn đi các chi tiết không cần thiết.
  • C. Tăng khả năng tái sử dụng mã nguồn thông qua cơ chế kế thừa.
  • D. Cho phép các đối tượng khác nhau phản ứng khác nhau với cùng một phương thức.

Câu 11: Xét đoạn mã giả sau (pseudocode):

```
class HìnhDạng {
phương_thức TínhDiệnTích() {
// ...
}
}

class HìnhTròn kế thừa HìnhDạng {
phương_thức TínhDiệnTích() {
// Tính diện tích hình tròn
}
}

class HìnhVuông kế thừa HìnhDạng {
phương_thức TínhDiệnTích() {
// Tính diện tích hình vuông
}
}
```

Đoạn mã trên minh họa rõ nhất đặc điểm nào của OOP?

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

Câu 12: Trong lập trình hướng đối tượng, 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
  • B. Tính kế thừa
  • C. Tính đa hình
  • D. Tính trừu tượng

Câu 13: Giả sử bạn có một lớp `Xe` với phương thức `Chạy()`. Lớp `Ôtô` và `XeMáy` kế thừa từ lớp `Xe`. Nếu bạn gọi phương thức `Chạy()` trên một đối tượng thuộc lớp `Ôtô` và một đối tượng thuộc lớp `XeMáy`, bạn mong đợi điều gì về hành vi thực tế?

  • A. Cả hai đối tượng sẽ chạy theo cùng một cách, giống như lớp `Xe` định nghĩa.
  • B. Phương thức `Chạy()` chỉ có thể thực hiện được trên đối tượng lớp `Xe`, không phải lớp con.
  • C. Mỗi đối tượng có thể chạy theo cách riêng của nó (ví dụ, ôtô chạy bốn bánh, xe máy chạy hai bánh) mặc dù cùng được gọi là `Chạy()`.
  • D. Sẽ xảy ra lỗi vì phương thức `Chạy()` không được định nghĩa cụ thể trong lớp `Ôtô` và `XeMáy`.

Câu 14: Mục đích chính của việc sử dụng "interface" (giao diện) trong lập trình hướng đối tượng là gì?

  • A. Tăng cường tính đóng gói bằng cách ẩn giấu hoàn toàn dữ liệu.
  • B. Định nghĩa một tập hợp các phương thức mà các lớp khác phải thực hiện, đảm bảo tính nhất quán về hành vi.
  • C. Thay thế cho việc kế thừa đa lớp để tránh sự phức tạp.
  • D. Cải thiện hiệu suất chương trình bằng cách giảm thiểu việc tạo đối tượng.

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

  • A. Thuộc tính (attributes/fields)
  • B. Phương thức (methods/functions)
  • C. Constructor (hàm khởi tạo)
  • D. Module

Câu 16: Khi nào nên sử dụng "tính kế thừa" trong thiết kế hướng đối tượng?

  • A. 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.
  • B. Khi cần giới hạn quyền truy cập vào dữ liệu của đối tượng.
  • C. Khi muốn tạo ra các đối tượng độc lập hoàn toàn mà không có sự liên kết.
  • D. Khi cần tăng tốc độ thực thi chương trình.

Câu 17: So sánh lập trình hướng đối tượng và lập trình hướng thủ tục, điểm khác biệt lớn nhất là gì?

  • A. OOP sử dụng ít bộ nhớ hơn lập trình hướng thủ tục.
  • B. OOP tập trung vào "đối tượng" và dữ liệu, trong khi lập trình hướng thủ tục tập trung vào "hàm" và quy trình.
  • C. OOP chỉ phù hợp với các dự án lớn, còn lập trình hướng thủ tục phù hợp với dự án nhỏ.
  • D. OOP có thể chạy trên mọi hệ điều hành, còn lập trình hướng thủ tục thì không.

Câu 18: Trong UML (Unified Modeling Language), ký hiệu nào thường được sử dụng để biểu diễn mối quan hệ kế thừa giữa các lớp?

  • A. Đường thẳng liền nét
  • B. Đường thẳng chấm chấm
  • C. Mũi tên tam giác rỗng
  • D. Hình thoi đặc

Câu 19: "Tính trừu tượng hóa dữ liệu" (data abstraction) thường được thực hiện thông qua cơ chế nào trong OOP?

  • A. Kế thừa
  • B. Đa hình
  • C. Đóng gói
  • D. Lớp trừu tượng và giao diện

Câu 20: Trong một hệ thống quản lý thư viện, bạn có các lớp `Sách`, `ĐộcGiả`, `ThủThư`. Lớp nào có thể là lớp cha phù hợp cho cả `Sách` và `ĐộcGiả` nếu muốn áp dụng tính kế thừa (trong trường hợp này là không hợp lý)?

  • A. `ThủThư`
  • B. `ĐốiTượngThưViện`
  • C. `VậtPhẩm`
  • D. Không có lớp cha chung phù hợp vì `Sách` và `ĐộcGiả` không có quan hệ "is-a" trong ngữ cảnh này.

Câu 21: Phương thức nào trong lớp con được gọi khi bạn tạo một đối tượng của lớp con và gọi một phương thức được kế thừa từ lớp cha, nhưng lớp con đã ghi đè (override) phương thức đó?

  • A. Phương thức của lớp cha
  • B. Phương thức đã được ghi đè của lớp con
  • C. Cả hai phương thức của lớp cha và lớp con lần lượt
  • D. Tùy thuộc vào ngôn ngữ lập trình, có thể là phương thức lớp cha hoặc lớp con.

Câu 22: Để tạo ra một đối tượng từ một lớp, bạn cần sử dụng thao tác nào?

  • A. Kế thừa (Inheritance)
  • B. Đóng gói (Encapsulation)
  • C. Khởi tạo (Instantiation)
  • D. Trừu tượng (Abstraction)

Câu 23: Xét tình huống: Bạn có lớp `PhươngTiệnGiaoThông` và các lớp con `Ôtô`, `XeMáy`, `XeĐạp`. Bạn muốn tính "chi phí nhiên liệu" cho mỗi loại phương tiện. Cách thiết kế OOP tốt nhất để thực hiện điều này là gì?

  • A. Thêm một thuộc tính "loại phương tiện" vào lớp `PhươngTiệnGiaoThông` và sử dụng câu lệnh "if-else" để tính chi phí nhiên liệu dựa trên loại phương tiện.
  • B. Định nghĩa một phương thức trừu tượng `TínhChiPhiNhienLieu()` trong lớp `PhươngTiệnGiaoThông` và ghi đè phương thức này trong mỗi lớp con (`Ôtô`, `XeMáy`, `XeĐạp`).
  • C. Tạo một lớp riêng biệt `BộTínhChiPhiNhienLieu` và sử dụng nó để tính chi phí nhiên liệu cho từng đối tượng phương tiện.
  • D. Không cần sử dụng OOP, chỉ cần viết các hàm riêng biệt cho mỗi loại phương tiện để tính chi phí nhiên liệu.

Câu 24: Thuộc tính "protected" của một lớp có phạm vi truy cập như thế nào?

  • A. Chỉ có thể truy cập từ bên trong lớp đó.
  • B. Có thể truy cập từ bất kỳ đâu.
  • C. Có thể truy cập từ bên trong lớp đó và các lớp con của nó.
  • D. Chỉ có thể truy cập từ các lớp cùng gói (package).

Câu 25: Trong lập trình hướng đối tượng, "composition" (tổng hợp) và "aggregation" (kết hợp) là gì?

  • A. Hai loại kế thừa khác nhau.
  • B. Hai cách tạo đối tượng khác nhau.
  • C. Hai loại phương thức đa hình.
  • D. Hai loại quan hệ giữa các đối tượng, thể hiện sự sở hữu hoặc sử dụng lẫn nhau.

Câu 26: Khi nào nên sử dụng "composition" thay vì "aggregation" trong thiết kế lớp?

  • A. Khi các đối tượng có quan hệ "is-a".
  • B. Khi đối tượng chứa (container) chịu trách nhiệm hoàn toàn cho vòng đời của đối tượng thành phần (part), và đối tượng thành phần không thể tồn tại độc lập.
  • C. Khi muốn tái sử dụng mã nguồn từ lớp khác.
  • D. Khi không quan trọng việc đối tượng thành phần có tồn tại độc lập hay không.

Câu 27: "SOLID" là một tập hợp các nguyên tắc thiết kế quan trọng trong OOP. Chữ "L" trong SOLID đại diện cho nguyên tắc nào?

  • A. Single Responsibility Principle (Nguyên tắc đơn nhiệm)
  • B. Open/Closed Principle (Nguyên tắc đóng mở)
  • C. Liskov Substitution Principle (Nguyên tắc thay thế Liskov)
  • D. Interface Segregation Principle (Nguyên tắc phân tách giao diện)

Câu 28: Nguyên tắc "Liskov Substitution" (LSP) trong SOLID phát biểu điều gì?

  • A. 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.
  • B. Một lớp chỉ nên có một và chỉ một lý do để thay đổi.
  • C. Các lớp nên mở cho việc mở rộng nhưng đóng cho việc sửa đổi.
  • D. Nhiều giao diện đặc thù tốt hơn là một giao diện chung chung.

Câu 29: Mẫu thiết kế "Singleton" (Singleton pattern) trong OOP được sử dụng để làm gì?

  • A. Tạo ra nhiều đối tượng của một lớp để tăng hiệu suất.
  • B. Đảm bảo rằng một lớp chỉ có duy nhất một đối tượng (instance) được tạo ra và cung cấp một điểm truy cập toàn cục đến đối tượng đó.
  • C. Che giấu dữ liệu bên trong của đối tượng để bảo mật thông tin.
  • D. Cho phép một đối tượng thuộc nhiều lớp khác nhau.

Câu 30: Trong lập trình hướng đối tượng, "phương thức tĩnh" (static method) khác với "phương thức instance" (instance method) như thế nào?

  • A. Phương thức tĩnh 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ất cứ đâu.
  • B. Phương thức instance thuộc về lớp, còn phương thức tĩnh thuộc về đối tượng.
  • C. Phương thức tĩnh có thể truy cập các thuộc tính instance, còn phương thức instance thì không.
  • D. Phương thức tĩnh được gọi trực tiếp thông qua tên lớp, không cần tạo đối tượng, trong khi phương thức instance cần được gọi thông qua một đối tượng cụ thể của lớp.

1 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

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: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 2: Điều gì KHÔNG phải là lợi ích chính của lập trình hướng đối tượng?

3 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 3: Trong ngữ cảnh lập trình hướng đối tượng, 'tính đóng gói' (encapsulation) đề cập đến điều gì?

4 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

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

5 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 5: Phương thức đặc biệt nào trong lớp tự động được gọi khi một đối tượng của lớp đó được tạo ra?

6 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 6: Từ khóa nào thường được sử dụng để khai báo tính kế thừa trong nhiều ngôn ngữ lập trình hướng đối tượng?

7 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

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

8 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 8: Trong OOP, 'đa hình' (polymorphism) mang lại lợi ích gì chính cho việc phát triển phần mềm?

9 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 9: Chọn phát biểu đúng về 'lớp' và 'đối tượng' trong lập trình hướng đối tượng.

10 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 10: 'Tính trừu tượng' (abstraction) trong OOP giúp giải quyết vấn đề gì trong lập trình?

11 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 11: Xét đoạn mã giả sau (pseudocode):

```
class HìnhDạng {
phương_thức TínhDiệnTích() {
// ...
}
}

class HìnhTròn kế thừa HìnhDạng {
phương_thức TínhDiệnTích() {
// Tính diện tích hình tròn
}
}

class HìnhVuông kế thừa HìnhDạng {
phương_thức TínhDiệnTích() {
// Tính diện tích hình vuông
}
}
```

Đoạn mã trên minh họa rõ nhất đặc điểm nào của OOP?

12 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

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

13 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 13: Giả sử bạn có một lớp `Xe` với phương thức `Chạy()`. Lớp `Ôtô` và `XeMáy` kế thừa từ lớp `Xe`. Nếu bạn gọi phương thức `Chạy()` trên một đối tượng thuộc lớp `Ôtô` và một đối tượng thuộc lớp `XeMáy`, bạn mong đợi điều gì về hành vi thực tế?

14 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 14: Mục đích chính của việc sử dụng 'interface' (giao diện) trong lập trình hướng đối tượng là gì?

15 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

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

16 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 16: Khi nào nên sử dụng 'tính kế thừa' trong thiết kế hướng đối tượng?

17 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 17: So sánh lập trình hướng đối tượng và lập trình hướng thủ tục, điểm khác biệt lớn nhất là gì?

18 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 18: Trong UML (Unified Modeling Language), ký hiệu nào thường được sử dụng để biểu diễn mối quan hệ kế thừa giữa các lớp?

19 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 19: 'Tính trừu tượng hóa dữ liệu' (data abstraction) thường được thực hiện thông qua cơ chế nào trong OOP?

20 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 20: Trong một hệ thống quản lý thư viện, bạn có các lớp `Sách`, `ĐộcGiả`, `ThủThư`. Lớp nào có thể là lớp cha phù hợp cho cả `Sách` và `ĐộcGiả` nếu muốn áp dụng tính kế thừa (trong trường hợp này là không hợp lý)?

21 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 21: Phương thức nào trong lớp con được gọi khi bạn tạo một đối tượng của lớp con và gọi một phương thức được kế thừa từ lớp cha, nhưng lớp con đã ghi đè (override) phương thức đó?

22 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 22: Để tạo ra một đối tượng từ một lớp, bạn cần sử dụng thao tác nào?

23 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 23: Xét tình huống: Bạn có lớp `PhươngTiệnGiaoThông` và các lớp con `Ôtô`, `XeMáy`, `XeĐạp`. Bạn muốn tính 'chi phí nhiên liệu' cho mỗi loại phương tiện. Cách thiết kế OOP tốt nhất để thực hiện điều này là gì?

24 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 24: Thuộc tính 'protected' của một lớp có phạm vi truy cập như thế nào?

25 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 25: Trong lập trình hướng đối tượng, 'composition' (tổng hợp) và 'aggregation' (kết hợp) là gì?

26 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 26: Khi nào nên sử dụng 'composition' thay vì 'aggregation' trong thiết kế lớp?

27 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 27: 'SOLID' là một tập hợp các nguyên tắc thiết kế quan trọng trong OOP. Chữ 'L' trong SOLID đại diện cho nguyên tắc nào?

28 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 28: Nguyên tắc 'Liskov Substitution' (LSP) trong SOLID phát biểu điều gì?

29 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 29: Mẫu thiết kế 'Singleton' (Singleton pattern) trong OOP được sử dụng để làm gì?

30 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 14

Câu 30: Trong lập trình hướng đối tượng, 'phương thức tĩnh' (static method) khác với 'phương thức instance' (instance method) như thế nào?

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


Trắc nghiệm Lập trình hướng đối tượng

Trắc nghiệm Lập trình hướng đối tượng - Đề 15

Trắc nghiệm Lập trình hướng đối tượng - Đề 15 được biên soạn kỹ lưỡng với nhiều câu hỏi phong phú, hấp dẫn và bám sát nội dung chương trình học. Đây là cơ hội tuyệt vời để bạn ôn luyện, kiểm tra và nâng cao kiến thức một cách hiệu quả. Hãy cùng bắt đầu làm bài tập ngay hôm nay để tự tin hơn trên hành trình chinh phục môn học này!

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 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: Điều gì KHÔNG phải là lợi ích chính của việc sử dụng tính đóng gói (encapsulation) trong lập trình hướng đối tượng?

  • A. Giảm sự phụ thuộc lẫn nhau giữa các thành phần của chương trình.
  • B. Tăng cường khả năng bảo trì và tái sử dụng mã nguồn.
  • C. Tăng tốc độ thực thi chương trình do giảm thiểu truy cập bộ nhớ.
  • D. Bảo vệ dữ liệu của đối tượng khỏi sự truy cập và sửa đổi không mong muốn từ bên ngoài.

Câu 3: Cho đoạn mã giả định sau:

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

  • A. Không cần hiện thực lại, lớp `Dog` và `Cat` sẽ tự động kế thừa phương thức `Speak()` từ `Animal`.
  • B. Hiện thực lại phương thức `Speak()` trong cả `Dog` và `Cat` để mỗi lớp có tiếng kêu đặc trưng riêng.
  • C. Xóa phương thức `Speak()` khỏi lớp `Animal` và chỉ định nghĩa nó trong `Dog` và `Cat`.
  • D. Đổi tên phương thức `Speak()` trong `Dog` và `Cat` thành `DogSpeak()` và `CatSpeak()`.

Câu 4: Trong ngữ cảnh lập trình hướng đối tượng, "tính trừu tượng hóa" (abstraction) đạt được thông qua cơ chế nào là chủ yếu?

  • A. Sử dụng lớp trừu tượng (abstract class) và giao diện (interface).
  • B. Sử dụng tính đóng gói (encapsulation) để ẩn giấu dữ liệu.
  • C. Sử dụng tính kế thừa (inheritance) để tái sử dụng mã.
  • D. Sử dụng đa hình (polymorphism) để tạo ra nhiều hình thức đối tượng.

Câu 5: Điều gì là sự khác biệt chính giữa "lớp" (class) và "đối tượng" (object) trong lập trình hướng đối tượng?

  • A. Không có sự khác biệt, "lớp" và "đối tượng" là các thuật ngữ tương đương.
  • B. "Lớp" là một thể hiện cụ thể, còn "đối tượng" là định nghĩa trừu tượng.
  • C. "Lớp" là bản thiết kế hoặc khuôn mẫu, còn "đối tượng" là một thể hiện cụ thể của lớp.
  • D. "Đối tượng" chứa định nghĩa thuộc tính, còn "lớp" chứa định nghĩa phương thức.

Câu 6: Trong lập trình hướng đối tượng, "phương thức khởi tạo" (constructor) được sử dụng để làm gì?

  • A. Để hủy bỏ một đối tượng khi nó không còn được sử dụng.
  • B. Để khởi tạo trạng thái ban đầu của một đối tượng khi nó được tạo ra.
  • C. Để định nghĩa các hành vi (phương thức) của đối tượng.
  • D. Để khai báo kiểu dữ liệu của các thuộc tính của đối tượng.

Câu 7: Khi một lớp B kế thừa từ lớp A, điều gì xảy ra với các thuộc tính và phương thức "private" của lớp A?

  • A. Lớp B có thể truy cập và sử dụng trực tiếp các thuộc tính và phương thức "private" của lớp A.
  • B. Các thuộc tính và phương thức "private" của lớp A không được kế thừa sang lớp B.
  • C. Các thuộc tính và phương thức "private" của lớp A trở thành "public" trong lớp B.
  • D. Các thuộc tính và phương thức "private" của lớp A được kế thừa, nhưng chỉ có thể truy cập gián tiếp thông qua phương thức "public" hoặc "protected" của lớp A.

Câu 8: Mục đích chính của việc sử dụng "tính kế thừa" (inheritance) trong lập trình hướng đối tượng là gì?

  • A. Tái sử dụng mã nguồn và xây dựng hệ thống phân cấp các lớp.
  • B. Tăng tốc độ thực thi chương trình.
  • C. Giảm kích thước bộ nhớ sử dụng.
  • D. Đơn giản hóa việc gỡ lỗi chương trình.

Câu 9: Trong lập trình hướng đối tượng, "giao diện" (interface) khác với "lớp trừu tượng" (abstract class) như thế nào?

  • A. Giao diện có thể chứa hiện thực phương thức, còn lớp trừu tượng thì không.
  • B. Lớp trừu tượng hỗ trợ đa kế thừa, còn giao diện thì không.
  • C. Giao diện chỉ định nghĩa hành vi (phương thức) mà không hiện thực, còn lớp trừu tượng có thể chứa cả định nghĩa và hiện thực.
  • D. Không có sự khác biệt đáng kể giữa giao diện và lớp trừu tượng.

Câu 10: Cho tình huống: Bạn cần thiết kế các lớp cho các loại phương tiện giao thông (ô tô, xe máy, xe đạp). Tính kế thừa sẽ được áp dụng hiệu quả nhất như thế nào?

  • A. Tạo các lớp `Oto`, `Xemay`, `Xedap` hoàn toàn độc lập, không có lớp cha chung.
  • B. Tạo một lớp cha `Phuongtien` chứa các thuộc tính và phương thức chung, sau đó các lớp `Oto`, `Xemay`, `Xedap` kế thừa từ `Phuongtien`.
  • C. Tạo một lớp cho mỗi loại phương tiện, sau đó sao chép mã từ lớp này sang lớp khác để tái sử dụng.
  • D. Chỉ sử dụng một lớp duy nhất `Phuongtien` và thêm các thuộc tính đặc trưng cho từng loại phương tiện trực tiếp vào lớp này.

Câu 11: Trong lập trình hướng đối tượng, "đa hình" (polymorphism) mang lại lợi ích gì trong việc phát triển phần mềm?

  • A. Tăng cường tính bảo mật của dữ liệu.
  • B. Giảm thiểu số lượng dòng mã cần viết.
  • C. Tăng tốc độ biên dịch chương trình.
  • D. Tăng tính linh hoạt và khả năng mở rộng của chương trình, giảm sự phụ thuộc vào kiểu dữ liệu cụ thể.

Câu 12: Điều gì mô tả đúng nhất về mối quan hệ "is-a" trong lập trình hướng đối tượng?

  • A. Mối quan hệ giữa các đối tượng trong cùng một lớp.
  • B. Mối quan hệ kế thừa, trong đó một lớp con là một loại của lớp cha.
  • C. Mối quan hệ sở hữu, trong đó một đối tượng chứa các đối tượng khác.
  • D. Mối quan hệ sử dụng, trong đó một đối tượng sử dụng chức năng của đối tượng khác.

Câu 13: "Phương thức ảo" (virtual method) thường được sử dụng để hiện thực tính chất nào của lập trình hướng đối tượng?

  • 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 14: Trong lập trình hướng đối tượng, "tính trừu tượng" (abstraction) giúp nhà phát triển tập trung vào điều gì?

  • A. Những hành vi và đặc điểm quan trọng của đối tượng, bỏ qua các chi tiết cài đặt phức tạp.
  • B. Tất cả các chi tiết cài đặt của đối tượng, bao gồm cả những phần không quan trọng.
  • C. Cách đối tượng tương tác với bộ nhớ máy tính.
  • D. Cấu trúc dữ liệu nội bộ của đối tượng.

Câu 15: Điều gì KHÔNG phải là một nguyên tắc cơ bản của lập trình hướng đối tượng?

  • A. Tính đóng gói (Encapsulation)
  • B. Tính tuần tự (Sequentiality)
  • C. Tính kế thừa (Inheritance)
  • D. Tính đa hình (Polymorphism)

Câu 16: Khi nào nên sử dụng "đa kế thừa" (multiple inheritance) trong thiết kế hướng đối tượng?

  • A. Luôn luôn nên sử dụng đa kế thừa để tận dụng tối đa khả năng tái sử dụng mã.
  • B. Không bao giờ nên sử dụng đa kế thừa vì nó gây ra nhiều vấn đề phức tạp.
  • C. Khi một lớp con cần kết hợp hành vi và đặc điểm từ nhiều lớp cha khác nhau một cách hợp lý.
  • D. Khi muốn tạo ra một hệ thống phân cấp lớp phức tạp và sâu.

Câu 17: Trong lập trình hướng đối tượng, "phương thức tĩnh" (static method) khác với "phương thức thể hiện" (instance method) như thế nào?

  • A. Phương thức tĩnh thuộc về lớp và được gọi trực tiếp qua tên lớp, phương thức thể hiện thuộc về đối tượng và cần được gọi thông qua một thể hiện của lớp.
  • B. Phương thức tĩnh có thể truy cập các thuộc tính thể hiện, phương thức thể hiện thì không.
  • C. Phương thức tĩnh được gọi tự động khi đối tượng được tạo, phương thức thể hiện cần được gọi явно.
  • D. Không có sự khác biệt về cách gọi giữa phương thức tĩnh và phương thức thể hiện.

Câu 18: "Quan hệ hợp thành" (composition) trong lập trình hướng đối tượng thể hiện mối quan hệ nào giữa các đối tượng?

  • A. Mối quan hệ kế thừa giữa lớp cha và lớp con.
  • B. Mối quan hệ sử dụng tạm thời giữa hai đối tượng.
  • C. Mối quan hệ ngang hàng giữa các đối tượng cùng loại.
  • D. Mối quan hệ "has-a" mạnh mẽ, trong đó một đối tượng chứa các đối tượng khác như là thành phần không thể tách rời.

Câu 19: Điều gì là vai trò của "tính đóng gói" (encapsulation) trong việc bảo trì và phát triển phần mềm?

  • A. Giảm dung lượng bộ nhớ chương trình.
  • B. Giúp dễ dàng thay đổi cài đặt bên trong của một lớp mà không ảnh hưởng đến các phần khác của chương trình.
  • C. Tăng tốc độ thực thi của chương trình.
  • D. Đơn giản hóa quá trình kiểm thử phần mềm.

Câu 20: Cho đoạn mã giả định:

```
Class Shape {
public virtual function getArea() {
return 0;
}
}

Class Rectangle extends Shape {
private $width, $height;
public function __construct($w, $h) { ... }
public function getArea() {
return $this->width * $this->height;
}
}

Class Circle extends Shape {
private $radius;
public function __construct($r) { ... }
public function getArea() {
return pi() * $this->radius * $this->radius;
}
}
```
Đoạn mã này minh họa rõ nhất khái niệm OOP 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 21: Trong lập trình hướng đối tượng, "tham chiếu đối tượng" (object reference) thực chất là gì?

  • A. Bản thân đối tượng được lưu trữ trong biến.
  • B. Một biến lưu địa chỉ bộ nhớ nơi đối tượng được lưu trữ.
  • C. Một bản sao của đối tượng.
  • D. Tên định danh duy nhất của đối tượng trong chương trình.

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

  • A. Các lớp nên có một và chỉ một lý do để thay đổi.
  • B. Các lớp trừu tượng không nên phụ thuộc vào các lớp cụ thể.
  • C. Các lớp con phải có khả năng thay thế hoàn toàn cho lớp cha mà không làm thay đổi tính đúng đắn của chương trình.
  • D. Nên ưu tiên hợp thành hơn là kế thừa.

Câu 23: Điều gì 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. Tính tái sử dụng mã cao hơn.
  • B. Khả năng bảo trì và mở rộng tốt hơn.
  • C. Mô hình hóa thế giới thực tự nhiên và trực quan hơn.
  • D. Tốc độ thực thi chương trình nhanh hơn.

Câu 24: Trong lập trình hướng đối tượng, "phạm vi truy cập" (access modifier) "protected" có ý nghĩa gì?

  • A. Cho phép truy cập từ bất kỳ đâu bên ngoài lớp.
  • B. Cho phép truy cập từ bên trong lớp và các lớp con kế thừa.
  • C. Chỉ cho phép truy cập từ bên trong lớp hiện tại.
  • D. Không cho phép truy cập từ bất kỳ đâu, kể cả bên trong lớp.

Câu 25: "Nguyên tắc mở đóng" (Open/Closed Principle - OCP) trong SOLID khuyến khích điều gì?

  • A. Các lớp nên mở để mở rộng chức năng, nhưng đóng để sửa đổi mã nguồn hiện có.
  • B. Các lớp nên đóng hoàn toàn, không cho phép mở rộng hoặc sửa đổi.
  • C. Các lớp nên mở hoàn toàn để dễ dàng sửa đổi khi cần thiết.
  • D. Không có nguyên tắc nào về việc mở hay đóng lớp trong SOLID.

Câu 26: Trong lập trình hướng đối tượng, "đa hình tham số" (parametric polymorphism) thường được hiện thực thông qua cơ chế nào?

  • A. Kế thừa (Inheritance)
  • B. Giao diện (Interface)
  • C. Generic (Template)
  • D. Đóng gói (Encapsulation)

Câu 27: Điều gì mô tả đúng nhất về "tính kết hợp" (coupling) trong thiết kế hướng đối tượng?

  • A. Mức độ liên quan chặt chẽ giữa các thuộc tính và phương thức trong một lớp.
  • B. Mức độ phụ thuộc lẫn nhau giữa các lớp và module trong hệ thống.
  • C. Khả năng tái sử dụng mã nguồn giữa các lớp.
  • D. Sự tương đồng về chức năng giữa các lớp.

Câu 28: "Nguyên tắc đảo ngược phụ thuộc" (Dependency Inversion Principle - DIP) trong SOLID đề xuất điều gì?

  • A. Các module cấp cao nên phụ thuộc vào các module cấp thấp.
  • B. Các lớp cụ thể nên phụ thuộc vào các lớp trừu tượng.
  • C. Không nên có sự phụ thuộc giữa các module.
  • D. Các module cấp cao và cấp thấp đều nên phụ thuộc vào các trừu tượng (interface hoặc lớp trừu tượng).

Câu 29: Trong lập trình hướng đối tượng, "tính gắn kết" (cohesion) cao có nghĩa là gì?

  • A. Các lớp trong hệ thống phụ thuộc lẫn nhau mạnh mẽ.
  • B. Mã nguồn được phân tán rộng rãi trong nhiều lớp khác nhau.
  • C. Các thành phần bên trong một module (ví dụ: lớp) có liên quan chặt chẽ và cùng hướng tới một mục tiêu chung.
  • D. Hệ thống có nhiều module độc lập và ít liên kết với nhau.

Câu 30: Lựa chọn nào sau đây thể hiện mối quan hệ "has-a" trong lập trình hướng đối tượng?

  • A. Lớp "Sinh viên" kế thừa từ lớp "Người".
  • B. "Ô tô" có "Động cơ".
  • C. Lớp "Hình tròn" là một loại "Hình dạng".
  • D. Phương thức "Tính diện tích" được định nghĩa trong lớp "Hình học".

1 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

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 gọi cùng một phương thức?

2 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 2: Điều gì KHÔNG phải là lợi ích chính của việc sử dụng tính đóng gói (encapsulation) trong lập trình hướng đối tượng?

3 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 3: Cho đoạn mã giả định sau:

```
Class Animal {
public method Speak() {
print "Tiếng kêu chung của động vật";
}
}

Class Dog extends Animal {
// ...
}

Class Cat extends Animal {
// ...
}

```
Để thể hiện tính đa hình, bạn sẽ hiện thực phương thức `Speak()` trong lớp `Dog` và `Cat` như thế nào?

4 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 4: Trong ngữ cảnh lập trình hướng đối tượng, 'tính trừu tượng hóa' (abstraction) đạt được thông qua cơ chế nào là chủ yếu?

5 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 5: Điều gì là sự khác biệt chính giữa 'lớp' (class) và 'đối tượng' (object) trong lập trình hướng đối tượng?

6 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 6: Trong lập trình hướng đối tượng, 'phương thức khởi tạo' (constructor) được sử dụng để làm gì?

7 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 7: Khi một lớp B kế thừa từ lớp A, điều gì xảy ra với các thuộc tính và phương thức 'private' của lớp A?

8 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 8: Mục đích chính của việc sử dụng 'tính kế thừa' (inheritance) trong lập trình hướng đối tượng là gì?

9 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 9: Trong lập trình hướng đối tượng, 'giao diện' (interface) khác với 'lớp trừu tượng' (abstract class) như thế nào?

10 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 10: Cho tình huống: Bạn cần thiết kế các lớp cho các loại phương tiện giao thông (ô tô, xe máy, xe đạp). Tính kế thừa sẽ được áp dụng hiệu quả nhất như thế nào?

11 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 11: Trong lập trình hướng đối tượng, 'đa hình' (polymorphism) mang lại lợi ích gì trong việc phát triển phần mềm?

12 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 12: Điều gì mô tả đúng nhất về mối quan hệ 'is-a' trong lập trình hướng đối tượng?

13 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 13: 'Phương thức ảo' (virtual method) thường được sử dụng để hiện thực tính chất nào của lập trình hướng đối tượng?

14 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 14: Trong lập trình hướng đối tượng, 'tính trừu tượng' (abstraction) giúp nhà phát triển tập trung vào điều gì?

15 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 15: Điều gì KHÔNG phải là một nguyên tắc cơ bản của lập trình hướng đối tượng?

16 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 16: Khi nào nên sử dụng 'đa kế thừa' (multiple inheritance) trong thiết kế hướng đối tượng?

17 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 17: Trong lập trình hướng đối tượng, 'phương thức tĩnh' (static method) khác với 'phương thức thể hiện' (instance method) như thế nào?

18 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 18: 'Quan hệ hợp thành' (composition) trong lập trình hướng đối tượng thể hiện mối quan hệ nào giữa các đối tượng?

19 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 19: Điều gì là vai trò của 'tính đóng gói' (encapsulation) trong việc bảo trì và phát triển phần mềm?

20 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 20: Cho đoạn mã giả định:

```
Class Shape {
public virtual function getArea() {
return 0;
}
}

Class Rectangle extends Shape {
private $width, $height;
public function __construct($w, $h) { ... }
public function getArea() {
return $this->width * $this->height;
}
}

Class Circle extends Shape {
private $radius;
public function __construct($r) { ... }
public function getArea() {
return pi() * $this->radius * $this->radius;
}
}
```
Đoạn mã này minh họa rõ nhất khái niệm OOP nào?

21 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 21: Trong lập trình hướng đối tượng, 'tham chiếu đối tượng' (object reference) thực chất là gì?

22 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

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

23 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 23: Điều gì 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?

24 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 24: Trong lập trình hướng đối tượng, 'phạm vi truy cập' (access modifier) 'protected' có ý nghĩa gì?

25 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 25: 'Nguyên tắc mở đóng' (Open/Closed Principle - OCP) trong SOLID khuyến khích điều gì?

26 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 26: Trong lập trình hướng đối tượng, 'đa hình tham số' (parametric polymorphism) thường được hiện thực thông qua cơ chế nào?

27 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 27: Điều gì mô tả đúng nhất về 'tính kết hợp' (coupling) trong thiết kế hướng đối tượng?

28 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 28: 'Nguyên tắc đảo ngược phụ thuộc' (Dependency Inversion Principle - DIP) trong SOLID đề xuất điều gì?

29 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 29: Trong lập trình hướng đối tượng, 'tính gắn kết' (cohesion) cao có nghĩa là gì?

30 / 30

Category: Trắc nghiệm Lập trình hướng đối tượng

Tags: Bộ đề 15

Câu 30: Lựa chọn nào sau đây thể hiện mối quan hệ 'has-a' trong lập trình hướng đối tượng?

Viết một bình luận