1. Trong Pascal, toán tử nào thường được sử dụng để nối hai chuỗi ký tự?
2. Cú pháp nào sau đây được sử dụng để tạo ghi chú trong một dòng trong Pascal?
A. Sử dụng cặp ký tự `(* … *)` hoặc `{ … }`
B. Sử dụng ký tự `#` ở đầu dòng.
C. Sử dụng ký tự `//` ở đầu dòng.
D. Sử dụng ký tự `–` ở đầu dòng.
3. Phát biểu nào sau đây là đúng về kiểu dữ liệu ‘Boolean’ trong Pascal?
A. Chỉ có thể nhận một trong hai giá trị: True hoặc False.
B. Có thể nhận bất kỳ giá trị số nào từ 0 đến 255.
C. Dùng để lưu trữ chuỗi ký tự có độ dài tùy ý.
D. Chỉ dùng để lưu trữ các ký tự đặc biệt.
4. Toán tử nào trong Pascal được sử dụng để kiểm tra ít nhất một trong hai điều kiện đúng?
5. Cho biểu thức Pascal: x := 10 DIV 3 + 7 MOD 2; Giá trị của x sau khi thực hiện phép tính là bao nhiêu?
6. Trong Pascal, câu lệnh nào được sử dụng để lặp lại một khối lệnh một số lần xác định trước?
A. FOR…DO
B. WHILE…DO
C. REPEAT…UNTIL
D. IF…THEN
7. Phát biểu nào sau đây mô tả đúng về toán tử so sánh ‘=’ trong Pascal?
A. Dùng để kiểm tra xem hai biểu thức có bằng nhau hay không, trả về giá trị Boolean.
B. Dùng để gán giá trị của biến này cho biến khác.
C. Chỉ dùng để so sánh các số nguyên.
D. Dùng để nối hai chuỗi ký tự.
8. Phát biểu nào sau đây là đúng về kiểu dữ liệu chuỗi ký tự (string) trong Pascal?
A. Là một dãy các ký tự được biểu diễn liên tiếp, có thể có độ dài thay đổi hoặc cố định tùy theo khai báo.
B. Chỉ có thể lưu trữ một ký tự duy nhất.
C. Không thể thực hiện các phép toán như nối chuỗi.
D. Luôn có độ dài cố định là 255 ký tự.
9. Phát biểu nào sau đây mô tả đúng nhất về cấu trúc lặp ‘REPEAT…UNTIL’ trong Pascal?
A. Thực hiện khối lệnh ít nhất một lần, sau đó lặp lại cho đến khi điều kiện kiểm tra cuối vòng lặp là đúng.
B. Thực hiện khối lệnh cho đến khi điều kiện kiểm tra trước vòng lặp là đúng.
C. Lặp lại khối lệnh một số lần cố định theo biến đếm.
D. Chỉ thực hiện khối lệnh nếu điều kiện là đúng.
10. Cho khai báo hàm trong Pascal: FUNCTION TinhTong(a, b: Integer): Integer; Phát biểu nào đúng về hàm này?
A. Hàm nhận hai tham số kiểu Integer và trả về một giá trị kiểu Integer.
B. Hàm chỉ nhận một tham số kiểu Integer và trả về giá trị kiểu Real.
C. Hàm nhận hai tham số kiểu Real và trả về giá trị kiểu Integer.
D. Hàm không nhận tham số nhưng trả về giá trị kiểu Integer.
11. Toán tử nào trong Pascal được sử dụng để kiểm tra hai điều kiện cùng đúng?
12. Trong Pascal, ‘hàm’ (function) khác với ‘thủ tục’ (procedure) ở điểm nào quan trọng nhất?
A. Hàm có thể trả về một giá trị duy nhất cho nơi gọi nó, thủ tục thì không.
B. Thủ tục có thể trả về nhiều giá trị, hàm chỉ trả về một.
C. Hàm chỉ dùng cho tính toán số học, thủ tục dùng cho chuỗi ký tự.
D. Thủ tục có tham số, hàm thì không.
13. Phát biểu nào sau đây mô tả đúng về ‘thủ tục’ (procedure) trong Pascal?
A. Là một khối lệnh có tên, có thể được gọi lại từ nhiều vị trí khác nhau trong chương trình, không trả về giá trị.
B. Là một khối lệnh có tên, có thể trả về một giá trị duy nhất.
C. Là một biến lưu trữ dữ liệu.
D. Là một hằng số có giá trị cố định.
14. Cho đoạn mã Pascal sau: VAR a, b : Integer; c : Real; Phát biểu nào mô tả đúng về các khai báo này?
A. Biến ‘a’ và ‘b’ có kiểu số nguyên, biến ‘c’ có kiểu số thực.
B. Tất cả các biến ‘a’, ‘b’, ‘c’ đều có kiểu số thực.
C. Biến ‘a’ có kiểu số nguyên, biến ‘b’ và ‘c’ có kiểu số thực.
D. Biến ‘a’, ‘b’, ‘c’ có thể lưu trữ bất kỳ loại dữ liệu nào.
15. Khai báo mảng nào sau đây trong Pascal là đúng?
A. VAR ten_mang : ARRAY[chi_so_dau..chi_so_cuoi] OF kieu_du_lieu;
B. ARRAY ten_mang OF kieu_du_lieu[chi_so_dau..chi_so_cuoi];
C. VAR ten_mang : kieu_du_lieu ARRAY[chi_so_dau..chi_so_cuoi];
D. VAR ten_mang : kieu_du_lieu [chi_so_dau..chi_so_cuoi] OF ARRAY;
16. Toán tử nào trong Pascal được sử dụng để lấy phần dư của phép chia?
17. Câu lệnh ‘WHILE…DO’ trong Pascal sẽ thực hiện việc lặp khi nào?
A. Khi điều kiện kiểm tra trước vòng lặp còn đúng.
B. Khi điều kiện kiểm tra sau vòng lặp còn sai.
C. Khi biến đếm đạt đến giá trị cuối.
D. Sau khi vòng lặp được thực hiện ít nhất một lần.
18. Trong Pascal, cú pháp khai báo biến nào sau đây là đúng?
A. VAR ten_bien : kieu_du_lieu; (các biến cùng kiểu cách nhau bởi dấu phẩy)
B. TEN_BIEN = kieu_du_lieu; VAR
C. LET ten_bien : kieu_du_lieu;
D. BIEN ten_bien, kieu_du_lieu;
19. Phát biểu nào sau đây là đúng khi nói về khai báo kiểu dữ liệu trong Pascal?
A. Việc khai báo kiểu dữ liệu giúp trình biên dịch kiểm tra lỗi và tối ưu hóa chương trình.
B. Khai báo kiểu dữ liệu chỉ mang tính chất trang trí, không ảnh hưởng đến hoạt động của chương trình.
C. Mọi biến trong Pascal đều phải được khai báo với kiểu dữ liệu là ‘Integer’.
D. Kiểu dữ liệu của biến có thể được thay đổi tùy ý trong quá trình chạy chương trình.
20. Kiểu dữ liệu nào trong Pascal thường được sử dụng để lưu trữ ký tự?
A. Char
B. String
C. Boolean
D. Integer
21. Trong Pascal, câu lệnh nào được sử dụng để nhập dữ liệu từ bàn phím?
A. Read hoặc Readln
B. Write hoặc Writeln
C. Input
D. GetData
22. Trong Pascal, từ khóa ‘BEGIN’ và ‘END’ được sử dụng để làm gì?
A. Đánh dấu sự bắt đầu và kết thúc của một khối lệnh.
B. Khai báo một biến mới.
C. Thực hiện một phép toán số học.
D. In kết quả ra màn hình.
23. Phát biểu nào sau đây là đúng về ‘mảng’ (array) trong Pascal?
A. Là một cấu trúc dữ liệu tuyến tính, lưu trữ một tập hợp các phần tử cùng kiểu dữ liệu, có thể truy cập bằng chỉ số.
B. Là một cấu trúc dữ liệu phi tuyến tính, lưu trữ các phần tử có kiểu dữ liệu khác nhau.
C. Chỉ có thể lưu trữ tối đa 10 phần tử.
D. Các phần tử trong mảng có thể được sắp xếp ngẫu nhiên.
24. Khi gọi một thủ tục trong Pascal, cú pháp đúng là gì?
A. ten_thu_tuc(danh_sach_tham_so);
B. CALL ten_thu_tuc(danh_sach_tham_so);
C. EXECUTE ten_thu_tuc(danh_sach_tham_so);
D. ten_thu_tuc;
25. Trong Pascal, toán tử nào được sử dụng để thực hiện phép chia lấy phần nguyên?
26. Phát biểu nào sau đây mô tả đúng về ‘ghi chú’ (comment) trong chương trình Pascal?
A. Là những dòng văn bản giải thích, không được trình biên dịch xử lý và không ảnh hưởng đến chương trình.
B. Là những dòng lệnh bắt buộc phải có để chương trình chạy.
C. Chỉ được phép đặt ở đầu chương trình.
D. Bắt buộc phải được viết bằng tiếng Anh.
27. Nếu có khai báo mảng: VAR diem : ARRAY[1..5] OF Real; Làm thế nào để truy cập phần tử thứ ba của mảng ‘diem’?
A. diem[3]
B. diem(3)
C. diem[4]
D. diem.3
28. Cho hai biến chuỗi: s1 := ‘Xin’; s2 := ‘ chào’; Biến s3 sau khi thực hiện s3 := s1 + s2; sẽ có giá trị là gì?
A. ‘Xin chào’
B. ‘Xin chào’
C. ‘Xin chào’
D. ‘Xin chào’
29. Phát biểu nào sau đây mô tả đúng về câu lệnh điều kiện ‘IF…THEN…ELSE’ trong Pascal?
A. Thực hiện một khối lệnh nếu điều kiện là đúng, và một khối lệnh khác nếu điều kiện là sai.
B. Chỉ thực hiện một khối lệnh nếu điều kiện là đúng, bỏ qua nếu sai.
C. Luôn thực hiện một khối lệnh, bất kể điều kiện.
D. Thực hiện một khối lệnh cho đến khi điều kiện sai.
30. Trong ngôn ngữ lập trình Pascal, phát biểu nào sau đây mô tả đúng nhất về khái niệm ‘biến’?
A. Là một vùng nhớ được đặt tên, dùng để lưu trữ dữ liệu có thể thay đổi trong quá trình thực hiện chương trình.
B. Là một vùng nhớ cố định, chỉ được gán giá trị một lần duy nhất.
C. Là một lệnh trong chương trình, dùng để thực hiện một hành động cụ thể.
D. Là một hằng số, có giá trị không thay đổi trong suốt quá trình chạy chương trình.
31. Khi sử dụng hàm `open()` trong Python để mở một tệp, chế độ `’w’` có ý nghĩa gì?
A. Mở tệp để đọc (read).
B. Mở tệp để ghi (write), nếu tệp đã tồn tại sẽ bị ghi đè.
C. Mở tệp để thêm nội dung vào cuối tệp (append).
D. Mở tệp ở chế độ nhị phân (binary mode).
32. Hàm `type()` trong Python được sử dụng để làm gì?
A. Trả về giá trị tuyệt đối của một số.
B. Trả về kiểu dữ liệu của một đối tượng.
C. Chuyển đổi một chuỗi thành số.
D. Định nghĩa một hàm mới.
33. Trong Python, làm thế nào để kiểm tra xem một chuỗi `s` có bắt đầu bằng ‘hello’ không?
A. s.endwith(‘hello’)
B. s.startswith(‘hello’)
C. s.checkstart(‘hello’)
D. s.beginwith(‘hello’)
34. Hàm `len()` trong Python được sử dụng để làm gì?
A. Trả về giá trị lớn nhất trong một tập hợp.
B. Trả về tổng của các phần tử trong một tập hợp.
C. Trả về độ dài (số lượng phần tử) của một đối tượng có thể lặp (iterable) như chuỗi, danh sách, tuple.
D. Trả về kiểu dữ liệu của một biến.
35. Phát biểu nào sau đây là đúng về Tuple trong Python?
A. Tuple có thể thay đổi nội dung sau khi được tạo.
B. Tuple là một tập hợp không có thứ tự.
C. Tuple là một tập hợp có thứ tự nhưng không thể thay đổi nội dung (immutable).
D. Tuple chỉ có thể chứa các phần tử cùng kiểu dữ liệu.
36. Trong ngôn ngữ lập trình Python, cú pháp nào sau đây được sử dụng để khai báo một biến có kiểu dữ liệu chuỗi (string)?
A. var name = ‘Alice’;
B. let name = “Bob”;
C. name = ‘Charlie’
D. name = “David”
37. Phát biểu nào sau đây mô tả đúng nhất về cách hoạt động của vòng lặp `while` trong Python?
A. Lặp lại một khối lệnh một số lần cố định đã xác định trước.
B. Lặp lại một khối lệnh miễn là một điều kiện cho trước còn đúng (True).
C. Lặp lại một khối lệnh cho đến khi gặp từ khóa `break`.
D. Chỉ thực thi một khối lệnh duy nhất một lần.
38. Cấu trúc dữ liệu nào trong Python cho phép lưu trữ một tập hợp các phần tử có thứ tự và có thể thay đổi (mutable)?
A. Tuple
B. Set
C. Dictionary
D. List
39. Trong Python, từ khóa `if __name__ == ‘__main__’:` thường được sử dụng với mục đích gì?
A. Để định nghĩa một hàm mới.
B. Để khai báo một biến toàn cục.
C. Để chỉ định khối mã sẽ được thực thi khi tệp được chạy trực tiếp, không phải khi được import.
D. Để xử lý ngoại lệ (exception handling).
40. Phát biểu nào sau đây mô tả đúng nhất về cấu trúc `if-elif-else` trong Python?
A. Chỉ cho phép kiểm tra một điều kiện duy nhất.
B. Cho phép kiểm tra nhiều điều kiện tuần tự, và chỉ một khối lệnh tương ứng với điều kiện đúng đầu tiên sẽ được thực thi.
C. Thực thi tất cả các khối lệnh nếu điều kiện là đúng.
D. Không thể có nhiều hơn một câu lệnh `if`.
41. Phát biểu nào sau đây là đúng về từ khóa `continue` trong vòng lặp ở Python?
A. Thoát hoàn toàn khỏi vòng lặp.
B. Chuyển sang thực thi vòng lặp tiếp theo, bỏ qua phần còn lại của vòng lặp hiện tại.
C. Khởi động lại vòng lặp từ đầu.
D. Thực thi một khối lệnh khác.
42. Trong Python, khi thực hiện phép chia `7 / 2`, kết quả trả về sẽ là gì?
43. Phát biểu nào sau đây mô tả đúng nhất về từ khóa `break` trong vòng lặp ở Python?
A. Tiếp tục vòng lặp với phần tử tiếp theo.
B. Bỏ qua phần còn lại của vòng lặp hiện tại và thoát hoàn toàn khỏi vòng lặp.
C. Tạm dừng chương trình.
D. Bắt đầu một vòng lặp mới.
44. Cú pháp nào sau đây dùng để tạo một từ điển (dictionary) rỗng trong Python?
A. list()
B. set()
C. dict()
D. tuple()
45. Trong Python, làm thế nào để kiểm tra xem một biến `x` có giá trị là 5 không?
A. if x = 5:
B. if x == 5:
C. if x is 5:
D. check x = 5;
46. Phát biểu nào sau đây mô tả đúng nhất về cấu trúc `for` loop trong Python?
A. Dùng để thực thi một khối lệnh một lần.
B. Dùng để thực thi một khối lệnh nhiều lần dựa trên một điều kiện nhất định (ví dụ: khi điều kiện còn đúng).
C. Dùng để lặp qua một chuỗi các phần tử (ví dụ: danh sách, chuỗi ký tự, tuple).
D. Dùng để chuyển đổi kiểu dữ liệu của biến.
47. Cú pháp nào sau đây dùng để tạo một tập hợp (set) chứa các số nguyên từ 1 đến 3 trong Python?
A. {1, 2, 3}
B. [1, 2, 3]
C. (1, 2, 3)
D. set(1, 2, 3)
48. Trong Python, làm thế nào để truy cập giá trị của khóa ‘age’ trong một từ điển `my_dict`?
A. my_dict.get(‘age’)
B. my_dict(‘age’)
C. my_dict[‘age’]
D. my_dict.value(‘age’)
49. Trong Python, làm thế nào để tạo một bản sao độc lập (shallow copy) của một danh sách `original_list`?
A. new_list = original_list
B. new_list = original_list.copy()
C. new_list = original_list.duplicate()
D. new_list = original_list[:]
50. Phát biểu nào sau đây là đúng về kiểu dữ liệu `float` trong Python?
A. Chỉ chứa các số nguyên dương.
B. Chỉ chứa các chuỗi ký tự.
C. Chứa các số có phần thập phân.
D. Chỉ chứa giá trị True hoặc False.
51. Trong Python, `//` là toán tử gì?
A. Phép chia lấy phần dư.
B. Phép chia lấy phần nguyên.
C. Phép nhân.
D. Phép chia lấy phần thập phân.
52. Trong Python, nếu bạn có một danh sách `my_list = [10, 20, 30]`, làm thế nào để thêm phần tử `40` vào cuối danh sách?
A. my_list.insert(40)
B. my_list.add(40)
C. my_list.append(40)
D. my_list.push(40)
53. Trong Python, `range(5)` sẽ tạo ra một chuỗi các số nào?
A. 0, 1, 2, 3, 4, 5
B. 1, 2, 3, 4, 5
C. 0, 1, 2, 3, 4
D. Chỉ số 5
54. Hàm `input()` trong Python dùng để làm gì?
A. Hiển thị thông tin ra màn hình.
B. Đọc dữ liệu nhập từ bàn phím người dùng.
C. Thực hiện phép toán phức tạp.
D. Tạo một tệp mới.
55. Phát biểu nào sau đây mô tả đúng nhất về việc sử dụng dấu `#` trong Python?
A. Dùng để bắt đầu một chuỗi ký tự.
B. Dùng để thực hiện phép chia lấy phần dư.
C. Dùng để đánh dấu bắt đầu một dòng chú thích (comment).
D. Dùng để khai báo một biến.
56. Phát biểu nào sau đây mô tả đúng nhất về kiểu dữ liệu boolean trong Python?
A. Chỉ chứa các số nguyên.
B. Chỉ chứa các giá trị đúng hoặc sai.
C. Chỉ chứa các ký tự alphabet.
D. Chỉ chứa các chuỗi ký tự.
57. Biểu thức `2 ** 3` trong Python có kết quả là bao nhiêu?
58. Phát biểu nào sau đây là đúng về cách truy cập phần tử trong một chuỗi ký tự (string) ở Python?
A. Sử dụng ký tự `@` theo sau là chỉ số.
B. Sử dụng dấu ngoặc đơn `()` theo sau là chỉ số.
C. Sử dụng dấu ngoặc vuông `[]` theo sau là chỉ số.
D. Sử dụng ký tự `$` theo sau là chỉ số.
59. Trong Python, làm thế nào để loại bỏ phần tử cuối cùng khỏi một danh sách `my_list` và trả về giá trị của phần tử đó?
A. my_list.remove_last()
B. my_list.pop()
C. my_list.delete_last()
D. my_list.clear()
60. Hàm `print()` trong Python dùng để làm gì?
A. Đọc dữ liệu từ một tệp.
B. Thực hiện các phép tính số học.
C. Hiển thị thông tin ra màn hình console.
D. Tạo một vòng lặp.
61. Khi nói về ‘đệ quy’ (recursion) trong lập trình, điều này có nghĩa là gì?
A. Một vòng lặp vô hạn.
B. Một hàm tự gọi lại chính nó để giải quyết bài toán.
C. Một cách để lưu trữ dữ liệu trong bộ nhớ.
D. Một phương pháp để tối ưu hóa tốc độ xử lý.
62. Khái niệm ‘đa hình’ (polymorphism) trong lập trình hướng đối tượng cho phép:
A. Một lớp chỉ có thể có một loại phương thức duy nhất.
B. Các đối tượng thuộc các lớp khác nhau có thể phản ứng khác nhau với cùng một thông điệp (lời gọi phương thức).
C. Chỉ lớp cha mới có thể truy cập các thuộc tính của lớp con.
D. Một biến chỉ có thể tham chiếu đến một đối tượng thuộc cùng một lớp.
63. Trong Java, từ khóa ‘static’ khi áp dụng cho một biến lớp (class variable) có ý nghĩa gì?
A. Biến đó chỉ có thể được truy cập từ bên trong lớp.
B. Biến đó thuộc về lớp, không phải thuộc về một đối tượng cụ thể nào của lớp, và tất cả các đối tượng của lớp đều chia sẻ cùng một bản sao của biến này.
C. Biến đó sẽ bị hủy ngay sau khi phương thức khai báo nó kết thúc.
D. Biến đó sẽ được khởi tạo lại mỗi khi một đối tượng mới của lớp được tạo ra.
64. Trong lập trình, ‘thuật toán’ là gì?
A. Một thiết bị phần cứng dùng để xử lý dữ liệu.
B. Một chuỗi các chỉ thị chi tiết, hữu hạn, xác định rõ ràng để giải quyết một bài toán hoặc thực hiện một công việc cụ thể.
C. Một loại ngôn ngữ lập trình bậc cao.
D. Một cấu trúc dữ liệu dùng để lưu trữ thông tin.
65. Trong ngôn ngữ C++, việc sử dụng ‘std::vector’ khác với mảng thông thường (array) như thế nào?
A. Vector không có kích thước cố định và có thể thay đổi kích thước động, trong khi mảng có kích thước cố định.
B. Vector chỉ lưu trữ được các phần tử có kiểu dữ liệu giống nhau, còn mảng có thể lưu trữ các kiểu dữ liệu khác nhau.
C. Mảng có thể truy cập phần tử nhanh hơn vector.
D. Vector yêu cầu khai báo kích thước trước khi sử dụng, còn mảng thì không.
66. Trong SQL, câu lệnh ‘CREATE TABLE Students (StudentID INT PRIMARY KEY, Name VARCHAR(255));’ dùng để làm gì?
A. Xóa một bảng có tên ‘Students’.
B. Cập nhật thông tin trong bảng ‘Students’.
C. Tạo mới một bảng có tên ‘Students’ với hai cột là ‘StudentID’ (là khóa chính) và ‘Name’.
D. Truy vấn dữ liệu từ bảng ‘Students’.
67. Khi sử dụng vòng lặp ‘for’ trong C++, cấu trúc ‘for (int i = 0; i < 10; i++)' sẽ thực hiện lặp bao nhiêu lần?
A. 9 lần
B. 10 lần
C. 11 lần
D. 0 lần
68. Khái niệm ‘HTTP’ trong ngữ cảnh của World Wide Web là viết tắt của gì và chức năng chính của nó là gì?
A. HyperText Transfer Protocol; dùng để truyền tập tin qua mạng.
B. HyperText Markup Language; dùng để định dạng trang web.
C. HyperText Transfer Protocol; là giao thức truyền tải siêu văn bản giữa trình duyệt web và máy chủ.
D. High Tech Text Processing; dùng để xử lý văn bản nâng cao.
69. Khi thiết kế cơ sở dữ liệu quan hệ, ‘khóa chính’ (primary key) có vai trò gì?
A. Là trường tùy chọn, có thể chứa giá trị trùng lặp.
B. Là trường bắt buộc phải duy nhất và không được phép rỗng, dùng để định danh duy nhất mỗi bản ghi trong bảng.
C. Là trường dùng để liên kết hai bảng với nhau.
D. Là trường chứa thông tin mô tả chi tiết về bảng.
70. Trong ngôn ngữ C#, từ khóa ‘virtual’ khi áp dụng cho một phương thức trong lớp cơ sở có ý nghĩa gì?
A. Phương thức đó không thể được ghi đè (override) bởi lớp con.
B. Phương thức đó có thể được ghi đè (override) bởi lớp con.
C. Phương thức đó chỉ có thể được gọi từ bên trong lớp đó.
D. Phương thức đó sẽ được thực thi ngay khi lớp được khai báo.
71. Trong SQL, câu lệnh ‘SELECT * FROM Customers WHERE City = ‘Hanoi’ ORDER BY CustomerName ASC;’ có ý nghĩa gì?
A. Lấy tất cả thông tin từ bảng ‘Customers’ của những khách hàng ở ‘Hanoi’ và sắp xếp theo tên giảm dần.
B. Lấy tất cả thông tin từ bảng ‘Customers’ của những khách hàng ở ‘Hanoi’ và sắp xếp theo tên tăng dần.
C. Chỉ lấy tên khách hàng từ bảng ‘Customers’ của những khách hàng ở ‘Hanoi’ và sắp xếp theo tên tăng dần.
D. Thêm mới một khách hàng có tên ‘Hanoi’ vào bảng ‘Customers’.
72. Khi thiết kế giao diện người dùng (UI) cho một ứng dụng web, yếu tố nào sau đây là quan trọng nhất để đảm bảo trải nghiệm người dùng tốt?
A. Sử dụng nhiều hiệu ứng động phức tạp.
B. Tối ưu hóa tốc độ tải trang và tính dễ sử dụng (usability).
C. Chỉ hiển thị thông tin dưới dạng văn bản thuần túy.
D. Yêu cầu người dùng đăng nhập bằng tài khoản mạng xã hội.
73. Khi phát triển phần mềm, ‘debug’ là quá trình gì?
A. Viết mã nguồn mới cho ứng dụng.
B. Thiết kế giao diện người dùng.
C. Tìm kiếm, xác định và sửa lỗi (bug) trong mã nguồn của chương trình.
D. Tối ưu hóa hiệu suất của chương trình.
74. Trong lập trình Python, cấu trúc ‘if condition: … elif another_condition: … else: …’ được sử dụng để làm gì?
A. Thực hiện một khối mã nhiều lần dựa trên một điều kiện.
B. Chọn và thực thi một khối mã từ nhiều khối mã khả thi dựa trên các điều kiện lần lượt.
C. Khởi tạo một biến với giá trị mặc định.
D. Định nghĩa một hàm có thể trả về nhiều giá trị.
75. Trong JavaScript, ‘event handling’ (xử lý sự kiện) là gì?
A. Là quá trình biên dịch mã JavaScript.
B. Là cơ chế để ứng dụng phản hồi lại các hành động của người dùng (như click chuột, gõ phím) hoặc các sự kiện khác.
C. Là cách thức để JavaScript tương tác với máy chủ.
D. Là việc định nghĩa các biến toàn cục trong chương trình.
76. Khi so sánh hai cấu trúc dữ liệu ‘Stack’ và ‘Queue’, điểm khác biệt cơ bản nhất là gì?
A. Stack sử dụng nguyên tắc LIFO (Vào sau, ra trước), còn Queue sử dụng nguyên tắc FIFO (Vào trước, ra trước).
B. Stack chỉ lưu trữ số nguyên, còn Queue có thể lưu trữ mọi kiểu dữ liệu.
C. Stack có thể truy cập ngẫu nhiên mọi phần tử, còn Queue thì không.
D. Queue có kích thước cố định, còn Stack thì linh hoạt.
77. Khi làm việc với con trỏ trong ngôn ngữ lập trình C, việc khai báo ‘int *ptr;’ có ý nghĩa gì?
A. Khai báo một biến kiểu số nguyên có tên là ptr.
B. Khai báo một biến con trỏ, có khả năng trỏ tới một biến kiểu số nguyên.
C. Khai báo một mảng các biến kiểu số nguyên có tên là ptr.
D. Khai báo một hàm trả về giá trị kiểu số nguyên có tên là ptr.
78. Khi phân tích độ phức tạp thuật toán, ký hiệu ‘O(n)’ (Big O notation) thường dùng để biểu thị điều gì?
A. Thời gian thực thi chính xác của thuật toán.
B. Số lượng bộ nhớ mà thuật toán sử dụng.
C. Tốc độ tăng trưởng của thời gian hoặc không gian sử dụng của thuật toán khi kích thước đầu vào tăng lên.
D. Độ chính xác của kết quả thuật toán.
79. Trong ngôn ngữ lập trình Java, để khai báo một biến có thể lưu trữ số nguyên dương và âm với phạm vi giá trị lớn nhất, nên sử dụng kiểu dữ liệu nào?
A. byte
B. short
C. int
D. long
80. Khi thiết kế một thuật toán sắp xếp, tiêu chí nào sau đây là quan trọng nhất để đánh giá hiệu quả của thuật toán?
A. Số dòng mã nguồn của thuật toán.
B. Độ phức tạp thời gian (time complexity) và độ phức tạp không gian (space complexity).
C. Dễ dàng để người khác đọc hiểu thuật toán.
D. Thuật toán có thể chạy trên mọi hệ điều hành.
81. Khái niệm ‘API’ (Application Programming Interface) trong phát triển phần mềm đề cập đến điều gì?
A. Một loại ngôn ngữ lập trình mới.
B. Một tập hợp các quy tắc, định nghĩa và giao thức cho phép các ứng dụng phần mềm khác nhau giao tiếp với nhau.
C. Một giao diện đồ họa người dùng (GUI) tiêu chuẩn.
D. Một công cụ để kiểm tra lỗi phần cứng.
82. Trong ngôn ngữ Python, hàm ‘print()’ được sử dụng để làm gì?
A. Đọc dữ liệu từ bàn phím.
B. Hiển thị dữ liệu ra màn hình console.
C. Thực hiện các phép tính toán học.
D. Định nghĩa một hàm mới.
83. Trong ngữ cảnh của cơ sở dữ liệu, ‘chuẩn hóa’ (normalization) là quá trình nhằm mục đích gì?
A. Tăng cường khả năng lưu trữ dữ liệu.
B. Giảm thiểu sự dư thừa dữ liệu và các vấn đề liên quan đến cập nhật (như insertion, deletion, update anomalies).
C. Tăng tốc độ truy vấn dữ liệu một cách đáng kể.
D. Đảm bảo tính bảo mật tuyệt đối cho mọi dữ liệu.
84. Khi sử dụng HTML để xây dựng trang web, thẻ ‘
‘ có chức năng gì?
A. Tạo một tiêu đề chính cho trang.
B. Định nghĩa một đoạn văn bản.
C. Tạo một liên kết đến trang web khác.
D. Chèn một hình ảnh vào trang.
85. Trong mạng máy tính, địa chỉ IP có chức năng gì?
A. Xác định tốc độ kết nối mạng.
B. Cung cấp một định danh logic duy nhất cho thiết bị trong một mạng, cho phép truyền dữ liệu giữa các thiết bị.
C. Mã hóa dữ liệu truyền qua mạng.
D. Ngăn chặn virus xâm nhập vào mạng.
86. Trong ngôn ngữ lập trình C, hàm ‘malloc()’ được sử dụng để làm gì?
A. Giải phóng bộ nhớ đã cấp phát.
B. Cấp phát một khối bộ nhớ động có kích thước xác định.
C. Đọc dữ liệu từ một tập tin.
D. Tính toán diện tích của một hình chữ nhật.
87. Trong lập trình hướng đối tượng, khái niệm ‘kế thừa’ cho phép một lớp mới (lớp con) nhận các thuộc tính và phương thức từ một lớp đã có (lớp cha). Mục đích chính của kế thừa là gì?
A. Tăng cường bảo mật cho lớp cha.
B. Tạo ra các lớp hoàn toàn độc lập, không liên quan.
C. Tái sử dụng mã nguồn và xây dựng hệ thống phân cấp các lớp.
D. Giảm kích thước của chương trình khi biên dịch.
88. Trong ngôn ngữ lập trình Pascal, cấu trúc ‘record’ cho phép khai báo một kiểu dữ liệu tập hợp các biến thành phần có thể khác nhau về kiểu dữ liệu. Điều này tương tự như cấu trúc nào trong các ngôn ngữ lập trình hiện đại khác?
A. Struct trong C++
B. Object trong Java
C. Dictionary trong Python
D. Array trong JavaScript
89. Khi nói đến ‘đóng gói’ (encapsulation) trong lập trình hướng đối tượng, điều này đề cập đến việc:
A. Tạo ra các lớp con từ một lớp cha.
B. Biến đổi một lớp thành một đối tượng cụ thể.
C. Kết hợp dữ liệu (thuộc tính) và các phương thức xử lý dữ liệu đó vào trong một đơn vị duy nhất (lớp), đồng thời hạn chế truy cập trực tiếp từ bên ngoài.
D. Cho phép một đối tượng có nhiều hình dạng khác nhau.
90. Khi lập trình web, CSS (Cascading Style Sheets) được sử dụng để làm gì?
A. Xác định cấu trúc và nội dung của trang web.
B. Xử lý logic và tương tác động trên trang web.
C. Định dạng cách trình bày (giao diện, bố cục, màu sắc) của các phần tử HTML trên trang web.
D. Quản lý kết nối đến cơ sở dữ liệu.
91. Trong lập trình hướng đối tượng, việc định nghĩa một lớp trừu tượng (abstract class) cho phép điều gì?
A. Tạo trực tiếp các đối tượng từ lớp trừu tượng đó.
B. Buộc các lớp con phải cung cấp định nghĩa cho các phương thức trừu tượng của lớp cha.
C. Đảm bảo tất cả các lớp con đều có cùng một tập hợp các thuộc tính cố định.
D. Chỉ cho phép kế thừa một lần duy nhất từ lớp trừu tượng.
92. Một lớp ‘User’ có thuộc tính ‘username’ và ‘password’. Nếu chúng ta muốn chỉ cho phép người dùng đặt mật khẩu mới thông qua một phương thức ‘setNewPassword(newPassword)’ và phương thức này có logic kiểm tra độ mạnh của mật khẩu trước khi gán, thì việc này đang áp dụng nguyên lý nào một cách hiệu quả?
A. Kế thừa
B. Đa hình
C. Đóng gói (với getter/setter và logic kiểm tra)
D. Trừu tượng hóa
93. Nguyên lý ‘Mở/Đóng’ (Open/Closed Principle – OCP) trong SOLID đề xuất rằng một thực thể phần mềm (lớp, module, hàm, v.v.) nên ‘mở để mở rộng, nhưng đóng để sửa đổi’. Điều này có nghĩa là gì trong thực tế?
A. Khi cần thêm chức năng mới, chúng ta phải sửa đổi trực tiếp mã nguồn của các lớp hiện có.
B. Chúng ta nên thêm chức năng mới bằng cách tạo các lớp mới hoặc mở rộng các lớp hiện có (ví dụ: kế thừa, composition) mà không sửa đổi mã nguồn của các lớp đã hoạt động ổn định.
C. Chỉ nên viết mã nguồn một lần và không bao giờ được phép thay đổi.
D. Phần mềm phải luôn được đóng lại khi không sử dụng để tránh lỗi.
94. Một lớp ‘ReportGenerator’ có trách nhiệm tạo báo cáo và cũng có trách nhiệm gửi báo cáo đó qua email. Nếu có yêu cầu thay đổi cách gửi báo cáo (ví dụ: gửi qua SMS), chúng ta sẽ phải sửa đổi lớp ‘ReportGenerator’. Nguyên tắc SOLID nào bị vi phạm ở đây?
A. Nguyên lý Đóng gói (Encapsulation)
B. Nguyên lý Đơn Trách Nhiệm (Single Responsibility Principle – SRP)
C. Nguyên lý Thay thế Liskov (Liskov Substitution Principle – LSP)
D. Nguyên lý Đảo ngược Phụ thuộc (Dependency Inversion Principle – DIP)
95. Khi nói đến ‘tính kế thừa’ (inheritance), nếu một lớp con kế thừa từ hai lớp cha khác nhau, điều này được gọi là gì trong ngữ cảnh lập trình hướng đối tượng (tùy thuộc vào ngôn ngữ lập trình)?
A. Đa kế thừa (Multiple Inheritance)
B. Đơn kế thừa (Single Inheritance)
C. Kế thừa đa hình (Polymorphic Inheritance)
D. Kế thừa gián tiếp (Indirect Inheritance)
96. Trong lập trình hướng đối tượng, thuật ngữ ‘composition’ (sự kết hợp/sở hữu) đề cập đến mối quan hệ giữa các lớp khi nào?
A. Khi một lớp kế thừa trực tiếp các thuộc tính và phương thức từ một lớp cha.
B. Khi một lớp có một hoặc nhiều đối tượng của các lớp khác như là các thuộc tính của chính nó (ví dụ: một lớp ‘XeHoi’ có thuộc tính là một đối tượng ‘DongCo’).
C. Khi hai lớp có cùng tên phương thức nhưng hành vi khác nhau.
D. Khi một lớp trừu tượng định nghĩa các phương thức mà các lớp con phải triển khai.
97. Lớp (Class) trong lập trình hướng đối tượng được ví như là gì?
A. Một hành động cụ thể mà đối tượng có thể thực hiện.
B. Một thuộc tính hoặc đặc điểm của đối tượng.
C. Một bản thiết kế, khuôn mẫu để tạo ra các đối tượng.
D. Một cách để che giấu chi tiết bên trong đối tượng.
98. Trong lập trình hướng đối tượng, khi một phương thức được gọi trên một đối tượng, hệ thống sẽ tự động chọn đúng phiên bản của phương thức đó dựa trên kiểu dữ liệu thực tế của đối tượng. Đây là biểu hiện của khái niệm nào?
A. Trừu tượng hóa (Abstraction)
B. Đa hình (Polymorphism)
C. Đóng gói (Encapsulation)
D. Kế thừa (Inheritance)
99. Một ‘interface’ (giao diện) trong lập trình hướng đối tượng có thể chứa gì?
A. Các biến thành viên có thể khởi tạo giá trị và các phương thức có đầy đủ mã lệnh.
B. Chỉ các chữ ký của phương thức (method signatures) và có thể chứa các hằng số (constants).
C. Các biến và phương thức chỉ có thể được truy cập từ bên trong lớp triển khai.
D. Các cấu trúc dữ liệu phức tạp và các hàm xử lý logic.
100. Phát biểu nào sau đây mô tả chính xác nhất về ‘Đóng gói’ (Encapsulation) trong lập trình hướng đối tượng?
A. Cho phép đối tượng tương tác với nhau thông qua các giao diện định nghĩa.
B. Kết hợp dữ liệu (thuộc tính) và các phương thức thao tác trên dữ liệu đó vào một đơn vị duy nhất (lớp).
C. Cho phép một tên phương thức có nhiều hình thức thực thi khác nhau tùy thuộc vào đối tượng gọi nó.
D. Che giấu chi tiết cài đặt bên trong của một đối tượng và chỉ cho phép truy cập thông qua các phương thức công khai.
101. Trong trường hợp một lớp cần triển khai nhiều giao diện khác nhau, điều này được gọi là gì trong lập trình hướng đối tượng?
A. Đa kế thừa (Multiple Inheritance)
B. Triển khai đa giao diện (Multiple Interface Implementation)
C. Đa hình (Polymorphism)
D. Trừu tượng hóa giao diện (Interface Abstraction)
102. Một lớp ‘Shape’ (Hình dạng) có phương thức trừu tượng ‘calculateArea()’ (tính diện tích). Các lớp con như ‘Circle’ (Hình tròn) và ‘Rectangle’ (Hình chữ nhật) sẽ triển khai phương thức này theo cách riêng của chúng. Điều này thể hiện rõ nhất nguyên lý nào của lập trình hướng đối tượng?
A. Đóng gói
B. Kế thừa và Đa hình
C. Trừu tượng hóa
D. Tất cả các nguyên lý trên
103. Một phương thức (method) trong lập trình hướng đối tượng là gì?
A. Một biến lưu trữ trạng thái của đối tượng.
B. Một khối mã có thể thực thi để thực hiện một tác vụ cụ thể.
C. Một bản thiết kế để tạo ra các đối tượng.
D. Một cách để định nghĩa mối quan hệ giữa các lớp.
104. 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, đồng thời có thể mở rộng hoặc ghi đè chúng?
A. Đóng gói (Encapsulation)
B. Trừu tượng hóa (Abstraction)
C. Đa hình (Polymorphism)
D. Kế thừa (Inheritance)
105. Trong một hệ thống, có nhiều loại hình thức thanh toán khác nhau như ‘Thanh toán bằng Thẻ Tín dụng’, ‘Thanh toán bằng Chuyển khoản’, ‘Thanh toán bằng Tiền mặt’. Nếu có một phương thức chung ‘thucHienThanhToan()’ có thể được gọi cho từng loại hình thức thanh toán này, điều này thể hiện nguyên lý nào?
A. Kế thừa
B. Đóng gói
C. Đa hình
D. Trừu tượng hóa
106. Trong lập trình hướng đối tượng, một đối tượng (object) là gì?
A. Một bản thiết kế hoặc khuôn mẫu để tạo ra các thực thể.
B. Một thể hiện cụ thể của một lớp, có trạng thái (thuộc tính) và hành vi (phương thức).
C. Một tập hợp các hàm độc lập không liên quan đến dữ liệu.
D. Một cấu trúc dữ liệu chỉ chứa các biến mà không có các hành động.
107. Nguyên lý ‘Đơn trách nhiệm’ (Single Responsibility Principle – SRP), một trong các nguyên tắc SOLID, khuyến khích điều gì trong thiết kế hướng đối tượng?
A. Mỗi lớp chỉ nên có một phương thức duy nhất.
B. Mỗi lớp chỉ nên chịu trách nhiệm cho một khía cạnh hoặc một chức năng duy nhất của chương trình.
C. Mỗi đối tượng chỉ nên thực hiện một hành động duy nhất.
D. Mỗi chương trình chỉ nên có một lớp duy nhất.
108. Một lập trình viên tạo ra một lớp ‘XeHoi’ với các thuộc tính như ‘màu sắc’, ‘tốc độ’ và các phương thức như ‘tăngTốc()’, ‘giảmTốc()’. Sau đó, họ tạo lớp ‘XeDap’ kế thừa từ ‘XeHoi’ và thêm thuộc tính ‘sốBánh’ cùng phương thức ‘đạpXe()’. Đây là ví dụ điển hình của việc áp dụng nguyên lý nào?
A. Đa hình
B. Đóng gói
C. Kế thừa
D. Trừu tượng hóa
109. Khi xem xét ‘tính đóng gói’ (encapsulation), việc sử dụng các ‘private members’ (thành viên riêng tư) cho thuộc tính của một lớp nhằm mục đích gì?
A. Cho phép mọi lớp khác trong hệ thống có thể truy cập trực tiếp và thay đổi giá trị của thuộc tính.
B. Ngăn chặn truy cập trực tiếp từ bên ngoài lớp, yêu cầu sử dụng các phương thức ‘getter’ và ‘setter’ để truy cập và sửa đổi.
C. Tự động tạo ra các phương thức để ghi đè hành vi của lớp cha.
D. Đảm bảo rằng lớp có thể kế thừa từ nhiều lớp cha cùng lúc.
110. Trong lập trình hướng đối tượng, tại sao nguyên tắc ‘Đóng gói’ lại quan trọng?
A. Để cho phép các lớp khác dễ dàng truy cập và sửa đổi dữ liệu bên trong một lớp.
B. Để bảo vệ dữ liệu của đối tượng khỏi bị truy cập trái phép và kiểm soát cách dữ liệu được thay đổi.
C. Để tăng tốc độ thực thi của chương trình bằng cách giảm số lượng phương thức.
D. Để đảm bảo rằng tất cả các lớp con đều có hành vi giống hệt lớp cha.
111. 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, làm cho hệ thống dễ bảo trì và mở rộng hơn bằng cách yêu cầu các lớp phụ thuộc vào các trừu tượng (lớp trừu tượng hoặc giao diện) thay vì các lớp cụ thể?
A. Đóng gói (Encapsulation)
B. Đa hình (Polymorphism)
C. Kế thừa (Inheritance)
D. Nguyên lý Đảo ngược Phụ thuộc (Dependency Inversion Principle – DIP)
112. Nguyên lý ‘Phân tách Giao diện’ (Interface Segregation Principle – ISP) trong SOLID khuyến cáo điều gì?
A. Nên tạo các lớp trừu tượng lớn bao gồm tất cả các chức năng cần thiết.
B. Các client không nên bị buộc phải phụ thuộc vào các phương thức mà chúng không sử dụng; thay vào đó, nên có nhiều giao diện nhỏ, cụ thể.
C. Mỗi giao diện chỉ nên có một phương thức duy nhất.
D. Giao diện nên được kế thừa từ một giao diện cha lớn.
113. Một lớp giao diện (interface) trong lập trình hướng đối tượng định nghĩa điều gì?
A. Các thuộc tính và phương thức có sẵn để sử dụng ngay lập tức.
B. Một tập hợp các chữ ký phương thức (method signatures) mà các lớp triển khai phải tuân theo.
C. Các biến toàn cục có thể truy cập từ bất kỳ đâu trong chương trình.
D. Cơ chế để tạo ra các đối tượng mới một cách tự động.
114. Một lớp ‘DongVat’ có phương thức ‘keu()’. Lớp ‘Cho’ kế thừa từ ‘DongVat’ và ghi đè phương thức ‘keu()’ để phát ra tiếng ‘Gâu gâu’. Lớp ‘Meo’ cũng kế thừa từ ‘DongVat’ và ghi đè phương thức ‘keu()’ để phát ra tiếng ‘Meo meo’. Khi gọi ‘keu()’ trên đối tượng ‘Cho’ và ‘Meo’, kết quả sẽ khác nhau. Điều này minh họa cho nguyên lý nào?
A. Đóng gói
B. Trừu tượng hóa
C. Kế thừa
D. Đa hình (Ghi đè phương thức)
115. Khái niệm ‘Trừu tượng hóa’ (Abstraction) trong lập trình hướng đối tượng nhấn mạnh vào điều gì?
A. Việc tạo ra các lớp con kế thừa toàn bộ thuộc tính và phương thức của lớp cha.
B. Việc ẩn đi các chi tiết không cần thiết và chỉ hiển thị những thông tin quan trọng, cần thiết cho người dùng.
C. Việc gom dữ liệu và phương thức vào chung một lớp để quản lý.
D. Việc cho phép một tên phương thức được sử dụng cho nhiều mục đích khác nhau.
116. Một lớp ‘PhanMem’ có phương thức ‘chay()’ và lớp ‘Word’ kế thừa từ ‘PhanMem’. Lớp ‘Excel’ cũng kế thừa từ ‘PhanMem’. Nếu có một biến kiểu ‘PhanMem’ trỏ đến một đối tượng ‘Word’ và gọi ‘chay()’, phương thức ‘chay()’ của lớp ‘Word’ sẽ được thực thi. Nếu biến đó trỏ đến ‘Excel’, phương thức ‘chay()’ của lớp ‘Excel’ sẽ được thực thi. Đây là minh chứng cho nguyên lý nào?
A. Đóng gói
B. Đa hình (Runtime Polymorphism)
C. Kế thừa
D. Trừu tượng hóa
117. Trong các nguyên lý SOLID, nguyên lý nào liên quan đến việc đảm bảo rằng các lớp dẫn xuất có thể thay thế cho các lớp cơ sở của chúng mà không làm thay đổi tính đúng đắn của chương trình?
A. Nguyên lý Đóng gói (Encapsulation)
B. Nguyên lý Đơn Trách Nhiệm (Single Responsibility Principle)
C. Nguyên lý Thay thế Liskov (Liskov Substitution Principle – LSP)
D. Nguyên lý Đảo ngược Phụ thuộc (Dependency Inversion Principle)
118. Trong lập trình hướng đối tượng, tại sao việc sử dụng các ‘getter’ và ‘setter’ (phương thức truy cập và sửa đổi) lại được khuyến khích thay vì truy cập trực tiếp vào các thuộc tính của một lớp?
A. Để làm cho mã nguồn dài hơn và khó hiểu hơn.
B. Để kiểm soát việc truy cập và sửa đổi dữ liệu, cho phép thêm logic xác thực hoặc chuyển đổi dữ liệu.
C. Để đảm bảo rằng tất cả các thuộc tính đều phải được đặt giá trị khi tạo đối tượng.
D. Để cho phép các lớp khác có thể kế thừa các thuộc tính đó một cách dễ dàng.
119. Trong lập trình hướng đối tượng, một ‘abstract method’ (phương thức trừu tượng) có đặc điểm gì nổi bật?
A. Nó có đầy đủ mã lệnh để thực thi ngay lập tức.
B. Nó chỉ có chữ ký (signature) và không có phần thân (body), yêu cầu lớp con triển khai.
C. Nó tự động được kế thừa và sử dụng bởi tất cả các lớp con mà không cần định nghĩa lại.
D. Nó có thể được truy cập từ bất kỳ lớp nào mà không cần tạo đối tượng.
120. Một lập trình viên thiết kế một lớp ‘DatabaseConnection’ để quản lý kết nối đến cơ sở dữ liệu. Lớp này có phương thức ‘connect()’ và ‘disconnect()’. Nếu có một lớp con ‘MySQLConnection’ kế thừa từ ‘DatabaseConnection’ và ghi đè phương thức ‘connect()’ để thực hiện các thao tác kết nối riêng cho MySQL, điều này thể hiện nguyên lý nào?
A. Đóng gói
B. Trừu tượng hóa
C. Kế thừa và Đa hình
D. Nguyên lý Đơn Trách Nhiệm
121. Phát biểu nào sau đây là đúng về việc sử dụng tham số trong hàm/thủ tục của Pascal?
A. Tham số chỉ có thể là biến toàn cục.
B. Tham số cho phép truyền dữ liệu vào hoặc ra khỏi hàm/thủ tục.
C. Tham số là tùy chọn, không bắt buộc phải khai báo.
D. Tham số chỉ có thể là hằng số.
122. Trong Pascal, toán tử ‘+’ được sử dụng cho mục đích gì?
A. Thực hiện phép trừ.
B. Thực hiện phép nhân.
C. Thực hiện phép cộng hoặc nối chuỗi.
D. Thực hiện phép chia.
123. Nếu trong Pascal, một biến có kiểu dữ liệu ‘char’, biến đó có thể lưu trữ loại dữ liệu nào?
A. Một chuỗi các ký tự.
B. Một số nguyên duy nhất.
C. Một ký tự đơn lẻ.
D. Một số thực.
124. Phát biểu nào sau đây là sai về cách sử dụng thủ tục (procedure) trong Pascal?
A. Thủ tục có thể nhận các tham số đầu vào.
B. Thủ tục có thể trả về một giá trị duy nhất thông qua tên của nó.
C. Thủ tục giúp chia nhỏ chương trình thành các khối xử lý riêng biệt.
D. Thủ tục được gọi để thực thi các lệnh bên trong nó.
125. Trong Pascal, khai báo ‘type DiemSo = array[1..100] of Real;’ định nghĩa một kiểu dữ liệu mới. Tên của kiểu dữ liệu mới này là gì?
A. array
B. Real
C. DiemSo
D. 1..100
126. Trong Pascal, ‘function’ khác với ‘procedure’ ở điểm nào cơ bản nhất?
A. Hàm chỉ có thể nhận tham số, còn thủ tục thì không.
B. Hàm trả về một giá trị thông qua tên của nó, còn thủ tục thì không.
C. Thủ tục luôn được thực thi, còn hàm thì không.
D. Hàm không thể có tham số, còn thủ tục thì có.
127. Phát biểu nào sau đây mô tả đúng về việc khai báo một mảng trong Pascal?
A. Cần chỉ định kiểu dữ liệu và phạm vi chỉ số.
B. Chỉ cần chỉ định kiểu dữ liệu.
C. Chỉ cần chỉ định phạm vi chỉ số.
D. Không cần khai báo kiểu dữ liệu hay phạm vi chỉ số.
128. Trong ngôn ngữ lập trình Pascal, khai báo biến ‘var diem: real;’ có ý nghĩa gì đối với kiểu dữ liệu của biến diem?
A. Biến diem có thể lưu trữ số nguyên.
B. Biến diem có thể lưu trữ ký tự.
C. Biến diem có thể lưu trữ số thực.
D. Biến diem có thể lưu trữ chuỗi ký tự.
129. Khi sử dụng vòng lặp ‘while…do’ trong Pascal, điều kiện kiểm tra được thực hiện ở đâu?
A. Chỉ sau khi khối lệnh bên trong vòng lặp đã được thực thi.
B. Trước mỗi lần thực thi khối lệnh bên trong vòng lặp.
C. Sau khi vòng lặp kết thúc.
D. Không có kiểm tra điều kiện nào được thực hiện.
130. Trong Pascal, khai báo ‘const PI = 3.14159;’ định nghĩa một giá trị không đổi. Tên của giá trị không đổi này là gì?
A. Giá trị.
B. PI.
C. 3.14159.
D. Hằng số.
131. Trong Pascal, khi khai báo một biến với kiểu dữ liệu ‘boolean’, biến đó có thể nhận những giá trị nào?
A. Chỉ số nguyên từ 0 đến 9.
B. Chỉ ký tự ‘T’ hoặc ‘F’.
C. Chỉ hai giá trị logic: True hoặc False.
D. Bất kỳ chuỗi ký tự nào.
132. Trong Pascal, làm thế nào để so sánh hai biến ‘x’ và ‘y’ xem chúng có bằng nhau hay không?
A. x = y
B. x == y
C. x y
D. x is y
133. Trong Pascal, cấu trúc rẽ nhánh ‘case…of…end’ được sử dụng khi nào?
A. Khi cần thực hiện một hành động lặp đi lặp lại nhiều lần.
B. Khi cần lựa chọn thực thi một trong nhiều khối lệnh dựa trên giá trị của một biến hoặc biểu thức.
C. Khi cần so sánh hai giá trị với nhau.
D. Khi cần khai báo một biến mới.
134. Phát biểu nào sau đây mô tả đúng nhất về cấu trúc lặp ‘for…do’ trong Pascal?
A. Thực hiện một khối lệnh một số lần được xác định trước.
B. Thực hiện một khối lệnh cho đến khi một điều kiện nào đó trở thành sai.
C. Thực hiện một khối lệnh ít nhất một lần, sau đó lặp lại cho đến khi điều kiện trở thành sai.
D. Thực hiện một khối lệnh khi một điều kiện nào đó là đúng.
135. Trong Pascal, câu lệnh ‘if x mod 2 = 0 then writeln(‘So chan’);’ dùng để kiểm tra điều gì?
A. Biến x có phải là số âm hay không.
B. Biến x có phải là số lẻ hay không.
C. Biến x có phải là số chẵn hay không.
D. Biến x có phải là số nguyên tố hay không.
136. Phát biểu nào sau đây là đúng về cách khai báo hằng trong Pascal?
A. Sử dụng từ khóa ‘var’ để khai báo hằng.
B. Sử dụng từ khóa ‘const’ để khai báo hằng.
C. Hằng có thể thay đổi giá trị trong quá trình chạy chương trình.
D. Hằng không cần khai báo kiểu dữ liệu.
137. Trong Pascal, lệnh ‘readln(a, b);’ có chức năng gì?
A. In giá trị của biến a và b ra màn hình.
B. Đọc giá trị từ bàn phím vào biến a và b, sau đó xuống dòng.
C. Gán giá trị của biến a cho biến b.
D. Kiểm tra xem giá trị của a có bằng b hay không.
138. Phát biểu nào sau đây là đúng về cách sử dụng dấu chấm phẩy (;) trong Pascal?
A. Dấu chấm phẩy dùng để kết thúc khai báo biến.
B. Dấu chấm phẩy dùng để phân tách các câu lệnh.
C. Dấu chấm phẩy là bắt buộc sau mỗi từ khóa.
D. Dấu chấm phẩy chỉ dùng ở cuối chương trình.
139. Phát biểu nào sau đây đúng về kiểu dữ liệu ‘string’ trong Pascal?
A. Chỉ có thể lưu trữ một ký tự.
B. Lưu trữ một chuỗi các ký tự.
C. Lưu trữ các số nguyên.
D. Lưu trữ các số thực.
140. Phát biểu nào sau đây mô tả chính xác về cấu trúc lặp ‘for…downto…do’ trong Pascal?
A. Biến đếm của vòng lặp tăng dần.
B. Vòng lặp dừng khi biến đếm nhỏ hơn giá trị cuối.
C. Biến đếm của vòng lặp giảm dần.
D. Vòng lặp thực hiện dựa trên một điều kiện không xác định.
141. Trong Pascal, làm thế nào để biểu diễn phép toán ‘a lớn hơn hoặc bằng b’?
A. a > b
B. a < b
C. a >= b
D. a <= b
142. Phát biểu nào sau đây là đúng về cách khai báo biến trong Pascal?
A. Biến phải được khai báo trước khi sử dụng.
B. Biến có thể được khai báo bất kỳ lúc nào.
C. Biến không cần khai báo kiểu dữ liệu.
D. Biến chỉ có thể là số nguyên.
143. Biến ‘count: integer;’ trong Pascal có thể lưu trữ những loại giá trị nào?
A. Các số có phần thập phân.
B. Các ký tự đơn lẻ.
C. Các số nguyên.
D. Các chuỗi ký tự.
144. Trong Pascal, toán tử ‘div’ được sử dụng cho mục đích gì?
A. Thực hiện phép chia lấy dư.
B. Thực hiện phép chia lấy phần nguyên.
C. Thực hiện phép chia thông thường (số thực).
D. Thực hiện phép nhân.
145. Phát biểu nào sau đây mô tả đúng về vai trò của ‘begin’ và ‘end’ trong Pascal?
A. Chúng được sử dụng để khai báo biến.
B. Chúng đánh dấu sự bắt đầu và kết thúc của một khối lệnh.
C. Chúng là các toán tử toán học.
D. Chúng được sử dụng để gọi hàm.
146. Trong Pascal, câu lệnh ‘if (a > b) then Max := a else Max := b;’ được sử dụng để làm gì?
A. Gán giá trị của a cho biến Max nếu a nhỏ hơn b.
B. Gán giá trị của b cho biến Max nếu a lớn hơn hoặc bằng b.
C. Gán giá trị lớn hơn giữa a và b cho biến Max.
D. Gán giá trị nhỏ hơn giữa a và b cho biến Max.
147. Phát biểu nào sau đây mô tả đúng về cấu trúc lặp ‘repeat…until’ trong Pascal?
A. Điều kiện kiểm tra được thực hiện trước khi lặp.
B. Khối lệnh được thực hiện ít nhất một lần trước khi kiểm tra điều kiện.
C. Vòng lặp sẽ dừng ngay khi điều kiện trở thành sai.
D. Cấu trúc này không có khả năng bị lặp vô hạn.
148. Trong Pascal, làm thế nào để truy cập vào phần tử thứ 5 của một mảng có tên là ‘data’?
A. data(5)
B. data[5]
C. data.5
D. data{5}
149. Phát biểu nào sau đây là sai về cấu trúc lặp ‘for…to…do’ trong Pascal?
A. Biến đếm của vòng lặp sẽ tăng dần giá trị.
B. Vòng lặp dừng khi biến đếm vượt quá giá trị cuối.
C. Vòng lặp có thể thực hiện với số lần lặp không xác định trước.
D. Biến đếm của vòng lặp có thể là kiểu dữ liệu số nguyên.
150. Câu lệnh ‘writeln(‘Hello, World!’);’ trong Pascal dùng để làm gì?
A. Đọc chuỗi ‘Hello, World!’ từ bàn phím.
B. Gán chuỗi ‘Hello, World!’ cho một biến.
C. In chuỗi ‘Hello, World!’ ra màn hình và xuống dòng.
D. Kiểm tra xem chuỗi ‘Hello, World!’ có đúng hay không.