1. Trong lập trình hướng đối tượng, mục đích chính của việc tạo ra các ‘design patterns’ (mẫu thiết kế) là gì?
A. Để làm cho mã nguồn khó hiểu hơn.
B. Để cung cấp các giải pháp tái sử dụng cho các vấn đề phổ biến trong thiết kế phần mềm, giúp mã nguồn linh hoạt, dễ bảo trì và mở rộng.
C. Để tự động hóa hoàn toàn quá trình lập trình.
D. Để giảm thiểu số lượng ngôn ngữ lập trình cần sử dụng.
2. Trong lập trình hướng đối tượng, ‘Constructor’ (hàm tạo) có vai trò chính là gì?
A. Thực hiện các phép tính phức tạp.
B. Khởi tạo trạng thái ban đầu cho đối tượng khi nó được tạo ra.
C. Đảm bảo tính bảo mật của dữ liệu.
D. Tự động cập nhật các thuộc tính.
3. Tại sao việc sử dụng các lớp trừu tượng (Abstract Classes) hoặc giao diện (Interfaces) lại quan trọng trong thiết kế phần mềm hướng đối tượng?
A. Để tăng tốc độ biên dịch mã.
B. Để buộc các lớp con tuân thủ một cấu trúc và hợp đồng nhất định, thúc đẩy tính nhất quán và khả năng mở rộng.
C. Để ẩn hoàn toàn mọi chi tiết triển khai.
D. Để giảm thiểu số lượng dòng code.
4. Khái niệm nào cho phép hai phương thức có cùng tên nhưng khác nhau về số lượng hoặc kiểu tham số, và chúng có thể tồn tại 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. Đóng gói (Encapsulation)
D. Đa hình (Polymorphism)
5. Trong lập trình hướng đối tượng, ‘Private members’ (thành viên riêng tư) của một lớp có thể được truy cập trực tiếp từ đâu?
A. Từ bất kỳ lớp nào trong chương trình.
B. Chỉ từ bên trong chính lớp đó.
C. Từ các lớp kế thừa trực tiếp.
D. Từ các đối tượng cùng gói (package).
6. Một lớp trừu tượng (Abstract Class) có thể có những gì?
A. Chỉ các phương thức trừu tượng.
B. Các phương thức trừu tượng và các phương thức đã được triển khai.
C. Chỉ các phương thức đã được triển khai.
D. Chỉ các thuộc tính.
7. Đâu là lợi ích chính của việc sử dụng lập trình hướng đối tượng?
A. Tăng tốc độ thực thi chương trình lên nhiều lần.
B. Giảm thiểu việc sử dụng bộ nhớ.
C. Tăng khả năng tái sử dụng mã, dễ bảo trì và mở rộng hệ thống.
D. Loại bỏ hoàn toàn lỗi cú pháp trong code.
8. Khi một lớp con ghi đè một phương thức từ lớp cha, nó có thể gọi lại phương thức gốc của lớp cha bằng cách sử dụng từ khóa nào (tùy thuộc ngôn ngữ)?
A. ‘self’ hoặc ‘this’
B. ‘super’ hoặc tên lớp cha
C. ‘static’
D. ‘abstract’
9. Khi một đối tượng của lớp con được sử dụng ở nơi mà đối tượng của lớp cha được mong đợi, và nó hoạt động đúng đắn, điều này minh họa cho nguyên tắc nào?
A. Nguyên tắc đóng gói.
B. Nguyên tắc Liskov Substitution Principle (LSP).
C. Nguyên tắc đa hình.
D. Nguyên tắc đơn nhiệm (Single Responsibility Principle).
10. Nếu một lớp không có bất kỳ hàm tạo (constructor) nào được định nghĩa rõ ràng, hệ thống sẽ tự động làm gì?
A. Chương trình sẽ báo lỗi biên dịch.
B. Hệ thống sẽ cung cấp một hàm tạo mặc định (default constructor) không có tham số.
C. Lớp sẽ không thể tạo đối tượng.
D. Hàm tạo cuối cùng trong lớp sẽ được sử dụng.
11. Khái niệm nào trong lập trình hướng đối tượng đề cập đến việc che giấu chi tiết triển khai bên trong và chỉ hiển thị các chức năng cần thiết cho người dùng?
A. Kế thừa (Inheritance)
B. Đóng gói (Encapsulation)
C. Trừu tượng hóa (Abstraction)
D. Đa hình (Polymorphism)
12. Trong một hệ thống có nhiều lớp kế thừa lẫn nhau, việc sử dụng ‘protected members’ (thành viên được bảo vệ) cho phép truy cập từ đâu?
A. Chỉ từ bên trong lớp đó.
B. Từ lớp đó và các lớp con của nó.
C. Từ bất kỳ lớp nào.
D. Chỉ từ các lớp cùng gói (package).
13. Khái niệm nào liên quan đến việc một lớp có thể có nhiều phiên bản hoặc hình thái khác nhau tùy thuộc vào ngữ cảnh sử dụng?
A. Đóng gói (Encapsulation)
B. Kế thừa (Inheritance)
C. Trừu tượng hóa (Abstraction)
D. Đa hình (Polymorphism)
14. Khái niệm ‘Interface’ trong lập trình hướng đối tượng thường định nghĩa tập hợp các phương thức mà một lớp PHẢI thực hiện. Điều này giúp đảm bảo tính gì?
A. Tính kế thừa đa cấp.
B. Tính đóng gói dữ liệu.
C. Tính hợp đồng (Contract) và chuẩn hóa.
D. Tính khởi tạo đối tượng.
15. Trong lập trình hướng đối tượng, ‘Encapsulation’ (đóng gói) giúp bảo vệ dữ liệu bằng cách nào?
A. Bằng cách làm cho tất cả các thuộc tính là ‘public’.
B. Bằng cách giới hạn quyền truy cập trực tiếp vào các thuộc tính và chỉ cho phép truy cập thông qua các phương thức (getters/setters).
C. Bằng cách định nghĩa các phương thức trừu tượng.
D. Bằng cách sử dụng kế thừa từ nhiều lớp.
16. Trong lập trình hướng đối tượng, ‘Abstract method’ (phương thức trừu tượng) có đặc điểm gì?
A. Nó luôn có một thân phương thức được triển khai sẵn.
B. Nó không có thân phương thức và phải được triển khai bởi lớp con không trừu tượng.
C. Nó chỉ có thể được gọi từ bên trong lớp cha.
D. Nó tự động được đóng gói.
17. Đâu là một ví dụ về việc ‘đóng gói’ (encapsulation) một thuộc tính trong lớp?
A. Khai báo thuộc tính là ‘public’ và truy cập trực tiếp.
B. Khai báo thuộc tính là ‘private’ và cung cấp các phương thức ‘getter’ và ‘setter’ công khai.
C. Khai báo thuộc tính là ‘protected’ và truy cập từ lớp con.
D. Khai báo thuộc tính là ‘static’.
18. Trong lập trình hướng đối tượng, khái niệm nào cho phép một lớp con kế thừa các thuộc tính và phương thức từ một lớp cha, tạo nên mối quan hệ ‘là một loại của’?
A. Đóng gói (Encapsulation)
B. Trừu tượng hóa (Abstraction)
C. Kế thừa (Inheritance)
D. Đa hình (Polymorphism)
19. Nếu một lớp con ghi đè một phương thức của lớp cha, nhưng không gọi lại phương thức gốc, điều này có thể dẫn đến hậu quả gì đối với các lớp hậu duệ xa hơn của lớp cha đó?
A. Chúng sẽ luôn nhận được hành vi gốc.
B. Chúng sẽ không thể kế thừa hành vi gốc nữa nếu lớp con đó không gọi lại ‘super’.
C. Chúng sẽ có hành vi của lớp con ghi đè.
D. Hệ thống sẽ báo lỗi.
20. Khi một lớp ghi đè một phương thức, nhưng vẫn muốn giữ lại một phần chức năng của phương thức gốc từ lớp cha, nó nên làm gì?
A. Chỉ định nghĩa lại toàn bộ phương thức mà không gọi lại phương thức cha.
B. Sử dụng từ khóa ‘super’ (hoặc tương đương) để gọi phương thức của lớp cha trong thân phương thức đã ghi đè.
C. Thay đổi tên phương thức để tránh xung đột.
D. Xóa bỏ hoàn toàn phương thức đó.
21. Khi một lớp cha định nghĩa một phương thức và lớp con cung cấp một triển khai cụ thể cho phương thức đó, đây là ví dụ của hiện tượng nào?
A. Đóng gói (Encapsulation)
B. Kế thừa (Inheritance)
C. Trừu tượng hóa (Abstraction)
D. Ghi đè phương thức (Method Overriding)
22. Khái niệm nào trong OOP cho phép một ‘variable’ (biến) kiểu lớp cha có thể trỏ tới một đối tượng của lớp con?
A. Đóng gói (Encapsulation)
B. Kế thừa (Inheritance)
C. Trừu tượng hóa (Abstraction)
D. Đa hình (Polymorphism)
23. Trong lập trình hướng đối tượng, khi một lớp kế thừa từ nhiều lớp cha, điều này được gọi là gì?
A. Đa kế thừa (Multiple Inheritance)
B. Đa hình (Polymorphism)
C. Đóng gói (Encapsulation)
D. Trừu tượng hóa (Abstraction)
24. Trong lập trình hướng đối tượng, phương thức ‘toString()’ thường được sử dụng để làm gì?
A. Khởi tạo giá trị cho các thuộc tính của đối tượng.
B. Trả về biểu diễn dạng chuỗi của đối tượng.
C. Kiểm tra tính hợp lệ của dữ liệu đầu vào.
D. Xóa bỏ đối tượng khỏi bộ nhớ.
25. Một lớp trong lập trình hướng đối tượng có thể có bao nhiêu lớp cha trực tiếp?
A. Một hoặc nhiều
B. Chỉ một
C. Không có giới hạn
D. Tối đa hai
26. Đâu là một ví dụ về ‘Polymorphism’ (đa hình) trong lập trình hướng đối tượng?
A. Một lớp chỉ có một trách nhiệm duy nhất.
B. Che giấu chi tiết triển khai bên trong của một lớp.
C. Khả năng một đối tượng có thể biểu hiện dưới nhiều hình thức khác nhau, ví dụ như cùng một phương thức ‘draw()’ trên các đối tượng hình học khác nhau sẽ vẽ ra hình tương ứng.
D. Một lớp có thể kế thừa từ nhiều lớp cha.
27. Trong lập trình hướng đối tượng, để một lớp có thể sử dụng lại mã nguồn từ lớp khác, ta áp dụng nguyên lý nào?
A. Đa hình (Polymorphism)
B. Đóng gói (Encapsulation)
C. Kế thừa (Inheritance)
D. Trừu tượng hóa (Abstraction)
28. Khái niệm ‘Abstraction’ (trừu tượng hóa) giúp tập trung vào điều gì khi thiết kế lớp?
A. Chi tiết triển khai cụ thể của các thuật toán.
B. Các hành vi và thuộc tính quan trọng, bỏ qua các chi tiết không cần thiết.
C. Cách quản lý bộ nhớ tự động.
D. Mối quan hệ giữa các đối tượng trong một hệ thống phức tạp.
29. Nếu hai lớp có cùng tên phương thức nhưng khác nhau về danh sách tham số (số lượng, kiểu dữ liệu, thứ tự), đây là hiện tượng gì?
A. Ghi đè phương thức (Method Overriding)
B. Nạp chồng phương thức (Method Overloading)
C. Đóng gói (Encapsulation)
D. Đa hình (Polymorphism)
30. Nếu một lớp A là lớp cha của lớp B, và lớp B là lớp cha của lớp C, thì lớp C có thể truy cập trực tiếp các thành viên công khai (public members) của lớp nào?
A. Chỉ lớp A.
B. Chỉ lớp B.
C. Cả lớp A và lớp B.
D. Không lớp nào.
31. Khi thực hiện phân tích dữ liệu, việc hiểu rõ ‘ngữ cảnh’ (context) của dữ liệu là quan trọng vì sao?
A. Giúp làm cho biểu đồ trông đẹp hơn.
B. Giúp diễn giải kết quả phân tích một cách chính xác và tránh đưa ra kết luận sai lầm.
C. Tăng tốc độ xử lý dữ liệu.
D. Giảm số lượng dữ liệu cần phân tích.
32. Dữ liệu phi cấu trúc (unstructured data) bao gồm những loại nào?
A. Chỉ bao gồm văn bản.
B. Bao gồm văn bản, hình ảnh, âm thanh, video và các định dạng không có cấu trúc rõ ràng.
C. Chỉ bao gồm dữ liệu từ cơ sở dữ liệu quan hệ.
D. Chỉ bao gồm dữ liệu số.
33. Phân tích đề xuất (Prescriptive Analysis) tập trung vào việc trả lời câu hỏi nào?
A. Điều gì đã xảy ra?
B. Tại sao điều đó xảy ra?
C. Điều gì có thể xảy ra?
D. Chúng ta nên làm gì về điều đó?
34. Đâu là một ví dụ về ‘dữ liệu có cấu trúc’ (structured data)?
A. Nội dung của một bài đăng trên mạng xã hội.
B. Dữ liệu trong một bảng tính Excel với các hàng và cột được định nghĩa rõ ràng.
C. Một tệp âm thanh ghi âm cuộc họp.
D. Một tệp video hướng dẫn.
35. Khi thực hiện làm sạch dữ liệu (data cleaning), mục tiêu chính là gì?
A. Tăng cường tính thẩm mỹ của tập dữ liệu.
B. Loại bỏ các giá trị ngoại lai (outliers) mà không xem xét ngữ cảnh.
C. Xử lý các giá trị thiếu, dữ liệu không nhất quán, trùng lặp hoặc sai định dạng để đảm bảo chất lượng dữ liệu.
D. Chỉ tập trung vào việc định dạng lại các cột dữ liệu.
36. Đâu là bước đầu tiên và quan trọng nhất trong quy trình phân tích dữ liệu?
A. Trực quan hóa dữ liệu.
B. Xây dựng mô hình dự đoán.
C. Xác định vấn đề và mục tiêu phân tích.
D. Triển khai kết quả phân tích.
37. Loại phân tích dữ liệu nào tập trung vào việc mô tả những gì đã xảy ra trong quá khứ?
A. Phân tích dự đoán (Predictive Analysis).
B. Phân tích đề xuất (Prescriptive Analysis).
C. Phân tích mô tả (Descriptive Analysis).
D. Phân tích chẩn đoán (Diagnostic Analysis).
38. Trong quá trình trực quan hóa dữ liệu, nguyên tắc ‘GIGO’ (Garbage In, Garbage Out) nhấn mạnh điều gì?
A. Chất lượng của biểu đồ phụ thuộc vào phần mềm sử dụng.
B. Nếu dữ liệu đầu vào kém chất lượng, kết quả phân tích và trực quan hóa cũng sẽ không đáng tin cậy.
C. Cần sử dụng nhiều loại biểu đồ khác nhau để tránh nhàm chán.
D. Trực quan hóa chỉ nên sử dụng cho các tập dữ liệu nhỏ.
39. Biểu đồ đường (line chart) là lựa chọn tốt nhất để thể hiện loại dữ liệu nào?
A. Sự phân bố của các điểm dữ liệu.
B. Mối quan hệ giữa các danh mục.
C. Xu hướng hoặc thay đổi của một biến theo thời gian hoặc một biến liên tục khác.
D. Tỷ lệ phần trăm của các thành phần trong một tổng thể.
40. Trong lĩnh vực trực quan hóa dữ liệu (data visualization), biểu đồ cột (bar chart) thường được sử dụng để làm gì?
A. Thể hiện mối quan hệ giữa hai biến định lượng liên tục.
B. So sánh các giá trị giữa các danh mục hoặc nhóm khác nhau.
C. Biểu diễn sự phân bố của một biến định lượng duy nhất.
D. Hiển thị xu hướng theo thời gian.
41. Một doanh nghiệp sử dụng dữ liệu bán hàng lịch sử để dự đoán doanh số bán hàng cho quý tiếp theo. Đây là ví dụ về loại phân tích nào?
A. Phân tích mô tả.
B. Phân tích chẩn đoán.
C. Phân tích dự đoán.
D. Phân tích đề xuất.
42. Khi đánh giá hiệu quả của một mô hình phân tích dữ liệu, chỉ số nào thường được sử dụng để đo lường mức độ chính xác của các dự đoán phân loại?
A. RMSE (Root Mean Squared Error).
B. MAE (Mean Absolute Error).
C. Accuracy (Độ chính xác).
D. R-squared (Hệ số xác định).
43. Sentiment analysis (phân tích cảm xúc) là gì?
A. Phân tích xu hướng giá cổ phiếu.
B. Phân tích nội dung các bài báo khoa học.
C. Xác định và trích xuất thái độ, cảm xúc (tích cực, tiêu cực, trung tính) từ các đoạn văn bản.
D. Phân tích cấu trúc ngữ pháp của câu.
44. Phân tích hồi quy (regression analysis) chủ yếu được sử dụng để:
A. Tìm kiếm các mối quan hệ không gian trong dữ liệu.
B. Xác định sự khác biệt giữa hai nhóm dữ liệu.
C. Mô hình hóa mối quan hệ giữa một biến phụ thuộc và một hoặc nhiều biến độc lập.
D. Phân loại các điểm dữ liệu vào các nhóm được xác định trước.
45. Khi làm việc với dữ liệu lớn (Big Data), thách thức nào thường được đặt ra?
A. Thiếu dữ liệu để phân tích.
B. Tốc độ xử lý và khả năng lưu trữ.
C. Thiếu công cụ trực quan hóa.
D. Dữ liệu quá sạch và dễ phân tích.
46. Mục tiêu của phân tích dự đoán (Predictive Analysis) là gì?
A. Mô tả lại các sự kiện trong quá khứ.
B. Đưa ra các khuyến nghị hành động cụ thể.
C. Dự báo các kết quả hoặc xu hướng có khả năng xảy ra trong tương lai dựa trên dữ liệu lịch sử.
D. Tìm hiểu nguyên nhân tại sao một sự kiện lại xảy ra.
47. Nếu bạn cần phân tích sự thay đổi của nhiệt độ trung bình hàng tháng trong một năm, loại biểu đồ nào là phù hợp nhất?
A. Biểu đồ tròn.
B. Biểu đồ cột.
C. Biểu đồ đường.
D. Biểu đồ phân tán (scatter plot).
48. Kỹ thuật nào dùng để giảm số chiều của dữ liệu mà vẫn giữ lại phần lớn thông tin quan trọng?
A. Phân tích hồi quy.
B. Phân tích cụm.
C. Giảm chiều dữ liệu (Dimensionality Reduction) như PCA (Principal Component Analysis).
D. Phân tích trung bình động.
49. Data mining (khai phá dữ liệu) khác với phân tích dữ liệu ở điểm nào?
A. Data mining chỉ áp dụng cho dữ liệu lớn, còn phân tích dữ liệu thì không.
B. Data mining có xu hướng tập trung vào việc khám phá các mẫu ẩn, mối quan hệ mới và tri thức tiềm ẩn trong các tập dữ liệu lớn, thường sử dụng các thuật toán học máy, trong khi phân tích dữ liệu có thể bao gồm cả việc kiểm tra giả thuyết và mô tả dữ liệu.
C. Phân tích dữ liệu luôn sử dụng trực quan hóa, còn data mining thì không.
D. Không có sự khác biệt đáng kể giữa hai khái niệm này.
50. Hệ thống gợi ý sản phẩm trên các trang thương mại điện tử thường dựa trên loại phân tích nào để đưa ra đề xuất phù hợp cho người dùng?
A. Phân tích mô tả.
B. Phân tích chẩn đoán.
C. Phân tích dự đoán và đề xuất.
D. Phân tích hồi quy.
51. Biểu đồ tròn (pie chart) thường được sử dụng để:
A. So sánh giá trị giữa nhiều danh mục.
B. Hiển thị sự phân bố của các thành phần trong một tổng thể và tỷ lệ đóng góp của mỗi thành phần đó.
C. Biểu diễn mối quan hệ giữa hai biến định lượng.
D. Theo dõi sự thay đổi của dữ liệu qua các giai đoạn.
52. Phân tích dữ liệu nào trả lời câu hỏi ‘Tại sao điều đó xảy ra’?
A. Phân tích mô tả.
B. Phân tích dự đoán.
C. Phân tích chẩn đoán.
D. Phân tích đề xuất.
53. Trong các phát biểu sau về phân tích dữ liệu, phát biểu nào là đúng?
A. Phân tích dữ liệu chỉ bao gồm việc thu thập và làm sạch dữ liệu.
B. Phân tích dữ liệu nhằm mục đích chuyển đổi dữ liệu thô thành thông tin có ý nghĩa và hỗ trợ ra quyết định.
C. Mục tiêu chính của phân tích dữ liệu là tạo ra các báo cáo đẹp mắt mà không cần diễn giải sâu.
D. Phân tích dữ liệu chỉ áp dụng cho các ngành khoa học tự nhiên.
54. Phân tích A/B testing là gì?
A. Phân tích mối quan hệ giữa hai biến A và B.
B. So sánh hai phiên bản khác nhau (A và B) của một yếu tố để xác định phiên bản nào hoạt động hiệu quả hơn.
C. Phân tích dữ liệu chuỗi thời gian.
D. Phân tích cảm xúc trong văn bản.
55. Kỹ thuật phân cụm (clustering) trong phân tích dữ liệu thường được sử dụng để:
A. Dự đoán giá trị liên tục của một biến.
B. Nhóm các điểm dữ liệu tương tự nhau thành các cụm riêng biệt mà không cần nhãn trước.
C. Xác định mối quan hệ nhân quả giữa các biến.
D. Biểu diễn dữ liệu đa chiều lên một không gian hai chiều.
56. Khi phân tích dữ liệu khách hàng, việc xác định các phân khúc khách hàng (customer segmentation) dựa trên hành vi mua sắm thuộc loại phân tích nào?
A. Phân tích mô tả.
B. Phân tích chẩn đoán.
C. Phân tích dự đoán.
D. Phân tích đề xuất.
57. Trong phân tích văn bản (text analysis), kỹ thuật nào thường dùng để xác định các chủ đề chính hoặc các từ khóa quan trọng trong một tập hợp văn bản?
A. Phân tích hồi quy.
B. Phân tích cụm.
C. Mô hình hóa chủ đề (Topic Modeling).
D. Phân tích chuỗi thời gian.
58. Đâu là một công cụ phổ biến được sử dụng cho phân tích và trực quan hóa dữ liệu?
A. Microsoft Word.
B. Adobe Photoshop.
C. Microsoft Excel.
D. Notepad.
59. Trong phân tích dữ liệu, khái niệm ‘outlier’ (giá trị ngoại lai) chỉ:
A. Giá trị xuất hiện nhiều nhất trong tập dữ liệu.
B. Giá trị trung bình của tập dữ liệu.
C. Điểm dữ liệu khác biệt đáng kể so với phần lớn các điểm dữ liệu khác.
D. Giá trị bị thiếu trong tập dữ liệu.
60. Một chuyên gia phân tích dữ liệu đang xây dựng một mô hình để dự đoán khả năng khách hàng rời bỏ dịch vụ (churn prediction). Đây là ứng dụng của loại phân tích nào?
A. Phân tích mô tả.
B. Phân tích chẩn đoán.
C. Phân tích dự đoán (cụ thể là phân loại nhị phân).
D. Phân tích đề xuất.
61. Phát biểu nào sau đây mô tả đúng về toán tử ‘is’ trong Python?
A. Kiểm tra xem hai biến có cùng giá trị hay không.
B. Kiểm tra xem hai biến có trỏ đến cùng một đối tượng trong bộ nhớ hay không.
C. Thực hiện phép gán giá trị.
D. Kiểm tra xem một giá trị có thuộc về một tập hợp hay không.
62. Câu lệnh nào dùng để in ra màn hình giá trị của biến ‘score’ trong Python?
A. display(score)
B. show(score)
C. print(score)
D. output(score)
63. Trong Python, câu lệnh nào sẽ thoát hoàn toàn khỏi vòng lặp?
A. continue
B. pass
C. break
D. return
64. Trong Python, để tạo một hàm không trả về giá trị nào (hàm thủ tục), bạn có thể sử dụng từ khóa nào trong câu lệnh ‘return’?
A. return 0
B. return None
C. return void
D. return {}
65. Trong lập trình Python, câu lệnh nào sau đây dùng để khai báo một biến và gán giá trị ‘Hello, World!’ cho biến đó?
A. let myVariable = ‘Hello, World!’;
B. var myVariable = ‘Hello, World!’;
C. myVariable := ‘Hello, World!’
D. myVariable = ‘Hello, World!’
66. Câu lệnh nào trong Python dùng để kiểm tra xem một biến ‘x’ có bằng 10 không?
A. if x == 10
B. if x = 10
C. if x is 10
D. if x: 10
67. Phát biểu nào sau đây đúng về cách tạo một chuỗi ký tự nhiều dòng trong Python?
A. Sử dụng dấu nháy đơn (‘) cho mỗi dòng.
B. Sử dụng dấu nháy kép đôi (“”) cho mỗi dòng.
C. Sử dụng ba dấu nháy đơn (”’) hoặc ba dấu nháy kép đôi (“””) bao quanh toàn bộ văn bản.
D. Chỉ có thể sử dụng các ký tự xuống dòng đặc biệt.
68. Trong Python, câu lệnh nào dùng để kiểm tra xem một khóa có tồn tại trong dictionary hay không?
A. dictionary.has_key(‘key’)
B. ‘key’ in dictionary
C. dictionary.exists(‘key’)
D. check ‘key’ in dictionary
69. Trong Python, để lặp qua các ký tự của một chuỗi ‘s’, cấu trúc nào là phù hợp nhất?
A. while s:
B. for char in s:
C. loop s:
D. iterate s:
70. Câu lệnh nào trong Python được dùng để bỏ qua phần còn lại của vòng lặp hiện tại và chuyển sang lần lặp tiếp theo?
A. pass
B. exit
C. continue
D. break
71. Phát biểu nào sau đây là đúng về cấu trúc ‘set’ trong Python?
A. Có thứ tự và cho phép phần tử trùng lặp.
B. Không có thứ tự và cho phép phần tử trùng lặp.
C. Có thứ tự và không cho phép phần tử trùng lặp.
D. Không có thứ tự và không cho phép phần tử trùng lặp.
72. Phát biểu nào sau đây mô tả đúng nhất về kiểu dữ liệu ‘string’ trong Python?
A. Là một chuỗi các ký tự có thể thay đổi được.
B. Là một chuỗi các ký tự không thể thay đổi được.
C. Là một tập hợp các số nguyên.
D. Là một tập hợp các giá trị đúng/sai.
73. Trong Python, hàm nào được sử dụng để chuyển đổi một số nguyên thành một chuỗi ký tự?
A. int()
B. float()
C. str()
D. convert()
74. Khi làm việc với danh sách (list) trong Python, phương thức nào được sử dụng để thêm một phần tử vào cuối danh sách?
A. insert()
B. append()
C. add()
D. extend()
75. Phát biểu nào sau đây đúng về hàm ‘range()’ trong Python khi được sử dụng trong vòng lặp ‘for’?
A. Tạo ra một danh sách chứa tất cả các số từ 0 đến n-1.
B. Tạo ra một đối tượng có thể lặp, tạo ra các số tuần tự.
C. Chỉ có thể tạo ra một chuỗi ký tự.
D. Luôn tạo ra một vòng lặp vô hạn.
76. Phát biểu nào sau đây mô tả đúng nhất về hàm ‘len()’ trong Python?
A. Trả về giá trị lớn nhất trong một tập hợp.
B. Trả về độ dài của một chuỗi hoặc số lượng phần tử trong một cấu trúc dữ liệu.
C. Chuyển đổi một giá trị thành số nguyên.
D. Kiểm tra xem một biến có tồn tại hay không.
77. Trong Python, để truy cập một phần tử trong dictionary có tên ‘my_dict’ bằng khóa ‘key’, bạn sử dụng cú pháp nào?
A. my_dict.get(‘key’)
B. my_dict(‘key’)
C. my_dict[‘key’]
D. my_dict.key
78. Trong Python, toán tử ‘%’ được sử dụng để làm gì?
A. Phép chia lấy phần nguyên.
B. Phép nhân.
C. Phép chia lấy phần dư (modulo).
D. Phép so sánh bằng.
79. Phát biểu nào sau đây mô tả đúng về cấu trúc ‘tuple’ trong Python?
A. Là một tập hợp các phần tử có thể thay đổi được.
B. Là một chuỗi các ký tự.
C. Là một tập hợp các phần tử có thứ tự và không thể thay đổi được.
D. Là một tập hợp các phần tử không có thứ tự và không trùng lặp.
80. Trong Python, cấu trúc dữ liệu nào cho phép lưu trữ các cặp khóa-giá trị và các khóa phải là duy nhất?
A. List
B. Tuple
C. Set
D. Dictionary
81. Phát biểu nào sau đây mô tả đúng về cách Python xử lý các biến trong hàm?
A. Tất cả các biến trong hàm là biến toàn cục.
B. Các biến được khai báo bên trong hàm là biến cục bộ (local) và chỉ tồn tại trong phạm vi hàm đó.
C. Các biến cục bộ tự động trở thành biến toàn cục khi hàm kết thúc.
D. Python không hỗ trợ biến cục bộ.
82. Để tạo một danh sách rỗng trong Python, bạn sử dụng cú pháp nào?
A. list()
B. []
C. new list
D. List.new()
83. Trong Python, câu lệnh nào được sử dụng để bắt đầu một khối mã thuộc về một câu lệnh điều kiện ‘if’?
A. Begin
B. {
C. :
D. End if
84. Phát biểu nào sau đây là đúng về vòng lặp ‘for’ trong Python?
A. Chỉ có thể lặp qua các phần tử của danh sách.
B. Thường được sử dụng khi số lần lặp đã biết trước.
C. Luôn yêu cầu một điều kiện dừng rõ ràng.
D. Không thể lặp qua chuỗi ký tự.
85. Trong Python, để truy cập phần tử đầu tiên của một danh sách có tên là ‘my_list’, bạn sẽ sử dụng chỉ số nào?
A. my_list(0)
B. my_list[0]
C. my_list.first
D. my_list[1]
86. Phát biểu nào sau đây mô tả đúng về cách Python xử lý lỗi (exception handling)?
A. Chỉ có thể sử dụng vòng lặp để xử lý lỗi.
B. Sử dụng khối ‘try-except’ để bắt và xử lý lỗi.
C. Mọi lỗi đều dẫn đến việc dừng chương trình ngay lập tức.
D. Lỗi chỉ xảy ra với biến số nguyên.
87. Khi định nghĩa một hàm trong Python, từ khóa nào được sử dụng?
A. function
B. define
C. def
D. method
88. Phát biểu nào sau đây mô tả đúng về cách Python thực hiện phép toán với kiểu dữ liệu khác nhau?
A. Luôn yêu cầu chuyển đổi kiểu tường minh cho mọi phép toán.
B. Thực hiện ‘ép kiểu ngầm’ (implicit type coercion) khi có thể để thực hiện phép toán.
C. Chỉ cho phép phép toán giữa các biến cùng kiểu dữ liệu.
D. Tự động bỏ qua các giá trị không tương thích.
89. Để nhập một giá trị từ bàn phím trong Python, bạn sử dụng hàm nào?
A. get()
B. input()
C. read()
D. scan()
90. Trong Python, để tạo một đối tượng có thể lặp từ một danh sách, bạn có thể sử dụng hàm nào?
A. list()
B. tuple()
C. iter()
D. sequence()
91. Trong Pascal, câu lệnh `Inc(x, 3)` sẽ thay đổi giá trị của biến `x` như thế nào nếu `x` ban đầu bằng 10?
A. Tăng `x` lên 1.
B. Tăng `x` lên 3.
C. Tăng `x` lên 13.
D. Giảm `x` xuống 7.
92. Trong Pascal, khi lập trình một bài toán yêu cầu thực hiện một hành động `N` lần, cấu trúc lặp nào thường được ưu tiên sử dụng nhất vì tính rõ ràng và dễ kiểm soát?
A. While…do
B. Repeat…until
C. For…do
D. Case…of
93. Trong Pascal, nếu biến ‘count’ có giá trị là 5, lệnh `Dec(count)` sẽ làm gì?
A. Tăng giá trị của ‘count’ lên 6.
B. Giảm giá trị của ‘count’ xuống 4.
C. Giữ nguyên giá trị của ‘count’.
D. Báo lỗi vì ‘count’ không phải là biến đếm.
94. Phát biểu nào sau đây là sai về cấu trúc lặp Repeat…until trong Pascal?
A. Khối lệnh bên trong lặp ít nhất một lần.
B. Điều kiện lặp được kiểm tra sau khi thực thi khối lệnh.
C. Vòng lặp dừng khi điều kiện là đúng.
D. Vòng lặp dừng khi điều kiện là sai.
95. Nếu bạn cần tính tổng các phần tử của một mảng số nguyên, bạn sẽ sử dụng cấu trúc lặp nào và làm thế nào để truy cập các phần tử?
A. Dùng While…do, truy cập bằng tên mảng.
B. Dùng For…do, truy cập bằng tên mảng và chỉ số.
C. Dùng Repeat…until, truy cập bằng tên mảng và giá trị phần tử.
D. Không cần vòng lặp, chỉ cần tên mảng.
96. Phát biểu nào sau đây mô tả chính xác vai trò của câu lệnh `break` trong vòng lặp?
A. Dùng để bỏ qua lần lặp hiện tại và chuyển sang lần lặp tiếp theo.
B. Dùng để thoát khỏi vòng lặp ngay lập tức.
C. Dùng để tiếp tục vòng lặp với giá trị mới của biến đếm.
D. Dùng để tăng giá trị của biến đếm.
97. Phát biểu nào sau đây là sai về cách khai báo mảng trong Pascal?
A. Mảng trong Pascal phải có kích thước cố định được khai báo trước.
B. Các phần tử của mảng phải cùng kiểu dữ liệu.
C. Chỉ số của mảng trong Pascal luôn bắt đầu từ 0.
D. Kích thước của mảng được xác định bởi giới hạn dưới và giới hạn trên của chỉ số.
98. Phát biểu nào sau đây mô tả đúng về sự khác nhau cơ bản giữa vòng lặp While…do và Repeat…until?
A. While…do kiểm tra điều kiện trước, Repeat…until kiểm tra điều kiện sau.
B. While…do luôn lặp ít nhất một lần, Repeat…until có thể không lặp lần nào.
C. While…do dùng cho vòng lặp có giới hạn, Repeat…until dùng cho vòng lặp vô hạn.
D. Không có sự khác biệt đáng kể nào.
99. Cấu trúc lặp nào trong Pascal đảm bảo khối lệnh bên trong nó sẽ được thực thi ít nhất một lần, ngay cả khi điều kiện ban đầu là sai?
A. For…do
B. While…do
C. Repeat…until
D. Case…of
100. Phát biểu nào sau đây là sai về việc sử dụng biến đếm trong vòng lặp For…do khi biến đếm là kiểu dữ liệu thực (Real)?
A. Biến đếm kiểu Real có thể được sử dụng trong For…do.
B. Việc tăng/giảm giá trị của biến đếm kiểu Real có thể gặp sai số làm tròn.
C. Vòng lặp For…do với biến đếm kiểu Real có thể không kết thúc như mong đợi do sai số.
D. Pascal không cho phép sử dụng biến đếm kiểu Real trong vòng lặp For…do.
101. Trong Pascal, nếu bạn cần thực hiện một thao tác cho đến khi người dùng nhập vào ký tự ‘Q’, bạn sẽ sử dụng cấu trúc lặp nào?
A. For…do
B. While…do
C. Repeat…until
D. Case…of
102. Trong Pascal, câu lệnh `continue` được sử dụng với mục đích gì bên trong vòng lặp?
A. Thoát hoàn toàn khỏi vòng lặp.
B. Bỏ qua các lệnh còn lại trong khối lặp của lần hiện tại và chuyển sang lần lặp tiếp theo.
C. Tăng giá trị của biến đếm lên 1.
D. Kiểm tra lại điều kiện của vòng lặp.
103. Để kiểm tra xem một số nguyên `n` có phải là số nguyên tố hay không, ta có thể sử dụng vòng lặp như thế nào?
A. Lặp từ 1 đến `n-1` và kiểm tra `n mod i = 0`.
B. Lặp từ 2 đến `n div 2` và kiểm tra `n mod i = 0`.
C. Lặp từ 2 đến `sqrt(n)` và kiểm tra `n mod i = 0`.
D. Cả ba phương án trên đều có thể áp dụng, tùy thuộc vào mức độ tối ưu.
104. Phát biểu nào sau đây mô tả đúng nhất mục đích của việc sử dụng biến đếm trong vòng lặp For…do ở Pascal?
A. Biến đếm dùng để lưu trữ kết quả của phép tính trong vòng lặp.
B. Biến đếm giúp xác định số lần lặp lại của vòng lặp.
C. Biến đếm chỉ được sử dụng khi điều kiện lặp là sai.
D. Biến đếm có thể thay đổi giá trị tùy ý bên trong vòng lặp For…do.
105. Phát biểu nào sau đây mô tả đúng nhất mục đích của việc lồng ghép các cấu trúc điều kiện (ví dụ: If lồng If) hoặc cấu trúc lặp (ví dụ: For lồng For) trong lập trình?
A. Để làm cho chương trình phức tạp hơn và khó hiểu hơn.
B. Để xử lý các tình huống logic phức tạp, cho phép thực hiện các hành động khác nhau dựa trên nhiều điều kiện hoặc lặp lại các thao tác theo nhiều cấp độ.
C. Chỉ để trang trí mã nguồn, không có tác dụng thực tế.
D. Để tăng tốc độ thực thi của chương trình.
106. Phát biểu nào sau đây là đúng khi nói về việc sử dụng vòng lặp trong việc tìm phần tử lớn nhất trong một mảng?
A. Cần phải biết trước giá trị lớn nhất để khởi tạo.
B. Phải lặp qua tất cả các phần tử của mảng để so sánh và cập nhật giá trị lớn nhất.
C. Chỉ cần lặp qua một nửa số phần tử của mảng.
D. Vòng lặp không cần thiết, có thể dùng hàm dựng sẵn.
107. Phát biểu nào sau đây là đúng về sự khác biệt giữa `Read(x)` và `ReadLn(x)` trong Pascal?
A. Cả hai đều đọc dữ liệu và đặt con trỏ vào ký tự tiếp theo.
B. `Read(x)` đọc dữ liệu và không di chuyển con trỏ, còn `ReadLn(x)` đọc dữ liệu và di chuyển con trỏ xuống dòng mới.
C. `ReadLn(x)` đọc dữ liệu và không di chuyển con trỏ, còn `Read(x)` đọc dữ liệu và di chuyển con trỏ xuống dòng mới.
D. `Read(x)` đọc dữ liệu và di chuyển con trỏ xuống dòng mới, còn `ReadLn(x)` không di chuyển con trỏ.
108. Trong ngôn ngữ lập trình Pascal, cấu trúc vòng lặp nào cho phép lặp lại một khối lệnh cho đến khi một điều kiện nào đó trở thành sai?
A. Vòng lặp For…do
B. Vòng lặp While…do
C. Vòng lặp Repeat…until
D. Câu lệnh If…then…else
109. Trong lập trình Pascal, đâu là cách khai báo biến đúng cho một biến kiểu số nguyên?
A. Var x: Real;
B. Var x: String;
C. Var x: Integer;
D. Var x: Boolean;
110. Phát biểu nào sau đây là sai về việc sử dụng vòng lặp lồng nhau (nested loops)?
A. Vòng lặp bên trong sẽ thực thi toàn bộ số lần lặp của nó cho mỗi lần lặp của vòng lặp bên ngoài.
B. Vòng lặp lồng nhau thường được sử dụng để xử lý mảng hai chiều hoặc các cấu trúc dữ liệu phức tạp.
C. Số lần thực thi tổng cộng của vòng lặp bên trong bằng tích số lần lặp của vòng lặp bên ngoài và vòng lặp bên trong.
D. Vòng lặp lồng nhau luôn làm cho chương trình chạy nhanh hơn.
111. Khi sử dụng vòng lặp For…do với cú pháp `For i := 10 downto 1 do`, biến đếm `i` sẽ thay đổi như thế nào sau mỗi lần lặp?
A. Tăng lên 1 đơn vị.
B. Giảm đi 1 đơn vị.
C. Giữ nguyên giá trị.
D. Tăng lên 2 đơn vị.
112. Trong chương trình Pascal, nếu ta có đoạn mã sau: `i := 1; While i <= 5 do begin WriteLn(i); i := i + 1; end.`, kết quả in ra màn hình sẽ là gì?
A. Chỉ in ra số 5.
B. In ra các số từ 1 đến 5, mỗi số trên một dòng.
C. In ra số 1 lặp lại 5 lần.
D. Không in ra gì cả.
113. Trong Pascal, nếu bạn muốn tính tổng của một dãy số mà không biết trước số lượng phần tử, cấu trúc lặp nào phù hợp nhất?
A. For i := 1 to N do … (với N đã biết trước)
B. While (điều kiện dừng chưa xảy ra) do …
C. Repeat … Until (điều kiện dừng xảy ra)
D. Cả hai cấu trúc While…do và Repeat…until.
114. Nếu một chương trình Pascal có vòng lặp vô hạn (infinite loop), điều gì thường xảy ra?
A. Chương trình sẽ tự động kết thúc sau một thời gian ngắn.
B. Chương trình sẽ tiếp tục chạy mãi mãi, chiếm dụng tài nguyên hệ thống.
C. Chương trình sẽ báo lỗi và dừng ngay lập tức.
D. Chương trình sẽ thực hiện lặp lại đúng một lần và dừng.
115. Để in ra các số từ 1 đến 10 theo thứ tự tăng dần trong Pascal, cấu trúc lặp nào phù hợp nhất?
A. While i <= 10 do WriteLn(i);
B. Repeat WriteLn(i); Until i > 10;
C. For i := 1 to 10 do WriteLn(i);
D. Case i of 1..10: WriteLn(i); end;
116. Khi sử dụng vòng lặp While…do, điều kiện để vòng lặp tiếp tục thực hiện là gì?
A. Điều kiện là sai.
B. Điều kiện là đúng.
C. Điều kiện là không xác định.
D. Điều kiện phải là số nguyên tố.
117. Đâu là cách khai báo biến đúng cho một biến lưu trữ chuỗi ký tự trong Pascal?
A. Var ten: Integer;
B. Var ten: Char;
C. Var ten: String;
D. Var ten: Real;
118. Trong Pascal, nếu có một chuỗi ký tự và bạn muốn đếm số lần xuất hiện của một ký tự cụ thể trong chuỗi đó, bạn sẽ sử dụng cấu trúc lặp nào?
A. Chỉ có thể dùng vòng lặp For…do.
B. Chỉ có thể dùng vòng lặp While…do.
C. Cả hai vòng lặp For…do và While…do đều có thể được sử dụng.
D. Không thể sử dụng vòng lặp, cần dùng hàm dựng sẵn.
119. Để in ra màn hình các số từ 10 đến 1 theo thứ tự giảm dần trong Pascal, cấu trúc lặp nào là phù hợp nhất?
A. For i := 1 to 10 do WriteLn(i);
B. For i := 10 downto 1 do WriteLn(i);
C. While i >= 1 do WriteLn(i); i := i – 1;
D. Repeat WriteLn(i); i := i – 1; Until i < 1;
120. Trong một chương trình Pascal, nếu bạn muốn tính tổng của các số chẵn từ 2 đến 100, cấu trúc lặp nào là hiệu quả nhất?
A. For i := 1 to 100 do if i mod 2 = 0 then sum := sum + i;
B. i := 2; While i <= 100 do begin sum := sum + i; i := i + 1; end;
C. For i := 2 to 100 step 2 do sum := sum + i;
D. Repeat sum := sum + i; i := i + 2; Until i > 100;
121. Nếu một lớp A là lớp cha và lớp B kế thừa từ A, và cả hai đều có phương thức ‘print()’. Nếu ta tạo một đối tượng ‘objB’ kiểu B và gọi ‘objB.print()’, phương thức nào sẽ ưu tiên được gọi?
A. Phương thức ‘print()’ của lớp A.
B. Phương thức ‘print()’ của lớp B.
C. Chương trình sẽ báo lỗi vì có hai phương thức cùng tên.
D. Cả hai phương thức sẽ được gọi tuần tự.
122. Trong các nguyên lý của lập trình hướng đối tượng, nguyên lý nào giúp giảm sự phụ thuộc giữa các lớp và làm cho mã nguồn dễ bảo trì hơn?
A. Kế thừa.
B. Đóng gói.
C. Đa hình.
D. Trừu tượng hóa và Đóng gói.
123. Khái niệm ‘polymorphism’ (đa hình) trong lập trình hướng đối tượng cho phép:
A. Một đối tượng thuộc về nhiều lớp cùng một lúc.
B. Các đối tượng thuộc các lớp khác nhau có thể phản ứng với cùng một thông điệp (lời gọi phương thức) theo cách riêng của chúng.
C. Tất cả các phương thức trong một lớp phải có cùng một tên.
D. Một lớp có thể kế thừa từ nhiều lớp cha cùng lúc.
124. Khi hai lớp A và B cùng kế thừa từ lớp C, và lớp A định nghĩa lại phương thức ‘doSomething()’, còn lớp B không, điều gì xảy ra khi gọi ‘B.doSomething()’?
A. Sẽ sử dụng phương thức ‘doSomething()’ của lớp A.
B. Sẽ sử dụng phương thức ‘doSomething()’ của lớp C.
C. Chương trình sẽ báo lỗi.
D. Sẽ sử dụng phương thức ‘doSomething()’ của lớp B (nếu có cài đặt mặc định).
125. Xét hai lớp: Lớp A là lớp cha, lớp B là lớp con kế thừa từ A. Lớp B có một phương thức ‘display()’ được định nghĩa lại. Nếu ta có một đối tượng ‘obj’ kiểu B và gọi ‘obj.display()’, phương thức nào sẽ được thực thi?
A. Phương thức ‘display()’ của lớp A.
B. Phương thức ‘display()’ của lớp B, vì nó đã được định nghĩa lại.
C. Chương trình sẽ báo lỗi vì không thể gọi phương thức của lớp cha từ lớp con.
D. Cả hai phương thức ‘display()’ của lớp A và lớp B sẽ được thực thi.
126. Khi một lớp triển khai một ‘interface’, nó cam kết thực hiện những gì?
A. Tất cả các thuộc tính và phương thức của lớp cha.
B. Các phương thức được định nghĩa trong interface đó, không có hoặc có cài đặt mặc định.
C. Chỉ các phương thức trừu tượng của lớp cha.
D. Các biến toàn cục của chương trình.
127. Tại sao việc sử dụng ‘private’ cho các thuộc tính của lớp lại là một thực hành tốt trong lập trình hướng đối tượng?
A. Để đảm bảo rằng các thuộc tính này luôn được khởi tạo với giá trị mặc định.
B. Để ngăn chặn truy cập trực tiếp và thay đổi dữ liệu từ bên ngoài lớp, bảo vệ tính toàn vẹn của dữ liệu.
C. Để làm cho mã nguồn dễ đọc hơn bằng cách ẩn đi các chi tiết không cần thiết.
D. Để cho phép các lớp khác có thể trực tiếp truy cập và sửa đổi các thuộc tính này.
128. Trong lập trình hướng đối tượng, một ‘constructor’ (hàm tạo) có chức năng gì?
A. Để hủy bỏ một đối tượng sau khi sử dụng.
B. Để khởi tạo trạng thái ban đầu của một đối tượng khi nó được tạo ra.
C. Để định nghĩa các phương thức trừu tượng.
D. Để thực hiện các phép tính phức tạp trong lớp.
129. Nếu một lớp A có một phương thức ‘process()’ và lớp B kế thừa từ A, khi gọi ‘B.process()’, nếu lớp B không định nghĩa lại phương thức này, phương thức nào sẽ được thực thi?
A. Phương thức ‘process()’ của lớp A sẽ được thực thi.
B. Chương trình sẽ báo lỗi thiếu định nghĩa phương thức.
C. Phương thức ‘process()’ của lớp B sẽ được thực thi với cài đặt mặc định.
D. Chương trình sẽ tự động tạo một phương thức ‘process()’ mới cho lớp B.
130. Một lớp được khai báo là ‘final’ (cuối cùng) trong một số ngôn ngữ OOP có ý nghĩa gì?
A. Lớp đó không thể có bất kỳ thuộc tính nào.
B. Lớp đó không thể bị kế thừa bởi các lớp khác.
C. Tất cả các phương thức trong lớp đó đều là phương thức trừu tượng.
D. Lớp đó chỉ có thể được khởi tạo một lần.
131. Xét một lớp ‘Shape’ trừu tượng có phương thức trừu tượng ‘calculateArea()’. Lớp ‘Circle’ kế thừa từ ‘Shape’. Tại sao lớp ‘Circle’ BẮT BUỘC phải cài đặt phương thức ‘calculateArea()’?
A. Để tuân thủ nguyên tắc đóng gói, giúp che giấu thông tin.
B. Để đảm bảo tính đa hình, cho phép các đối tượng khác nhau xử lý cùng một yêu cầu theo cách riêng.
C. Để tăng hiệu suất chương trình bằng cách sử dụng đa kế thừa.
D. Để định nghĩa các thuộc tính riêng cho lớp ‘Circle’ mà không ảnh hưởng đến lớp cha.
132. Tại sao việc sử dụng ‘public’ cho các phương thức của lớp lại quan trọng trong nguyên lý đóng gói?
A. Để đảm bảo rằng chỉ có lớp đó mới có thể gọi các phương thức này.
B. Để cho phép các lớp bên ngoài tương tác với đối tượng thông qua các phương thức được định nghĩa rõ ràng.
C. Để tăng tốc độ thực thi của các phương thức.
D. Để ẩn đi hoàn toàn các chi tiết bên trong của lớp.
133. Khái niệm ‘destructor’ (hàm hủy) trong lập trình hướng đối tượng dùng để làm gì?
A. Để khởi tạo các biến cục bộ trong một phương thức.
B. Để giải phóng tài nguyên mà đối tượng đã chiếm dụng trước khi đối tượng bị hủy.
C. Để tạo ra một đối tượng mới từ một đối tượng đã có.
D. Để định nghĩa các thuộc tính cuối cùng của một lớp.
134. Trong lập trình hướng đối tượng, ‘tight coupling’ (sự ràng buộc chặt chẽ) giữa các lớp là điều nên tránh vì nó:
A. Giúp mã nguồn dễ đọc hơn.
B. Làm cho việc thay đổi một lớp trở nên khó khăn vì nó ảnh hưởng đến nhiều lớp khác.
C. Tăng khả năng tái sử dụng mã nguồn.
D. Đảm bảo tất cả các phương thức đều có thể truy cập được.
135. Đâu là một ví dụ về mối quan hệ ‘is-a’ (là một) giữa các lớp trong lập trình hướng đối tượng?
A. Một ‘Car’ (ô tô) ‘has-a’ (có một) ‘Engine’ (động cơ).
B. Một ‘Dog’ (chó) ‘is-a’ (là một) ‘Animal’ (động vật).
C. Một ‘Computer’ (máy tính) ‘has-a’ (có một) ‘Keyboard’ (bàn phím).
D. Một ‘Book’ (sách) ‘has-a’ (có một) ‘Page’ (trang).
136. Trong lập trình hướng đối tượng, ‘encapsulation’ (đóng gói) đề cập đến việc:
A. Tạo ra nhiều đối tượng từ một lớp duy nhất.
B. Gom dữ liệu (thuộc tính) và các phương thức xử lý dữ liệu đó vào một đơn vị duy nhất (lớp) và kiểm soát quyền truy cập.
C. Cho phép một lớp kế thừa tất cả các thuộc tính của lớp cha.
D. Thay đổi hành vi của một phương thức tùy thuộc vào đối tượng gọi nó.
137. Đâu là lợi ích chính của việc sử dụng tính kế thừa trong lập trình hướng đối tượng?
A. Giảm số lượng biến trong một lớp.
B. Tăng khả năng tái sử dụng mã nguồn và tổ chức chương trình một cách logic.
C. Loại bỏ hoàn toàn nhu cầu sử dụng các cấu trúc điều khiển như vòng lặp.
D. Buộc tất cả các lớp con phải có cùng tên phương thức với lớp cha.
138. Đâu là một ví dụ của ‘method overloading’ (quá tải phương thức) trong lập trình hướng đối tượng?
A. Hai lớp khác nhau có cùng tên phương thức.
B. Một lớp có hai hoặc nhiều phương thức cùng tên nhưng khác nhau về danh sách tham số (số lượng hoặc kiểu dữ liệu).
C. Một phương thức của lớp con có cùng tên và danh sách tham số với phương thức của lớp cha.
D. Một phương thức có thể được gọi mà không cần đối số.
139. Một ‘abstract class’ (lớp trừu tượng) trong lập trình hướng đối tượng có thể được khởi tạo trực tiếp để tạo đối tượng không?
A. Có, nếu nó có ít nhất một phương thức cài đặt.
B. Không, bởi vì nó có thể chứa các phương thức trừu tượng (không có cài đặt).
C. Có, nhưng chỉ khi nó không kế thừa từ bất kỳ lớp nào khác.
D. Có, nhưng chỉ khi tất cả các phương thức của nó đều là phương thức trừu tượng.
140. Trong lập trình hướng đối tượng, ‘association’ (kết hợp) là mối quan hệ gì?
A. Một lớp là một dạng đặc biệt của lớp khác (is-a).
B. Một lớp chứa một đối tượng của lớp khác như một thành phần (has-a).
C. Các lớp có liên quan với nhau nhưng không nhất thiết phải phụ thuộc chặt chẽ.
D. Một lớp chỉ có thể tương tác với chính nó.
141. Trong lập trình hướng đối tượng, một lớp có thể triển khai bao nhiêu ‘interface’?
A. Chỉ một.
B. Không giới hạn.
C. Tối đa hai.
D. Chỉ khi lớp đó không kế thừa từ lớp nào khác.
142. Khái niệm ‘class method’ (phương thức lớp) khác với ‘instance method’ (phương thức đối tượng) ở điểm nào?
A. Phương thức lớp luôn có quyền truy cập vào ‘this’ (đối tượng hiện tại), còn phương thức đối tượng thì không.
B. Phương thức lớp được gọi trên lớp, còn phương thức đối tượng được gọi trên đối tượng của lớp.
C. Phương thức lớp chỉ có thể được định nghĩa trong lớp trừu tượng.
D. Phương thức đối tượng có thể kế thừa, còn phương thức lớp thì không.
143. Đâu là một ví dụ về mối quan hệ ‘has-a’ (có một) giữa các lớp trong lập trình hướng đối tượng?
A. Một ‘Square’ (hình vuông) ‘is-a’ (là một) ‘Rectangle’ (hình chữ nhật).
B. Một ‘Student’ (học sinh) ‘is-a’ (là một) ‘Person’ (con người).
C. Một ‘Car’ (ô tô) ‘has-a’ (có một) ‘Engine’ (động cơ).
D. Một ‘Cat’ (mèo) ‘is-a’ (là một) ‘Mammal’ (động vật có vú).
144. Trong lập trình hướng đối tượng, khái niệm ‘interface’ đóng vai trò gì trong việc định nghĩa các hành vi mà một lớp phải thực hiện?
A. Nó cung cấp một bản thiết kế chi tiết với các phương thức đã được cài đặt sẵn.
B. Nó định nghĩa một tập hợp các phương thức mà không có cài đặt cụ thể, yêu cầu lớp triển khai cung cấp.
C. Nó là một cách để tạo ra các đối tượng trực tiếp mà không cần thông qua một lớp.
D. Nó chỉ dùng để tạo ra các biến và hằng số trong chương trình.
145. Khi một lớp con thực hiện lại (override) một phương thức của lớp cha, điều này minh họa cho nguyên lý nào của lập trình hướng đối tượng?
A. Đóng gói (Encapsulation).
B. Trừu tượng hóa (Abstraction).
C. Đa hình (Polymorphism).
D. Kế thừa (Inheritance).
146. Khái niệm ‘inheritance hierarchy’ (chuỗi kế thừa) trong lập trình hướng đối tượng ám chỉ điều gì?
A. Một chuỗi các đối tượng được tạo ra.
B. Mối quan hệ cha-con giữa các lớp, tạo thành một cấu trúc phân cấp.
C. Một tập hợp các phương thức có cùng tên trong một lớp.
D. Cách các lớp được sắp xếp trong bộ nhớ.
147. Trong lập trình hướng đối tượng, ‘abstraction’ (trừu tượng hóa) giúp:
A. Tạo ra các đối tượng có thể tương tác với nhau một cách an toàn.
B. Tập trung vào các thuộc tính và hành vi cần thiết, ẩn đi các chi tiết phức tạp không liên quan.
C. Tăng cường khả năng tái sử dụng mã bằng cách sử dụng kế thừa.
D. Đảm bảo rằng mọi lớp đều có ít nhất một phương thức trừu tượng.
148. Trong lập trình hướng đối tượng, phương thức ‘static’ (tĩnh) của một lớp:
A. Chỉ có thể được gọi trên một đối tượng cụ thể của lớp.
B. Thuộc về lớp, không thuộc về bất kỳ đối tượng cụ thể nào của lớp.
C. Luôn luôn được thực thi trước khi bất kỳ đối tượng nào của lớp được tạo ra.
D. Chỉ có thể truy cập các thuộc tính là ‘private’ của lớp.
149. Khái niệm ‘composition’ (hợp thành) trong lập trình hướng đối tượng mô tả mối quan hệ gì giữa các lớp?
A. Một lớp kế thừa tất cả các thuộc tính và phương thức của lớp khác.
B. Một lớp ‘có một’ đối tượng của lớp khác như là một phần của nó.
C. Một lớp có thể thực thi các phương thức được định nghĩa trong một giao diện.
D. Một lớp có thể được khởi tạo nhiều lần.
150. Đâu không phải là một trong bốn trụ cột chính của lập trình hướng đối tượng?
A. Đóng gói (Encapsulation).
B. Trừu tượng hóa (Abstraction).
C. Tái cấu trúc (Refactoring).
D. Kế thừa (Inheritance).