Chuyển đến nội dung

Trắc nghiệm Lập trình hướng đối tượng online có đáp án

Trắc Nghiệm Kỹ Thuật & Công Nghệ

Trắc nghiệm Lập trình hướng đối tượng online có đáp án

Ngày cập nhật: Tháng 2 8, 2026

Lưu ý và Miễn trừ trách nhiệm:Toàn bộ nội dung câu hỏi, đáp án và thông tin được cung cấp trên website này được xây dựng nhằm mục đích tham khảo, hỗ trợ ôn tập và củng cố kiến thức. Chúng tôi không cam kết về tính chính xác tuyệt đối, tính cập nhật hay độ tin cậy hoàn toàn của các dữ liệu này. Nội dung tại đây KHÔNG PHẢI LÀ ĐỀ THI CHÍNH THỨC của bất kỳ tổ chức giáo dục, trường đại học hay cơ quan cấp chứng chỉ nào. Người sử dụng tự chịu trách nhiệm khi sử dụng các thông tin này vào mục đích học tập, nghiên cứu hoặc áp dụng vào thực tiễn. Chúng tôi không chịu trách nhiệm pháp lý đối với bất kỳ sai sót, thiệt hại hoặc hậu quả nào phát sinh từ việc sử dụng thông tin trên website này.

Cùng bắt đầu ngay với bộ Trắc nghiệm Lập trình hướng đối tượng online có đáp án. Đây là lựa chọn phù hợp để bạn vừa luyện tập vừa đánh giá năng lực bản thân. Lựa chọn bộ câu hỏi phù hợp bên dưới để khởi động. Chúc bạn đạt kết quả tốt và ngày càng tiến bộ

★★★★★
★★★★★
4.6/5 (212 đánh giá)

1. Trong lập trình hướng đối tượng (OOP), khái niệm ‘Tính đóng gói’ (Encapsulation) chủ yếu tập trung vào mục tiêu nào sau đây?

A. Cho phép một lớp kế thừa các đặc tính từ nhiều lớp cha khác nhau.
B. 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. Tạo ra nhiều hình thức thực hiện khác nhau cho cùng một tên phương thức.
D. Chia nhỏ một chương trình thành các hàm chức năng độc lập.

2. Đặc điểm nào phân biệt rõ nhất giữa ‘Lớp’ (Class) và ‘Đối tượng’ (Object)?

A. Đối tượng là một khái niệm trừu tượng còn Lớp là một thực thể cụ thể trong bộ nhớ.
B. Lớp là khuôn mẫu thiết kế trong khi Đối tượng là một thực thể cụ thể được tạo ra từ khuôn mẫu đó.
C. Lớp chứa các phương thức còn Đối tượng chỉ chứa các thuộc tính dữ liệu.
D. Lớp có thể thay đổi dữ liệu khi chương trình chạy nhưng Đối tượng thì không.

3. Trong mối quan hệ kế thừa, từ khóa ‘super’ (hoặc ‘base’ tùy ngôn ngữ) thường được sử dụng để làm gì?

A. Xóa bỏ đối tượng hiện tại khỏi bộ nhớ hệ thống.
B. Khai báo một phương thức mới trong lớp con mà lớp cha không có.
C. Truy cập vào các thành phần (phương thức, thuộc tính) hoặc hàm khởi tạo của lớp cha.
D. Ngăn chặn các lớp khác kế thừa từ lớp hiện tại.

4. Khái niệm ‘Tính đa hình’ (Polymorphism) tại thời điểm thực thi (Runtime) thường được thể hiện qua cơ chế nào?

A. Nạp chồng phương thức (Method Overloading) trong cùng một lớp.
B. Ghi đè phương thức (Method Overriding) trong các lớp có quan hệ kế thừa.
C. Khai báo các biến tĩnh (static) để dùng chung dữ liệu.
D. Sử dụng các cấu trúc điều kiện để kiểm tra kiểu dữ liệu.

5. Tại sao ‘Giao diện’ (Interface) lại quan trọng trong việc thiết kế các hệ thống phần mềm lớn?

A. Vì nó giúp tăng tốc độ thực thi của CPU khi xử lý các đối tượng phức tạp.
B. Vì nó cho phép định nghĩa một hợp đồng chung về hành vi mà không ràng buộc cách thực hiện cụ thể.
C. Vì nó tự động giải phóng bộ nhớ cho các đối tượng không còn sử dụng.
D. Vì nó bắt buộc tất cả các lớp phải có cùng các thuộc tính dữ liệu giống hệt nhau.

6. Sự khác biệt chính giữa ‘Lớp trừu tượng’ (Abstract Class) và ‘Giao diện’ (Interface) là gì?

A. Lớp trừu tượng có thể chứa các phương thức có phần thân xử lý, còn Giao diện thường chỉ chứa khai báo phương thức.
B. Một lớp có thể kế thừa nhiều Lớp trừu tượng nhưng chỉ được triển khai một Giao diện.
C. Giao diện có thể khởi tạo đối tượng bằng từ khóa ‘new’ còn Lớp trừu tượng thì không.
D. Lớp trừu tượng không được phép chứa các biến thành viên (fields).

7. Quyền truy cập ‘private’ áp dụng cho một thành viên của lớp có ý nghĩa như thế nào?

A. Thành viên đó có thể được truy cập từ bất kỳ đâu trong chương trình.
B. Thành viên đó chỉ có thể được truy cập bởi các lớp con kế thừa từ nó.
C. Thành viên đó chỉ có thể được truy cập bên trong chính lớp định nghĩa nó.
D. Thành viên đó có thể truy cập được từ các lớp khác nằm cùng gói (package).

8. Thành viên ‘tĩnh’ (static) trong một lớp hướng đối tượng có đặc điểm gì nổi bật?

A. Nó được sao chép riêng biệt cho mỗi đối tượng khi được tạo ra.
B. Nó thuộc về lớp chứ không thuộc về một đối tượng cụ thể nào và được dùng chung bởi tất cả các đối tượng của lớp đó.
C. Nó chỉ có thể được truy cập nếu lớp đó là lớp trừu tượng.
D. Giá trị của nó sẽ bị xóa ngay sau khi một phương thức thực hiện xong.

9. Trong OOP, ‘Hàm khởi tạo’ (Constructor) có nhiệm vụ chính là gì?

A. Hủy bỏ đối tượng và giải phóng bộ nhớ khi không còn sử dụng.
B. Sao chép mã nguồn của một lớp sang một lớp khác.
C. Khởi tạo giá trị ban đầu cho các thuộc tính của đối tượng khi nó được tạo ra.
D. Chuyển đổi một đối tượng thành một chuỗi văn bản.

10. Mối quan hệ ‘Thành phần’ (Composition) giữa hai lớp A và B (A chứa B) có đặc điểm nào sau đây?

A. Đối tượng B có thể tồn tại độc lập ngay cả khi đối tượng A bị hủy.
B. Vòng đời của đối tượng B phụ thuộc hoàn toàn vào vòng đời của đối tượng A.
C. Lớp A bắt buộc phải kế thừa tất cả các phương thức của lớp B.
D. Hai lớp A và B không có bất kỳ liên kết dữ liệu nào với nhau.

11. Tính chất ‘Liskov Substitution Principle’ (LSP) trong bộ nguyên tắc SOLID yêu cầu điều gì?

A. Các 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.
B. Mỗi lớp chỉ nên đảm nhận một trách nhiệm duy nhất trong hệ thống.
C. Hệ thống nên mở rộng bằng cách thêm mã mới thay vì sửa đổi mã cũ.
D. Các lớp cấp cao không nên phụ thuộc trực tiếp vào các lớp cấp thấp.

12. Thuật ngữ ‘Overloading’ (Nạp chồng) phương thức xảy ra khi nào?

A. Khi 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ố.
B. Khi lớp con định nghĩa lại một phương thức đã có ở lớp cha với cùng tham số.
C. Khi một phương thức gọi lại chính nó trong quá trình xử lý (đệ quy).
D. Khi một phương thức được khai báo nhưng không có phần thân xử lý.

13. Quyền truy cập ‘protected’ cho phép các thành phần của lớp được truy cập từ đâu?

A. Chỉ bên trong chính lớp đó, không cho phép lớp con truy cập.
B. Bên trong lớp đó và các lớp con kế thừa từ nó.
C. Bất kỳ lớp nào nằm trong cùng một hệ thống (toàn cục).
D. Chỉ từ các phương thức tĩnh (static) của lớp khác.

14. Trong OOP, tại sao việc sử dụng ‘Tính trừu tượng’ (Abstraction) lại giúp giảm độ phức tạp của hệ thống?

A. Bằng cách buộc người lập trình phải viết nhiều dòng mã hơn cho mỗi đối tượng.
B. Bằng cách loại bỏ hoàn toàn việc sử dụng các cấu trúc lặp và rẽ nhánh.
C. Bằng cách chỉ tập trung vào các đặc điểm cần thiết của đối tượng và bỏ qua các chi tiết thực hiện không quan trọng.
D. Bằng cách gộp tất cả các chức năng của hệ thống vào một lớp duy nhất.

15. Hiện tượng ‘Diamond Problem’ (Vấn đề kim cương) thường gặp trong ngôn ngữ lập trình nào hỗ trợ đặc điểm nào?

A. Đa hình thời gian chạy (Runtime Polymorphism).
B. Đa kế thừa (Multiple Inheritance) từ nhiều lớp cha.
C. Sử dụng quá nhiều Giao diện (Interfaces) trong một lớp.
D. Tự động thu gom rác (Garbage Collection).

16. Một ‘Lớp trừu tượng’ (Abstract Class) có đặc điểm nào sau đây về việc tạo đối tượng?

A. Có thể tạo đối tượng trực tiếp từ nó bằng từ khóa ‘new’.
B. Không thể dùng để tạo đối tượng trực tiếp, nó chỉ dùng làm nền tảng để các lớp khác kế thừa.
C. Chỉ có thể tạo đối tượng nếu nó chứa ít nhất một phương thức tĩnh.
D. Có thể tạo đối tượng nhưng không thể gọi các phương thức của nó.

17. Trong quản lý bộ nhớ của các ngôn ngữ OOP hiện đại như Java hay C#, các đối tượng thường được lưu trữ ở đâu?

A. Trên vùng nhớ Stack.
B. Trong các thanh ghi (Registers) của CPU.
C. Trên vùng nhớ Heap.
D. Trong các tệp tin tạm thời trên ổ cứng.

18. Sự khác biệt cơ bản nhất giữa ‘Kết tập’ (Aggregation) và ‘Thành phần’ (Composition) là gì?

A. Kết tập là mối quan hệ ‘là một’ (is-a), còn Thành phần là mối quan hệ ‘có một’ (has-a).
B. Trong Kết tập, đối tượng con có thể tồn tại độc lập với đối tượng cha, còn trong Thành phần thì không.
C. Thành phần cho phép đa kế thừa còn Kết tập thì không.
D. Kết tập chỉ áp dụng cho các kiểu dữ liệu nguyên thủy.

19. Tại sao không nên để các thuộc tính (fields) của một lớp ở mức truy cập ‘public’?

A. Vì nó làm giảm tốc độ truy xuất dữ liệu của chương trình.
B. Vì nó vi phạm tính đóng gói, cho phép dữ liệu bị thay đổi tùy tiện từ bên ngoài mà không thông qua kiểm soát.
C. Vì nó khiến đối tượng chiếm dụng nhiều bộ nhớ hơn trên RAM.
D. Vì từ khóa ‘public’ chỉ dành riêng cho các phương thức trừu tượng.

20. Mục đích chính của việc sử dụng ‘Phương thức ảo’ (Virtual Method) trong C++ hoặc các ngôn ngữ tương tự là gì?

A. Để tăng tốc độ biên dịch mã nguồn.
B. Để cho phép liên kết động (dynamic binding), giúp gọi đúng phương thức của đối tượng thực tế tại thời điểm chạy.
C. Để ngăn chặn việc lớp con ghi đè phương thức của lớp cha.
D. Để biến phương thức đó thành một phương thức tĩnh (static).

21. Trong nguyên tắc SOLID, ‘Single Responsibility Principle’ (Nguyên tắc đơn trách nhiệm) phát biểu rằng:

A. Mỗi phương thức chỉ nên có tối đa một tham số đầu vào.
B. Một lớp chỉ nên có một lý do duy nhất để thay đổi.
C. Mỗi dự án phần mềm chỉ nên sử dụng một ngôn ngữ lập trình duy nhất.
D. Một đối tượng chỉ được phép kế thừa từ một lớp cha duy nhất.

22. Kỹ thuật ‘Upcasting’ (Ép kiểu lên) trong OOP có nghĩa là gì?

A. Chuyển đổi một đối tượng từ kiểu lớp con sang kiểu lớp cha.
B. Chuyển đổi một số nguyên thành một số thực.
C. Chuyển đổi một lớp cha thành một lớp con để truy cập các phương thức đặc thù.
D. Thay đổi mức truy cập của một phương thức từ private thành public.

23. Lợi ích lớn nhất của ‘Tính kế thừa’ (Inheritance) trong phát triển phần mềm là gì?

A. Làm cho chương trình chạy nhanh hơn đáng kể so với lập trình hướng thủ tục.
B. Tái sử dụng mã nguồn và thiết lập mối quan hệ phân cấp giữa các thực thể.
C. Loại bỏ hoàn toàn nhu cầu sử dụng các biến toàn cục.
D. Tự động phát hiện tất cả các lỗi logic trong quá trình biên dịch.

24. Hành vi ‘Ghi đè’ (Overriding) khác với ‘Nạp chồng’ (Overloading) ở điểm cơ bản nào?

A. Ghi đè xảy ra giữa lớp cha và lớp con, còn nạp chồng xảy ra trong cùng một lớp.
B. Ghi đè yêu cầu khác tên phương thức, còn nạp chồng yêu cầu cùng tên.
C. Nạp chồng chỉ áp dụng cho hàm khởi tạo, còn ghi đè áp dụng cho mọi hàm.
D. Ghi đè được thực hiện tại thời điểm biên dịch, còn nạp chồng thực hiện tại thời điểm chạy.

25. Từ khóa ‘this’ trong Java hoặc C# được sử dụng để làm gì bên trong một phương thức của lớp?

A. Để gọi một phương thức của lớp cha.
B. Để tham chiếu đến đối tượng hiện tại đang thực thi phương thức đó.
C. Để tạo ra một bản sao mới của lớp hiện tại.
D. Để định nghĩa một hằng số chỉ dùng trong lớp đó.

26. Khái niệm ‘Interface’ (Giao diện) có thể chứa những gì (theo tiêu chuẩn truyền thống)?

A. Chỉ chứa các khai báo phương thức mà không có phần thân xử lý và các hằng số.
B. Chứa các biến thành viên có thể thay đổi giá trị và các hàm khởi tạo.
C. Chỉ chứa các phương thức tĩnh (static) và không có thuộc tính nào.
D. Chứa mã nguồn xử lý chi tiết cho tất cả các hành vi của đối tượng.

27. Trong thiết kế hướng đối tượng, ‘Độ kết dính cao’ (High Cohesion) có nghĩa là gì?

A. Một lớp thực hiện quá nhiều công việc khác nhau không liên quan.
B. Các thành phần bên trong một lớp tập trung chặt chẽ vào việc thực hiện một nhiệm vụ cụ thể.
C. Nhiều lớp phụ thuộc lẫn nhau một cách chằng chịt.
D. Tất cả các lớp trong chương trình đều phải kế thừa từ một lớp gốc duy nhất.

28. Ngược lại với độ kết dính, ‘Độ phụ thuộc thấp’ (Low Coupling) mang lại lợi ích gì?

A. Làm cho các lớp gắn kết chặt chẽ hơn để không thể tách rời.
B. Giảm thiểu sự tác động dây chuyền khi thay đổi mã nguồn ở một lớp ảnh hưởng đến các lớp khác.
C. Tăng số lượng dòng mã cần thiết để kết nối các đối tượng.
D. Bắt buộc mọi đối tượng phải dùng chung một vùng nhớ duy nhất.

29. Điều gì xảy ra nếu bạn không khai báo bất kỳ ‘Hàm khởi tạo’ (Constructor) nào cho một lớp?

A. Chương trình sẽ báo lỗi biên dịch và không thể chạy được.
B. Trình biên dịch sẽ tự động tạo ra một hàm khởi tạo mặc định không có tham số.
C. Đối tượng của lớp đó sẽ không bao giờ được tạo ra.
D. Tất cả các thuộc tính của lớp sẽ tự động được gán giá trị rỗng (null).

30. Trong OOP, ‘Tính đa hình’ cho phép điều gì sau đây?

A. Một biến có kiểu lớp cha có thể tham chiếu đến một đối tượng của bất kỳ lớp con nào.
B. Một lớp có thể chứa nhiều phương thức trùng tên và trùng tham số trong cùng một phạm vi.
C. Dữ liệu của đối tượng được bảo vệ hoàn toàn khỏi các phương thức bên ngoài.
D. Một đối tượng có thể thay đổi kiểu dữ liệu của nó một cách tùy ý trong khi chạy.

31. Đặc điểm nào của lập trình hướng đối tượng giúp che giấu các chi tiết cài đặt nội bộ và chỉ hiển thị những tính năng cần thiết của đối tượng?

A. Tính kế thừa
B. Tính đa hình
C. Tính đóng gói
D. Tính trừu tượng

32. Trong các ngôn ngữ như Java và C#, một lớp con có thể kế thừa trực tiếp từ tối đa bao nhiêu lớp cha?

A. Một lớp duy nhất
B. Hai lớp
C. Ba lớp
D. Không giới hạn số lượng

33. Cơ chế nào cho phép một phương thức có cùng tên nhưng có các tham số đầu vào khác nhau trong cùng một lớp?

A. Ghi đè phương thức (Method Overriding)
B. Nạp chồng phương thức (Method Overloading)
C. Trừu tượng hóa dữ liệu
D. Đóng gói dữ liệu

34. Hàm khởi tạo (Constructor) của một lớp có đặc điểm quan trọng nào sau đây?

A. Phải có kiểu trả về là void
B. Có tên trùng với tên của lớp
C. Luôn luôn phải có tham số đầu vào
D. Được gọi thủ công bởi lập trình viên sau khi tạo đối tượng

35. Từ khóa nào được sử dụng để truy cập các thành viên (thuộc tính, phương thức) của lớp cha từ lớp con?

A. this
B. base hoặc super
C. parent
D. self

36. Đâu là mô tả chính xác nhất về một ‘Interface’ trong lập trình hướng đối tượng?

A. Một lớp có thể khởi tạo đối tượng trực tiếp
B. Một tập hợp các thuộc tính dữ liệu dùng chung
C. Một bản thiết kế chỉ chứa các khai báo phương thức mà không có phần thân
D. Một lớp con kế thừa từ nhiều lớp cha cùng lúc

37. Phạm vi truy cập ‘protected’ cho phép các thành viên của lớp được truy cập ở đâu?

A. Chỉ bên trong nội bộ lớp đó
B. Mọi nơi trong chương trình
C. Trong cùng lớp đó và các lớp con kế thừa từ nó
D. Chỉ trong các lớp không cùng gói (package)

38. Điều gì xảy ra khi bạn cố gắng khởi tạo một đối tượng từ một lớp trừu tượng (Abstract Class)?

A. Đối tượng được tạo bình thường
B. Chương trình sẽ báo lỗi biên dịch
C. Đối tượng sẽ có giá trị null
D. Chương trình sẽ chạy nhưng gây ra lỗi thực thi (runtime error)

39. Thành viên tĩnh (static member) của một lớp thuộc về đối tượng hay thuộc về lớp?

A. Thuộc về từng đối tượng riêng lẻ
B. Thuộc về lớp và được dùng chung bởi tất cả đối tượng
C. Chỉ thuộc về hàm khởi tạo
D. Thuộc về lớp cha của lớp đó

40. Mối quan hệ ‘is-a’ thường được biểu diễn bằng khái niệm nào trong lập trình hướng đối tượng?

A. Tính đóng gói
B. Tính kế thừa
C. Tính trừu tượng
D. Sự kết hợp (Association)

41. Trong C++, phương thức nào được sử dụng để giải phóng tài nguyên khi một đối tượng bị hủy bỏ?

A. Constructor
B. Finalizer
C. Destructor
D. Cleaner

42. Khái niệm ‘Đa hình tại thời điểm thực thi’ (Runtime Polymorphism) thường được hiện thực hóa thông qua kỹ thuật nào?

A. Nạp chồng phương thức
B. Kế thừa và Ghi đè phương thức
C. Sử dụng biến cục bộ
D. Định nghĩa hằng số

43. Tại sao việc sử dụng các phương thức ‘Getter’ và ‘Setter’ lại được khuyến khích trong OOP?

A. Để tăng tốc độ thực thi của chương trình
B. Để giảm lượng mã nguồn cần viết
C. Để kiểm soát quyền truy cập và hợp lệ hóa dữ liệu
D. Để cho phép mọi lớp truy cập trực tiếp vào thuộc tính private

44. Mối quan hệ ‘has-a’ (ví dụ: Xe hơi có một Động cơ) mô tả khái niệm nào sau đây?

A. Tính kế thừa
B. Sự bao hàm hoặc Thành phần (Composition/Aggregation)
C. Tính đa hình
D. Ghi đè phương thức

45. Một phương thức được đánh giá là ‘ảo thuần túy’ (pure virtual function) trong C++ khi nào?

A. Khi nó không có tham số
B. Khi nó được gán bằng 0 trong phần khai báo
C. Khi nó được khai báo là static
D. Khi nó có phần thân rỗng

46. Trong Java, từ khóa nào ngăn cản một lớp bị kế thừa bởi bất kỳ lớp nào khác?

A. static
B. abstract
C. final
D. private

47. Phát biểu nào sau đây đúng về ‘Liên kết muộn’ (Late Binding)?

A. Xảy ra trong quá trình biên dịch chương trình
B. Chỉ áp dụng cho các biến kiểu nguyên thủy
C. Quyết định phương thức nào được gọi tại thời điểm chương trình đang chạy
D. Giảm tính linh hoạt của mã nguồn

48. Thuộc tính được khai báo với quyền truy cập ‘private’ có thể được truy cập bởi ai?

A. Mọi lớp trong cùng một gói
B. Chỉ các lớp con kế thừa từ nó
C. Chỉ bên trong chính lớp định nghĩa nó
D. Mọi lớp có tham chiếu đến đối tượng của lớp đó

49. Trong lập trình hướng đối tượng, ‘lớp’ (class) được coi là gì?

A. Một phiên bản cụ thể trong bộ nhớ
B. Một bản thiết kế hoặc khuôn mẫu để tạo ra các đối tượng
C. Một tập hợp các lệnh điều khiển luồng
D. Một tệp tin lưu trữ dữ liệu người dùng

50. Kỹ thuật ‘Upcasting’ trong OOP nghĩa là gì?

A. Chuyển kiểu từ một lớp cha sang một lớp con
B. Chuyển kiểu từ một lớp con sang một lớp cha
C. Tạo một đối tượng mới từ lớp con
D. Xóa bỏ một phương thức trong lớp con

51. Khi một phương thức trong lớp con có cùng tên, kiểu trả về và tham số với phương thức ở lớp cha, đây gọi là hiện tượng gì?

A. Đóng gói
B. Nạp chồng (Overloading)
C. Ghi đè (Overriding)
D. Trừu tượng hóa

52. Trong lập trình hướng đối tượng, ‘Độ kết dính’ (Cohesion) nên như thế nào?

A. Thấp
B. Cao
C. Không quan trọng
D. Bằng không

53. Trong thiết kế hướng đối tượng, ‘Độ phụ thuộc’ (Coupling) giữa các lớp nên như thế nào?

A. Càng cao càng tốt
B. Thấp (Lỏng lẻo)
C. Phụ thuộc hoàn toàn
D. Luôn luôn bằng một

54. Từ khóa ‘this’ trong Java hoặc C# thường được dùng để làm gì?

A. Tham chiếu đến đối tượng hiện tại của lớp
B. Tạo ra một đối tượng mới
C. Xóa đối tượng khỏi bộ nhớ
D. Truy cập vào các thành viên private của lớp cha

55. Mục đích chính của ‘Tính trừu tượng’ (Abstraction) là gì?

A. Để tối ưu hóa tốc độ CPU
B. Để giảm bớt sự phức tạp bằng cách chỉ tập trung vào các đặc điểm quan trọng
C. Để ngăn cản việc kế thừa
D. Để cho phép truy cập trực tiếp vào bộ nhớ

56. Điều gì xảy ra nếu lập trình viên không định nghĩa bất kỳ hàm khởi tạo nào cho một lớp?

A. Chương trình sẽ báo lỗi không thể tạo đối tượng
B. Trình biên dịch sẽ tự động tạo một hàm khởi tạo mặc định (không tham số)
C. Lớp đó sẽ trở thành lớp trừu tượng
D. Mọi thuộc tính của lớp sẽ không được cấp phát bộ nhớ

57. Khái niệm ‘Đa hình tại thời điểm biên dịch’ (Compile-time Polymorphism) chủ yếu dựa trên cơ chế nào?

A. Ghi đè phương thức
B. Nạp chồng phương thức
C. Kế thừa đa cấp
D. Sử dụng Interface

58. Trong C#, từ khóa nào được dùng để cho phép một phương thức có thể bị ghi đè ở lớp con?

A. static
B. virtual
C. sealed
D. abstract

59. Mục đích của việc sử dụng ‘Namespaces’ (C#) hoặc ‘Packages’ (Java) là gì?

A. Để tăng tốc độ thực thi của mã máy
B. Để tổ chức mã nguồn và tránh xung đột tên lớp
C. Để tự động giải phóng bộ nhớ lỗi
D. Để định nghĩa các biến toàn cục

60. Nguyên lý ‘Single Responsibility Principle’ (Trách nhiệm đơn nhất) trong SOLID có ý nghĩa gì?

A. Một lớp chỉ nên có một lý do duy nhất để thay đổi (chỉ làm một việc)
B. Một lớp phải kế thừa từ tất cả các interface
C. Một phương thức phải có ít nhất mười dòng code
D. Tất cả các thuộc tính phải là public

61. 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 nội bộ của một đối tượng?

A. Tính đa hình
B. Tính đóng gói
C. Tính kế thừa
D. Tính trừu tượng

62. Mối quan hệ ‘is-a’ trong lập trình hướng đối tượng thường được biểu diễn thông qua khái niệm nào?

A. Tính kế thừa
B. Tính đóng gói
C. Tính trừu tượng
D. Mối quan hệ kết hợp

63. Đâu là sự khác biệt cơ bản nhất giữa Lớp (Class) và Đối tượng (Object)?

A. Lớp là một thực thể sống còn đối tượng là bản thiết kế
B. Lớp là bản thiết kế lý thuyết, còn đối tượng là một thực thể cụ thể được tạo ra từ lớp đó
C. Đối tượng chứa các phương thức còn lớp chỉ chứa các biến dữ liệu
D. Lớp và đối tượng là hai khái niệm hoàn toàn giống nhau về mặt bộ nhớ

64. Khả năng 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ó được gọi là gì?

A. Tính đóng gói
B. Tính trừu tượng
C. Tính đa hình
D. Tính kế thừa

65. Từ khóa nào thường được sử dụng để ngăn chặn một lớp không cho phép các lớp khác kế thừa từ nó?

A. static
B. final hoặc sealed
C. abstract
D. private

66. Mục đích chính của ‘Constructor’ (hàm khởi tạo) trong một lớp là gì?

A. Để giải phóng bộ nhớ khi đối tượng bị hủy
B. Để sao chép các đối tượng từ lớp này sang lớp khác
C. Để khởi tạo các giá trị ban đầu cho các thuộc tính của đối tượng khi nó được tạo ra
D. Để thay đổi định nghĩa của lớp tại thời điểm thực thi

67. Trong lập trình hướng đối tượng, ‘Tính trừu tượng’ (Abstraction) tập trung vào điều gì?

A. Tăng cường tốc độ thực thi của chương trình
B. Chỉ hiển thị các tính năng thiết yếu và ẩn đi các chi tiết triển khai phức tạp
C. Chia sẻ dữ liệu giữa tất cả các đối tượng trong hệ thống
D. Cho phép một lớp kế thừa từ nhiều lớp cha cùng lúc

68. Phạm vi truy cập ‘protected’ (được bảo vệ) cho phép truy cập từ đâu?

A. Chỉ bên trong chính lớp đó
B. Từ bất kỳ đâu trong toàn bộ chương trình
C. Bên trong chính lớp đó và các lớp con kế thừa từ nó
D. Chỉ các hàm main mới có quyền truy cập

69. Khái niệm ‘Overloading’ (Nạp chồng phương thức) xảy ra khi nào?

A. Khi hai phương thức cùng tên trong cùng một lớp nhưng khác nhau về chữ ký (số lượng/kiểu tham số)
B. Khi lớp con định nghĩa lại phương thức của lớp cha với cùng chữ ký
C. Khi một phương thức gọi chính nó theo kiểu đệ quy
D. Khi một lớp có quá nhiều phương thức gây chậm chương trình

70. Khái niệm ‘Overriding’ (Ghi đè phương thức) có đặc điểm gì nổi bật?

A. Xảy ra tại thời điểm biên dịch (compile-time)
B. Cho phép lớp con cung cấp một triển khai cụ thể cho phương thức đã được định nghĩa ở lớp cha
C. Yêu cầu các phương thức phải khác nhau về kiểu dữ liệu trả về
D. Không yêu cầu mối quan hệ kế thừa giữa các lớp

71. Một lớp trừu tượng (Abstract Class) có đặc điểm nào sau đây?

A. Có thể được khởi tạo trực tiếp bằng từ khóa ‘new’
B. Không thể chứa các phương thức có phần thân xử lý
C. Không thể dùng để tạo ra đối tượng trực tiếp mà chỉ dùng để làm lớp cơ sở cho các lớp khác kế thừa
D. Bắt buộc tất cả các phương thức bên trong đều phải là trừu tượng

72. Giao diện (Interface) trong lập trình hướng đối tượng chủ yếu được dùng để làm gì?

A. Để lưu trữ các biến trạng thái của đối tượng
B. Để định nghĩa một hợp đồng (contract) về các hành vi mà một lớp phải triển khai
C. Để thay thế hoàn toàn cho tính kế thừa lớp
D. Để quản lý việc cấp phát bộ nhớ động

73. Vấn đề ‘Diamond Problem’ (Vấn đề kim cương) thường phát sinh trong ngữ cảnh nào?

A. Đa hình tại thời điểm thực thi
B. Đóng gói dữ liệu quá chặt chẽ
C. Đa kế thừa (một lớp kế thừa từ nhiều lớp có cùng lớp cha)
D. Sử dụng quá nhiều interface trong một hệ thống

74. Thành phần ‘static’ trong một lớp có đặc điểm gì?

A. Mỗi đối tượng của lớp sẽ có một bản sao riêng của thành phần đó
B. Thành phần đó thuộc về chính lớp chứ không thuộc về bất kỳ đối tượng cụ thể nào
C. Chỉ có thể được truy cập thông qua các đối tượng đã khởi tạo
D. Giá trị của nó không thể bị thay đổi sau khi đã khởi tạo lần đầu

75. Mối quan hệ ‘has-a’ mô tả khái niệm nào trong lập trình hướng đối tượng?

A. Kế thừa đơn
B. Đa hình
C. Thành phần/Kết hợp (Composition/Aggregation)
D. Trừu tượng hóa dữ liệu

76. Từ khóa ‘this’ (hoặc ‘self’ trong một số ngôn ngữ) thường tham chiếu đến cái gì?

A. Lớp cha của đối tượng hiện tại
B. Chính đối tượng hiện tại đang thực thi phương thức
C. Một biến toàn cục trong chương trình
D. Phương thức khởi tạo của lớp

77. Hàm hủy (Destructor) được sử dụng để làm gì?

A. Khởi tạo giá trị cho đối tượng mới
B. Sao chép dữ liệu giữa các đối tượng
C. Thực hiện các công việc dọn dẹp và giải phóng tài nguyên trước khi đối tượng bị tiêu hủy
D. Kiểm tra lỗi cú pháp trong lớp

78. Lợi ích quan trọng nhất của việc sử dụng ‘Getter’ và ‘Setter’ thay vì truy cập biến trực tiếp là gì?

A. Làm cho chương trình chạy nhanh hơn đáng kể
B. Kiểm soát logic truy cập và kiểm tra tính hợp lệ của dữ liệu trước khi thay đổi
C. Giảm dung lượng bộ nhớ mà đối tượng chiếm dụng
D. Tự động hóa việc tạo ra các đối tượng con

79. Khi một lớp con kế thừa từ một lớp cha, nó sẽ nhận được những gì?

A. Tất cả các thành phần private của lớp cha
B. Chỉ các phương thức của lớp cha mà không có thuộc tính
C. Các thành phần public và protected của lớp cha
D. Nó không nhận được gì mà phải tự định nghĩa lại hoàn toàn

80. Nguyên tắc ‘Single Responsibility’ (Trách nhiệm đơn nhất) trong thiết kế hướng đối tượng có ý nghĩa gì?

A. Một lớp chỉ nên thực hiện một chức năng duy nhất và có duy nhất một lý do để thay đổi
B. Mỗi chương trình chỉ nên có duy nhất một lớp
C. Một đối tượng chỉ nên được khởi tạo một lần duy nhất
D. Tất cả các phương thức trong lớp phải có cùng tên

81. Trong C++, một ‘Virtual Function’ (hàm ảo) được sử dụng để làm gì?

A. Để tăng tốc độ thực hiện chương trình
B. Để ngăn chặn việc kế thừa lớp
C. Để cho phép định nghĩa lại hàm ở lớp con và hỗ trợ đa hình tại thời điểm thực thi
D. Để cấp phát bộ nhớ tĩnh cho hàm

82. Sự khác biệt chính giữa ‘Composition’ và ‘Inheritance’ là gì?

A. Inheritance là mối quan hệ ‘has-a’, Composition là mối quan hệ ‘is-a’
B. Composition linh hoạt hơn vì nó cho phép thay đổi hành vi tại thời điểm thực thi thông qua việc thay thế đối tượng thành phần
C. Inheritance luôn tốt hơn Composition trong mọi trường hợp thiết kế
D. Composition không cho phép sử dụng lại mã nguồn như Inheritance

83. Thuật ngữ ‘Encapsulation’ thường đi đôi với khái niệm nào để bảo vệ dữ liệu?

A. Data Hiding (Che giấu dữ liệu)
B. Data Redundancy (Dư thừa dữ liệu)
C. Data Mining (Khai phá dữ liệu)
D. Data Structure (Cấu trúc dữ liệu)

84. Trong một hệ thống OOP, ‘Cohesion’ (Độ kết dính) cao có ý nghĩa gì?

A. Các lớp phụ thuộc chặt chẽ vào nhau
B. Các nhiệm vụ trong một lớp liên quan mật thiết và tập trung vào một mục đích chung
C. Mã nguồn khó đọc và khó hiểu
D. Một lớp có quá nhiều thuộc tính không liên quan

85. Khái niệm ‘Upcasting’ trong lập trình hướng đối tượng là gì?

A. Chuyển đổi kiểu dữ liệu từ lớp con lên lớp cha
B. Chuyển đổi kiểu dữ liệu từ lớp cha xuống lớp con
C. Tạo ra một đối tượng mới hoàn toàn không liên quan
D. Xóa bỏ một đối tượng khỏi bộ nhớ

86. Từ khóa ‘super’ (hoặc ‘base’) thường được dùng để làm gì trong lớp con?

A. Để tạo ra một lớp con mới
B. Để truy cập vào các thành phần (biến, phương thức, constructor) của lớp cha
C. Để kết thúc chương trình ngay lập tức
D. Để định nghĩa một biến tĩnh

87. Một ‘Pure Virtual Function’ (hàm ảo thuần túy) là hàm như thế nào?

A. Hàm có nội dung xử lý rất ngắn
B. Hàm chỉ có khai báo mà không có phần thân và bắt buộc lớp con phải ghi đè
C. Hàm có thể được gọi mà không cần thông qua đối tượng
D. Hàm được dùng để bảo mật mã nguồn

88. Đặc điểm nào của OOP giúp giảm thiểu sự lặp lại của mã nguồn (code redundancy)?

A. Tính đóng gói
B. Tính kế thừa
C. Tính đa hình
D. Tất cả các phương án trên đều đúng

89. Trong thiết kế hướng đối tượng, ‘Coupling’ (Độ phụ thuộc) thấp mang lại lợi ích gì?

A. Làm cho các lớp phụ thuộc chặt chẽ vào nhau
B. Giúp các lớp độc lập hơn, dễ thay đổi hoặc bảo trì mà không ảnh hưởng nhiều đến các phần khác
C. Tăng độ phức tạp của hệ thống
D. Ngăn cản việc sử dụng tính đa hình

90. Mối quan hệ ‘Aggregation’ (Tập hợp) khác ‘Composition’ (Thành phần) ở điểm cơ bản nào?

A. Trong Aggregation, vòng đời của đối tượng con phụ thuộc hoàn toàn vào đối tượng cha
B. Trong Composition, nếu đối tượng cha bị hủy thì các đối tượng con thành phần cũng bị hủy theo
C. Aggregation là mối quan hệ ‘is-a’
D. Không có sự khác biệt nào giữa hai khái niệm này

91. Trong lập trình hướng đối tượng, khái niệm nào đóng vai trò là ‘bản thiết kế’ để tạo ra các thực thể cụ thể?

A. Phương thức (Method)
B. Thuộc tính (Attribute)
C. Lớp (Class)
D. Đối tượng (Object)

92. Tính chất nào của OOP cho phép che giấu thông tin chi tiết bên trong và chỉ lộ ra những gì cần thiết?

A. Tính đóng gói (Encapsulation)
B. Tính kế thừa (Inheritance)
C. Tính đa hình (Polymorphism)
D. Tính trừu tượng (Abstraction)

93. Mối quan hệ ‘is-a’ (là một) thường được thể hiện thông qua tính chất nào sau đây?

A. Tính kế thừa (Inheritance)
B. Tính đóng gói (Encapsulation)
C. Tính trừu tượng (Abstraction)
D. Tính đa hình (Polymorphism)

94. Khái niệm nào cho phép một phương thức có nhiều cách triển khai khác nhau tại các lớp con khác nhau?

A. Kế thừa (Inheritance)
B. Đa hình (Polymorphism)
C. Trừu tượng (Abstraction)
D. Đóng gói (Encapsulation)

95. Phạm vi truy cập (Access modifier) nào chỉ cho phép truy cập bên trong chính lớp đó?

A. Public
B. Protected
C. Default
D. Private

96. Từ khóa ‘static’ được sử dụng để khai báo một thành phần mà nó sẽ:

A. Thuộc về lớp chứ không thuộc về một đối tượng cụ thể
B. Chỉ có thể được truy cập bởi các lớp con
C. Không thể bị thay đổi giá trị sau khi khởi tạo
D. Tự động bị hủy khi đối tượng ra khỏi phạm vi

97. Phương thức đặc biệt được gọi tự động khi một đối tượng mới được tạo ra là gì?

A. Destructor
B. Constructor
C. Static method
D. Abstract method

98. Điểm khác biệt chính giữa ‘Overloading’ và ‘Overriding’ là gì?

A. Overloading xảy ra ở lớp con, Overriding xảy ra ở lớp cha
B. Overloading là đa hình lúc thực thi, Overriding là đa hình lúc biên dịch
C. Overloading xảy ra trong cùng một lớp, Overriding xảy ra trong mối quan hệ kế thừa
D. Overloading yêu cầu cùng kiểu trả về, Overriding thì không

99. Một ‘Abstract Class’ (Lớp trừu tượng) có đặc điểm nào sau đây?

A. Có thể được khởi tạo trực tiếp bằng từ khóa ‘new’
B. Không thể chứa các phương thức có thân hàm
C. Mọi phương thức trong đó bắt buộc phải là ‘static’
D. Không thể tạo đối tượng trực tiếp từ lớp này

100. Trong Java hoặc C#, một lớp có thể kế thừa trực tiếp từ bao nhiêu lớp cha?

A. Một
B. Hai
C. Không giới hạn
D. Tùy thuộc vào bộ nhớ máy tính

101. Mục đích chính của ‘Interface’ trong lập trình hướng đối tượng là gì?

A. Để lưu trữ dữ liệu dùng chung cho toàn hệ thống
B. Để định nghĩa một bộ khung (hợp đồng) các hành vi mà các lớp phải tuân thủ
C. Để thay thế hoàn toàn cho lớp trừu tượng
D. Để quản lý việc cấp phát bộ nhớ tự động

102. Từ khóa ‘this’ trong lập trình hướng đối tượng đại diện cho điều gì?

A. Tham chiếu đến lớp cha của đối tượng hiện tại
B. Tham chiếu đến đối tượng hiện tại đang thực thi
C. Một biến tĩnh được chia sẻ cho toàn bộ lớp
D. Một hằng số không thể thay đổi giá trị

103. Nguyên lý nào trong SOLID quy định rằng một lớp chỉ nên có một lý do duy nhất để thay đổi?

A. Liskov Substitution Principle
B. Open/Closed Principle
C. Single Responsibility Principle
D. Interface Segregation Principle

104. Phạm vi truy cập ‘protected’ cho phép các thành phần được truy cập bởi:

A. Chỉ các lớp trong cùng một gói (package)
B. Bất kỳ lớp nào trong chương trình
C. Chỉ bên trong chính lớp đó
D. Chính lớp đó và các lớp con của nó

105. Đặc điểm nào sau đây mô tả đúng về mối quan hệ ‘Has-a’ (có một)?

A. Thể hiện thông qua việc triển khai một Interface
B. Thể hiện thông qua việc một lớp chứa một thực thể của lớp khác
C. Thể hiện thông qua việc sử dụng từ khóa ‘extends’
D. Thể hiện thông qua việc ghi đè phương thức lớp cha

106. Khái niệm ‘Pure Virtual Function’ (Hàm ảo thuần túy) trong C++ thường dùng để làm gì?

A. Để tối ưu hóa tốc độ thực thi của chương trình
B. Để ngăn chặn việc lớp con ghi đè phương thức
C. Để tạo ra một lớp trừu tượng mà không có thân hàm cho phương thức đó
D. Để biến một phương thức instance thành phương thức static

107. Việc một lớp con có thể thay thế hoàn toàn lớp cha mà không làm hỏng tính đúng đắn của chương trình là nội dung của nguyên lý nào?

A. Liskov Substitution Principle
B. Dependency Inversion Principle
C. Open/Closed Principle
D. Single Responsibility Principle

108. Trong thiết kế hướng đối tượng, ‘Cohesion’ (Tính gắn kết) nên được duy trì ở mức nào?

A. Thấp (Low cohesion)
B. Trung bình (Medium cohesion)
C. Cao (High cohesion)
D. Tối thiểu (Minimal cohesion)

109. Khái niệm ‘Coupling’ (Tính phụ thuộc) trong OOP nên được thiết kế như thế nào là tốt nhất?

A. Phụ thuộc chặt chẽ (Tight coupling)
B. Phụ thuộc lỏng lẻo (Loose coupling)
C. Không có bất kỳ sự phụ thuộc nào
D. Phụ thuộc đa tầng

110. Từ khóa ‘super’ (hoặc ‘base’) thường được dùng để làm gì trong phương thức của lớp con?

A. Để khởi tạo một lớp tĩnh mới
B. Để truy cập vào các thành phần của lớp cha
C. Để giải phóng bộ nhớ của đối tượng
D. Để ngăn chặn việc kế thừa lớp

111. Tính chất nào cho phép loại bỏ các chi tiết không cần thiết và chỉ tập trung vào các đặc điểm quan trọng của đối tượng trong bối cảnh cụ thể?

A. Tính kế thừa
B. Tính đa hình
C. Tính trừu tượng (Abstraction)
D. Tính bao đóng

112. Đ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?

A. Chương trình vẫn biên dịch bình thường và bỏ qua các phương thức đó
B. Các phương thức đó sẽ tự động được gán giá trị ‘null’
C. Lớp con đó cũng phải được khai báo là lớp trừu tượng (Abstract)
D. Hệ thống sẽ tự động tạo thân hàm rỗng cho các phương thức đó

113. Trong một hệ thống OOP, ‘Shallow Copy’ (Sao chép nông) khác ‘Deep Copy’ (Sao chép sâu) ở điểm nào?

A. Shallow Copy sao chép cả giá trị và các đối tượng tham chiếu bên trong
B. Shallow Copy chỉ sao chép địa chỉ tham chiếu của các đối tượng bên trong
C. Deep Copy không thể sao chép được các biến kiểu nguyên thủy
D. Cả hai đều tạo ra các đối tượng hoàn toàn độc lập về mọi mặt

114. Nguyên lý ‘Open/Closed’ (Đóng/Mở) trong SOLID đề cập đến việc:

A. Mở cho việc sửa đổi mã nguồn trực tiếp, đóng cho việc kế thừa
B. Dữ liệu phải được mở cho public, phương thức phải đóng cho private
C. Mở cho việc mở rộng, đóng cho việc sửa đổi trực tiếp vào mã nguồn hiện có
D. Mở kết nối cơ sở dữ liệu và đóng ngay sau khi sử dụng

115. Kỹ thuật nào cho phép liên kết một lời gọi phương thức với thân hàm tương ứng tại thời điểm chương trình đang chạy?

A. Static Binding
B. Early Binding
C. Dynamic Binding (Late Binding)
D. Compile-time Binding

116. Một lớp được đánh dấu là ‘final’ (trong Java) hoặc ‘sealed’ (trong C#) thì:

A. Không thể chứa bất kỳ thuộc tính nào
B. Không thể được dùng làm lớp cha để kế thừa
C. Bắt buộc phải có ít nhất một phương thức tĩnh
D. Có thể được khởi tạo mà không cần constructor

117. Trong OOP, việc một lớp con gọi phương thức của chính nó thay vì phương thức cùng tên của lớp cha được gọi là:

A. Hiding
B. Encapsulating
C. Overriding
D. Abstraction

118. Khi một đối tượng được tạo ra, bộ nhớ cho các thuộc tính (instance variables) thường được cấp phát ở vùng nhớ nào?

A. Vùng nhớ Stack
B. Vùng nhớ Heap
C. Vùng nhớ Register
D. Vùng nhớ Cache

119. Khái niệm ‘Composition’ (Hợp thành) có đặc điểm gì về vòng đời của các đối tượng?

A. Đối tượng con có thể tồn tại độc lập khi đối tượng cha bị hủy
B. Vòng đời của đối tượng con phụ thuộc hoàn toàn vào đối tượng cha
C. Đối tượng con được tạo ra trước đối tượng cha rất lâu
D. Hai đối tượng không có bất kỳ sự liên kết nào về bộ nhớ

120. Nguyên lý ‘Interface Segregation’ (Phân tách giao diện) khuyên rằng:

A. Nên gộp tất cả phương thức vào một Interface lớn để dễ quản lý
B. Không nên ép buộc một lớp triển khai những phương thức mà nó không sử dụng
C. Mỗi Interface chỉ nên có tối đa một phương thức duy nhất
D. Interface chỉ nên chứa các hằng số, không chứa phương thức

121. Trong lập trình hướng đối tượng (OOP), thành phần nào được coi là ‘bản thiết kế’ (blueprint) để tạo ra các thực thể cụ thể?

A. Đối tượng (Object)
B. Lớp (Class)
C. Phương thức (Method)
D. Thuộc tính (Attribute)

122. Tính chất nào của OOP cho phép che giấu thông tin chi tiết bên trong và chỉ bộc lộ ra những gì cần thiết?

A. Tính đóng gói (Encapsulation)
B. Tính kế thừa (Inheritance)
C. Tính đa hình (Polymorphism)
D. Tính trừu tượng (Abstraction)

123. Khái niệm ‘Is-a’ thường được dùng để mô tả mối quan hệ nào trong thiết kế hướng đối tượng?

A. Mối quan hệ thành phần (Composition)
B. Mối quan hệ cộng tác (Association)
C. Mối quan hệ kế thừa (Inheritance)
D. Mối quan hệ bao hàm (Aggregation)

124. Phương thức cùng tên nhưng khác nhau về tham số truyền vào trong cùng một lớp được gọi là gì?

A. Ghi đè phương thức (Method Overriding)
B. Nạp chồng phương thức (Method Overloading)
C. Phương thức trừu tượng (Abstract Method)
D. Phương thức tĩnh (Static Method)

125. Từ khóa nào thường được dùng để ngăn chặn một lớp không cho phép các lớp khác kế thừa từ nó?

A. static
B. abstract
C. final hoặc sealed
D. private

126. Trong OOP, một lớp chứa ít nhất một phương thức thuần ảo (pure virtual function) được gọi là gì?

A. Lớp cụ thể (Concrete Class)
B. Lớp tĩnh (Static Class)
C. Lớp trừu tượng (Abstract Class)
D. Lớp lồng nhau (Nested Class)

127. Từ khóa ‘this’ (trong Java/C++) hoặc ‘self’ (trong Python) dùng để tham chiếu đến đối tượng nào?

A. Đối tượng cha của đối tượng hiện tại
B. Mọi đối tượng thuộc cùng một lớp
C. Chính đối tượng hiện tại đang thực thi
D. Đối tượng đầu tiên được tạo ra từ lớp

128. Lợi ích chính của việc sử dụng ‘Interface’ thay vì kế thừa từ một lớp thông thường là gì?

A. Tăng tốc độ thực thi của chương trình
B. Tiết kiệm bộ nhớ khi lưu trữ đối tượng
C. Hỗ trợ mô phỏng đa kế thừa và tạo ra sự lỏng lẻo (loose coupling)
D. Tự động khởi tạo giá trị cho các thuộc tính

129. Đặc điểm nào dưới đây mô tả chính xác nhất về ‘Constructor’ (Hàm khởi tạo)?

A. Là phương thức phải có kiểu trả về là void
B. Là phương thức được gọi tự động khi một đối tượng được tạo ra
C. Là phương thức dùng để giải phóng bộ nhớ khi đối tượng bị hủy
D. Là phương thức có thể được gọi bất cứ lúc nào bằng tên lớp

130. Vấn đề ‘Diamond Problem’ thường xảy ra trong trường hợp nào?

A. Một lớp kế thừa từ một lớp cha duy nhất
B. Một lớp thực thi quá nhiều interface
C. Một lớp kế thừa từ nhiều lớp cha có cùng một lớp gốc chung
D. Một đối tượng gọi một phương thức tĩnh

131. Thuật ngữ ‘Polymorphism’ (Tính đa hình) tại thời điểm thực thi (Runtime) được thể hiện rõ nhất qua cơ chế nào?

A. Nạp chồng phương thức (Method Overloading)
B. Ghi đè phương thức (Method Overriding)
C. Sử dụng biến tĩnh (Static variables)
D. Ép kiểu dữ liệu nguyên thủy

132. Phạm vi truy cập ‘protected’ cho phép các thành phần của lớp được truy cập từ đâu?

A. Chỉ bên trong chính lớp đó
B. Từ bất kỳ đâu trong toàn bộ chương trình
C. Trong cùng lớp đó và các lớp con kế thừa từ nó
D. Chỉ từ các lớp không có quan hệ kế thừa

133. Trong nguyên lý SOLID, chữ ‘S’ đại diện cho Single Responsibility Principle có nghĩa là gì?

A. Một lớp chỉ nên có một lý do duy nhất để thay đổi
B. Một phương thức chỉ được phép trả về một giá trị duy nhất
C. Một đối tượng chỉ có thể thuộc về một lớp duy nhất
D. Một chương trình chỉ nên có một lớp chính duy nhất

134. Mối quan hệ ‘Has-a’ thường được hiện thực hóa thông qua kỹ thuật nào?

A. Kế thừa đơn (Single Inheritance)
B. Đa kế thừa (Multiple Inheritance)
C. Thành phần/Hợp thành (Composition)
D. Triển khai giao diện (Interface Implementation)

135. Việc chuyển đổi một đối tượng từ kiểu lớp con sang kiểu lớp cha được gọi là gì?

A. Downcasting
B. Upcasting
C. Overloading
D. Binding

136. Đặc điểm chính của một phương thức tĩnh (static method) là gì?

A. Nó chỉ có thể truy cập các biến phiên bản (instance variables)
B. Nó yêu cầu một đối tượng phải được tạo ra trước khi gọi
C. Nó thuộc về lớp chứ không thuộc về bất kỳ đối tượng cụ thể nào
D. Nó không thể bị nạp chồng (overload)

137. Tính chất nào của OOP giúp giảm thiểu sự phụ thuộc vào các chi tiết cài đặt và tập trung vào ‘lớp làm gì’ thay vì ‘làm như thế nào’?

A. Tính kế thừa
B. Tính trừu tượng (Abstraction)
C. Tính đa hình
D. Tính đóng gói

138. Phép gán ‘Shallow Copy’ (Sao chép nông) khác gì so với ‘Deep Copy’ (Sao chép sâu)?

A. Shallow Copy chỉ sao chép các tham chiếu, trong khi Deep Copy sao chép toàn bộ nội dung đối tượng
B. Deep Copy chạy nhanh hơn Shallow Copy
C. Shallow Copy xóa đối tượng gốc sau khi sao chép
D. Deep Copy chỉ dùng được cho các kiểu dữ liệu số

139. Để đảm bảo các lớp con không làm hỏng tính đúng đắn của chương trình khi thay thế lớp cha, chúng ta tuân thủ nguyên lý nào?

A. Open/Closed Principle
B. Liskov Substitution Principle
C. Interface Segregation Principle
D. Dependency Inversion Principle

140. Mục đích chính của ‘Destructor’ (Hàm hủy) trong một số ngôn ngữ như C++ là gì?

A. Để cấp phát bộ nhớ cho đối tượng
B. Để sao chép một đối tượng sang đối tượng khác
C. Để dọn dẹp tài nguyên và giải phóng bộ nhớ trước khi đối tượng bị tiêu hủy
D. Để khởi tạo lại các giá trị mặc định cho lớp

141. Tại sao trong Java không hỗ trợ đa kế thừa trực tiếp từ nhiều lớp cha?

A. Vì nó làm giảm hiệu năng thực thi của máy ảo JVM
B. Để tránh sự phức tạp và mơ hồ như lỗi Diamond Problem
C. Vì Java không sử dụng con trỏ
D. Để bắt buộc lập trình viên phải sử dụng lớp tĩnh

142. Trong thiết kế hướng đối tượng, ‘Low Coupling’ (Kết hợp lỏng lẻo) có lợi ích gì?

A. Làm cho các lớp phụ thuộc chặt chẽ vào nhau để bảo mật
B. Tăng tốc độ biên dịch mã nguồn
C. Giúp các lớp dễ dàng thay đổi và tái sử dụng mà ít ảnh hưởng đến các lớp khác
D. Giảm số lượng dòng code cần phải viết

143. Khái niệm ‘High Cohesion’ (Độ gắn kết cao) ám chỉ điều gì?

A. Các thành phần trong một lớp tập trung thực hiện tốt một nhiệm vụ cụ thể
B. Một lớp chứa rất nhiều phương thức thực hiện các nhiệm vụ khác nhau
C. Việc kết nối nhiều máy chủ lại với nhau để chạy ứng dụng
D. Khả năng một lớp có thể kế thừa từ hàng trăm lớp khác

144. Đâu là cách chính xác nhất để triển khai tính đa hình trong Java?

A. Khai báo tất cả các biến là kiểu private
B. Sử dụng tham chiếu kiểu lớp cha để trỏ đến đối tượng kiểu lớp con
C. Sử dụng từ khóa final cho tất cả các phương thức
D. Tạo ra thật nhiều lớp không có liên hệ gì với nhau

145. Từ khóa ‘super’ trong các ngôn ngữ như Java dùng để làm gì?

A. Để tạo ra một đối tượng siêu cấp với quyền hạn cao nhất
B. Để gọi các thành phần (phương thức, thuộc tính) của lớp cha
C. Để hủy bỏ việc kế thừa từ một lớp khác
D. Để định nghĩa một lớp là lớp gốc của toàn bộ hệ thống

146. Một ‘Interface’ khác với một ‘Abstract Class’ ở điểm cơ bản nào?

A. Interface có thể chứa các biến phiên bản (instance variables) còn Abstract Class thì không
B. Interface không thể chứa các phương thức có thân hàm (trong các phiên bản cũ), còn Abstract Class thì có thể
C. Interface bắt buộc phải được kế thừa bằng từ khóa extends
D. Chỉ có Abstract Class mới dùng được cho đa hình

147. Khi một lớp con ghi đè một phương thức của lớp cha, yêu cầu bắt buộc là gì?

A. Phương thức ở lớp con phải có tên khác với lớp cha
B. Phương thức ở lớp con phải có kiểu trả về khác với lớp cha
C. Phương thức ở lớp con phải có cùng chữ ký (tên và tham số) như ở lớp cha
D. Phương thức ở lớp cha phải được khai báo là private

148. Phạm vi truy cập nào là chặt chẽ nhất trong lập trình hướng đối tượng?

A. Public
B. Private
C. Protected
D. Default/Internal

149. Nguyên lý ‘Open/Closed’ (Đóng với sự thay đổi, Mở với sự mở rộng) khuyên chúng ta nên làm gì?

A. Nên sửa trực tiếp mã nguồn của lớp hiện tại khi cần chức năng mới
B. Nên thiết kế các lớp sao cho có thể thêm chức năng mới bằng cách kế thừa mà không cần sửa mã cũ
C. Nên đóng tất cả các file mã nguồn sau khi biên dịch xong
D. Nên hạn chế việc tạo ra thêm các lớp mới trong dự án

150. Trong C++, một ‘Virtual Destructor’ (Hàm hủy ảo) là cần thiết khi nào?

A. Khi lớp không có bất kỳ phương thức nào khác
B. Khi lớp được sử dụng làm lớp cha và có các lớp con kế thừa
C. Khi chúng ta muốn ngăn chặn việc xóa đối tượng
D. Khi lớp chỉ chứa các phương thức tĩnh

Số câu đã làm: 0/0
Thời gian còn lại: 00:00:00
  • Đã làm
  • Chưa làm
  • Cần kiểm tra lại
© 2026 Trending New 24h • Tạo ra với GeneratePress

Bạn ơi!!! Để xem được kết quả, bạn vui lòng làm nhiệm vụ nhỏ xíu này nha

HƯỚNG DẪN TÌM MẬT KHẨU

Đang tải nhiệm vụ...

Bước 1: Mở tab mới và truy cập Google.com. Sau đó tìm kiếm chính xác từ khóa sau:

Bước 2: Tìm và click vào kết quả có trang web giống như hình ảnh dưới đây:

Hướng dẫn tìm kiếm

Bước 3: Kéo xuống cuối trang đó để tìm mật khẩu như hình ảnh hướng dẫn:

Hướng dẫn lấy mật khẩu

Nếu tìm không thấy mã bạn có thể Đổi nhiệm vụ để lấy mã khác nhé.