Bộ 9 - 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, bốn tính chất cốt lõi (trụ cột) bao gồm những gì?
💡 Lời giải chi tiết:
Theo lý thuyết lập trình hướng đối tượng chuẩn, bốn trụ cột chính giúp tổ chức mã nguồn hiệu quả là Đóng gói, Kế thừa, Đa hình và Trừu tượng. Kết luận Lý giải Đóng gói, Kế thừa, Đa hình và Trừu tượng
Câu 2:Mục đích chính của tính 'Đóng gói' (Encapsulation) trong OOP là gì?
💡 Lời giải chi tiết:
Tính đóng gói giúp bảo vệ trạng thái bên trong của đối tượng bằng cách giới hạn quyền truy cập thông qua các phương thức được kiểm soát. Kết luận Lý giải Che giấu chi tiết triển khai nội bộ và bảo vệ dữ liệu khỏi sự truy cập trực tiếp từ bên ngoài
Câu 3:Mối quan hệ 'is-a' trong lập trình hướng đối tượng thường được thể hiện thông qua cơ chế nào?
💡 Lời giải chi tiết:
Kế thừa cho phép một lớp con kế thừa đặc điểm của lớp cha, đại diện cho mối quan hệ 'là một'. Kết luận Lý giải Tính kế thừa
Câu 4: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 kỹ thuật nào?
💡 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, quyết định hành vi tại thời điểm thực thi. Kết luận Lý giải Ghi đè phương thức (Method Overriding)
Câu 5:Một lớp (Class) trong OOP được hiểu tốt nhất là gì?
💡 Lời giải chi tiết:
Lớp đóng vai trò là khuôn mẫu định nghĩa các thuộc tính và hành vi chung cho các đối tượng được tạo ra từ nó. Kết luận Lý giải Một bản thiết kế hoặc khuôn mẫu để tạo ra các đối tượng
Câu 6:Từ khóa 'static' khi áp dụng cho một thuộc tính trong một lớp có ý nghĩa gì?
💡 Lời giải chi tiết:
Thành phần tĩnh được chia sẻ bởi tất cả các cá thể của lớp và tồn tại độc lập với bất kỳ đối tượng nào. Kết luận Lý giải Thuộc tính đó thuộc về chính lớp đó chứ không phải thuộc về từng đối tượng cụ thể
Câu 7:Lớp trừu tượng (Abstract Class) khác với Giao diện (Interface) ở điểm cơ bản nào sau đây?
💡 Lời giải chi tiết:
Lớp trừu tượng cung cấp một phần triển khai chung, trong khi Interface định nghĩa một hợp đồng mà các lớp phải tuân theo. Kết luận Lý giải Lớp trừu tượng có thể chứa các phương thức có phần thân xử lý, trong khi Interface truyền thống thường chỉ chứa khai báo phương thức
Câu 8:Phương thức khởi tạo (Constructor) có đặc điểm nào sau đây?
💡 Lời giải chi tiết:
Constructor là phương thức đặc biệt được hệ thống tự động gọi khi tạo mới một đối tượng để thiết lập giá trị ban đầu. Kết luận Lý giải Tên phương thức phải trùng với tên lớp và không có kiểu trả về
Câu 9:Mối quan hệ 'has-a' (có một) đại diện cho khái niệm nào trong thiết kế hướng đối tượng?
💡 Lời giải chi tiết:
Mối quan hệ này mô tả việc một lớp chứa một thực thể của lớp khác như một thành phần thuộc tính. Kết luận Lý giải Quan hệ thành phần (Composition) hoặc Tập hợp (Aggregation)
Câu 10:Từ khóa nào được sử dụng để ngăn chặn một lớp bị kế thừa trong Java hoặc C#?
💡 Lời giải chi tiết:
Các từ khóa này được thiết kế để hạn chế khả năng mở rộng của một lớp vì lý do bảo mật hoặc thiết kế. Kết luận Lý giải final (trong Java) hoặc sealed (trong C#)
Câu 11:Trong OOP, phạm vi truy cập 'protected' cho phép truy cập từ đâu?
💡 Lời giải chi tiết:
Quyền truy cập bảo vệ cho phép các lớp kế thừa sử dụng lại tài nguyên của lớp cha mà không công khai rộng rãi. Kết luận Lý giải Bên trong lớp đó và các lớp con kế thừa từ nó
Câu 12:Nạp chồng phương thức (Method Overloading) xảy ra khi nào?
💡 Lời giải chi tiết:
Nạp chồng phương thức là hình thức đa hình tại thời điểm biên dịch, dựa vào chữ ký tham số để phân biệt. Kết luận Lý giải Hai phương thức trong cùng một lớp có cùng tên nhưng khác nhau về danh sách tham số
Câu 13:Lợi ích lớn nhất của 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 ẩn đi những chi tiết phức tạp không cần thiết và chỉ đưa ra những giao tiếp thiết yếu. Kết luận Lý giải Giảm độ phức tạp bằng cách chỉ tập trung vào các đặc điểm quan trọng của đối tượng
Câu 14:Một 'Interface' trong lập trình hướng đối tượng chủ yếu đóng vai trò là gì?
💡 Lời giải chi tiết:
Interface định nghĩa tập hợp các phương thức mà bất kỳ lớp nào triển khai nó cũng đều phải có, đảm bảo tính nhất quán. Kết luận Lý giải Một bản cam kết (hợp đồng) về các hành vi mà một lớp phải triển khai
Câu 15:Nguyên tắc 'Single Responsibility Principle' (SRP) trong thiết kế hướng đối tượng yêu cầu điều gì?
💡 Lời giải chi tiết:
SRP giúp mã nguồn dễ bảo trì và kiểm thử hơn bằng cách tách biệt các chức năng vào các lớp riêng biệt. Kết luận Lý giải Mỗi lớp chỉ nên có một lý do duy nhất để thay đổi, tức là chỉ thực hiện một nhiệm vụ cụ thể
Câu 16:Từ khóa 'this' trong Java hoặc C++ thường được dùng để làm gì?
💡 Lời giải chi tiết:
Từ khóa 'this' giúp phân biệt giữa thuộc tính của lớp và tham số truyền vào khi chúng có cùng tên. Kết luận Lý giải Tham chiếu đến đối tượng hiện tại của lớp
Câu 17:Thế nào là 'Kết nối lỏng lẻo' (Loose Coupling) trong OOP?
💡 Lời giải chi tiết:
Loose coupling giúp hệ thống linh hoạt hơn, khi thay đổi một lớp sẽ ít gây ảnh hưởng đến các lớp khác. Kết luận Lý giải Các lớp tương tác với nhau thông qua các giao diện ổn định và ít biết về chi tiết bên trong của nhau
Câu 18:Trong sơ đồ lớp UML, ký hiệu mũi tên hình tam giác rỗng trỏ từ lớp con về lớp cha đại diện cho quan hệ nào?
💡 Lời giải chi tiết:
Ký hiệu này theo chuẩn UML là cách biểu diễn đặc trưng cho tính kế thừa giữa hai lớp. Kết luận Lý giải Quan hệ tổng quát hóa/kế thừa (Generalization)
Câu 19:Điểm khác biệt chính giữa 'Composition' và 'Aggregation' là gì?
💡 Lời giải chi tiết:
Composition là quan hệ 'sở hữu toàn bộ' trong khi Aggregation chỉ là quan hệ 'tập hợp' mà các thành phần có thể tồn tại độc lập. Kết luận Lý giải Composition có mối quan hệ phụ thuộc vòng đời mạnh hơn, khi đối tượng cha bị hủy thì đối tượng con cũng bị hủy theo
Câu 20:Khái niệm 'Binding' trong OOP đề cập đến điều gì?
💡 Lời giải chi tiết:
Binding có thể xảy ra tại thời điểm biên dịch (early binding) hoặc thời điểm thực thi (late binding). Kết luận Lý giải Việc kết nối một lời gọi hàm với phần thân hàm xử lý tương ứng
Câu 21:Tại sao đa kế thừa lớp (Multiple Inheritance) không được hỗ trợ trong một số ngôn ngữ như Java hay C#?
💡 Lời giải chi tiết:
Việc hạn chế đa kế thừa lớp giúp cấu trúc kế thừa rõ ràng hơn và tránh xung đột phương thức từ nhiều nguồn. Kết luận Lý giải Để tránh sự nhập nhằng khi các lớp cha có các phương thức trùng tên (vấn đề Diamond Problem)
Câu 22:Trong thiết kế OOP, 'Độ gắn kết' (Cohesion) nên được hướng tới như thế nào?
💡 Lời giải chi tiết:
Độ gắn kết cao đảm bảo một lớp tập trung vào một chức năng cụ thể, giúp mã nguồn rõ ràng và dễ quản lý. Kết luận Lý giải Độ gắn kết cao (High Cohesion)
Câu 23:Phương thức ảo (Virtual Method) có ý nghĩa gì trong C++ hoặc C#?
💡 Lời giải chi tiết:
Khai báo ảo cho phép trình biên dịch thực hiện liên kết muộn (late binding) dựa trên kiểu thực tế của đối tượng. Kết luận Lý giải Là phương thức cho phép được ghi đè (override) ở các lớp con để thực hiện đa hình
Câu 24:Khái niệm 'Copy Constructor' dùng để làm gì?
💡 Lời giải chi tiết:
Đây là constructor nhận tham số là một đối tượng cùng kiểu để khởi tạo đối tượng mới có dữ liệu tương tự. Kết luận Lý giải Tạo ra một bản sao của một đối tượng đã tồn tại
Câu 25:Nguyên tắc 'Liskov Substitution Principle' (LSP) trong SOLID phát biểu điều gì?
💡 Lời giải chi tiết:
LSP đảm bảo rằng tính kế thừa được sử dụng một cách đúng đắn về mặt logic và hành vi. Kết luận Lý giải Các lớp con phải có khả năng thay thế cho lớp cha của chúng mà không làm thay đổi tính đúng đắn của chương trình