Bộ 6 - Trắc nghiệm Lập trình hướng đối tượng có đáp án
Thời gian còn lại: --:--
Kết quả của bạn:
Bạn đã đúng:
Bạn đã sai:
Tổng số câu:
Câu 1:Trong lập trình hướng đối tượng, 'Lớp' (Class) được định nghĩa là gì?
💡 Lời giải chi tiết:
Lớp đóng vai trò là một bản thiết kế định nghĩa các thuộc tính và hành vi chung mà các đối tượng thuộc lớp đó sẽ có. Kết luận Lý giải: Một khuôn mẫu hoặc bản thiết kế để tạo ra các đối tượng.
Câu 2:Đặc điểm nào của OOP giúp che giấu thông tin chi tiết của cài đặt và chỉ bộc lộ những tính năng cần thiết ra bên ngoài?
💡 Lời giải chi tiết:
Tính đóng gói cho phép bảo vệ dữ liệu bên trong bằng cách giới hạn quyền truy cập trực tiếp thông qua các bổ từ truy cập. Kết luận Lý giải: Tính đóng gói (Encapsulation).
Câu 3:Mối quan hệ nào dưới đây thể hiện chính xác bản chất của tính kế thừa giữa lớp con và lớp cha?
💡 Lời giải chi tiết:
Tính kế thừa biểu thị rằng lớp con là một phiên bản đặc biệt hóa của lớp cha và thừa hưởng các đặc tính của nó. Kết luận Lý giải: Mối quan hệ 'là một' (is-a).
Câu 4:Hiện tượng một phương thức ở lớp con có cùng tên, danh sách tham số và kiểu trả về với phương thức ở lớp cha được gọi là gì?
💡 Lời giải chi tiết:
Ghi đè phương thức cho phép lớp con cung cấp một triển khai cụ thể cho một phương thức đã được định nghĩa ở lớp cha. Kết luận Lý giải: Ghi đè phương thức (Method Overriding).
Câu 5:Một lớp không thể dùng để khởi tạo đối tượng trực tiếp mà chỉ dùng làm lớp cha cho các lớp khác được gọi là gì?
💡 Lời giải chi tiết:
Lớp trừu tượng được tạo ra để định nghĩa các đặc tính chung nhưng không đủ thông tin để tạo thành một đối tượng hoàn chỉnh. Kết luận Lý giải: Lớp trừu tượng (Abstract Class).
Câu 6:Thành phần nào trong OOP chỉ chứa các khai báo phương thức mà không có phần thân và bắt buộc lớp thực thi phải định nghĩa lại?
💡 Lời giải chi tiết:
Giao diện đóng vai trò như một bản hợp đồng yêu cầu bất kỳ lớp nào thực thi nó cũng phải cài đặt đầy đủ các phương thức đã khai báo. Kết luận Lý giải: Giao diện (Interface).
Câu 7:Đặc điểm nào dưới đây mô tả đúng về hàm tạo (Constructor) trong một lớp?
💡 Lời giải chi tiết:
Hàm tạo là phương thức đặc biệt được hệ thống tự động kích hoạt nhằm thiết lập các giá trị ban đầu khi một thực thể của lớp ra đời. Kết luận Lý giải: Được gọi tự động khi một đối tượng mới được tạo ra.
Câu 8:Thuộc tính được khai báo với từ khóa 'private' trong một lớp có phạm vi truy cập như thế nào?
💡 Lời giải chi tiết:
Theo quy tắc của tính đóng gói, các thành phần 'private' hoàn toàn bị ẩn đối với tất cả các lớp bên ngoài, kể cả lớp con. Kết luận Lý giải: Chỉ có thể truy cập bên trong chính lớp đó.
Câu 9:Từ khóa 'protected' cho phép các thành phần của lớp được truy cập ở những phạm vi nào?
💡 Lời giải chi tiết:
Bổ từ 'protected' cung cấp một mức độ truy cập trung gian, cho phép các lớp kế thừa có thể sử dụng lại tài nguyên của lớp cha. Kết luận Lý giải: Trong chính lớp đó và các lớp con kế thừa nó.
Câu 10:Một biến được khai báo là 'static' trong một lớp có đặc điểm nổi bật gì?
💡 Lời giải chi tiết:
Biến tĩnh thuộc về lớp chứ không thuộc về đối tượng cụ thể, do đó tất cả các thực thể đều chia sẻ cùng một vùng nhớ cho biến này. Kết luận Lý giải: Được dùng chung cho tất cả các đối tượng của lớp đó.
Câu 11:Mục đích chính của hàm hủy (Destructor) trong lập trình hướng đối tượng (như C++) là gì?
💡 Lời giải chi tiết:
Hàm hủy thực hiện các công việc dọn dẹp cần thiết nhằm trả lại tài nguyên cho hệ thống khi đối tượng không còn được sử dụng. Kết luận Lý giải: Giải phóng tài nguyên và bộ nhớ khi đối tượng bị hủy.
Câu 12:Nạp chồng phương thức (Method Overloading) được xác định dựa trên đặc điểm nào?
💡 Lời giải chi tiết:
Nạp chồng phương thức cho phép một lớp có nhiều hành vi cùng tên nhưng xử lý các kiểu dữ liệu hoặc số lượng tham số khác nhau. Kết luận Lý giải: Các phương thức cùng tên nhưng khác nhau về danh sách tham số.
Câu 13:Từ khóa 'this' trong Java hoặc C++ thường được sử dụng để làm gì?
💡 Lời giải chi tiết:
Từ khóa 'this' đóng vai trò là một tham chiếu ngầm định trỏ đến thực thể đang thực hiện phương thức đó. Kết luận Lý giải: Tham chiếu đến đối tượng hiện tại của lớp.
Câu 14:Vấn đề 'Viên kim cương' (Diamond Problem) trong OOP thường phát sinh khi ngôn ngữ lập trình hỗ trợ đặc tính nào?
💡 Lời giải chi tiết:
Vấn đề này xảy ra khi một lớp con kế thừa từ hai lớp cha mà cả hai lớp đó lại cùng kế thừa từ một lớp gốc chung, gây ra sự nhập nhằng. Kết luận Lý giải: Đa kế thừa (Multiple Inheritance).
Câu 15:Mối quan hệ 'has-a' (có một) giữa các đối tượng thường được thực hiện thông qua kỹ thuật nào?
💡 Lời giải chi tiết:
Tính hợp thành cho phép một đối tượng chứa các đối tượng khác như là thành phần bên trong để xây dựng các chức năng phức tạp hơn. Kết luận Lý giải: Tính hợp thành (Composition).
Câu 16:Trong C++, một phương thức ảo thuần túy (pure virtual function) có đặc điểm gì?
💡 Lời giải chi tiết:
Phương thức ảo thuần túy bắt buộc các lớp kế thừa phải cung cấp một triển khai cụ thể, nếu không lớp con cũng sẽ trở thành lớp trừu tượng. Kết luận Lý giải: Phương thức ảo được gán bằng 0 và không có thân hàm ở lớp cha.
Câu 17:Liên kết muộn (Dynamic Binding) liên quan mật thiết nhất đến đặc tính nào của lập trình hướng đối tượng?
💡 Lời giải chi tiết:
Liên kết muộn cho phép chương trình xác định phiên bản phương thức cần gọi tại thời điểm thực thi thay vì thời điểm biên dịch. Kết luận Lý giải: Tính đa hình (Polymorphism).
Câu 18:Theo nguyên lý SOLID, nguyên lý 'Trách nhiệm duy nhất' (Single Responsibility Principle) yêu cầu điều gì?
💡 Lời giải chi tiết:
Nguyên lý này nhấn mạnh rằng mỗi lớp chỉ nên đảm nhận một chức năng hoặc nhiệm vụ cụ thể để dễ bảo trì và mở rộng. Kết luận Lý giải: Chỉ nên có một lý do duy nhất để thay đổi.
Câu 19:Nguyên lý 'Đóng/Mở' (Open/Closed Principle) trong thiết kế hướng đối tượng phát biểu rằng?
💡 Lời giải chi tiết:
Nguyên lý này khuyến khích việc thêm chức năng mới bằng cách kế thừa hoặc mở rộng thay vì can thiệp vào mã nguồn cũ đã ổn định. Kết luận Lý giải: Mở rộng để phát triển nhưng đóng đối với việc sửa đổi mã nguồn.
Câu 20:Một lớp được đánh dấu là 'final' (trong Java) hoặc 'sealed' (trong C#) có ý nghĩa gì?
💡 Lời giải chi tiết:
Sử dụng 'final' hoặc 'sealed' là cách để bảo vệ tính toàn vẹn của lớp, không cho phép các lớp khác biến đổi hành vi thông qua kế thừa. Kết luận Lý giải: Không thể bị kế thừa bởi lớp khác.
Câu 21:Sự khác biệt chính giữa Sao chép nông (Shallow Copy) và Sao chép sâu (Deep Copy) là gì?
💡 Lời giải chi tiết:
Sao chép sâu đảm bảo rằng mọi thay đổi trên bản sao sẽ không ảnh hưởng đến đối tượng gốc vì chúng chiếm các vùng nhớ độc lập. Kết luận Lý giải: Sao chép sâu tạo ra các bản sao đối tượng mới thay vì chỉ sao chép địa chỉ tham chiếu.
Câu 22:Điểm khác biệt cơ bản về khả năng triển khai giữa Lớp trừu tượng và Giao diện (Interface) là gì?
💡 Lời giải chi tiết:
Lớp trừu tượng cho phép cung cấp một phần hành vi mặc định, trong khi giao diện tập trung vào việc định nghĩa bộ khung các hành vi. Kết luận Lý giải: Lớp trừu tượng có thể chứa các phương thức đã được triển khai còn Giao diện thì chủ yếu chứa khai báo.
Câu 23:Mối quan hệ 'Liên kết' (Association) giữa hai đối tượng trong lập trình hướng đối tượng mô tả điều gì?
💡 Lời giải chi tiết:
Liên kết là mức độ quan hệ lỏng lẻo nhất giữa các đối tượng, thể hiện việc chúng biết về nhau và có thể giao tiếp. Kết luận Lý giải: Một mối quan hệ mà các đối tượng có thể tồn tại độc lập nhưng có tương tác với nhau.
Câu 24:Thành phần nào dưới đây thường KHÔNG được tính là một phần của chữ ký phương thức (Method Signature) trong Java?
💡 Lời giải chi tiết:
Trong nhiều ngôn ngữ như Java, chữ ký phương thức chỉ bao gồm tên và danh sách tham số để hệ thống phân biệt khi nạp chồng. Kết luận Lý giải: Kiểu trả về của phương thức.
Câu 25:Sự khác biệt lớn nhất giữa Tập hợp (Aggregation) và Hợp thành (Composition) nằm ở yếu tố nào?
💡 Lời giải chi tiết:
Trong hợp thành, khi đối tượng cha bị hủy thì đối tượng con cũng bị hủy theo, điều này không bắt buộc trong mối quan hệ tập hợp. Kết luận Lý giải: Sự phụ thuộc về vòng đời của đối tượng thành phần vào đối tượng chứa.