Bộ 14 - 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, đặc điểm nào cho phép che giấu thông tin và chi tiết cài đặt của đối tượng để bảo vệ dữ liệu?
💡 Lời giải chi tiết:
Theo phân tích phổ biến, tính đóng gói giúp bảo vệ dữ liệu bằng cách che giấu các chi tiết cài đặt bên trong và chỉ cung cấp các giao diện công khai để tương tác. Kết luận Lý giải Tính đóng gói (Encapsulation)
Câu 2:Quan hệ 'is-a' trong lập trình hướng đối tượng thường được biểu diễn thông qua cơ chế nào?
💡 Lời giải chi tiết:
Mối quan hệ 'is-a' thể hiện sự phân cấp giữa lớp con và lớp cha, trong đó lớp con là một dạng cụ thể của lớp cha. Kết luận Lý giải Kế thừa (Inheritance)
Câu 3:Đặc điểm nào cho phép một phương thức có cùng tên nhưng thực hiện các hành vi khác nhau dựa trên đối tượng gọi nó tại thời điểm thực thi?
💡 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 theo những cách riêng biệt tại thời điểm chạy. Kết luận Lý giải Tính đa hình (Polymorphism)
Câu 4:Từ khóa nào trong Java hoặc C# được sử dụng để ngăn chặn một lớp bị kế thừa?
💡 Lời giải chi tiết:
Từ khóa 'final' trong Java và 'sealed' trong C# được dùng để đánh dấu một lớp là cuối cùng, không cho phép bất kỳ lớp nào khác kế thừa từ nó. Kết luận Lý giải final hoặc sealed
Câu 5:Hàm khởi tạo (Constructor) có đặc điểm nào sau đây là chính xác nhất?
💡 Lời giải chi tiết:
Hàm khởi tạo là một phương thức đặc biệt dùng để khởi tạo đối tượng, có tên trùng với tên lớp và không định nghĩa kiểu trả về. Kết luận Lý giải Tên hàm phải trùng với tên lớp và không có kiểu trả về
Câu 6:Sự khác biệt chính giữa Ghi đè phương thức (Overriding) và Nạp chồng phương thức (Overloading) là gì?
💡 Lời giải chi tiết:
Nạp chồng cho phép nhiều phương thức cùng tên trong một lớp với tham số khác nhau, trong khi ghi đè thay thế phương thức của lớp cha bằng phương thức cùng chữ ký ở lớp con. Kết luận Lý giải Overloading yêu cầu danh sách tham số khác nhau, Overriding yêu cầu danh sách tham số giống hệt
Câu 7:Trong kiến trúc SOLID, chữ S (Single Responsibility Principle) có ý nghĩa gì?
💡 Lời giải chi tiết:
Nguyên tắc đơn nhiệm (SRP) quy định rằng mỗi lớp chỉ nên chịu trách nhiệm về một phần chức năng cụ thể của phần mềm. Kết luận Lý giải Một lớp chỉ nên thực hiện một chức năng duy nhất và có một lý do duy nhất để thay đổi
Câu 8:Lớp trừu tượng (Abstract Class) khác với Giao diện (Interface) ở điểm cơ bản nào?
💡 Lời giải chi tiết:
Lớp trừu tượng cho phép định nghĩa các phương thức có thân hàm để các lớp con sử dụng lại, trong khi giao diện chủ yếu định nghĩa các mẫu hành vi. Kết luận Lý giải Abstract Class có thể chứa các phương thức đã được cài đặt, Interface (truyền thống) chỉ chứa khai báo phương thức
Câu 9:Từ khóa 'static' được sử dụng cho một thành viên của lớp nhằm mục đích gì?
💡 Lời giải chi tiết:
Thành viên tĩnh (static) được chia sẻ bởi tất cả các thể hiện của lớp và có thể được truy cập mà không cần tạo đối tượng. Kết luận Lý giải Thành viên đó thuộc về lớp chứ không thuộc về bất kỳ đối tượng cụ thể nào
Câu 10:Phạm vi truy cập (Access Modifier) nào cho phép các thành viên của lớp chỉ được truy cập bởi chính lớp đó và các lớp con của nó?
💡 Lời giải chi tiết:
Từ khóa 'protected' giới hạn quyền truy cập trong nội bộ lớp và các lớp kế thừa từ nó, ngay cả khi lớp con ở package khác (trong Java). Kết luận Lý giải protected
Câu 11:Khái niệm 'Upcasting' trong lập trình hướng đối tượng đề cập đến điều gì?
💡 Lời giải chi tiết:
Upcasting là quá trình ép kiểu một tham chiếu của lớp con thành tham chiếu của lớp cha, luôn an toàn và thường được thực hiện tự động. Kết luận Lý giải Chuyển đổi một đối tượng từ kiểu lớp con sang kiểu lớp cha
Câu 12:Tại sao đa kế thừa lớp (Multiple Inheritance) không được hỗ trợ trong các ngôn ngữ như Java hay C#?
💡 Lời giải chi tiết:
Việc kế thừa từ nhiều lớp cha có thể dẫn đến xung đột nếu các lớp cha cùng định nghĩa một phương thức, gây khó khăn cho trình biên dịch trong việc xác định phương thức cần gọi. Kết luận Lý giải Để tránh vấn đề nhập nhằng 'Diamond Problem' khi các lớp cha có phương thức trùng tên
Câu 13:Quan hệ 'has-a' (có một) trong lập trình hướng đối tượng được thể hiện tốt nhất qua khái niệm nào?
💡 Lời giải chi tiết:
Mối quan hệ 'has-a' xảy ra khi một lớp sử dụng một hoặc nhiều đối tượng của lớp khác làm thuộc tính của nó. Kết luận Lý giải Bao hàm/Thành phần (Composition)
Câu 14:Trong lập trình hướng đối tượng, 'Interface' (Giao diện) chủ yếu được sử dụng để làm gì?
💡 Lời giải chi tiết:
Giao diện đóng vai trò như một bản hợp đồng, ép buộc các lớp thực thi nó phải cài đặt các phương thức đã khai báo. Kết luận Lý giải Để định nghĩa một tập các hành vi mà các lớp thực thi phải tuân thủ
Câu 15:Từ khóa 'this' trong Java/C++ đại diện cho điều gì?
💡 Lời giải chi tiết:
Từ khóa 'this' được sử dụng để phân biệt giữa biến thực thể và tham số, hoặc để truy cập các thành viên của đối tượng hiện hành. Kết luận Lý giải Tham chiếu đến chính thể hiện (đối tượng) hiện tại của lớp
Câu 16:Đặc điểm nào dưới đây là của mối quan hệ Tập hợp (Aggregation)?
💡 Lời giải chi tiết:
Tập hợp là một dạng yếu của bao hàm, nơi các đối tượng thành phần không bị phụ thuộc hoàn toàn vào sự tồn tại của đối tượng chứa chúng. Kết luận Lý giải Đối tượng con có vòng đời độc lập và có thể tồn tại ngay cả khi đối tượng cha bị hủy
Câu 17:Trong nguyên tắc Liskov Substitution (chữ L trong SOLID), yêu cầu chính là gì?
💡 Lời giải chi tiết:
Nguyên tắc thay thế Liskov đảm bảo rằng một đối tượng lớp con có thể được sử dụng ở mọi nơi mà đối tượng lớp cha được mong đợi mà không gây lỗi. Kết luận Lý giải Lớp con phải có khả năng thay thế lớp cha mà không làm thay đổi tính đúng đắn của chương trình
Câu 18:Phương thức nào được gọi tự động khi một đối tượng không còn được sử dụng và sắp bị giải phóng trong một số ngôn ngữ như C++?
💡 Lời giải chi tiết:
Hàm hủy (Destructor) là phương thức đặc biệt thực hiện các tác vụ dọn dẹp tài nguyên khi vòng đời của đối tượng kết thúc. Kết luận Lý giải Destructor (Hàm hủy)
Câu 19:Mối quan hệ 'Bao hàm' (Composition) khác với 'Tập hợp' (Aggregation) như thế nào?
💡 Lời giải chi tiết:
Bao hàm thể hiện mối quan hệ sở hữu mạnh mẽ, nơi vòng đời của đối tượng bộ phận gắn liền chặt chẽ với đối tượng tổng thể. Kết luận Lý giải Trong Composition, các đối tượng thành phần bị hủy khi đối tượng chứa nó bị hủy
Câu 20:Trong Java, từ khóa 'super' được dùng để làm gì?
💡 Lời giải chi tiết:
Từ khóa 'super' là một biến tham chiếu được dùng để gọi trực tiếp các thành viên (biến, phương thức, constructor) của lớp cha trực tiếp. Kết luận Lý giải Gọi hàm khởi tạo hoặc các phương thức của lớp cha
Câu 21:Khái niệm 'Binding' (Liên kết) muộn trong lập trình hướng đối tượng liên quan mật thiết nhất đến đặc điểm nào?
💡 Lời giải chi tiết:
Liên kết muộn (Dynamic Binding) cho phép xác định phương thức thực tế sẽ được thực thi tại thời điểm chạy dựa trên kiểu thực tế của đối tượng, vốn là cốt lõi của đa hình. Kết luận Lý giải Tính đa hình
Câu 22:Nguyên tắc Dependency Inversion (chữ D trong SOLID) khuyên chúng ta nên làm gì?
💡 Lời giải chi tiết:
Nguyên tắc đảo ngược phụ thuộc giúp giảm sự phụ thuộc cứng giữa các module bằng cách yêu cầu chúng giao tiếp qua các giao diện trừu tượng. Kết luận Lý giải Cả lớp cấp cao và lớp cấp thấp đều nên phụ thuộc vào các trừu tượng (Abstract/Interface)
Câu 23:Một lớp được định nghĩa là 'Abstract' thì không thể thực hiện hành động nào sau đây?
💡 Lời giải chi tiết:
Lớp trừu tượng được tạo ra để làm khung mẫu cho các lớp con và không thể được khởi tạo thành đối tượng cụ thể. Kết luận Lý giải Khởi tạo đối tượng trực tiếp bằng từ khóa new
Câu 24:Design Pattern nào đảm bảo một lớp chỉ có duy nhất một thể hiện và cung cấp một điểm truy cập toàn cục đến nó?
💡 Lời giải chi tiết:
Singleton là mẫu thiết kế khởi tạo giúp giới hạn việc tạo đối tượng của một lớp trong khi vẫn đảm bảo truy cập dễ dàng từ mọi nơi. Kết luận Lý giải Singleton Pattern
Câu 25:Khái niệm 'Interface Segregation Principle' (chữ I trong SOLID) nhấn mạnh điều gì?
💡 Lời giải chi tiết:
Nguyên tắc phân tách giao diện khuyến khích việc chia nhỏ các giao diện lớn thành các giao diện nhỏ hơn, cụ thể hơn để các lớp con chỉ cần quan tâm đến những gì chúng thực sự cần. Kết luận Lý giải Không nên ép buộc một lớp phải thực thi các phương thức mà nó không sử dụng