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

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

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

1. Trong ngữ cảnh OOP, `coupling` (kết nối) và `cohesion` (liên kết) là hai khái niệm quan trọng. Thiết kế OOP tốt thường hướng tới:

A. Coupling cao và Cohesion cao
B. Coupling cao và Cohesion thấp
C. Coupling thấp và Cohesion cao
D. Coupling thấp và Cohesion thấp

2. Mẫu thiết kế `Singleton` (Singleton pattern) trong OOP được sử dụng để làm gì?

A. Tạo ra nhiều đối tượng của một lớp để tăng hiệu suất
B. Đảm bảo rằng một lớp chỉ có duy nhất một thể hiện (instance) và cung cấp một điểm truy cập toàn cục đến thể hiện đó
C. Che giấu thông tin chi tiết cài đặt của một lớp
D. Tái sử dụng mã nguồn từ các lớp khác

3. Nguyên tắc `phân tách giao diện` (Interface Segregation Principle - ISP) trong SOLID khuyến nghị điều gì về interface?

A. Interface nên chứa càng nhiều phương thức càng tốt để tăng tính đa năng
B. Interface nên nhỏ gọn và tập trung vào một nhóm hành vi liên quan, thay vì một interface lớn bao gồm nhiều hành vi không liên quan
C. Interface nên hoàn toàn ẩn các chi tiết cài đặt bên trong
D. Interface nên được thiết kế để dễ dàng thay đổi và mở rộng

4. Khi nào nên sử dụng `method overloading` (nạp chồng phương thức) trong OOP?

A. Khi muốn ghi đè phương thức của lớp cha
B. Khi muốn cung cấp nhiều phiên bản của cùng một phương thức trong một lớp, với các kiểu tham số khác nhau
C. Khi muốn ẩn thông tin chi tiết cài đặt của phương thức
D. Khi muốn gọi một phương thức từ một lớp khác

5. Khái niệm nào sau đây là trụ cột cơ bản của lập trình hướng đối tượng, cho phép đóng gói dữ liệu và phương thức hoạt động trên dữ liệu đó vào trong một đơn vị duy nhất?

A. Kế thừa (Inheritance)
B. Đa hình (Polymorphism)
C. Đóng gói (Encapsulation)
D. Trừu tượng hóa (Abstraction)

6. Đâu là một ví dụ về ngôn ngữ lập trình hướng đối tượng thuần túy (pure OOP language)?

A. C++
B. Java
C. Python
D. Smalltalk

7. Nguyên tắc `mở rộng - đóng` (Open/Closed Principle - OCP) trong SOLID khuyến khích điều gì?

A. Các lớp nên dễ dàng thay đổi để đáp ứng yêu cầu mới
B. Các lớp nên mở để mở rộng chức năng, nhưng đóng để sửa đổi mã nguồn hiện có
C. Các lớp nên hoàn toàn đóng kín và không thể thay đổi sau khi phát triển
D. Các lớp nên được thiết kế mở để kế thừa và đóng để composition

8. Đa hình (polymorphism) trong OOP được thể hiện rõ nhất qua cơ chế nào?

A. Nạp chồng phương thức (Method Overloading) và ghi đè phương thức (Method Overriding)
B. Đóng gói dữ liệu và ẩn thông tin
C. Phân rã chương trình thành các module nhỏ
D. Sử dụng con trỏ và tham chiếu

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

A. Giảm thiểu thời gian biên dịch chương trình
B. Bảo vệ dữ liệu của đối tượng khỏi sự truy cập và sửa đổi không mong muốn từ bên ngoài
C. Tăng khả năng tương thích giữa các lớp
D. Cho phép đối tượng tự động sao chép chính nó

10. Khái niệm nào sau đây mô tả mối quan hệ `là một` (is-a relationship) trong OOP và thường được hiện thực hóa thông qua kế thừa?

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

11. Trong OOP, `lớp trừu tượng` (abstract class) thường được sử dụng để làm gì?

A. Thay thế hoàn toàn cho lớp thông thường để tăng tính bảo mật
B. Cung cấp một bản thiết kế chung cho các lớp con kế thừa, nhưng không thể khởi tạo trực tiếp đối tượng từ lớp trừu tượng
C. Tạo ra các đối tượng có khả năng tự động thay đổi trạng thái
D. Giảm thiểu tối đa việc sử dụng bộ nhớ

12. Ưu điểm chính của lập trình hướng đối tượng so với lập trình hướng cấu trúc là gì?

A. Tốc độ thực thi chương trình nhanh hơn
B. Dễ dàng quản lý và bảo trì mã nguồn phức tạp, tái sử dụng mã tốt hơn, và mô hình hóa thế giới thực tự nhiên hơn
C. Sử dụng ít bộ nhớ hơn
D. Khả năng tương thích với phần cứng tốt hơn

13. Nhược điểm tiềm ẩn của việc lạm dụng `kế thừa` (inheritance) trong thiết kế OOP là gì?

A. Tăng kích thước mã nguồn
B. Tạo ra hệ thống phân cấp lớp phức tạp, khó hiểu và bảo trì (vấn đề `fragile base class`)
C. Giảm hiệu suất chương trình
D. Khó kiểm thử mã nguồn

14. Trong OOP, `interface` (giao diện) khác với `abstract class` (lớp trừu tượng) ở điểm nào chính yếu nhất?

A. Interface có thể chứa thuộc tính, còn abstract class thì không
B. Một lớp có thể kế thừa từ nhiều abstract class, nhưng chỉ có thể implement một interface
C. Một lớp có thể implement nhiều interface, nhưng chỉ có thể kế thừa từ một abstract class (trong nhiều ngôn ngữ)
D. Interface có thể có phương thức khởi tạo, còn abstract class thì không

15. Điểm khác biệt chính giữa `lớp` (class) và `đối tượng` (object) trong OOP là gì?

A. Lớp là thể hiện cụ thể, còn đối tượng là khuôn mẫu
B. Lớp là một bản thiết kế hoặc khuôn mẫu, còn đối tượng là một thể hiện cụ thể của lớp
C. Lớp chỉ chứa dữ liệu, còn đối tượng chứa cả dữ liệu và phương thức
D. Không có sự khác biệt, `lớp` và `đối tượng` là hai thuật ngữ có thể dùng thay thế cho nhau

16. Nguyên tắc `thay thế Liskov` (Liskov Substitution Principle - LSP) phát biểu rằng:

A. Các lớp con nên kế thừa tất cả các phương thức của lớp cha
B. Các đối tượng của lớp con có thể thay thế các đối tượng của lớp cha ở bất cứ đâu mà không làm thay đổi tính đúng đắn của chương trình
C. Các lớp con nên mở rộng chức năng của lớp cha, nhưng không được thay đổi hành vi hiện có
D. Các lớp con nên che giấu (hide) các phương thức của lớp cha để đảm bảo tính đóng gói

17. Trong OOP, `visibility modifiers` (chỉ thị truy cập) như `public`, `private`, `protected` được sử dụng để làm gì?

A. Tối ưu hóa hiệu suất chương trình
B. Kiểm soát quyền truy cập đến các thành viên (thuộc tính, phương thức) của lớp từ bên ngoài lớp hoặc từ các lớp con
C. Định nghĩa kiểu dữ liệu cho các thuộc tính
D. Quản lý bộ nhớ cho các đối tượng

18. Trong lập trình hướng đối tượng, `tính kế thừa` (inheritance) mang lại lợi ích chính nào sau đây?

A. Tăng tốc độ thực thi chương trình
B. Giảm kích thước bộ nhớ chương trình
C. Tái sử dụng mã nguồn và giảm sự trùng lặp
D. Cải thiện tính bảo mật của dữ liệu

19. Thuật ngữ `composition` (thành phần) trong OOP mô tả loại quan hệ nào giữa các lớp?

A. Quan hệ `là một loại` (is-a)
B. Quan hệ `có một` (has-a) mạnh mẽ, trong đó lớp chứa hoàn toàn kiểm soát vòng đời của lớp được chứa
C. Quan hệ `sử dụng` (uses-a)
D. Quan hệ `tương tự như` (similar-to-a)

20. Mẫu thiết kế `Factory` (Factory pattern) giúp giải quyết vấn đề nào trong OOP?

A. Quản lý vòng đời của đối tượng
B. Tạo đối tượng mà không cần chỉ định lớp cụ thể của đối tượng được tạo ra, giúp giảm sự phụ thuộc giữa các lớp
C. Đảm bảo tính duy nhất của đối tượng
D. Thực hiện các thao tác trên tập hợp các đối tượng

21. Nguyên tắc `SOLID` nào trong OOP tập trung vào việc một lớp chỉ nên có một và chỉ một lý do để thay đổi?

A. Nguyên tắc đơn trách nhiệm (Single Responsibility Principle - SRP)
B. Nguyên tắc mở rộng - đóng (Open/Closed Principle - OCP)
C. Nguyên tắc thay thế Liskov (Liskov Substitution Principle - LSP)
D. Nguyên tắc phân tách giao diện (Interface Segregation Principle - ISP)

22. Lỗi `NullPointerException` (trong Java) hoặc `NullReferenceException` (trong C#) thường xảy ra trong OOP do nguyên nhân chính nào?

A. Truy cập vào một biến đối tượng mà chưa được khởi tạo hoặc đang tham chiếu đến null
B. Lỗi tràn bộ nhớ (memory overflow)
C. Lỗi cú pháp trong mã nguồn
D. Lỗi logic trong thuật toán

23. Thuật ngữ `association` (kết hợp) trong OOP mô tả loại quan hệ nào giữa các lớp?

A. Quan hệ `là một loại` (is-a)
B. Quan hệ `có một` (has-a) lỏng lẻo, trong đó các lớp liên quan đến nhau nhưng không có sự sở hữu hay kiểm soát vòng đời lẫn nhau
C. Quan hệ `thành phần` (part-of)
D. Quan hệ `thừa kế` (inheritance)

24. Trong OOP, `method overriding` (ghi đè phương thức) xảy ra khi nào?

A. Khi một lớp con định nghĩa một phương thức có cùng tên và kiểu tham số với một phương thức đã có trong lớp cha
B. Khi một lớp định nghĩa nhiều phương thức có cùng tên nhưng khác kiểu tham số
C. Khi một phương thức trong lớp cha được gọi trực tiếp từ bên ngoài lớp
D. Khi một phương thức gọi chính nó (đệ quy)

25. Phương thức khởi tạo (constructor) trong lớp có vai trò quan trọng nhất là gì?

A. Giải phóng bộ nhớ khi đối tượng không còn được sử dụng
B. Định nghĩa các phương thức truy cập (getter/setter) cho thuộc tính
C. Khởi tạo trạng thái ban đầu cho đối tượng khi đối tượng được tạo ra
D. Thực hiện các phép tính toán phức tạp trong lớp

26. Khi nào nên sử dụng `aggregation` (tổng hợp) thay vì `composition` (thành phần) trong OOP?

A. Khi muốn thể hiện quan hệ `là một loại` (is-a)
B. Khi lớp được chứa có thể tồn tại độc lập và được chia sẻ giữa nhiều lớp chứa
C. Khi lớp chứa hoàn toàn kiểm soát vòng đời của lớp được chứa
D. Khi muốn tối ưu hóa hiệu suất bộ nhớ

27. Khái niệm `message passing` (truyền thông điệp) trong OOP đề cập đến điều gì?

A. Việc truyền dữ liệu giữa các đối tượng thông qua việc gọi phương thức của đối tượng đó
B. Việc gửi thông báo lỗi đến người dùng
C. Việc trao đổi dữ liệu giữa các module phần mềm không phải OOP
D. Việc truyền dữ liệu qua mạng

28. Trong OOP, `tính trừu tượng hóa` (abstraction) giúp giải quyết vấn đề phức tạp bằng cách nào?

A. Tăng cường tính bảo mật bằng cách ẩn dữ liệu quan trọng
B. Chia nhỏ bài toán thành các lớp và đối tượng nhỏ hơn
C. Chỉ tập trung vào các thông tin và hành vi cần thiết, bỏ qua các chi tiết cài đặt không liên quan
D. Tối ưu hóa hiệu suất của chương trình

29. Nguyên tắc `đảo ngược phụ thuộc` (Dependency Inversion Principle - DIP) trong SOLID khuyến khích điều gì?

A. Các module cấp cao nên phụ thuộc vào các module cấp thấp
B. Các module cấp thấp nên phụ thuộc vào các module cấp cao
C. Cả module cấp cao và cấp thấp nên phụ thuộc vào trừu tượng (interface hoặc abstract class), không phụ thuộc vào cài đặt cụ thể
D. Không nên có sự phụ thuộc giữa các module

30. Lợi ích của việc sử dụng `interface` (giao diện) trong thiết kế phần mềm hướng đối tượng là gì?

A. Tăng tốc độ biên dịch chương trình
B. Cung cấp khả năng đa kế thừa và tăng tính linh hoạt trong thiết kế
C. Giảm độ phức tạp của mã nguồn bằng cách ẩn chi tiết cài đặt
D. Tự động quản lý bộ nhớ cho các đối tượng

1 / 30

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

Tags: Bộ đề 14

1. Trong ngữ cảnh OOP, 'coupling' (kết nối) và 'cohesion' (liên kết) là hai khái niệm quan trọng. Thiết kế OOP tốt thường hướng tới:

2 / 30

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

Tags: Bộ đề 14

2. Mẫu thiết kế 'Singleton' (Singleton pattern) trong OOP được sử dụng để làm gì?

3 / 30

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

Tags: Bộ đề 14

3. Nguyên tắc 'phân tách giao diện' (Interface Segregation Principle - ISP) trong SOLID khuyến nghị điều gì về interface?

4 / 30

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

Tags: Bộ đề 14

4. Khi nào nên sử dụng 'method overloading' (nạp chồng phương thức) trong OOP?

5 / 30

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

Tags: Bộ đề 14

5. Khái niệm nào sau đây là trụ cột cơ bản của lập trình hướng đối tượng, cho phép đóng gói dữ liệu và phương thức hoạt động trên dữ liệu đó vào trong một đơn vị duy nhất?

6 / 30

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

Tags: Bộ đề 14

6. Đâu là một ví dụ về ngôn ngữ lập trình hướng đối tượng thuần túy (pure OOP language)?

7 / 30

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

Tags: Bộ đề 14

7. Nguyên tắc 'mở rộng - đóng' (Open/Closed Principle - OCP) trong SOLID khuyến khích điều gì?

8 / 30

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

Tags: Bộ đề 14

8. Đa hình (polymorphism) trong OOP được thể hiện rõ nhất qua cơ chế nào?

9 / 30

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

Tags: Bộ đề 14

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

10 / 30

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

Tags: Bộ đề 14

10. Khái niệm nào sau đây mô tả mối quan hệ 'là một' (is-a relationship) trong OOP và thường được hiện thực hóa thông qua kế thừa?

11 / 30

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

Tags: Bộ đề 14

11. Trong OOP, 'lớp trừu tượng' (abstract class) thường được sử dụng để làm gì?

12 / 30

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

Tags: Bộ đề 14

12. Ưu điểm chính của lập trình hướng đối tượng so với lập trình hướng cấu trúc là gì?

13 / 30

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

Tags: Bộ đề 14

13. Nhược điểm tiềm ẩn của việc lạm dụng 'kế thừa' (inheritance) trong thiết kế OOP là gì?

14 / 30

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

Tags: Bộ đề 14

14. Trong OOP, 'interface' (giao diện) khác với 'abstract class' (lớp trừu tượng) ở điểm nào chính yếu nhất?

15 / 30

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

Tags: Bộ đề 14

15. Điểm khác biệt chính giữa 'lớp' (class) và 'đối tượng' (object) trong OOP là gì?

16 / 30

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

Tags: Bộ đề 14

16. Nguyên tắc 'thay thế Liskov' (Liskov Substitution Principle - LSP) phát biểu rằng:

17 / 30

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

Tags: Bộ đề 14

17. Trong OOP, 'visibility modifiers' (chỉ thị truy cập) như 'public', 'private', 'protected' được sử dụng để làm 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ộ đề 14

18. Trong lập trình hướng đối tượng, 'tính kế thừa' (inheritance) mang lại lợi ích chính nào sau đây?

19 / 30

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

Tags: Bộ đề 14

19. Thuật ngữ 'composition' (thành phần) trong OOP mô tả loại quan hệ nào giữa các lớp?

20 / 30

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

Tags: Bộ đề 14

20. Mẫu thiết kế 'Factory' (Factory pattern) giúp giải quyết vấn đề nào trong OOP?

21 / 30

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

Tags: Bộ đề 14

21. Nguyên tắc 'SOLID' nào trong OOP tập trung vào việc một lớp chỉ nên có một và chỉ một lý do để thay đổi?

22 / 30

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

Tags: Bộ đề 14

22. Lỗi 'NullPointerException' (trong Java) hoặc 'NullReferenceException' (trong C#) thường xảy ra trong OOP do nguyên nhân chính nào?

23 / 30

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

Tags: Bộ đề 14

23. Thuật ngữ 'association' (kết hợp) trong OOP mô tả loại quan hệ nào giữa các lớp?

24 / 30

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

Tags: Bộ đề 14

24. Trong OOP, 'method overriding' (ghi đè phương thức) xảy ra khi nào?

25 / 30

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

Tags: Bộ đề 14

25. Phương thức khởi tạo (constructor) trong lớp có vai trò quan trọng nhất là gì?

26 / 30

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

Tags: Bộ đề 14

26. Khi nào nên sử dụng 'aggregation' (tổng hợp) thay vì 'composition' (thành phần) trong OOP?

27 / 30

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

Tags: Bộ đề 14

27. Khái niệm 'message passing' (truyền thông điệp) trong OOP đề 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ộ đề 14

28. Trong OOP, 'tính trừu tượng hóa' (abstraction) giúp giải quyết vấn đề phức tạp bằng cách nào?

29 / 30

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

Tags: Bộ đề 14

29. Nguyên tắc 'đảo ngược phụ thuộc' (Dependency Inversion Principle - DIP) trong SOLID khuyến khích điều 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ộ đề 14

30. Lợi ích của việc sử dụng 'interface' (giao diện) trong thiết kế phần mềm hướng đối tượng là gì?