Bộ 7 - 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:
Theo lý thuyết cơ bản về OOP, lớp đóng vai trò là một khuôn mẫu định nghĩa các thuộc tính và phương thức chung cho các đối tượng cụ thể. 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ó cùng đặc điểm và hành vi.
Câu 2:Tính chất nào của OOP cho phép che giấu thông tin chi tiết cài đặt và chỉ lộ ra những gì cần thiết?
💡 Lời giải chi tiết:
Tính đóng gói bảo vệ trạng thái nội bộ của đối tượng bằng cách giới hạn quyền truy cập trực tiếp và chỉ cung cấp các giao diện công khai. Kết luận Lý giải Tính đóng gói (Encapsulation).
Câu 3:Từ khóa 'private' trong một lớp có ý nghĩa gì đối với các thành phần của lớp đó?
💡 Lời giải chi tiết:
Công cụ sửa đổi truy cập 'private' đảm bảo tính bảo mật dữ liệu cao nhất bằng cách ngăn chặn mọi truy cập từ bên ngoài lớp. Kết luận Lý giải Chỉ có thể truy cập từ bên trong chính lớp đó.
Câu 4:Mối quan hệ 'is-a' thường được biểu diễn thông qua cơ chế nào trong lập trình hướng đối tượng?
💡 Lời giải chi tiết:
Kế thừa thiết lập một mối quan hệ phân cấp giữa lớp cha và lớp con, trong đó lớp con là một phiên bản đặc biệt của lớp cha. Kết luận Lý giải Kế thừa (Inheritance).
Câu 5:Ghi đè phương thức (Method Overriding) xảy ra khi nào?
💡 Lời giải chi tiết:
Ghi đè 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 bởi lớp cha của nó. Kết luận Lý giải Một lớp con định nghĩa lại một phương thức đã có ở lớp cha với cùng tên, tham số và kiểu trả về.
Câu 6:Nạp chồng phương thức (Method Overloading) được đặc trưng bởi điều gì?
💡 Lời giải chi tiết:
Nạp chồng cho phép một lớp có nhiều phương thức cùng tên nhưng xử lý các loại hoặc số lượng dữ liệu đầu vào 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ề chữ ký phương thức (danh sách tham số) trong cùng một lớp.
Câu 7:Đặc điểm nào sau đây là đúng đối với một lớp trừu tượng (Abstract Class)?
💡 Lời giải chi tiết:
Lớp trừu tượng đóng vai trò là một định nghĩa chung và không thể tạo thực thể, thường chứa các phương thức mà lớp con phải triển khai. Kết luận Lý giải Không thể khởi tạo đối tượng trực tiếp và có thể chứa các phương thức chưa có thân hàm.
Câu 8:Sự khác biệt chính giữa Giao diện (Interface) và Lớp trừu tượng (Abstract Class) trong Java là gì?
💡 Lời giải chi tiết:
Theo quy tắc của Java, đa kế thừa lớp không được phép nhưng một lớp có thể thực thi nhiều giao diện để đạt được đa kế thừa hành vi. Kết luận Lý giải Một lớp có thể thực thi nhiều Interface nhưng chỉ có thể kế thừa một lớp trừu tượng.
Câu 9:Hàm khởi tạo (Constructor) có đặc điểm nào sau đây?
💡 Lời giải chi tiết:
Hàm khởi tạo là phương thức đặc biệt được hệ thống tự động gọi khi tạo đối tượng và không định nghĩa kiểu trả về. Kết luận Lý giải Tên hàm khởi tạo phải trùng với tên lớp và không có kiểu trả về.
Câu 10:Từ khóa 'static' khi áp dụng cho một thuộc tính trong lớp có ý nghĩa gì?
💡 Lời giải chi tiết:
Thành viên tĩnh tồn tại ở cấp độ lớp thay vì cấp độ đối tượng, nghĩa là toàn bộ các thực thể của lớp chia sẻ cùng một vùng nhớ cho biến đó. Kết luận Lý giải Thuộc tính đó thuộc về chính lớp đó và được dùng chung bởi tất cả các đối tượng của lớp.
Câu 11:Cơ chế 'Đa hình' (Polymorphism) tại thời điểm thực thi (Runtime) thường được thực hiện thông qua:
💡 Lời giải chi tiết:
Đa hình tại thời điểm thực thi cho phép chương trình quyết định phương thức của lớp nào sẽ được gọi dựa trên kiểu thực tế của đối tượng. Kết luận Lý giải Ghi đè phương thức (Method Overriding).
Câu 12:Trong C++, một 'Hàm ảo thuần túy' (Pure Virtual Function) được khai báo như thế nào?
💡 Lời giải chi tiết:
Trong C++, cú pháp 'virtual void func() = 0;' dùng để định nghĩa một hàm ảo thuần túy, biến lớp chứa nó thành lớp trừu tượng. Kết luận Lý giải Sử dụng từ khóa 'virtual' và gán bằng 0 ở cuối khai báo.
Câu 13:Từ khóa 'this' trong Java hoặc C++ đại diện cho điều gì?
💡 Lời giải chi tiết:
Từ khóa 'this' là một con trỏ hoặc tham chiếu ẩn cho phép truy cập vào các thành phần của chính thực thể đang thực hiện lời gọi hàm. Kết luận Lý giải Một tham chiếu đến đối tượng hiện tại đang thực thi phương thức.
Câu 14:Từ khóa 'protected' cho phép truy cập như thế nào?
💡 Lời giải chi tiết:
Quyền truy cập 'protected' được thiết kế để hỗ trợ tính kế thừa bằng cách cho phép các lớp con sử dụng tài nguyên của lớp cha. Kết luận Lý giải Truy cập từ bên trong lớp, các lớp con và các lớp trong cùng gói (tùy ngôn ngữ).
Câu 15:Hệ quả của việc sử dụng 'Đa kế thừa' (Multiple Inheritance) từ các lớp trong C++ có thể dẫn đến vấn đề gì?
💡 Lời giải chi tiết:
Vấn đề Kim cương xảy ra khi một lớp kế thừa từ hai lớp có cùng một lớp cha chung, dẫn đến sự mơ hồ về nguồn gốc của các thành viên được kế thừa. Kết luận Lý giải Vấn đề 'Kim cương' (Diamond Problem) gây nhập nhằng khi gọi các thành phần trùng tên từ các nhánh kế thừa.
Câu 16:Trong OOP, 'Tính đa hình' (Polymorphism) có nghĩa là gì?
💡 Lời giải chi tiết:
Tính đa hình cho phép các đối tượng thuộc các lớp khác nhau phản ứng với cùng một thông điệp (lời gọi hàm) theo những cách riêng của chúng. Kết luận Lý giải Một tên phương thức có thể có nhiều hình thái triển khai khác nhau.
Câu 17:Khi một lớp con kế thừa từ một lớp cha, nó sẽ không kế thừa thành phần nào sau đây (trong hầu hết các ngôn ngữ như Java, C++)?
💡 Lời giải chi tiết:
Dù lớp con có thể gọi hàm khởi tạo của lớp cha, nhưng hàm khởi tạo không được coi là thành viên được kế thừa để trở thành hàm khởi tạo của lớp con. Kết luận Lý giải Hàm khởi tạo (Constructor).
Câu 18:Mối quan hệ 'Has-a' (có một) thường được mô tả bởi khái niệm nào?
💡 Lời giải chi tiết:
Mối quan hệ 'Has-a' chỉ ra rằng một đối tượng chứa một đối tượng khác như là một phần thuộc tính của nó. Kết luận Lý giải Thành phần hoặc Tập hợp (Composition/Aggregation).
Câu 19:Mục đích chính của việc sử dụng 'Tính trừu tượng' (Abstraction) là gì?
💡 Lời giải chi tiết:
Tính trừu tượng giúp người lập trình mô hình hóa các thực thể thế giới thực vào hệ thống một cách hiệu quả bằng cách lọc bỏ các chi tiết thừa. Kết luận Lý giải Để giảm sự phức tạp bằng cách tập trung vào các đặc điểm quan trọng và bỏ qua chi tiết cài đặt.
Câu 20:Trong Java, từ khóa nào được dùng để ngăn chặn một lớp không cho lớp khác kế thừa?
💡 Lời giải chi tiết:
Sử dụng 'final' với khai báo lớp trong Java sẽ làm cho lớp đó không thể bị mở rộng bởi bất kỳ lớp con nào khác. Kết luận Lý giải final
Câu 21:Hàm hủy (Destructor) được sử dụng để làm gì trong các ngôn ngữ như C++?
💡 Lời giải chi tiết:
Hàm hủy tự động được gọi khi đối tượng ra khỏi phạm vi hoặc bị xóa để đảm bảo dọn dẹp tài nguyên hệ thống một cách an toàn. Kết luận Lý giải Để giải phóng tài nguyên hoặc bộ nhớ mà đối tượng đã chiếm dụng trước khi nó bị hủy.
Câu 22:Khái niệm 'Upcasting' trong đa hình là gì?
💡 Lời giải chi tiết:
Upcasting là thao tác chuyển đổi an toàn và tự động, cho phép đối tượng lớp con được đối xử như một thực thể của lớp cha. Kết luận Lý giải Chuyển đổi một tham chiếu lớp con thành một tham chiếu lớp cha.
Câu 23:Điều gì xảy ra nếu một lớp con không triển khai tất cả các phương thức trừu tượng của lớp cha trừu tượng?
💡 Lời giải chi tiết:
Theo quy tắc kế thừa, nếu một lớp không hoàn thiện các cam kết trừu tượng từ cha, bản thân nó vẫn chưa đủ điều kiện để khởi tạo đối tượng. Kết luận Lý giải Lớp con đó cũng phải được khai báo là lớp trừu tượng.
Câu 24:Trong thiết kế hướng đối tượng, nguyên tắc 'Cohesion' (Tính gắn kết) cao có nghĩa là gì?
💡 Lời giải chi tiết:
Tính gắn kết cao là một tiêu chuẩn thiết kế tốt, đảm bảo mỗi lớp có trách nhiệm tập trung và dễ bảo trì hơn. Kết luận Lý giải Các thành phần bên trong một lớp phối hợp chặt chẽ để thực hiện một mục tiêu duy nhất, rõ ràng.
Câu 25:Sự khác biệt giữa 'Shallow Copy' (Sao chép nông) và 'Deep Copy' (Sao chép sâu) khi sao chép đối tượng là gì?
💡 Lời giải chi tiết:
Shallow Copy dẫn đến việc nhiều đối tượng cùng trỏ vào một vùng dữ liệu chung, trong khi Deep Copy đảm bảo sự độc lập hoàn toàn về dữ liệu. Kết luận Lý giải Shallow Copy chỉ sao chép địa chỉ của các đối tượng tham chiếu, còn Deep Copy tạo bản sao mới cho các đối tượng đó.