Đề 6 – Bài tập, đề thi 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

Đề 6 - Bài tập, đề thi trắc nghiệm online Lập trình hướng đối tượng

1. Phương thức khởi tạo (constructor) trong lớp được sử dụng để làm gì?

A. Xóa đối tượng khi nó không còn cần thiết
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 phép tính toán trên đối tượng
D. Truy cập dữ liệu bên trong đối tượng

2. Phương thức hủy (destructor) trong lập trình hướng đối tượng thường được sử dụng để làm gì?

A. Khởi tạo đố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. Thực hiện các hành động trên đối tượng
D. Ẩn dữ liệu của đối tượng

3. Quan hệ 'kết hợp′ (association) giữa các lớp trong OOP biểu thị điều gì?

A. Quan hệ 'là một loại′ (is-a)
B. Quan hệ 'có một′ (has-a) yếu, các đối tượng có thể tồn tại độc lập
C. Quan hệ 'có một′ (has-a) mạnh, đối tượng chứa kiểm soát vòng đời của đối tượng được chứa
D. Quan hệ phụ thuộc mạnh mẽ, thay đổi ở một lớp luôn ảnh hưởng đến lớp kia

4. Mục đích chính của việc sử dụng 'tính đóng gói′ (encapsulation) là gì?

A. Tăng tốc độ thực thi chương trình
B. Giảm sự phức tạp của mã nguồn
C. Bảo vệ dữ liệu của đối tượng khỏi bị truy cập và sửa đổi không mong muốn
D. Cho phép kế thừa giữa các lớp

5. Khái niệm 'composition over inheritance′ (hợp thành hơn kế thừa) trong OOP khuyến khích điều gì?

A. Luôn sử dụng kế thừa thay vì hợp thành
B. Sử dụng hợp thành (tạo đối tượng từ các đối tượng khác) để tái sử dụng mã nguồn thay vì kế thừa khi có thể
C. Chỉ sử dụng kế thừa đơn, tránh đa kế thừa và hợp thành
D. Hợp thành chỉ dùng cho lớp trừu tượng, kế thừa chỉ dùng cho lớp cụ thể

6. Khái niệm nào trong lập trình hướng đối tượng cho phép một đối tượng che giấu dữ liệu bên trong và chỉ tương tác với thế giới bên ngoài thông qua các phương thức công khai?

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)

7. Trong ngữ cảnh của SOLID principles, chữ 'L′ trong 'SOLID′ đại diện cho nguyên tắc nào?

A. Liskov Substitution Principle
B. Law of Demeter
C. Least Knowledge Principle
D. Loose Coupling Principle

8. Thuộc tính hoặc phương thức 'private′ trong một lớp có phạm vi truy cập như thế nào?

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

9. Trong lập trình hướng đối tượng, 'overloading′ (quá tải) và 'overriding′ (ghi đè) phương thức khác nhau như thế nào?

A. Overloading là ghi đè phương thức của lớp cha, overriding là tạo phương thức mới
B. Overloading là tạo nhiều phương thức cùng tên trong một lớp với tham số khác nhau, overriding là thay đổi cách triển khai phương thức của lớp cha trong lớp con
C. Overloading chỉ áp dụng cho phương thức khởi tạo, overriding cho phương thức thông thường
D. Không có sự khác biệt

10. Ưu điểm chính của việc sử dụng 'interfaces′ (giao diện) trong lập trình hướng đối tượng là gì?

A. Tăng tốc độ thực thi chương trình
B. Cho phép đa kế thừa hành vi một cách an toàn và rõ ràng, giảm sự phụ thuộc giữa các lớp
C. Giảm độ phức tạp của mã nguồn
D. Tự động quản lý bộ nhớ

11. Đối tượng (object) trong lập trình hướng đối tượng là gì?

A. Một bản thiết kế cho các lớp
B. Một thể hiện cụ thể của một lớp
C. Một phương thức trừu tượng
D. Một cơ chế đóng gói dữ liệu

12. Sự khác biệt chính giữa 'đa hình thời gian biên dịch′ (compile-time polymorphism) và 'đa hình thời gian chạy′ (runtime polymorphism) là gì?

A. Không có sự khác biệt
B. Thời gian biên dịch nhanh hơn thời gian chạy
C. Thời gian biên dịch được quyết định bởi trình biên dịch, thời gian chạy được quyết định khi chương trình chạy
D. Thời gian biên dịch chỉ áp dụng cho kế thừa, thời gian chạy áp dụng cho giao diện

13. Đ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. Dễ dàng bảo trì và mở rộng chương trình

14. Điều gì KHÔNG phải là một trong bốn trụ cột 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 đa hình (Polymorphism)
D. Tính module hóa (Modularity)

15. Phương pháp lập trình hướng đối tượng nào tập trung vào việc đơn giản hóa sự phức tạp bằng cách chỉ hiển thị các thông tin cần thiết và ẩn đi các chi tiết triển khai?

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

16. Trong lập trình hướng đối tượng, '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 (Inheritance)
B. Tính đa hình (Polymorphism)
C. Tính đóng gói (Encapsulation)
D. Tính trừu tượng (Abstraction)

17. Trong lập trình hướng đối tượng, 'lớp′ (class) đóng vai trò gì?

A. Một thể hiện cụ thể của đối tượng
B. Một bản thiết kế hoặc khuôn mẫu để tạo ra các đối tượng
C. Một phương thức để thực hiện đa hình
D. Một cơ chế để ẩn dữ liệu

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

A. Các lỗi lập trình thường gặp
B. Các giải pháp thiết kế đã được kiểm chứng cho các vấn đề thường gặp trong thiết kế phần mềm hướng đối tượng
C. Các thuật toán sắp xếp và tìm kiếm hiệu quả
D. Các quy tắc đặt tên biến và hàm

19. Mục đích của 'đóng gói′ (encapsulation) KHÔNG bao gồm:

A. Bảo vệ dữ liệu khỏi truy cập trực tiếp từ bên ngoài
B. Giảm sự phức tạp bằng cách ẩn chi tiết triển khai
C. Tăng tốc độ thực thi của chương trình
D. Cho phép thay đổi triển khai bên trong lớp mà không ảnh hưởng đến bên ngoài

20. Quan hệ 'tập hợp′ (aggregation) khác với 'hợp thành′ (composition) như thế nào?

A. Không có sự khác biệt
B. Tập hợp là quan hệ 'có một′ yếu, hợp thành là quan hệ 'là một loại′
C. Tập hợp là quan hệ 'có một′ yếu, hợp thành là quan hệ 'có một′ mạnh mẽ về mặt sở hữu và vòng đời
D. Tập hợp chỉ áp dụng cho lớp trừu tượng, hợp thành chỉ áp dụng cho giao diện

21. Phương thức 'getter′ và 'setter′ thường được sử dụng để làm gì trong lập trình hướng đối tượng?

A. Tăng tốc độ truy cập dữ liệu
B. Triển khai tính đa hình
C. Kiểm soát quyền truy cập và sửa đổi thuộc tính của đối tượng (thông qua tính đóng gói)
D. Tạo ra các đối tượng mới

22. Đa hình (polymorphism) trong lập trình hướng đối tượng có nghĩa là gì?

A. Một đối tượng có nhiều thuộc tính
B. Một phương thức có thể được gọi theo nhiều cách khác nhau hoặc trên các đối tượng khác nhau
C. Một lớp có nhiều lớp con
D. Dữ liệu được bảo vệ khỏi truy cập bên ngoài

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

A. Các lớp mức cao không nên phụ thuộc vào các lớp mức thấp, cả hai nên phụ thuộc vào trừu tượng.
B. Một lớp chỉ nên có một lý do duy nhất để thay đổi.
C. Các lớp con nên có thể thay thế cho lớp cha của chúng.
D. Giao diện hướng tới client cụ thể không nên ép client phải phụ thuộc vào các phương thức mà họ không sử dụng.

24. Khi nào nên sử dụng 'đa kế thừa′ (multiple inheritance) và khi nào nên ưu tiên 'kế thừa đơn′ (single inheritance) kết hợp với 'giao diện′ (interfaces)?

A. Đa kế thừa luôn tốt hơn vì nó tăng tính tái sử dụng mã
B. Kế thừa đơn và giao diện luôn tốt hơn vì tránh được vấn đề 'kim cương kế thừa′ và tăng tính rõ ràng
C. Đa kế thừa nên dùng khi cần kết hợp hành vi từ nhiều lớp cha không liên quan, kế thừa đơn và giao diện khi cần cấu trúc phân cấp rõ ràng và tránh xung đột
D. Không có sự khác biệt, cả hai đều có thể thay thế cho nhau

25. Điều gì xảy ra khi bạn tạo một đối tượng của một lớp trừu tượng (abstract class)?

A. Đối tượng được tạo ra bình thường và có thể sử dụng tất cả phương thức
B. Lỗi biên dịch hoặc lỗi thời gian chạy sẽ xảy ra vì không thể tạo đối tượng trực tiếp từ lớp trừu tượng
C. Đối tượng được tạo ra nhưng chỉ có thể sử dụng các phương thức đã được triển khai trong lớp trừu tượng
D. Một giao diện sẽ được tạo ra thay vì đối tượng

26. Phương thức 'static′ trong một lớp có đặc điểm gì?

A. Luôn phải được ghi đè trong lớp con
B. Thuộc về lớp chứ không thuộc về bất kỳ đối tượng cụ thể nào của lớp đó, có thể được gọi trực tiếp thông qua tên lớp
C. Chỉ có thể truy cập từ bên trong cùng một đối tượng
D. Không thể truy cập thuộc tính non-static của lớp

27. Trong lập trình hướng đối tượng, 'coupling′ (sự liên kết) và 'cohesion′ (tính gắn kết) có ý nghĩa gì và mối quan hệ giữa chúng như thế nào?

A. Coupling và cohesion là hai khái niệm giống nhau
B. Coupling đo mức độ liên kết giữa các lớp, cohesion đo mức độ liên kết bên trong một lớp. Nên hướng tới 'low coupling′ (liên kết thấp) và 'high cohesion′ (tính gắn kết cao)
C. Coupling nên cao, cohesion nên thấp để tăng tính tái sử dụng
D. Coupling và cohesion chỉ áp dụng cho lớp trừu tượng, không áp dụng cho lớp cụ thể

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

A. Giao diện luôn tốt hơn lớp trừu tượng
B. Lớp trừu tượng khi cần cung cấp một phần triển khai chung và trạng thái chung cho các lớp con, giao diện khi chỉ cần định nghĩa hợp đồng hành vi
C. Lớp trừu tượng khi muốn đa kế thừa, giao diện khi muốn kế thừa đơn
D. Không có sự khác biệt, cả hai có thể thay thế lẫn nhau

29. 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. Không có sự khác biệt
B. Giao diện có thể chứa các phương thức đã được triển khai, lớp trừu tượng thì không
C. Giao diện chỉ định nghĩa hành vi (phương thức), lớp trừu tượng có thể chứa cả trạng thái (thuộc tính) và hành vi (phương thức)
D. Lớp trừu tượng có thể kế thừa từ nhiều lớp khác, giao diện thì không

30. Tính kế thừa (inheritance) trong OOP cho phép điều gì?

A. Tạo ra các lớp độc lập hoàn toàn
B. Một lớp con (subclass) kế thừa các thuộc tính và phương thức từ lớp cha (superclass)
C. Ẩn dữ liệu bên trong đối tượng
D. Thực hiện các hành động khác nhau tùy thuộc vào kiểu dữ liệu

1 / 30

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

Tags: Bộ đề 7

1. Phương thức khởi tạo (constructor) trong lớp được sử dụng để làm gì?

2 / 30

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

Tags: Bộ đề 7

2. Phương thức hủy (destructor) trong lập trình hướng đối tượng thường được sử dụng để làm gì?

3 / 30

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

Tags: Bộ đề 7

3. Quan hệ `kết hợp′ (association) giữa các lớp trong OOP biểu thị điều gì?

4 / 30

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

Tags: Bộ đề 7

4. Mục đích chính của việc sử dụng `tính đóng gói′ (encapsulation) là gì?

5 / 30

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

Tags: Bộ đề 7

5. Khái niệm `composition over inheritance′ (hợp thành hơn kế thừa) trong OOP khuyến khích điều gì?

6 / 30

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

Tags: Bộ đề 7

6. Khái niệm nào trong lập trình hướng đối tượng cho phép một đối tượng che giấu dữ liệu bên trong và chỉ tương tác với thế giới bên ngoài thông qua các phương thức công khai?

7 / 30

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

Tags: Bộ đề 7

7. Trong ngữ cảnh của SOLID principles, chữ `L′ trong `SOLID′ đại diện cho nguyên tắc nào?

8 / 30

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

Tags: Bộ đề 7

8. Thuộc tính hoặc phương thức `private′ trong một lớp có phạm vi truy cập như thế nào?

9 / 30

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

Tags: Bộ đề 7

9. Trong lập trình hướng đối tượng, `overloading′ (quá tải) và `overriding′ (ghi đè) phương thức khác nhau như thế nào?

10 / 30

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

Tags: Bộ đề 7

10. Ưu điểm chính của việc sử dụng `interfaces′ (giao diện) trong lập trình hướng đối tượng là gì?

11 / 30

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

Tags: Bộ đề 7

11. Đối tượng (object) trong lập trình hướng đối tượng là gì?

12 / 30

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

Tags: Bộ đề 7

12. Sự khác biệt chính giữa `đa hình thời gian biên dịch′ (compile-time polymorphism) và `đa hình thời gian chạy′ (runtime polymorphism) là gì?

13 / 30

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

Tags: Bộ đề 7

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

14 / 30

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

Tags: Bộ đề 7

14. Điều gì KHÔNG phải là một trong bốn trụ cột chính của lập trình hướng đối tượng (OOP)?

15 / 30

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

Tags: Bộ đề 7

15. Phương pháp lập trình hướng đối tượng nào tập trung vào việc đơn giản hóa sự phức tạp bằng cách chỉ hiển thị các thông tin cần thiết và ẩn đi các chi tiết triển khai?

16 / 30

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

Tags: Bộ đề 7

16. Trong lập trình hướng đối tượng, `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?

17 / 30

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

Tags: Bộ đề 7

17. Trong lập trình hướng đối tượng, `lớp′ (class) đóng vai trò gì?

18 / 30

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

Tags: Bộ đề 7

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

19 / 30

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

Tags: Bộ đề 7

19. Mục đích của `đóng gói′ (encapsulation) KHÔNG bao gồm:

20 / 30

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

Tags: Bộ đề 7

20. Quan hệ `tập hợp′ (aggregation) khác với `hợp thành′ (composition) như thế nào?

21 / 30

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

Tags: Bộ đề 7

21. Phương thức `getter′ và `setter′ thường được sử dụng để làm gì trong lập trình hướng đối tượng?

22 / 30

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

Tags: Bộ đề 7

22. Đa hình (polymorphism) trong lập trình hướng đối tượng có nghĩa là gì?

23 / 30

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

Tags: Bộ đề 7

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

24 / 30

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

Tags: Bộ đề 7

24. Khi nào nên sử dụng `đa kế thừa′ (multiple inheritance) và khi nào nên ưu tiên `kế thừa đơn′ (single inheritance) kết hợp với `giao diện′ (interfaces)?

25 / 30

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

Tags: Bộ đề 7

25. Điều gì xảy ra khi bạn tạo một đối tượng của một lớp trừu tượng (abstract class)?

26 / 30

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

Tags: Bộ đề 7

26. Phương thức `static′ trong một lớp có đặc điểm gì?

27 / 30

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

Tags: Bộ đề 7

27. Trong lập trình hướng đối tượng, `coupling′ (sự liên kết) và `cohesion′ (tính gắn kết) có ý nghĩa gì và mối quan hệ giữa chúng như thế nào?

28 / 30

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

Tags: Bộ đề 7

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

29 / 30

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

Tags: Bộ đề 7

29. 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?

30 / 30

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

Tags: Bộ đề 7

30. Tính kế thừa (inheritance) trong OOP cho phép điều gì?