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

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


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

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

1. Nguyên tắc `Don`t Repeat Yourself` (DRY) có liên quan như thế nào đến lập trình hướng đối tượng?

A. DRY không liên quan đến OOP.
B. OOP giúp tuân thủ nguyên tắc DRY thông qua tính kế thừa và tái sử dụng mã.
C. OOP làm cho việc tuân thủ DRY trở nên khó khăn hơn.
D. DRY chỉ áp dụng cho lập trình hướng thủ tục.

2. Nguyên tắc SOLID nào khuyến khích `các lớp nên mở để mở rộng nhưng đóng để sửa đổi`?

A. Nguyên tắc trách nhiệm đơn lẻ (SRP)
B. Nguyên tắc mở đóng (OCP)
C. Nguyên tắc thay thế Liskov (LSP)
D. Nguyên tắc phân tách interface (ISP)

3. Mục đích chính của việc sử dụng `tính trừu tượng` (abstraction) trong OOP là gì?

A. Tăng tính phức tạp của chương trình
B. Ẩn giấu sự phức tạp và đơn giản hóa việc sử dụng
C. Giảm khả năng tái sử dụng mã nguồn
D. Tăng thời gian thực thi chương trình

4. Lỗi nào sau đây KHÔNG phải là lỗi phổ biến trong lập trình hướng đối tượng?

A. Lạm dụng kế thừa (Inheritance abuse).
B. Thiếu tính đóng gói (Lack of encapsulation).
C. Sử dụng goto không kiểm soát.
D. Coupling quá chặt chẽ (Tight coupling).

5. `Phương thức tĩnh` (static method) trong OOP có đặc điểm gì?

A. Luôn luôn cần đối tượng để gọi.
B. Có thể được gọi trực tiếp từ lớp mà không cần đối tượng.
C. Không thể truy cập các thuộc tính của đối tượng.
D. Chỉ được sử dụng trong lớp cha, không được kế thừa.

6. Trong OOP, thuật ngữ `dependency injection` (tiêm phụ thuộc) liên quan đến việc:

A. Tạo ra các đối tượng phụ thuộc lẫn nhau.
B. Cung cấp các phụ thuộc của một đối tượng từ bên ngoài thay vì tạo chúng bên trong đối tượng.
C. Ẩn giấu các phụ thuộc của đối tượng.
D. Giảm sự phụ thuộc giữa các lớp.

7. Khi thiết kế lớp, nên ưu tiên tính `cohesion` (liên kết) cao. Điều này có nghĩa là:

A. Lớp nên phụ thuộc nhiều vào các lớp khác.
B. Các thành phần bên trong lớp nên liên quan chặt chẽ với nhau và hướng tới một mục tiêu chung.
C. Lớp nên chứa càng nhiều chức năng càng tốt.
D. Lớp nên có ít phương thức và thuộc tính nhất có thể.

8. Phương thức trừu tượng (abstract method) trong một lớp trừu tượng (abstract class) có đặc điểm gì?

A. Phải được định nghĩa lại ở lớp con kế thừa
B. Không thể được gọi từ bên ngoài lớp
C. Chỉ được phép có một phương thức trừu tượng trong lớp
D. Tự động được thực thi khi đối tượng được tạo

9. Phát biểu nào sau đây so sánh đúng giữa lập trình hướng đối tượng và lập trình hướng thủ tục?

A. OOP tập trung vào thuật toán, thủ tục tập trung vào dữ liệu.
B. OOP tập trung vào dữ liệu và đối tượng, thủ tục tập trung vào quy trình và hàm.
C. OOP và thủ tục đều tập trung vào dữ liệu.
D. OOP và thủ tục đều tập trung vào quy trình.

10. Đ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ó trong OOP?

A. Thành công và trả về giá trị thuộc tính
B. Gây ra lỗi biên dịch hoặc lỗi thời gian chạy (tùy ngôn ngữ)
C. Tự động chuyển sang truy cập thuộc tính `protected`
D. Trả về giá trị mặc định của kiểu dữ liệu

11. Trong lập trình hướng đối tượng, `đa hình tham số` (parametric polymorphism) thường được hiện thực hóa thông qua cơ chế nào?

A. Kế thừa.
B. Interface.
C. Templates hoặc Generics.
D. Đóng gói.

12. Trong lập trình hướng đối tượng, `lớp` (class) được xem như là:

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 cho các đối tượng
C. Một phương thức để thực hiện tính đa hình
D. Một cách để ẩn giấu dữ liệu

13. Ví dụ nào sau đây thể hiện tốt nhất tính `đa hình` (polymorphism) trong OOP?

A. Một lớp `Hình tròn` kế thừa từ lớp `Hình học`.
B. Một phương thức `tính diện tích` có thể hoạt động khác nhau trên đối tượng `Hình tròn` và `Hình vuông`.
C. Ẩn giấu thuộc tính `bán kính` của lớp `Hình tròn`.
D. Tạo ra nhiều đối tượng `Hình tròn` khác nhau.

14. Trong lập trình hướng đối tượng, tính chất nào 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 kế thừa (Inheritance)
C. Tính đa hình (Polymorphism)
D. Tính trừu tượng (Abstraction)

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

A. Khi muốn đa kế thừa giao diện.
B. Khi muốn cung cấp một số phương thức đã được cài đặt sẵn cho các lớp con.
C. Khi chỉ muốn định nghĩa giao diện mà không cần cài đặt phương thức nào.
D. Khi muốn tăng tính bảo mật của chương trình.

16. Phương pháp lập trình hướng đối tượng tập trung vào yếu tố nào là chính?

A. Quy trình và thuật toán
B. Dữ liệu và đối tượng
C. Hàm và thủ tục
D. Cấu trúc điều khiển

17. Ngược lại với `overloading`, `overriding` (ghi đè) phương thức là gì?

A. Định nghĩa phương thức mới trong lớp con có cùng tên và tham số với phương thức ở lớp cha.
B. Định nghĩa nhiều phương thức cùng tên trong cùng một lớp.
C. Ẩn giấu phương thức của lớp cha.
D. Gọi một phương thức từ một lớp khác.

18. 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. Đóng gói
B. Kế thừa
C. Đa hình
D. Trừu tượng hóa

19. Phương thức `khởi tạo` (constructor) trong lập trình hướng đố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. Định nghĩa hành vi 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. Truy cập dữ liệu bên trong đối tượng

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

A. Tăng tính phức tạp của mã nguồn.
B. Cung cấp các giải pháp đã được kiểm chứng cho các vấn đề thiết kế thường gặp.
C. Hạn chế khả năng tái sử dụng mã nguồn.
D. Tăng thời gian phát triển phần mềm.

21. Khái niệm nào sau đây mô tả việc ẩn giấu thông tin chi tiết thực hiện bên trong của một đối tượng và chỉ cho phép truy cập thông qua các giao diện công khai?

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

22. Tính kế thừa (inheritance) trong OOP mang lại lợi ích nào sau đây?

A. Giảm tính linh hoạt của chương trình
B. Tăng sự phức tạp trong quản lý mã nguồn
C. Cho phép tái sử dụng mã nguồn và xây dựng hệ thống phân cấp lớp
D. Hạn chế khả năng mở rộng của chương trình

23. Trong OOP, `overloading` (quá tải) phương thức là gì?

A. Viết lại phương thức của lớp cha trong lớp con.
B. Định nghĩa nhiều phương thức cùng tên nhưng khác nhau về tham số trong cùng một lớp.
C. Ẩn giấu phương thức của lớp cha.
D. Gọi một phương thức từ một lớp khác.

24. Thuật ngữ `coupling` (kết nối) và `cohesion` (liên kết) trong OOP liên quan đến điều gì?

A. Hiệu suất và tốc độ thực thi chương trình.
B. Mức độ phụ thuộc giữa các lớp và sự liên quan bên trong một lớp.
C. Tính bảo mật và an toàn dữ liệu.
D. Khả năng tái sử dụng mã nguồn và tính kế thừa.

25. Trong OOP, `composition` (tổ hợp) khác với `inheritance` (kế thừa) như thế nào?

A. Composition thể hiện mối quan hệ `is-a`, inheritance thể hiện mối quan hệ `has-a`.
B. Composition thể hiện mối quan hệ `has-a` (có một), inheritance thể hiện mối quan hệ `is-a` (là một).
C. Composition cho phép tái sử dụng mã, inheritance thì không.
D. Inheritance linh hoạt hơn composition trong việc xây dựng hệ thống.

26. Trong OOP, `garbage collection` (thu gom rác) là quá trình:

A. Giải phóng bộ nhớ đã được cấp phát cho các đối tượng không còn được sử dụng.
B. Thu thập thông tin về lỗi trong chương trình.
C. Tối ưu hóa hiệu suất chương trình.
D. Quản lý phiên bản của mã nguồn.

27. Trong ngữ cảnh OOP, `message passing` (truyền thông điệp) đề cập đến điều gì?

A. Gửi email thông báo lỗi đến người dùng.
B. Cách các đối tượng tương tác với nhau bằng cách gọi phương thức.
C. Truyền dữ liệu giữa các module khác nhau của chương trình.
D. Cơ chế bảo mật để xác thực người dùng.

28. 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 duy nhất; không gây ra vấn đề.
B. Kế thừa từ nhiều lớp cha; có thể gây ra vấn đề `kim cương` (diamond problem).
C. Đa hình tại thời gian biên dịch; gây ra lỗi hiệu suất.
D. Đa hình tại thời gian chạy; không gây ra vấn đề.

29. Trong OOP, `đối tượng` (object) là gì?

A. Một bản thiết kế của lớp
B. Một kiểu dữ liệu nguyên thủy
C. Một thể hiện cụ thể của một lớp
D. Một phương thức đặc biệt

30. Chọn phát biểu đúng về `interface` (giao diện) trong OOP:

A. Interface có thể chứa các phương thức đã được cài đặt hoàn chỉnh.
B. Một lớp có thể kế thừa từ nhiều interface.
C. Interface có thể có thuộc tính trạng thái.
D. Interface là một lớp cụ thể, có thể tạo đối tượng trực tiếp.

1 / 30

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

Tags: Bộ đề 5

1. Nguyên tắc 'Don't Repeat Yourself' (DRY) có liên quan như thế nào đến lập trình hướng đối tượng?

2 / 30

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

Tags: Bộ đề 5

2. Nguyên tắc SOLID nào khuyến khích 'các lớp nên mở để mở rộng nhưng đóng để sửa đổi'?

3 / 30

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

Tags: Bộ đề 5

3. Mục đích chính của việc sử dụng 'tính trừu tượng' (abstraction) trong OOP là gì?

4 / 30

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

Tags: Bộ đề 5

4. Lỗi nào sau đây KHÔNG phải là lỗi phổ biến trong lập trình hướng đối tượng?

5 / 30

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

Tags: Bộ đề 5

5. 'Phương thức tĩnh' (static method) trong OOP có đặc điểm gì?

6 / 30

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

Tags: Bộ đề 5

6. Trong OOP, thuật ngữ 'dependency injection' (tiêm phụ thuộc) liên quan đến việc:

7 / 30

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

Tags: Bộ đề 5

7. Khi thiết kế lớp, nên ưu tiên tính 'cohesion' (liên kết) cao. Điều này có nghĩa là:

8 / 30

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

Tags: Bộ đề 5

8. Phương thức trừu tượng (abstract method) trong một lớp trừu tượng (abstract class) có đặc điểm gì?

9 / 30

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

Tags: Bộ đề 5

9. Phát biểu nào sau đây so sánh đúng giữa lập trình hướng đối tượng và lập trình hướng thủ tục?

10 / 30

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

Tags: Bộ đề 5

10. Đ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ó trong OOP?

11 / 30

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

Tags: Bộ đề 5

11. Trong lập trình hướng đối tượng, 'đa hình tham số' (parametric polymorphism) thường được hiện thực hóa thông qua cơ chế nào?

12 / 30

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

Tags: Bộ đề 5

12. Trong lập trình hướng đối tượng, 'lớp' (class) được xem như là:

13 / 30

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

Tags: Bộ đề 5

13. Ví dụ nào sau đây thể hiện tốt nhất tính 'đa hình' (polymorphism) trong OOP?

14 / 30

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

Tags: Bộ đề 5

14. Trong lập trình hướng đối tượng, tính chất nào 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?

15 / 30

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

Tags: Bộ đề 5

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

16 / 30

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

Tags: Bộ đề 5

16. Phương pháp lập trình hướng đối tượng tập trung vào yếu tố nào là chính?

17 / 30

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

Tags: Bộ đề 5

17. Ngược lại với 'overloading', 'overriding' (ghi đè) phương thức là gì?

18 / 30

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

Tags: Bộ đề 5

18. Trong OOP, mối quan hệ 'is-a' (là một) thường được thể hiện thông qua cơ chế nào?

19 / 30

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

Tags: Bộ đề 5

19. Phương thức 'khởi tạo' (constructor) trong lập trình hướng đối tượng có vai trò chính là gì?

20 / 30

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

Tags: Bộ đề 5

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

21 / 30

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

Tags: Bộ đề 5

21. Khái niệm nào sau đây mô tả việc ẩn giấu thông tin chi tiết thực hiện bên trong của một đối tượng và chỉ cho phép truy cập thông qua các giao diện công khai?

22 / 30

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

Tags: Bộ đề 5

22. Tính kế thừa (inheritance) trong OOP mang lại lợi ích nào sau đây?

23 / 30

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

Tags: Bộ đề 5

23. Trong OOP, 'overloading' (quá tải) phương thức là gì?

24 / 30

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

Tags: Bộ đề 5

24. Thuật ngữ 'coupling' (kết nối) và 'cohesion' (liên kết) trong OOP liên quan đến điều gì?

25 / 30

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

Tags: Bộ đề 5

25. Trong OOP, 'composition' (tổ hợp) khác với 'inheritance' (kế thừa) như thế nào?

26 / 30

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

Tags: Bộ đề 5

26. Trong OOP, 'garbage collection' (thu gom rác) là quá trình:

27 / 30

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

Tags: Bộ đề 5

27. Trong ngữ cảnh OOP, 'message passing' (truyền thông điệp) đề cập đến điều gì?

28 / 30

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

Tags: Bộ đề 5

28. Trong OOP, 'đa kế thừa' (multiple inheritance) là gì và nó có thể gây ra vấn đề gì?

29 / 30

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

Tags: Bộ đề 5

29. Trong OOP, 'đối tượng' (object) là gì?

30 / 30

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

Tags: Bộ đề 5

30. Chọn phát biểu đúng về 'interface' (giao diện) trong OOP: