Đề 2 – Đề 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

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

1. Trong lập trình hướng đối tượng, mục đích chính của việc sử dụng `unit testing` (kiểm thử đơn vị) là gì?

A. Kiểm tra toàn bộ hệ thống.
B. Kiểm tra các thành phần riêng lẻ của mã nguồn (ví dụ: các lớp và các phương thức) để đảm bảo rằng chúng hoạt động đúng như mong đợi.
C. Kiểm tra giao diện người dùng.
D. Kiểm tra hiệu suất của hệ thống.

2. Trong lập trình hướng đối tượng, `cohesion` (tính gắn kết) đề cập đến điều gì?

A. Mức độ liên quan giữa các lớp khác nhau trong một hệ thống.
B. Mức độ mà các phần tử bên trong một lớp có liên quan đến nhau và cùng hướng đến một mục tiêu chung.
C. Mức độ dễ dàng để thay đổi mã nguồn.
D. Mức độ hiệu quả của việc sử dụng bộ nhớ.

3. Trong lập trình hướng đối tượng, `refactoring` (tái cấu trúc) là gì?

A. Thêm chức năng mới vào mã nguồn.
B. Thay đổi cấu trúc bên trong của mã nguồn mà không thay đổi hành vi bên ngoài của nó.
C. Sửa lỗi trong mã nguồn.
D. Tối ưu hóa hiệu suất của mã nguồn.

4. Đâu là mục đích chính của việc sử dụng `design patterns` (mẫu thiết kế) trong lập trình hướng đối tượng?

A. Tăng tốc độ thực thi chương trình.
B. Giải quyết các vấn đề thiết kế phần mềm thường gặp một cách hiệu quả và đã được kiểm chứng.
C. Tối ưu hóa việc sử dụng bộ nhớ.
D. Đảm bảo tính bảo mật tuyệt đối cho ứng dụng.

5. Lợi ích chính của việc sử dụng `access modifiers` (công cụ sửa đổi truy cập) như `private`, `protected`, và `public` là gì?

A. Tăng tốc độ thực thi chương trình.
B. Kiểm soát quyền truy cập vào các thành viên của lớp, giúp bảo vệ dữ liệu và thực hiện tính đóng gói.
C. Giảm kích thước của mã nguồn.
D. Cho phép đa kế thừa.

6. Đặc điểm nào sau đây là quan trọng nhất của tính đóng gói (encapsulation) trong lập trình hướng đối tượng?

A. Cho phép các đối tượng thuộc các lớp khác nhau tương tác với nhau.
B. Giảm thiểu sự phụ thuộc giữa các lớp.
C. Ẩn giấu thông tin và bảo vệ dữ liệu của đối tượng khỏi sự truy cập trực tiếp từ bên ngoài.
D. Tăng tốc độ thực thi chương trình.

7. Khi nào nên sử dụng `abstract class` (lớp trừu tượng) 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 theo.
B. Khi bạn muốn cung cấp một số triển khai mặc định cho các phương thức.
C. Khi bạn muốn cho phép đa kế thừa.
D. Khi bạn muốn tăng tốc độ thực thi chương trình.

8. Trong lập trình hướng đối tượng, `singleton pattern` (mẫu singleton) được sử dụng để làm gì?

A. Tạo ra nhiều thể hiện của một lớp.
B. Đảm bảo rằng một lớp chỉ có một thể hiện duy nhất và cung cấp một điểm truy cập toàn cục đến thể hiện đó.
C. Tạo ra một lớp trừu tượng.
D. Tạo ra một interface.

9. Trong lập trình hướng đối tượng, `interface` (giao diện) khác với `abstract class` (lớp trừu tượng) như thế nào?

A. Interface có thể chứa thuộc tính, còn abstract class thì không.
B. Abstract class có thể chứa các phương thức đã được triển khai, còn interface thì không.
C. Interface cho phép đa kế thừa, còn abstract class thì không.
D. Abstract class định nghĩa kiểu dữ liệu, còn interface thì không.

10. Phương thức nào sau đây thường được sử dụng để giải phóng tài nguyên mà một đối tượng nắm giữ khi đối tượng đó không còn được sử dụng nữa?

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.

11. Trong lập trình hướng đối tượng, `coupling` (tính liên kết) đề cập đến điều gì?

A. Mức độ mà các phần tử bên trong một lớp có liên quan đến nhau.
B. Mức độ phụ thuộc giữa các lớp khác nhau trong một hệ thống.
C. Mức độ dễ dàng để thay đổi mã nguồn.
D. Mức độ hiệu quả của việc sử dụng bộ nhớ.

12. Trong lập trình hướng đối tượng, `factory pattern` (mẫu factory) được sử dụng để làm gì?

A. Tạo ra các đối tượng một cách trực tiếp.
B. Định nghĩa một thuật toán theo cấu trúc.
C. Cung cấp một giao diện để 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.
D. Đảm bảo rằng một lớp chỉ có một thể hiện duy nhất.

13. Một `namespace` (không gian tên) được sử dụng để làm gì trong lập trình hướng đối tượng?

A. Tăng tốc độ thực thi chương trình.
B. Tổ chức mã nguồn thành các nhóm logic và tránh xung đột tên giữa các lớp và các thành phần khác.
C. Tối ưu hóa việc sử dụng bộ nhớ.
D. Đảm bảo tính bảo mật cho ứng dụng.

14. Trong lập trình hướng đối tượng, `association` (kết hợp) giữa hai lớp biểu thị điều gì?

A. Một lớp là một loại của lớp kia.
B. Một lớp chứa các đối tượng của lớp kia.
C. Một lớp sử dụng các đối tượng của lớp kia.
D. Một mối quan hệ mà trong đó các đối tượng của một lớp có liên quan đến các đối tượng của lớp khác.

15. Trong lập trình hướng đối tượng, `Liskov Substitution Principle` (Nguyên tắc thay thế Liskov) nói về điều gì?

A. Các lớp con phải có thể thay thế cho 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.
B. Mỗi lớp chỉ nên có một trách nhiệm duy nhất.
C. Các lớp nên mở để mở rộng, nhưng đóng để sửa đổi.
D. Các phụ thuộc nên được tiêm vào thay vì được tạo ra bên trong lớp.

16. Phương pháp nào sau đây giúp giảm sự phụ thuộc giữa các lớp trong lập trình hướng đối tượng?

A. Sử dụng kế thừa (inheritance) một cách rộng rãi.
B. Sử dụng các biến toàn cục.
C. Sử dụng interfaces (giao diện) và dependency injection (tiêm phụ thuộc).
D. Sử dụng các lớp tĩnh.

17. Trong lập trình hướng đối tượng, mục đích của việc sử dụng `SOLID principles` là gì?

A. Tăng tốc độ thực thi chương trình.
B. Thiết kế phần mềm dễ bảo trì, mở rộng và kiểm thử.
C. Tối ưu hóa việc sử dụng bộ nhớ.
D. Đảm bảo tính bảo mật tuyệt đối cho ứng dụng.

18. Trong lập trình hướng đối tượng, `decorator pattern` (mẫu decorator) được sử dụng để làm gì?

A. Thêm trách nhiệm cho một đối tượng một cách động.
B. Đảm bảo rằng một lớp chỉ có một thể hiện duy nhất.
C. Cung cấp một giao diện để 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.
D. Định nghĩa một thuật toán theo cấu trúc.

19. Trong lập trình hướng đối tượng, `tính đa hình` (polymorphism) đề cập đến khả năng nào?

A. Một đối tượng có thể thuộc nhiều lớp khác nhau.
B. Một lớp có thể có nhiều thuộc tính khác nhau.
C. Một phương thức có thể có nhiều tên khác nhau.
D. Một đối tượng có thể thể hiện nhiều hình thái khác nhau, tức là có thể được xem như là một thể hiện của nhiều lớp khác nhau.

20. Điều gì xảy ra khi một phương thức `virtual` (ảo) được gọi thông qua một con trỏ hoặc tham chiếu đến lớp cha, nhưng đối tượng thực tế là một thể hiện của lớp con?

A. Phương thức của lớp cha sẽ luôn được gọi.
B. Phương thức của lớp con sẽ được gọi (dynamic dispatch).
C. Một lỗi sẽ xảy ra.
D. Phương thức nào được gọi là không xác định.

21. Trong lập trình hướng đối tượng, `dependency injection` (tiêm phụ thuộc) là gì?

A. Một kỹ thuật để giảm sự phụ thuộc giữa các lớp bằng cách cung cấp các phụ thuộc cho một đối tượng thay vì để đối tượng tự tạo ra chúng.
B. Một kỹ thuật để tăng sự phụ thuộc giữa các lớp.
C. Một kỹ thuật để tối ưu hóa việc sử dụng bộ nhớ.
D. Một kỹ thuật để tăng tốc độ thực thi chương trình.

22. Khi nào nên sử dụng `composition` (hợp thành) thay vì `inheritance` (kế thừa) trong thiết kế hướng đối tượng?

A. Khi bạn muốn tái sử dụng mã nguồn từ một lớp khác.
B. Khi bạn muốn tạo ra một mối quan hệ `is-a` giữa hai lớp.
C. Khi bạn muốn tạo ra một mối quan hệ `has-a` mạnh mẽ, trong đó đối tượng thành phần không thể tồn tại nếu không có đối tượng chứa.
D. Khi bạn muốn tăng tốc độ thực thi chương trình.

23. Ưu điểm chính của việc sử dụng `encapsulation` (tính đóng gói) 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. Giảm sự phức tạp của mã nguồn bằng cách ẩn giấu chi tiết triển khai và bảo vệ dữ liệu khỏi truy cập không mong muốn.
C. Cho phép đa kế thừa.
D. Tối ưu hóa việc sử dụng bộ nhớ.

24. Sự khác biệt chính giữa `aggregation` (tập hợp) và `composition` (hợp thành) trong lập trình hướng đối tượng là gì?

A. Aggregation biểu thị mối quan hệ `has-a`, còn composition biểu thị mối quan hệ `is-a`.
B. Trong aggregation, đối tượng thành phần có thể tồn tại độc lập với đối tượng chứa, còn trong composition thì không.
C. Composition cho phép đa kế thừa, còn aggregation thì không.
D. Aggregation là một dạng đặc biệt của composition.

25. Điều gì KHÔNG phải là một lợi í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?

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 bảo mật của dữ liệu.
D. Dễ dàng mở rộng và bảo trì chương trình.

26. Trong lập trình hướng đối tượng, `Law of Demeter` (Luật Demeter) khuyến nghị điều gì?

A. Một đối tượng chỉ nên gọi các phương thức của chính nó, các đối tượng được tạo ra bởi chính nó, các đối tượng được truyền vào như là tham số, hoặc các đối tượng được giữ trong các biến instance của nó.
B. Mỗi lớp chỉ nên có một trách nhiệm duy nhất.
C. Các lớp nên mở để mở rộng, nhưng đóng để sửa đổi.
D. Các phụ thuộc nên được tiêm vào thay vì được tạo ra bên trong lớp.

27. Trong ngữ cảnh của lập trình hướng đối tượng, `lớp trừu tượng` (abstract class) là gì?

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

28. Trong lập trình hướng đối tượng, `covariance` (hiệp biến) và `contravariance` (phản biến) liên quan đến điều gì?

A. Cách các tham số của phương thức được truyền vào.
B. Cách các kiểu trả về và tham số của phương thức thay đổi trong quá trình kế thừa.
C. Cách các thuộc tính của lớp được khởi tạo.
D. Cách các đối tượng được tạo ra.

29. Trong lập trình hướng đối tượng, `observer pattern` (mẫu observer) được sử dụng để làm gì?

A. Định nghĩa một thuật toán theo cấu trúc.
B. Đảm bảo rằng một lớp chỉ có một thể hiện duy nhất.
C. Xác định một sự phụ thuộc một-nhiều giữa các đối tượng để khi một đối tượng thay đổi trạng thái, tất cả các đối tượng phụ thuộc của nó đều được thông báo và cập nhật tự động.
D. Cung cấp một giao diện để 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.

30. Trong lập trình hướng đối tượng, `method overriding` (ghi đè phương thức) là gì?

A. Việc tạo ra một phương thức mới trong một lớp con có cùng tên và kiểu trả về với một phương thức trong lớp cha.
B. Việc thay đổi tên của một phương thức trong một lớp.
C. Việc ẩn một phương thức trong lớp cha.
D. Việc gọi một phương thức từ một lớp khác.

1 / 30

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

Tags: Bộ đề 2

1. Trong lập trình hướng đối tượng, mục đích chính của việc sử dụng 'unit testing' (kiểm thử đơn vị) là gì?

2 / 30

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

Tags: Bộ đề 2

2. Trong lập trình hướng đối tượng, 'cohesion' (tính gắn kết) đề cập đến điều gì?

3 / 30

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

Tags: Bộ đề 2

3. Trong lập trình hướng đối tượng, 'refactoring' (tái cấu trúc) là gì?

4 / 30

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

Tags: Bộ đề 2

4. Đâu là mục đích chính của việc sử dụng 'design patterns' (mẫu thiết kế) trong lập trình hướng đối tượng?

5 / 30

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

Tags: Bộ đề 2

5. Lợi ích chính của việc sử dụng 'access modifiers' (công cụ sửa đổi truy cập) như 'private', 'protected', và 'public' là gì?

6 / 30

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

Tags: Bộ đề 2

6. Đặc điểm nào sau đây là quan trọng nhất của tính đóng gói (encapsulation) trong lập trình hướng đối tượng?

7 / 30

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

Tags: Bộ đề 2

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

8 / 30

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

Tags: Bộ đề 2

8. Trong lập trình hướng đối tượng, 'singleton pattern' (mẫu singleton) được sử dụng để làm gì?

9 / 30

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

Tags: Bộ đề 2

9. Trong lập trình hướng đối tượng, 'interface' (giao diện) khác với 'abstract class' (lớp trừu tượng) như thế nào?

10 / 30

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

Tags: Bộ đề 2

10. Phương thức nào sau đây thường được sử dụng để giải phóng tài nguyên mà một đối tượng nắm giữ khi đối tượng đó không còn được sử dụng nữa?

11 / 30

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

Tags: Bộ đề 2

11. Trong lập trình hướng đối tượng, 'coupling' (tính liên kết) đề cập đến điều gì?

12 / 30

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

Tags: Bộ đề 2

12. Trong lập trình hướng đối tượng, 'factory pattern' (mẫu factory) được sử dụng để làm gì?

13 / 30

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

Tags: Bộ đề 2

13. Một 'namespace' (không gian tên) được sử dụng để làm gì trong lập trình hướng đối tượng?

14 / 30

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

Tags: Bộ đề 2

14. Trong lập trình hướng đối tượng, 'association' (kết hợp) giữa hai lớp biểu thị điều gì?

15 / 30

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

Tags: Bộ đề 2

15. Trong lập trình hướng đối tượng, 'Liskov Substitution Principle' (Nguyên tắc thay thế Liskov) nói về điều gì?

16 / 30

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

Tags: Bộ đề 2

16. Phương pháp nào sau đây giúp giảm sự phụ thuộc giữa các lớp trong lập trình hướng đối tượng?

17 / 30

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

Tags: Bộ đề 2

17. Trong lập trình hướng đối tượng, mục đích của việc sử dụng 'SOLID principles' là gì?

18 / 30

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

Tags: Bộ đề 2

18. Trong lập trình hướng đối tượng, 'decorator pattern' (mẫu decorator) được sử dụng để làm gì?

19 / 30

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

Tags: Bộ đề 2

19. Trong lập trình hướng đối tượng, 'tính đa hình' (polymorphism) đề cập đến khả năng nào?

20 / 30

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

Tags: Bộ đề 2

20. Điều gì xảy ra khi một phương thức 'virtual' (ảo) được gọi thông qua một con trỏ hoặc tham chiếu đến lớp cha, nhưng đối tượng thực tế là một thể hiện của lớp con?

21 / 30

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

Tags: Bộ đề 2

21. Trong lập trình hướng đối tượng, 'dependency injection' (tiêm phụ thuộc) là gì?

22 / 30

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

Tags: Bộ đề 2

22. Khi nào nên sử dụng 'composition' (hợp thành) thay vì 'inheritance' (kế thừa) trong thiết kế hướng đối tượng?

23 / 30

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

Tags: Bộ đề 2

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

24 / 30

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

Tags: Bộ đề 2

24. Sự khác biệt chính giữa 'aggregation' (tập hợp) và 'composition' (hợp thành) trong lập trình hướng đối tượng là gì?

25 / 30

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

Tags: Bộ đề 2

25. Điều gì KHÔNG phải là một lợi í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?

26 / 30

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

Tags: Bộ đề 2

26. Trong lập trình hướng đối tượng, 'Law of Demeter' (Luật Demeter) khuyến nghị điều gì?

27 / 30

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

Tags: Bộ đề 2

27. Trong ngữ cảnh của lập trình hướng đối tượng, 'lớp trừu tượng' (abstract class) là gì?

28 / 30

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

Tags: Bộ đề 2

28. Trong lập trình hướng đối tượng, 'covariance' (hiệp biến) và 'contravariance' (phản biến) liên quan đến điều gì?

29 / 30

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

Tags: Bộ đề 2

29. Trong lập trình hướng đối tượng, 'observer pattern' (mẫu observer) được sử dụng để làm gì?

30 / 30

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

Tags: Bộ đề 2

30. Trong lập trình hướng đối tượng, 'method overriding' (ghi đè phương thức) là gì?