Bộ 13 - 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, khái niệm 'Lớp' (Class) được hiểu chính xác nhất là gì?
💡 Lời giải chi tiết:
Theo định nghĩa cơ bản trong OOP, lớp đóng vai trò là một sơ đồ thiết kế dùng để định nghĩa các thuộc tính và hành vi chung cho các thực thể 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âu 2:Tính chất nào của OOP cho phép che giấu thông tin và chi tiết cài đặt nội bộ của đối tượng?
💡 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 từ bên ngoài thông qua các bộ điều khiển truy cập. Kết luận Lý giải Tính đóng gói (Encapsulation).
Câu 3:Lợi ích chính của 'Tính kế thừa' (Inheritance) trong lập trình hướng đối tượng là gì?
💡 Lời giải chi tiết:
Kế thừa cho phép một lớp mới sở hữu các đặc tính của lớp đã có, giúp giảm bớt việc viết lại mã và tạo ra cấu trúc phân cấp. Kết luận Lý giải Cho phép tái sử dụng mã nguồn và thiết lập mối quan hệ giữa các lớp.
Câu 4:Trong Java hoặc C#, từ khóa nào được sử dụng để ngăn cả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à lớp cuối cùng, không cho phép lớp khác kế thừa từ nó. Kết luận Lý giải Từ khóa 'final' hoặc 'sealed'.
Câu 5:Khái niệm 'Đa hình' (Polymorphism) tại thời điểm thực thi (Runtime) thường được thực hiện thông qua cơ chế nào?
💡 Lời giải chi tiết:
Ghi đè phương thức cho phép chương trình quyết định phương thức của lớp con hay lớp cha được gọi dựa trên kiểu thực tế của đối tượng lúc chạy. Kết luận Lý giải Ghi đè phương thức (Method Overriding).
Câu 6:Hàm khởi tạo (Constructor) của một lớp có đặc điểm quan trọng 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 dùng để khởi tạo đối tượng, bắt buộc phải trùng tên với lớp và không định nghĩa kiểu trả về. Kết luận Lý giải Phải có tên trùng với tên lớp và không có kiểu trả về.
Câu 7:Sự khác biệt cơ bản giữa 'Nạp chồng phương thức' (Overloading) và 'Ghi đè phương thức' (Overriding) là gì?
💡 Lời giải chi tiết:
Nạp chồng định nghĩa 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 đè định nghĩa lại phương thức của cha ở lớp con. Kết luận Lý giải Overloading xảy ra trong cùng một lớp, Overriding xảy ra giữa lớp cha và lớp con.
Câu 8:Một lớp trừu tượng (Abstract Class) có đặc điểm nào sau đây là đúng?
💡 Lời giải chi tiết:
Lớp trừu tượng đóng vai trò làm khung mẫu cho các lớp con và không thể thực thể hóa thành đối tượng cụ thể. Kết luận Lý giải Không thể dùng để tạo đối tượng trực tiếp và thường chứa các phương thức trừu tượng.
Câu 9:Trong lập trình hướng đối tượng, Interface khác với Abstract Class ở điểm cốt lõi nào?
💡 Lời giải chi tiết:
Interface tập trung vào việc định nghĩa tập hợp các hành vi mà các lớp triển khai phải tuân thủ, thường không lưu giữ dữ liệu trạng thái. Kết luận Lý giải Interface chủ yếu định nghĩa các hành vi (hợp đồng) mà không chứa trạng thái (biến thực thể).
Câu 10:Từ khóa 'static' khi áp dụng cho một biến thành viên trong lớp có ý nghĩa gì?
💡 Lời giải chi tiết:
Các thành viên static được cấp phát bộ nhớ một lần duy nhất cho lớp, không phụ thuộc vào số lượng đối tượng được tạo ra. Kết luận Lý giải Biến đó thuộc về lớp và được dùng chung cho tất cả các đối tượng của lớp đó.
Câu 11:Quan hệ 'Composition' (Hợp thành) giữa hai đối tượng A và B được mô tả như thế nào?
💡 Lời giải chi tiết:
Hợp thành là một dạng quan hệ sở hữu mạnh mẽ, trong đó vòng đời của các bộ phận thành phần phụ thuộc chặt chẽ vào vật chứa. Kết luận Lý giải Đối tượng B là một bộ phận của A và không thể tồn tại nếu A bị hủy.
Câu 12:Phạm vi truy cập 'protected' cho phép các thành viên của lớp được truy cập bởi những đối tượng nào?
💡 Lời giải chi tiết:
Từ khóa 'protected' cung cấp mức độ bảo mật trung gian, cho phép các lớp con truy cập dữ liệu của cha trong khi vẫn hạn chế thế giới bên ngoài. Kết luận Lý giải Các lớp trong cùng một gói và các lớp con kế thừa từ nó.
Câu 13:Mục đích chính của 'Hàm hủy' (Destructor) trong các ngôn ngữ như C++ là gì?
💡 Lời giải chi tiết:
Hàm hủy được gọi tự động khi đối tượng ra khỏi phạm vi hoạt động nhằm mục đích dọn dẹp và thu hồi tài nguyên hệ thống. Kết luận Lý giải Để giải phóng tài nguyên và bộ nhớ khi đối tượng không còn sử dụng.
Câu 14:Trong mô hình UML, ký hiệu dấu trừ (-) đặt trước tên một thuộc tính của lớp có ý nghĩa là gì?
💡 Lời giải chi tiết:
Theo quy ước chuẩn của ngôn ngữ mô hình hóa thống nhất UML, dấu trừ đại diện cho mức độ truy cập riêng tư. Kết luận Lý giải Thuộc tính đó có phạm vi truy cập 'private'.
Câu 15:Tính chất 'Trừu tượng' (Abstraction) tập trung vào khía cạnh nào của lập trình?
💡 Lời giải chi tiết:
Trừu tượng hóa giúp người lập trình tập trung vào 'đối tượng làm gì' thay vì 'đối tượng làm như thế nào'. Kết luận Lý giải Tập trung vào những đặc điểm cốt lõi cần thiết của đối tượng và bỏ qua chi tiết rườm rà.
Câu 16:Từ khóa 'this' (hoặc 'self' trong một số ngôn ngữ) thường đại diện cho điều gì?
💡 Lời giải chi tiết:
Từ khóa 'this' là một tham chiếu nội bộ trỏ đến đối tượng cụ thể đang thực thi mã lệnh tại thời điểm đó. Kết luận Lý giải Đại diện cho chính thực thể (đối tượng) hiện tại đang gọi phương thức.
Câu 17:Thế nào là 'Diamond Problem' (Vấn đề hình thoi) trong lập trình hướng đối tượng?
💡 Lời giải chi tiết:
Đây là vấn đề kinh điển trong đa kế thừa, nơi trình biên dịch không biết nên chọn triển khai nào từ lớp cha chung qua các nhánh kế thừa khác nhau. Kết luận Lý giải Sự nhập nhằng khi một lớp kế thừa từ hai lớp có cùng một lớp cha chung.
Câu 18:Liên kết muộn (Late Binding) gắn liền với khái niệm nào sau đây?
💡 Lời giải chi tiết:
Liên kết muộn có nghĩa là việc xác định phương thức nào được gọi sẽ bị trì hoãn cho đến khi chương trình thực sự chạy. Kết luận Lý giải Đa hình tại thời điểm thực thi (Runtime Polymorphism).
Câu 19:Tại sao việc sử dụng các thuộc tính 'public' rộng rãi trong một lớp thường bị coi là thiết kế kém?
💡 Lời giải chi tiết:
Phơi bày thuộc tính trực tiếp làm mất đi khả năng kiểm soát tính hợp lệ của dữ liệu thông qua các phương thức getter/setter. Kết luận Lý giải Vì nó vi phạm nguyên tắc đóng gói và khiến dữ liệu dễ bị thay đổi sai trái.
Câu 20:Khái niệm 'Aggregation' (Tập hợp) khác với 'Composition' (Hợp thành) ở điểm nào?
💡 Lời giải chi tiết:
Aggregation thể hiện mối quan hệ 'has-a' lỏng lẻo hơn, nơi vòng đời của các thành phần không bị ràng buộc hoàn toàn vào vật chứa. Kết luận Lý giải Trong Aggregation, các đối tượng thành phần có thể tồn tại độc lập với đối tượng chứa.
Câu 21:Từ khóa 'super' (hoặc 'base') thường được sử dụng trong lớp con với mục đích gì?
💡 Lời giải chi tiết:
Từ khóa này cho phép lớp con gọi lại các xử lý của lớp cha, đặc biệt hữu ích khi thực hiện ghi đè nhưng vẫn muốn giữ lại logic cũ. Kết luận Lý giải Để truy cập các phương thức hoặc thuộc tính của lớp cha từ lớp con.
Câu 22:Trong một hệ thống hướng đối tượng, 'Độ kết dính' (Cohesion) nên được thiết kế như thế nào?
💡 Lời giải chi tiết:
Độ kết dính cao giúp mã nguồn dễ hiểu, dễ bảo trì và giảm thiểu tác động dây chuyền khi có thay đổi logic bên trong lớp. Kết luận Lý giải Cao (High cohesion), để mỗi lớp tập trung vào một nhiệm vụ duy nhất và rõ ràng.
Câu 23:Nguyên tắc nào trong SOLID khuyến nghị rằng 'các lớp nên mở để mở rộng nhưng đóng để sửa đổi'?
💡 Lời giải chi tiết:
Nguyên tắc Đóng/Mở nhấn mạnh việc thiết kế hệ thống sao cho có thể thêm tính năng mới mà không phải thay đổi mã nguồn hiện có. Kết luận Lý giải Nguyên tắc Đóng/Mở (Open/Closed Principle).
Câu 24:Ép kiểu kiểu xuống (Downcasting) trong lập trình hướng đối tượng có nghĩa là gì?
💡 Lời giải chi tiết:
Downcasting là thao tác chuyển đổi tham chiếu từ lớp tổng quát về lớp cụ thể hơn, thường đòi hỏi kiểm tra kiểu dữ liệu để tránh lỗi lúc chạy. Kết luận Lý giải Chuyển đổi một đối tượng từ kiểu lớp cha về kiểu lớp con.
Câu 25:Một phương thức được gọi là 'Phương thức thuần ảo' (Pure Virtual Function) khi nào?
💡 Lời giải chi tiết:
Trong C++ hoặc Java (abstract method), đây là phương thức chỉ có khai báo để ép buộc các lớp con phải cung cấp cài đặt cụ thể. Kết luận Lý giải Khi nó không có nội dung thực thi và bắt buộc lớp con phải ghi đè.