1. Trong lập trình hướng đối tượng, 'lớp′ (class) đóng vai trò như thế nào?
A. Là một thể hiện cụ thể của đối tượng
B. Là một khuôn mẫu hoặc bản thiết kế cho các đối tượng
C. Là một hành động mà đối tượng có thể thực hiện
D. Là một giá trị dữ liệu của đối tượng
2. Trong lập trình hướng đối tượng, 'thuộc tính′ (attribute) của một đối tượng là gì?
A. Một hành động mà đối tượng có thể thực hiện
B. Một đặc điểm hoặc trạng thái của đối tượng
C. Một cách để che giấu dữ liệu của đối tượng
D. Một bản thiết kế cho các đối tượng
3. Điều gì KHÔNG phải là lợi í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?
A. 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ính linh hoạt và mở rộng
D. Tăng tính độc lập giữa các đối tượng
4. Trong lập trình hướng đối tượng, một 'đối tượng′ (object) KHÔNG phải là gì?
A. Một thể hiện cụ thể của một lớp
B. Một thực thể có trạng thái và hành vi
C. Một bản thiết kế cho các đối tượng
D. Một đơn vị cơ bản của chương trình OOP
5. Điều gì KHÔNG phải là một lợi ích của lập trình hướng đối tượng?
A. Tăng khả năng tái sử dụng mã
B. Giảm độ phức tạp trong quản lý dự án lớn
C. Tăng tốc độ thực thi chương trình
D. Nâng cao tính bảo trì và mở rộng của phần mềm
6. Mục đích của việc sử dụng 'tính trừu tượng′ (abstraction) trong lập trình hướng đối tượng là gì?
A. Tăng tính phức tạp của chương trình
B. Che giấu sự phức tạp và chỉ hiển thị những thông tin cần thiết
C. Giảm khả năng tái sử dụng mã nguồn
D. Tăng sự phụ thuộc giữa các đối tượng
7. Trong lập trình hướng đối tượng, 'phương thức′ (method) là gì?
A. Một biến lưu trữ dữ liệu 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 để che giấu dữ liệu của đối tượng
D. Một bản thiết kế cho các đối tượng
8. Trong lập trình hướng đối tượng, 'lớp trừu tượng′ (abstract class) được sử dụng khi nào?
A. Khi muốn tạo ra các đối tượng cụ thể
B. Khi muốn định nghĩa một bản thiết kế chung cho các lớp con, nhưng không muốn lớp cha có thể được khởi tạo trực tiếp
C. Khi muốn tăng tốc độ thực thi chương trình
D. Khi muốn giới hạn số lượng đối tượng được tạo ra
9. Thuật ngữ nào sau đây mô tả quá trình tạo ra một lớp mới từ một lớp đã tồn tại, kế thừa các thuộc tính và phương thức của lớp cũ?
A. Đóng gói (Encapsulation)
B. Trừu tượng (Abstraction)
C. Kế thừa (Inheritance)
D. Đa hình (Polymorphism)
10. Trong ngữ cảnh lập trình hướng đối tượng, 'thông điệp′ (message) thường được hiểu là gì?
A. Dữ liệu được truyền giữa các đối tượng
B. Một lời gọi phương thức đến một đối tượng
C. Một biến toàn cục được chia sẻ giữa các đối tượng
D. Một sự kiện do người dùng tạo ra
11. Phương pháp nào sau đây KHÔNG phải là một cách để hiện thực hóa tính đa hình trong lập trình hướng đối tượng?
A. Ghi đè phương thức (Method overriding)
B. Nạp chồng phương thức (Method overloading)
C. Sử dụng con trỏ (Pointers)
D. Sử dụng giao diện (Interfaces)
12. Khái niệm 'nạp chồng phương thức′ (method overloading) trong lập trình hướng đối tượng thể hiện tính đa hình nào?
A. Đa hình thời gian chạy (Runtime polymorphism)
B. Đa hình thời gian biên dịch (Compile-time polymorphism)
C. Đa hình tham số (Parametric polymorphism)
D. Đa hình ép kiểu (Coercion polymorphism)
13. Mối quan hệ 'is-a′ trong lập trình hướng đối tượng thường được thể hiện thông qua cơ chế nào?
A. Tính đóng gói (Encapsulation)
B. Tính kế thừa (Inheritance)
C. Tính đa hình (Polymorphism)
D. Tính trừu tượng (Abstraction)
14. Lợi ích chính của việc sử dụng giao diện (interface) trong lập trình hướng đối tượng là gì?
A. Tăng hiệu suất chương trình
B. Cho phép đa kế thừa hành vi
C. Giảm thiểu sự phụ thuộc giữa các lớp
D. Tự động quản lý bộ nhớ
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 (OOP)?
A. Tính tuần tự (Sequence)
B. Tính đóng gói (Encapsulation)
C. Tính kế thừa (Inheritance)
D. Tính đa hình (Polymorphism)
16. Trong lập trình hướng đối tượng, 'phương thức ảo′ (virtual method) được sử dụng chủ yếu để hỗ trợ tính năng nào?
A. Tính đóng gói (Encapsulation)
B. Tính đa hình thời gian chạy (Runtime polymorphism)
C. Tính kế thừa (Inheritance)
D. Tính trừu tượng (Abstraction)
17. Phương pháp nào sau đây KHÔNG phải là cơ chế chính để đạt được tính trừu tượng trong lập trình hướng đối tượng?
A. Lớp trừu tượng (Abstract class)
B. Giao diện (Interface)
C. Tính kế thừa (Inheritance)
D. Tính đóng gói (Encapsulation)
18. Trong lập trình hướng đối tượng, 'tính đóng gói′ (encapsulation) nhằm mục đích chính là gì?
A. Tăng tốc độ thực thi chương trình
B. Giảm thiểu sử dụng bộ nhớ
C. Che giấu thông tin và bảo vệ dữ liệu
D. Cho phép đa kế thừa
19. Khi nào nên sử dụng 'lớp trừu tượng′ (abstract class) thay vì 'giao diện′ (interface) trong thiết kế hướng đối tượng?
A. Khi chỉ muốn định nghĩa hành vi mà không cần cung cấp bất kỳ hiện thực nào
B. Khi muốn cung cấp một số hiện thực chung (phương thức không trừu tượng) cho các lớp con kế thừa, bên cạnh các phương thức trừu tượng
C. Khi muốn đạt được đa kế thừa hành vi
D. Khi muốn tăng tốc độ thực thi chương trình
20. Trong lập trình hướng đối tượng, 'đa hình′ (polymorphism) KHÔNG bao gồm loại nào sau đây?
A. Đa hình thời gian biên dịch (Compile-time polymorphism)
B. Đa hình thời gian chạy (Runtime polymorphism)
C. Đa hình tĩnh (Static polymorphism)
D. Đa hình cấu trúc (Structural polymorphism)
21. Khái niệm nào sau đây của lập trình hướng đối tượng cho phép một đối tượng thuộc lớp con có thể hành xử khác đi so với đối tượng thuộc lớp cha khi cùng nhận một thông điệp?
A. Tính đóng gói (Encapsulation)
B. Tính trừu tượng (Abstraction)
C. Tính đa hình (Polymorphism)
D. Tính kế thừa (Inheritance)
22. Phương thức khởi tạo (constructor) trong lập trình hướng đối tượng được sử dụng để làm gì?
A. Giải phóng bộ nhớ khi đối tượng 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 phép toán số học trên đối tượng
D. Định nghĩa hành vi của đối tượng
23. Phương thức hủy (destructor) trong lập trình hướng đối tượ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 đối tượng bị hủy
C. Thực hiện các phép toán logic trên đối tượng
D. Định nghĩa thuộc tính của đối tượng
24. Trong lập trình hướng đối tượng, khái niệm 'tính trừu tượng′ (abstraction) liên quan mật thiết đến việc nào sau đây?
A. Quản lý bộ nhớ
B. Che giấu thông tin thực hiện phức tạp
C. Tối ưu hóa hiệu suất thuật toán
D. Kiểm soát truy cập dữ liệu
25. Điều gì KHÔNG phải là một loại quan hệ giữa các lớp trong lập trình hướng đối tượng?
A. Quan hệ kế thừa (Inheritance)
B. Quan hệ hợp thành (Composition)
C. Quan hệ tuần tự (Sequential)
D. Quan hệ tập hợp (Aggregation)
26. Trong lập trình hướng đối tượng, 'tính trừu tượng hóa dữ liệu′ (data abstraction) tập trung vào điều gì?
A. Chi tiết cài đặt thuật toán
B. Cách thức dữ liệu được lưu trữ trên bộ nhớ
C. Kiểu dữ liệu và các thao tác có thể thực hiện trên dữ liệu đó
D. Tối ưu hóa hiệu suất truy cập dữ liệu
27. Trong lập trình hướng đối tượng, '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 cha trực tiếp
B. Một lớp kế thừa từ một lớp cha, lớp cha này lại kế thừa từ một lớp cha khác, tạo thành một chuỗi kế thừa
C. Một lớp vừa là lớp cha vừa là lớp con
D. Một lớp không kế thừa từ bất kỳ lớp nào
28. Ưu điểm chính của việc sử dụng 'tính đóng gói′ (encapsulation) trong bảo trì phần mềm là gì?
A. Tăng tốc độ biên dịch
B. Giảm kích thước file chương trình
C. Thay đổi bên trong lớp ít ảnh hưởng đến các phần khác của chương trình
D. Cho phép đa kế thừa dễ dàng hơn
29. Trong lập trình hướng đối tượng, mối quan hệ 'has-a′ (có một) thường được thể hiện thông qua cơ chế nào?
A. Tính kế thừa (Inheritance)
B. Tính đóng gói (Encapsulation)
C. Tính hợp thành (Composition) hoặc tập hợp (Aggregation)
D. Tính đa hình (Polymorphism)
30. Kiểu quan hệ nào thể hiện sự phụ thuộc mạnh mẽ, trong đó đối tượng 'con′ không thể tồn tại nếu không có đối tượng 'cha′?
A. Quan hệ tập hợp (Aggregation)
B. Quan hệ hợp thành (Composition)
C. Quan hệ kế thừa (Inheritance)
D. Quan hệ liên kết (Association)