1. Khi đánh giá một thuật toán, khái niệm độ phức tạp không gian (space complexity) đo lường điều gì?
A. Thời gian thực thi của thuật toán
B. Lượng bộ nhớ mà thuật toán cần để hoạt động
C. Số lượng phép so sánh mà thuật toán thực hiện
D. Số lượng các bước trong thuật toán
2. Trong bài toán tìm ước chung lớn nhất (ƯCLN) của hai số nguyên dương a và b, thuật toán Euclid là một ví dụ điển hình của loại thuật toán nào?
A. Thuật toán tham lam (Greedy Algorithm)
B. Thuật toán quay lui (Backtracking Algorithm)
C. Thuật toán đệ quy (Recursive Algorithm)
D. Thuật toán duyệt toàn bộ (Brute Force Algorithm)
3. Khi thiết kế thuật toán tìm kiếm một phần tử trong danh sách đã sắp xếp, phương pháp nào thường mang lại hiệu quả cao nhất về tốc độ?
A. Tìm kiếm tuần tự (Linear Search)
B. Tìm kiếm nhị phân (Binary Search)
C. Tìm kiếm theo băm (Hash Search)
D. Tìm kiếm theo cây (Tree Search)
4. Ngôn ngữ lập trình bậc cao (high-level programming language) có ưu điểm gì so với ngôn ngữ lập trình bậc thấp (low-level programming language)?
A. Gần gũi với phần cứng hơn
B. Dễ đọc, dễ viết và dễ hiểu hơn cho con người
C. Yêu cầu ít bộ nhớ hơn
D. Tốc độ thực thi nhanh hơn mà không cần trình biên dịch
5. Trình biên dịch (compiler) có vai trò gì trong quá trình phát triển phần mềm?
A. Giúp người dùng tương tác với chương trình
B. Chuyển đổi mã nguồn từ ngôn ngữ lập trình bậc cao thành mã máy
C. Tìm kiếm và sửa lỗi trong thuật toán
D. Thiết kế cấu trúc dữ liệu
6. Trong bài toán tin học, bước nào được xem là quan trọng nhất để đảm bảo giải pháp cuối cùng đáp ứng đúng yêu cầu?
A. Viết chương trình
B. Thử nghiệm và gỡ lỗi
C. Xác định và phân tích bài toán
D. Thiết kế thuật toán
7. Trong quá trình giải bài toán tin học, gỡ lỗi (debugging) là hành động gì?
A. Thiết kế giao diện người dùng
B. Viết các tính năng mới cho chương trình
C. Tìm và sửa các lỗi sai trong mã nguồn
D. Tối ưu hóa thuật toán để chạy nhanh hơn
8. Thuật toán là gì trong bối cảnh giải quyết bài toán tin học?
A. Một ngôn ngữ lập trình cụ thể
B. Một tập hợp các thao tác tuần tự để giải quyết vấn đề
C. Phần mềm dùng để viết mã
D. Kết quả cuối cùng của một chương trình
9. Phát biểu nào sau đây mô tả đúng về sai số (error) trong ngữ cảnh bài toán tin học?
A. Là sự khác biệt giữa kết quả mong muốn và kết quả thực tế của chương trình
B. Là lỗi cú pháp trong mã nguồn
C. Là quá trình biên dịch chương trình
D. Là thời gian cần thiết để chương trình chạy
10. Yếu tố nào sau đây được xem là đầu ra (output) khi giải bài toán tính chu vi và diện tích hình chữ nhật với hai cạnh cho trước là a và b?
A. Giá trị của hai cạnh a và b
B. Công thức tính chu vi và diện tích
C. Chu vi và diện tích hình chữ nhật
D. Thứ tự các bước tính toán
11. Khi mô tả thuật toán, cách biểu diễn nào sau đây phổ biến và dễ hiểu nhất cho người mới bắt đầu?
A. Sử dụng ngôn ngữ máy
B. Sử dụng mã giả (pseudocode)
C. Sử dụng ngôn ngữ lập trình C++
D. Sử dụng mã nhị phân
12. Đặc điểm nào sau đây KHÔNG phải là yêu cầu đối với một thuật toán tốt?
A. Tính đúng đắn
B. Tính hiệu quả (về thời gian và bộ nhớ)
C. Tính phức tạp và khó hiểu
D. Tính xác định
13. Khi một bài toán có thể được chia thành nhiều bài toán con nhỏ hơn và lời giải của bài toán lớn phụ thuộc vào lời giải của các bài toán con, đó là đặc điểm của phương pháp giải quyết nào?
A. Chia để trị (Divide and Conquer)
B. Quy hoạch động (Dynamic Programming)
C. Tham lam (Greedy Algorithm)
D. Duyệt toàn bộ (Brute Force)
14. Phát biểu nào sau đây mô tả đúng về vòng lặp (loop) trong thuật toán?
A. Thực hiện một khối lệnh duy nhất một lần
B. Thực hiện một khối lệnh lặp đi lặp lại dựa trên một điều kiện
C. Dừng chương trình ngay lập tức
D. Lựa chọn thực hiện một trong hai khối lệnh
15. Khi phân tích bài toán, việc xác định đầu vào (input) và đầu ra (output) nhằm mục đích gì?
A. Giúp chương trình chạy nhanh hơn
B. Xác định rõ ràng dữ liệu cần xử lý và kết quả mong muốn
C. Tăng tính bảo mật cho chương trình
D. Giảm dung lượng bộ nhớ sử dụng
16. Trong bài toán phân loại email thành thư rác (spam) và không phải thư rác, thư rác và không phải thư rác được xem là gì?
A. Đầu vào của bài toán
B. Thuật toán xử lý
C. Kết quả phân loại (output)
D. Cấu trúc dữ liệu
17. Phát biểu nào sau đây mô tả đúng nhất về lập trình (programming)?
A. Việc tạo ra phần cứng máy tính
B. Quá trình viết, kiểm tra, và bảo trì mã nguồn để máy tính thực hiện một nhiệm vụ
C. Thiết kế giao diện người dùng
D. Phân tích nhu cầu của người dùng
18. Khi phân tích bài toán, việc xác định ràng buộc (constraints) có ý nghĩa gì?
A. Các yêu cầu về giao diện người dùng
B. Các giới hạn hoặc điều kiện mà giải pháp phải tuân thủ
C. Các ngôn ngữ lập trình có thể sử dụng
D. Các bước kiểm thử chương trình
19. Bài toán sắp xếp danh sách các số theo thứ tự tăng dần, ví dụ: [5, 2, 8, 1, 9]. Thuật toán sắp xếp nào sau đây có thể là lựa chọn phù hợp để bắt đầu tìm hiểu?
A. Sắp xếp trộn (Merge Sort)
B. Sắp xếp nhanh (Quick Sort)
C. Sắp xếp nổi bọt (Bubble Sort)
D. Sắp xếp vun đống (Heap Sort)
20. Phát biểu nào sau đây mô tả đúng về kiểm thử (testing) trong quy trình giải bài toán tin học?
A. Là bước đầu tiên để hiểu bài toán
B. Là quá trình chạy chương trình với các bộ dữ liệu khác nhau để xác minh tính đúng đắn và tìm lỗi
C. Là bước viết mã nguồn
D. Là quá trình thiết kế thuật toán
21. Phát biểu nào sau đây mô tả đúng về mã nguồn (source code)?
A. Là tập hợp các lệnh máy mà CPU có thể thực thi trực tiếp
B. Là tập hợp các hướng dẫn được viết bằng ngôn ngữ lập trình mà con người có thể đọc và hiểu
C. Là kết quả của quá trình biên dịch
D. Là tập hợp các tệp tin thực thi của một chương trình
22. Cấu trúc rẽ nhánh (conditional statement) trong thuật toán dùng để làm gì?
A. Lặp lại một hành động nhiều lần
B. Thực hiện các hành động khác nhau dựa trên một điều kiện
C. Kết thúc chương trình
D. Đọc dữ liệu từ bàn phím
23. Nếu một bài toán yêu cầu xử lý một lượng dữ liệu rất lớn và cần đảm bảo tốc độ phản hồi nhanh chóng, yếu tố nào sau đây cần được ưu tiên khi thiết kế thuật toán?
A. Tính dễ đọc của mã nguồn
B. Tính hiệu quả (độ phức tạp thời gian và không gian)
C. Số lượng dòng mã được viết
D. Tính thẩm mỹ của giao diện người dùng
24. Trong bài toán tìm số lớn nhất trong một dãy số, bước so sánh giữa hai số là một ví dụ của loại thao tác nào trong thuật toán?
A. Thao tác nhập/xuất
B. Thao tác gán giá trị
C. Thao tác so sánh
D. Thao tác lặp
25. Yếu tố nào sau đây được xem là đầu vào (input) khi giải bài toán tính chu vi và diện tích hình chữ nhật với hai cạnh cho trước là a và b?
A. Chu vi và diện tích hình chữ nhật
B. Giá trị của hai cạnh a và b
C. Công thức tính chu vi và diện tích
D. Thứ tự các bước tính toán