Đề 10 – Đề thi, câu hỏi trắc nghiệm online 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é!!!


Lập trình hướng đối tượng

Đề 10 - Đề thi, câu hỏi trắc nghiệm online Lập trình hướng đối tượng

1. Trong OOP, `interface` (giao diện) là gì?

A. Một lớp trừu tượng chỉ chứa các phương thức trừu tượng (abstract methods).
B. Một lớp cụ thể có thể được khởi tạo.
C. Một cách để ẩn giấu dữ liệu bên trong một đối tượng.
D. Một cách để tạo ra các đối tượng có nhiều hình dạng khác nhau.

2. Từ khóa nào thường được sử dụng để chỉ đối tượng hiện tại trong một phương thức của lớp?

A. parent
B. base
C. this
D. self

3. Mục đích chính của việc sử dụng `design pattern` (mẫu thiết kế) là gì?

A. Tăng độ phức tạp của code.
B. Giảm khả năng tái sử dụng code.
C. Cung cấp các giải pháp đã được chứng minh cho các vấn đề thiết kế thường gặp, giúp tăng tính tái sử dụng, khả năng bảo trì và mở rộng của code.
D. Che giấu các chi tiết triển khai phức tạp.

4. Kỹ thuật nào cho phép bạn thêm hành vi mới vào một lớp hiện có mà không cần sửa đổi chính lớp đó?

A. Kế thừa (Inheritance)
B. Đa hình (Polymorphism)
C. Thành phần (Composition)
D. Mở rộng (Extension)

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

A. Tối đa hóa số lượng thuộc tính trong mỗi lớp.
B. Tối đa hóa số lượng phương thức trong mỗi lớp.
C. Đảm bảo mỗi lớp có một trách nhiệm duy nhất.
D. Sử dụng càng nhiều kế thừa càng tốt.

6. Sự khác biệt chính giữa `tổng hợp` (aggregation) và `thành phần` (composition) trong OOP là gì?

A. Tổng hợp là một dạng của kế thừa, trong khi thành phần là một dạng của đa hình.
B. Trong tổng hợp, các đối tượng thành phần có thể tồn tại độc lập với đối tượng chứa, trong khi trong thành phần, các đối tượng thành phần không thể tồn tại nếu đối tượng chứa bị hủy.
C. Tổng hợp chỉ áp dụng cho các kiểu dữ liệu nguyên thủy, trong khi thành phần áp dụng cho các đối tượng phức tạp.
D. Không có sự khác biệt nào, cả hai đều là các khái niệm tương đương.

7. Mục đích của `Factory pattern` (mẫu Factory) là gì?

A. Định nghĩa một thuật toán sắp xếp.
B. Tạo ra các đối tượng mà không cần chỉ định lớp cụ thể của đối tượng sẽ được tạo.
C. Đảm bảo rằng chỉ có một thể hiện duy nhất của một lớp được tạo ra.
D. Che giấu các chi tiết triển khai phức tạp.

8. Trong lập trình hướng đối tượng, `design pattern` (mẫu thiết kế) là gì?

A. Một giải pháp đã được chứng minh cho một vấn đề thiết kế thường gặp.
B. Một cách để che giấu các chi tiết triển khai phức tạp.
C. Một cách để tạo ra các đối tượng có nhiều hình dạng khác nhau.
D. Một cách để tăng hiệu suất của chương trình.

9. Khi nào nên sử dụng `Singleton pattern` (mẫu Singleton)?

A. Khi bạn muốn tạo ra nhiều thể hiện của một lớp.
B. Khi bạn muốn đảm bảo rằng chỉ có một thể hiện duy nhất của một lớp được tạo ra.
C. Khi bạn muốn che giấu các chi tiết triển khai phức tạp.
D. Khi bạn muốn tạo ra các đối tượng có nhiều hình dạng khác nhau.

10. Nguyên tắc `Dependency Inversion Principle` (DIP) trong SOLID khuyến khích điều gì?

A. Các module cấp cao không nên phụ thuộc vào các module cấp thấp, cả hai nên phụ thuộc vào các abstraction.
B. Mỗi lớp chỉ nên có một trách nhiệm duy nhất.
C. Phần mềm nên mở để mở rộng, nhưng đóng để sửa đổi.
D. Nhiều interface chuyên biệt tốt hơn là một interface đa năng.

11. Điều gì xảy ra khi một phương thức trong lớp con có cùng tên và kiểu tham số với một phương thức trong lớp cha?

A. Phương thức trong lớp cha sẽ bị xóa.
B. Phương thức trong lớp con sẽ bị bỏ qua.
C. Phương thức trong lớp con ghi đè (override) phương thức trong lớp cha.
D. Lỗi biên dịch sẽ xảy ra.

12. Đặc điểm nào sau đây KHÔNG phải là một lợi ích chính của lập trình hướng đối tượng (OOP)?

A. Tính đóng gói (Encapsulation)
B. Tính trừu tượng (Abstraction)
C. Tính phức tạp hóa code
D. Tính kế thừa (Inheritance)

13. Trong OOP, `lớp` (class) là gì?

A. Một thể hiện (instance) cụ thể của một đối tượng.
B. Một khuôn mẫu hoặc bản thiết kế để tạo ra các đối tượng.
C. Một biến (variable) toàn cục.
D. Một hàm (function) đặc biệt.

14. Nguyên tắc `Liskov Substitution Principle` (LSP) trong SOLID nói về điều gì?

A. Mỗi lớp chỉ nên có một trách nhiệm duy nhất.
B. Các thực thể của một lớp cha phải có thể thay thế được bằng các thực thể của lớp con mà không làm thay đổi tính đúng đắn của chương trình.
C. Phần mềm nên mở để mở rộng, nhưng đóng để sửa đổi.
D. Nhiều interface chuyên biệt tốt hơn là một interface đa năng.

15. Phương pháp tiếp cận lập trình hướng đối tượng tập trung vào điều gì?

A. Các hàm và thủ tục.
B. Dữ liệu và các thao tác trên dữ liệu đó.
C. Cấu trúc dữ liệu.
D. Luồng điều khiển của chương trình.

16. Phương thức nào được gọi tự động khi một đối tượng được tạo ra trong hầu hết các ngôn ngữ lập trình hướng đối tượng?

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

17. Ví dụ nào sau đây KHÔNG phải là một `design pattern` (mẫu thiết kế) phổ biến?

A. Singleton
B. Factory
C. Bubble Sort
D. Observer

18. Sự khác biệt giữa `overloading` (quá tải) và `overriding` (ghi đè) phương thức trong OOP là gì?

A. Overloading cho phép định nghĩa nhiều phương thức cùng tên trong một lớp với các tham số khác nhau, trong khi overriding cho phép lớp con ghi đè một phương thức của lớp cha.
B. Overriding cho phép định nghĩa nhiều phương thức cùng tên trong một lớp với các tham số khác nhau, trong khi overloading cho phép lớp con ghi đè một phương thức của lớp cha.
C. Overloading chỉ áp dụng cho các lớp trừu tượng, trong khi overriding chỉ áp dụng cho các lớp cụ thể.
D. Không có sự khác biệt nào, cả hai đều là các khái niệm tương đương.

19. Một nhược điểm tiềm ẩn của việc sử dụng `đa kế thừa` (multiple inheritance) là gì?

A. Giảm tính linh hoạt của code.
B. Tăng độ phức tạp của code và có thể dẫn đến vấn đề `kim cương kế thừa` (diamond problem).
C. Giảm khả năng tái sử dụng code.
D. Che giấu các chi tiết triển khai phức tạp.

20. Tính đóng gói (Encapsulation) trong OOP có nghĩa là gì?

A. Ẩn giấu thông tin và hành vi bên trong một đối tượng, chỉ cho phép truy cập thông qua các phương thức được định nghĩa.
B. Khả năng một lớp có thể kế thừa từ nhiều lớp khác.
C. Khả năng một đối tượng có thể có nhiều hình dạng khác nhau.
D. Chia nhỏ một vấn đề lớn thành các vấn đề nhỏ hơn.

21. Trong lập trình hướng đối tượng, `tính trừu tượng` (abstraction) là gì?

A. Che giấu các chi tiết triển khai phức tạp và chỉ hiển thị những thông tin cần thiết.
B. Khả năng một lớp có thể kế thừa từ nhiều lớp khác.
C. Khả năng một đối tượng có thể có nhiều hình dạng khác nhau.
D. Chia nhỏ một vấn đề lớn thành các vấn đề nhỏ hơn.

22. Khái niệm nào trong OOP cho phép các đối tượng khác nhau phản ứng khác nhau đối vớ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 trừu tượng (Abstraction)
D. Tính đa hình (Polymorphism)

23. Lợi ích chính của việc sử dụng `interface` (giao diện) trong OOP là gì?

A. Cho phép một lớp kế thừa từ nhiều lớp khác.
B. Cho phép các đối tượng có nhiều hình dạng khác nhau.
C. Định nghĩa một hợp đồng mà các lớp phải tuân thủ, giúp tăng tính linh hoạt và khả năng thay thế.
D. Che giấu các chi tiết triển khai phức tạp.

24. Trong OOP, `phương thức ảo` (virtual method) là gì?

A. Một phương thức không có thân.
B. Một phương thức có thể được ghi đè (override) trong lớp con.
C. Một phương thức chỉ có thể được gọi từ bên trong lớp.
D. Một phương thức được gọi tự động khi một đối tượng được tạo ra.

25. 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 kế thừa các thuộc tính và phương thức từ lớp cha?

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

26. 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ừ một lớp duy nhất.
B. Một lớp kế thừa từ nhiều lớp khác.
C. Một đối tượng có nhiều hình dạng khác nhau.
D. Một cách để che giấu các chi tiết triển khai phức tạp.

27. Loại quan hệ nào thể hiện mối liên kết lỏng lẻo giữa các lớp, trong đó một lớp sử dụng chức năng của lớp khác nhưng không phụ thuộc chặt chẽ vào nó?

A. Kế thừa (Inheritance)
B. Tổng hợp (Aggregation)
C. Kết hợp (Association)
D. Thành phần (Composition)

28. Trong lập trình hướng đối tượng, `đối tượng` (object) là gì?

A. Một bản thiết kế của một thực thể.
B. Một kiểu dữ liệu nguyên thủy.
C. Một thể hiện (instance) của một lớp.
D. Một hàm (function) hoặc thủ tục (procedure).

29. Nguyên tắc SOLID là gì trong lập trình hướng đối tượng?

A. Một tập hợp các quy tắc về đặt tên biến và phương thức.
B. Một tập hợp các nguyên tắc thiết kế giúp tạo ra các hệ thống linh hoạt, dễ bảo trì và mở rộng.
C. Một tập hợp các thuật toán sắp xếp dữ liệu.
D. Một tập hợp các kỹ thuật che giấu thông tin.

30. Khi nào nên sử dụng `lớp trừu tượng` (abstract class) thay vì `interface` (giao diện)?

A. Khi bạn muốn định nghĩa một hợp đồng mà các lớp phải tuân thủ.
B. Khi bạn muốn cho phép một lớp kế thừa từ nhiều lớp khác.
C. Khi bạn muốn cung cấp một số triển khai mặc định cho các phương thức.
D. Khi bạn muốn che giấu các chi tiết triển khai phức tạp.

1 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

1. Trong OOP, 'interface' (giao diện) là gì?

2 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

2. Từ khóa nào thường được sử dụng để chỉ đối tượng hiện tại trong một phương thức của lớp?

3 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

3. Mục đích chính của việc sử dụng 'design pattern' (mẫu thiết kế) là gì?

4 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

4. Kỹ thuật nào cho phép bạn thêm hành vi mới vào một lớp hiện có mà không cần sửa đổi chính lớp đó?

5 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

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

6 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

6. Sự khác biệt chính giữa 'tổng hợp' (aggregation) và 'thành phần' (composition) trong OOP là gì?

7 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

7. Mục đích của 'Factory pattern' (mẫu Factory) là gì?

8 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

8. Trong lập trình hướng đối tượng, 'design pattern' (mẫu thiết kế) là gì?

9 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

9. Khi nào nên sử dụng 'Singleton pattern' (mẫu Singleton)?

10 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

10. Nguyên tắc 'Dependency Inversion Principle' (DIP) trong SOLID khuyến khích điều gì?

11 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

11. Điều gì xảy ra khi một phương thức trong lớp con có cùng tên và kiểu tham số với một phương thức trong lớp cha?

12 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

12. Đặc điểm nào sau đây KHÔNG phải là một lợi ích chính của lập trình hướng đối tượng (OOP)?

13 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

13. Trong OOP, 'lớp' (class) là gì?

14 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

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

15 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

15. Phương pháp tiếp cận lập trình hướng đối tượng tập trung vào điều gì?

16 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

16. Phương thức nào được gọi tự động khi một đối tượng được tạo ra trong hầu hết các ngôn ngữ lập trình hướng đối tượng?

17 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

17. Ví dụ nào sau đây KHÔNG phải là một 'design pattern' (mẫu thiết kế) phổ biến?

18 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

18. Sự khác biệt giữa 'overloading' (quá tải) và 'overriding' (ghi đè) phương thức trong OOP là gì?

19 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

19. Một nhược điểm tiềm ẩn của việc sử dụng 'đa kế thừa' (multiple inheritance) là gì?

20 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

20. Tính đóng gói (Encapsulation) trong OOP có nghĩa là gì?

21 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

21. Trong lập trình hướng đối tượng, 'tính trừu tượng' (abstraction) là gì?

22 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

22. Khái niệm nào trong OOP cho phép các đối tượng khác nhau phản ứng khác nhau đối với cùng một phương thức?

23 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

23. Lợi ích chính của việc sử dụng 'interface' (giao diện) trong OOP là gì?

24 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

24. Trong OOP, 'phương thức ảo' (virtual method) là gì?

25 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

25. 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 kế thừa các thuộc tính và phương thức từ lớp cha?

26 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

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

27 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

27. Loại quan hệ nào thể hiện mối liên kết lỏng lẻo giữa các lớp, trong đó một lớp sử dụng chức năng của lớp khác nhưng không phụ thuộc chặt chẽ vào nó?

28 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

28. Trong lập trình hướng đối tượng, 'đối tượng' (object) là gì?

29 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

29. Nguyên tắc SOLID là gì trong lập trình hướng đối tượng?

30 / 30

Category: Lập trình hướng đối tượng

Tags: Bộ đề 10

30. Khi nào nên sử dụng 'lớp trừu tượng' (abstract class) thay vì 'interface' (giao diện)?