1. Câu lệnh nào sau đây thực hiện việc gán giá trị 10 cho biến ‘x’ trong Pascal?
A. x = 10;
B. x := 10;
C. assign x = 10;
D. x <- 10;
2. Cấu trúc vòng lặp ‘for i := 1 to 10 do writeln(i);’ trong Pascal sẽ thực hiện việc in ra màn hình bao nhiêu lần?
A. 9 lần.
B. 10 lần.
C. 11 lần.
D. Vô hạn lần.
3. Câu lệnh ‘repeat … until dieu_kien;’ trong Pascal đảm bảo rằng khối lệnh bên trong được thực thi ít nhất bao nhiêu lần?
A. 0 lần.
B. 1 lần.
C. 2 lần.
D. Vô hạn lần.
4. Trong thuật toán sắp xếp nổi bọt (bubble sort), bước nào sau đây là quan trọng nhất?
A. Chia mảng thành hai nửa.
B. So sánh và đổi chỗ các cặp phần tử liền kề nếu chúng sai thứ tự.
C. Tìm phần tử nhỏ nhất và đưa lên đầu.
D. Sử dụng đệ quy để sắp xếp.
5. Biến ‘tong : integer;’ trong Pascal có thể lưu trữ giá trị lớn nhất là bao nhiêu?
A. Phụ thuộc vào hệ điều hành.
B. Khoảng 32767.
C. Vô hạn.
D. Khoảng 2 tỷ.
6. Trong Pascal, câu lệnh ‘if a := 5 then …’ sẽ gây ra lỗi gì?
A. Lỗi cú pháp, vì thiếu ‘begin’.
B. Lỗi logic, vì gán giá trị thay vì so sánh.
C. Lỗi kiểu dữ liệu, vì ‘5’ không phải là điều kiện.
D. Không gây lỗi, nhưng hành vi có thể không như mong đợi.
7. Trong lập trình Pascal, kí hiệu ‘//’ được sử dụng để làm gì?
A. Bắt đầu một chuỗi ký tự.
B. Bắt đầu một khối lệnh.
C. Bắt đầu một chú thích (comment) cho đến cuối dòng.
D. Kết thúc một câu lệnh.
8. Trong Pascal, câu lệnh ‘If a > b Then writeln(‘A lớn hơn B’);’ sẽ thực thi như thế nào nếu điều kiện ‘a > b’ là sai?
A. Chương trình sẽ báo lỗi và dừng lại.
B. Chương trình sẽ thực thi câu lệnh ‘writeln(‘A lớn hơn B’);’.
C. Chương trình sẽ bỏ qua câu lệnh ‘writeln(‘A lớn hơn B’);’ và tiếp tục thực thi các lệnh sau đó.
D. Chương trình sẽ thực thi câu lệnh ‘writeln(‘A lớn hơn B’);’ nhiều lần.
9. Cấu trúc ‘case bie_n_kieu_nguyen_hoac_ky_tu of … end;’ trong Pascal được gọi là gì?
A. Vòng lặp ‘while’.
B. Câu lệnh điều kiện ‘if-else’.
C. Câu lệnh ‘case’ (hay còn gọi là câu lệnh lựa chọn).
D. Vòng lặp ‘repeat-until’.
10. Trong lập trình Pascal, khai báo biến ‘var diem : real;’ có ý nghĩa gì?
A. Khai báo biến ‘diem’ thuộc kiểu số nguyên.
B. Khai báo biến ‘diem’ thuộc kiểu ký tự.
C. Khai báo biến ‘diem’ thuộc kiểu số thực.
D. Khai báo biến ‘diem’ thuộc kiểu chuỗi ký tự.
11. Câu lệnh ‘if x mod 2 = 0 then writeln(‘Chan’); else writeln(‘Le’);’ dùng để làm gì?
A. Kiểm tra xem x có phải là số nguyên tố không.
B. Kiểm tra xem x có phải là số chẵn hoặc lẻ không.
C. Kiểm tra xem x có chia hết cho 2 không.
D. Kiểm tra xem x có lớn hơn 0 không.
12. Để truy cập phần tử thứ 5 của mảng ‘arr’ đã khai báo, ta sử dụng cú pháp nào trong Pascal?
A. arr(5);
B. arr.5;
C. arr[5];
D. arr{5};
13. Lệnh nào sau đây trong Pascal dùng để đọc một giá trị từ bàn phím và gán cho biến ‘a’?
A. Write(a);
B. Read(a);
C. Print(a);
D. Input(a);
14. Lệnh nào trong Pascal dùng để in ra màn hình một chuỗi ký tự và xuống dòng sau đó?
A. Write(‘Chuỗi’);
B. Print(‘Chuỗi’);
C. Writeln(‘Chuỗi’);
D. Display(‘Chuỗi’);
15. Nếu một chương trình Pascal cần thực hiện một tác vụ lặp đi lặp lại một số lần xác định, cấu trúc vòng lặp nào là phù hợp nhất?
A. Vòng lặp ‘while’.
B. Vòng lặp ‘repeat…until’.
C. Vòng lặp ‘for’.
D. Cả ba loại vòng lặp trên đều có thể sử dụng.
16. Đâu là cách khai báo một mảng đa chiều (ví dụ: mảng 2 chiều) trong Pascal?
A. var mang: array [1..10, 1..10] of integer;
B. var mang: array [1..10] of array [1..10] of integer;
C. var mang: array of array [1..10, 1..10] of integer;
D. Cả A và B đều đúng.
17. Đâu là cách khai báo một biến kiểu chuỗi ký tự trong Pascal?
A. var bien: char;
B. var bien: array of char;
C. var bien: string;
D. var bien: text;
18. Cấu trúc vòng lặp ‘while dieu_kien do begin … end;’ trong Pascal sẽ thực hiện khối lệnh bên trong khi nào?
A. Chỉ một lần duy nhất.
B. Khi điều kiện là sai.
C. Khi điều kiện là đúng và tiếp tục lặp lại cho đến khi điều kiện sai.
D. Khi gặp từ khóa ‘break’.
19. Hàm (function) trong Pascal khác với thủ tục (procedure) ở điểm nào?
A. Hàm luôn nhận tham số, thủ tục thì không.
B. Thủ tục có thể trả về giá trị, hàm thì không.
C. Hàm trả về một giá trị duy nhất thông qua tên của nó, thủ tục thì không bắt buộc.
D. Hàm chỉ xử lý kiểu dữ liệu số, thủ tục xử lý mọi kiểu dữ liệu.
20. Đâu là cách khai báo một thủ tục (procedure) trong Pascal?
A. Function ten_thu_tuc: kieu_du_lieu;
B. Procedure ten_thu_tuc;
C. Sub ten_thu_tuc;
D. Def ten_thu_tuc;
21. Trong Pascal, để so sánh hai giá trị có bằng nhau hay không, ta sử dụng toán tử nào?
22. Đâu là tên của một kiểu dữ liệu số nguyên có dấu trong Pascal, thường lưu trữ giá trị từ -2,147,483,648 đến 2,147,483,647?
A. Byte
B. ShortInt
C. LongInt
D. Word
23. Trong Pascal, để khai báo một hằng số có giá trị là 3.14159 với tên ‘PI’, ta sử dụng cú pháp nào?
A. var PI = 3.14159;
B. const PI = 3.14159;
C. define PI = 3.14159;
D. constant PI = 3.14159;
24. Đâu là cách khai báo một mảng một chiều trong Pascal để lưu trữ 100 số nguyên?
A. var mang: array [1..100] of integer;
B. var mang: array of integer[100];
C. var mang: integer[100];
D. var mang: array (1..100) of integer;
25. Trong Pascal, toán tử ‘+’ được sử dụng cho mục đích gì với kiểu dữ liệu chuỗi?
A. Phép nhân chuỗi.
B. Phép nối chuỗi.
C. Phép so sánh chuỗi.
D. Phép chia chuỗi.
26. Trong lập trình Pascal, thuật toán tìm kiếm tuần tự (linear search) hoạt động dựa trên nguyên tắc nào?
A. Chia đôi danh sách và so sánh với phần tử giữa.
B. So sánh lần lượt từng phần tử của danh sách với giá trị cần tìm.
C. Sử dụng cấu trúc cây để tìm kiếm.
D. Dựa vào thứ tự sắp xếp của danh sách.
27. Nếu bạn có một chuỗi ‘Pascal’ và muốn lấy ký tự thứ 3, bạn sẽ truy cập như thế nào trong một ngôn ngữ lập trình giống Pascal?
A. chuoi[3]
B. chuoi(3)
C. chuoi.charAt(3)
D. chuoi.substring(3, 4)
28. Đâu là cách khai báo một biến kiểu ký tự trong Pascal?
A. var bien: string;
B. var bien: char;
C. var bien: character;
D. var bien: text;
29. Câu lệnh ‘writeln(‘Xin chào’, ‘ thế giới!’);’ trong Pascal sẽ hiển thị kết quả nào?
A. Xin chào thế giới!
B. Xin chào thế giới!
C. Xin chào thế giới!
D. Xin chào, thế giới!
30. Trong Pascal, khai báo ‘type ngay = record … end;’ dùng để làm gì?
A. Khai báo một mảng.
B. Khai báo một tập hợp.
C. Khai báo một bản ghi (record).
D. Khai báo một con trỏ.
31. Trong lập trình, khi nào thì sử dụng vòng lặp WHILE…DO là lựa chọn hợp lý hơn FOR…DO?
A. Khi số lần lặp là cố định và đã biết trước.
B. Khi số lần lặp phụ thuộc vào một điều kiện có thể thay đổi trong quá trình thực thi.
C. Khi chỉ cần thực hiện hành động một lần duy nhất.
D. Khi cần duyệt qua tất cả các phần tử của một mảng có kích thước cố định.
32. Khi phân tích một bài toán yêu cầu thực hiện hành động A cho đến khi điều kiện B không còn đúng, cấu trúc lặp nào là lựa chọn tốt nhất?
A. FOR…DO
B. WHILE…DO
C. REPEAT…UNTIL
D. IF…THEN
33. Khi thiết kế thuật toán, việc lựa chọn cấu trúc lặp nào (FOR, WHILE, REPEAT) phụ thuộc chủ yếu vào yếu tố nào?
A. Tốc độ xử lý của máy tính.
B. Số lượng biến cần khai báo.
C. Số lần lặp đã biết trước hay chưa biết trước.
D. Độ dài của chương trình.
34. Khi sử dụng vòng lặp lồng nhau (nested loops) trong Pascal, phát biểu nào sau đây là đúng?
A. Vòng lặp bên trong sẽ thực thi toàn bộ trước khi vòng lặp bên ngoài chuyển sang lần lặp tiếp theo.
B. Vòng lặp bên ngoài sẽ thực thi toàn bộ trước khi vòng lặp bên trong chuyển sang lần lặp tiếp theo.
C. Cả hai vòng lặp thực thi song song, mỗi lần lặp của vòng ngoài tương ứng với một lần lặp của vòng trong.
D. Vòng lặp bên trong chỉ thực thi một lần cho mỗi lần lặp của vòng lặp bên ngoài.
35. Trong bối cảnh lập trình, ‘vòng lặp vô hạn’ thường là một lỗi cần tránh. Đâu là nguyên nhân phổ biến nhất gây ra vòng lặp vô hạn?
A. Sử dụng sai cú pháp của câu lệnh lặp.
B. Điều kiện thoát lặp không bao giờ được thỏa mãn do logic sai trong việc cập nhật biến điều kiện.
C. Số lần lặp vượt quá giới hạn bộ nhớ của máy tính.
D. Biến đếm bị khai báo sai kiểu dữ liệu.
36. Phát biểu nào sau đây mô tả đúng bản chất của vòng lặp?
A. Vòng lặp là một chuỗi các câu lệnh được thực thi duy nhất một lần.
B. Vòng lặp cho phép thực hiện lặp đi lặp lại một hoặc một nhóm các câu lệnh.
C. Vòng lặp chỉ được sử dụng để duyệt qua các phần tử của mảng.
D. Vòng lặp là một kiểu dữ liệu đặc biệt trong lập trình.
37. Phát biểu nào sau đây mô tả đúng về sự khác biệt giữa vòng lặp lồng nhau và vòng lặp tuần tự?
A. Vòng lặp lồng nhau thực thi các lệnh cùng lúc, vòng lặp tuần tự thực thi lần lượt.
B. Vòng lặp lồng nhau có một vòng lặp nằm bên trong vòng lặp khác, vòng lặp tuần tự các lệnh được thực thi nối tiếp nhau.
C. Vòng lặp lồng nhau chỉ dùng cho mảng, vòng lặp tuần tự dùng cho số.
D. Vòng lặp lồng nhau luôn nhanh hơn vòng lặp tuần tự.
38. Xét chương trình Pascal sau:
VAR
x, y: Integer;
BEGIN
x := 1;
y := 0;
WHILE x <= 5 DO
BEGIN
y := y + x;
x := x + 1;
END;
WRITELN(y);
END.
Giá trị của y sau khi chương trình kết thúc là bao nhiêu?
39. Phát biểu nào sau đây mô tả đúng về cách thức hoạt động của vòng lặp REPEAT…UNTIL?
A. Kiểm tra điều kiện trước, nếu sai thì thực thi khối lệnh.
B. Thực thi khối lệnh, sau đó kiểm tra điều kiện, lặp lại nếu điều kiện đúng.
C. Thực thi khối lệnh, sau đó kiểm tra điều kiện, lặp lại nếu điều kiện sai.
D. Kiểm tra điều kiện trước, nếu đúng thì thực thi khối lệnh.
40. Trong thuật toán tìm kiếm tuyến tính, cấu trúc lặp nào thường được sử dụng?
A. FOR…DO
B. WHILE…DO hoặc REPEAT…UNTIL
C. CASE…OF
D. IF…THEN…ELSE
41. Phát biểu nào sau đây mô tả đúng cách sử dụng vòng lặp FOR…DO để duyệt qua các phần tử của một mảng có chỉ số từ 1 đến N?
A. FOR index := N DOWNTO 1 DO …
B. FOR index := 1 TO N DO …
C. FOR index := N TO 1 DO …
D. FOR index := 1 DOWNTO N DO …
42. Trong thuật toán sắp xếp nổi bọt (bubble sort), cấu trúc lặp nào thường được sử dụng để duyệt qua danh sách và thực hiện các phép đổi chỗ?
A. Chỉ FOR…DO
B. Chỉ WHILE…DO
C. Cả FOR…DO và WHILE…DO (hoặc REPEAT…UNTIL) đều có thể được sử dụng.
D. Không sử dụng cấu trúc lặp nào.
43. Xét chương trình Pascal sau:
VAR
i, count: Integer;
BEGIN
count := 0;
FOR i := 1 TO 10 DO
IF i MOD 3 = 0 THEN
count := count + 1;
WRITELN(count);
END.
Giá trị của count sau khi chương trình kết thúc là bao nhiêu?
44. Phát biểu nào sau đây mô tả đúng về việc sử dụng vòng lặp để tính giai thừa của một số N (N!)?
A. Sử dụng vòng lặp FOR từ 1 đến N, nhân dần kết quả.
B. Sử dụng vòng lặp WHILE từ N về 1, nhân dần kết quả.
C. Sử dụng vòng lặp REPEAT từ 1 đến N, nhân dần kết quả.
D. Cả A, B và C đều có thể đúng tùy thuộc cách triển khai.
45. Phát biểu nào sau đây mô tả chính xác nhất sự khác biệt giữa vòng lặp WHILE…DO và REPEAT…UNTIL trong Pascal về mặt thực thi điều kiện?
A. Cả WHILE…DO và REPEAT…UNTIL đều kiểm tra điều kiện trước khi thực thi khối lệnh.
B. WHILE…DO kiểm tra điều kiện trước, REPEAT…UNTIL kiểm tra điều kiện sau khi thực thi khối lệnh ít nhất một lần.
C. WHILE…DO kiểm tra điều kiện sau khi thực thi khối lệnh, REPEAT…UNTIL kiểm tra điều kiện trước.
D. Cả WHILE…DO và REPEAT…UNTIL đều thực thi khối lệnh ít nhất một lần trước khi kiểm tra điều kiện.
46. Xét đoạn chương trình Pascal sau:
VAR
i, S: Integer;
BEGIN
S := 0;
FOR i := 1 TO 5 DO
S := S + i;
WRITELN(S);
END.
Giá trị của S sau khi chương trình kết thúc là bao nhiêu?
47. Phát biểu nào sau đây về câu lệnh ‘continue’ (nếu có trong ngôn ngữ lập trình bạn đang xét) là chính xác?
A. Từ khóa ‘continue’ dùng để kết thúc vòng lặp ngay lập tức.
B. Từ khóa ‘continue’ dùng để bỏ qua phần còn lại của lần lặp hiện tại và chuyển sang lần lặp tiếp theo.
C. Từ khóa ‘continue’ dùng để khởi tạo lại biến đếm của vòng lặp.
D. Từ khóa ‘continue’ chỉ có thể sử dụng trong vòng lặp FOR…DO.
48. Phát biểu nào sau đây mô tả đúng chức năng của từ khóa ‘break’ (nếu có trong ngôn ngữ lập trình bạn đang xét, ví dụ C++, Java) trong một vòng lặp?
A. Từ khóa ‘break’ dùng để kết thúc toàn bộ chương trình.
B. Từ khóa ‘break’ dùng để tạm dừng vòng lặp và tiếp tục thực thi các câu lệnh sau vòng lặp.
C. Từ khóa ‘break’ dùng để bỏ qua lần lặp hiện tại và chuyển sang lần lặp tiếp theo.
D. Từ khóa ‘break’ dùng để tăng giá trị biến đếm của vòng lặp.
49. Phát biểu nào sau đây mô tả đúng về vòng lặp lồng nhau và hiệu suất chương trình?
A. Vòng lặp lồng nhau luôn làm giảm hiệu suất chương trình.
B. Việc sử dụng vòng lặp lồng nhau có thể làm tăng đáng kể số lượng phép toán, ảnh hưởng đến hiệu suất nếu không được tối ưu.
C. Hiệu suất của vòng lặp lồng nhau không phụ thuộc vào số lần lặp.
D. Vòng lặp lồng nhau nhanh hơn vòng lặp đơn vì thực hiện nhiều lệnh cùng lúc.
50. Phát biểu nào sau đây mô tả đúng về việc sử dụng ‘continue’ trong vòng lặp REPEAT…UNTIL?
A. Lệnh ‘continue’ sẽ thoát ngay lập tức khỏi vòng lặp REPEAT…UNTIL.
B. Lệnh ‘continue’ sẽ bỏ qua phần còn lại của lần lặp hiện tại và thực hiện kiểm tra điều kiện UNTIL.
C. Lệnh ‘continue’ không có tác dụng trong vòng lặp REPEAT…UNTIL.
D. Lệnh ‘continue’ sẽ làm cho vòng lặp REPEAT…UNTIL thực hiện lại từ đầu.
51. Phát biểu nào sau đây mô tả đúng về việc sử dụng vòng lặp WHILE…DO để tính tổng các số từ 1 đến N, trong đó N là một số nguyên dương nhập từ bàn phím?
A. Sử dụng WHILE i <= N DO S := S + i; i := i + 1; (với i=1, S=0 ban đầu).
B. Sử dụng WHILE i < N DO S := S + i; i := i + 1; (với i=1, S=0 ban đầu).
C. Sử dụng WHILE i >= 1 DO S := S + i; i := i – 1; (với i=N, S=0 ban đầu).
D. Chỉ có cách A là đúng.
52. Trong Pascal, khi nào thì vòng lặp WHILE…DO có thể trở thành vòng lặp vô hạn?
A. Khi biến điều kiện của vòng lặp không bao giờ được cập nhật để thỏa mãn điều kiện dừng.
B. Khi điều kiện của vòng lặp luôn là TRUE.
C. Khi vòng lặp được lồng bên trong một vòng lặp khác.
D. Chỉ khi sử dụng sai từ khóa WHILE.
53. Phát biểu nào sau đây mô tả đúng về việc sử dụng vòng lặp FOR…DO để tính tổng các số chẵn từ 2 đến 10?
A. FOR i := 2 TO 10 DO IF i MOD 2 = 0 THEN S := S + i;
B. FOR i := 1 TO 5 DO S := S + 2*i;
C. FOR i := 2 TO 10 STEP 2 DO S := S + i;
D. Cả A, B và C đều đúng.
54. Khi nào thì việc sử dụng vòng lặp REPEAT…UNTIL là tối ưu hơn WHILE…DO?
A. Khi cần đảm bảo khối lệnh được thực thi ít nhất một lần.
B. Khi số lần lặp đã được biết trước.
C. Khi điều kiện dừng lặp phức tạp.
D. Khi không cần sử dụng biến đếm.
55. Trong ngôn ngữ lập trình Pascal, phát biểu nào sau đây mô tả đúng vai trò của câu lệnh FOR…DO khi lặp với số lần chưa biết trước?
A. Câu lệnh FOR…DO phù hợp khi số lần lặp đã biết trước và có thể được sử dụng để lặp qua một dãy giá trị cụ thể.
B. Câu lệnh FOR…DO chỉ có thể sử dụng để lặp với số lần chưa biết trước bằng cách kết hợp với biến đếm.
C. Câu lệnh FOR…DO chỉ dùng cho các vòng lặp có điều kiện dừng rõ ràng, không phù hợp với số lần lặp chưa biết trước.
D. Câu lệnh FOR…DO được thiết kế để lặp với số lần lặp đã biết trước, các vòng lặp với số lần chưa biết trước thường dùng WHILE…DO hoặc REPEAT…UNTIL.
56. Phát biểu nào sau đây mô tả đúng mối quan hệ giữa số lần lặp và cấu trúc lặp FOR…DO?
A. FOR…DO chỉ sử dụng khi số lần lặp là vô hạn.
B. FOR…DO phù hợp nhất khi số lần lặp đã được xác định trước.
C. FOR…DO luôn có số lần lặp cố định là 10.
D. FOR…DO có thể xác định số lần lặp trong quá trình chạy.
57. Khi nào thì việc sử dụng vòng lặp REPEAT…UNTIL có thể gặp vấn đề về logic nếu không cẩn thận?
A. Khi điều kiện dừng lặp luôn là TRUE ngay từ đầu.
B. Khi điều kiện dừng lặp luôn là FALSE.
C. Khi điều kiện dừng lặp được đặt sai, dẫn đến việc lặp vô hạn hoặc không lặp lần nào.
D. Khi sử dụng biến đếm không chính xác.
58. Trong Pascal, để thực hiện một công việc lặp lại cho đến khi một điều kiện cụ thể không còn đúng nữa, cấu trúc lặp nào là phù hợp nhất?
A. FOR…DO
B. WHILE…DO
C. REPEAT…UNTIL
D. CASE…OF
59. Phát biểu nào sau đây về câu lệnh lặp vô hạn là chính xác nhất?
A. Câu lệnh lặp vô hạn xảy ra khi điều kiện dừng lặp không bao giờ được thỏa mãn.
B. Câu lệnh lặp vô hạn là một lỗi lập trình cố ý để chương trình chạy mãi mãi.
C. Câu lệnh lặp vô hạn chỉ xảy ra với vòng lặp FOR…DO khi biên độ tăng/giảm sai.
D. Câu lệnh lặp vô hạn là khi số lần lặp vượt quá giới hạn của kiểu dữ liệu.
60. Phát biểu nào sau đây mô tả đúng về việc sử dụng ‘break’ trong vòng lặp WHILE…DO?
A. Lệnh ‘break’ sẽ làm cho vòng lặp WHILE…DO chạy tiếp với số lần lặp đã xác định trước.
B. Lệnh ‘break’ sẽ thoát ngay lập tức khỏi vòng lặp WHILE…DO, bất kể điều kiện lặp còn đúng hay không.
C. Lệnh ‘break’ chỉ có tác dụng nếu điều kiện của vòng lặp WHILE…DO sai.
D. Lệnh ‘break’ sẽ tạm dừng vòng lặp và tiếp tục từ đầu vòng lặp sau.
61. Phát biểu nào sau đây mô tả đúng về thuật toán sắp xếp chọn (Selection Sort)?
A. Nó lặp đi lặp lại việc tìm phần tử lớn nhất và hoán đổi nó với phần tử cuối cùng chưa được sắp xếp.
B. Nó chia mảng thành hai nửa, sắp xếp đệ quy từng nửa và trộn chúng lại.
C. Nó lặp đi lặp lại việc tìm phần tử nhỏ nhất trong phần chưa sắp xếp và đặt nó vào đầu phần đó.
D. Nó so sánh và hoán đổi các cặp phần tử liền kề nếu chúng sai thứ tự.
62. Phát biểu nào sau đây KHÔNG phải là đặc điểm của cấu trúc dữ liệu cây (Tree)?
A. Có một nút gốc duy nhất.
B. Mỗi nút (trừ nút gốc) có một nút cha duy nhất.
C. Không chứa chu trình.
D. Có thể có nhiều hơn một nút gốc.
63. Trong cấu trúc dữ liệu hàng đợi (Queue), thao tác nào được sử dụng để lấy và loại bỏ phần tử ở đầu hàng đợi?
A. Enqueue
B. Push
C. Pop
D. Dequeue
64. Trong cấu trúc dữ liệu hàng đợi (Queue), thao tác nào được sử dụng để thêm một phần tử vào cuối hàng đợi?
A. Dequeue
B. Push
C. Enqueue
D. Pop
65. Khi sử dụng đệ quy để duyệt cây, điều gì xảy ra nếu không có trường hợp cơ sở (base case) đúng?
A. Chương trình sẽ hoàn thành nhanh chóng.
B. Chương trình sẽ bị lỗi tràn bộ nhớ (stack overflow) do gọi hàm vô hạn.
C. Chương trình sẽ duyệt cây theo thứ tự tăng dần.
D. Chương trình sẽ chỉ duyệt cây theo chiều sâu.
66. Cấu trúc dữ liệu nào sau đây phù hợp nhất để biểu diễn mối quan hệ giữa các thành phố trên bản đồ, nơi có thể có nhiều tuyến đường giữa hai thành phố?
A. Cây nhị phân tìm kiếm.
B. Ngăn xếp.
C. Đồ thị (Graph).
D. Hàng đợi.
67. Khi duyệt cây theo thứ tự hậu tố (Post-order traversal), trình tự các thao tác trên một nút là gì?
A. Xử lý nút gốc, thăm nút con trái, thăm nút con phải.
B. Thăm nút con trái, xử lý nút gốc, thăm nút con phải.
C. Thăm nút con trái, thăm nút con phải, xử lý nút gốc.
D. Thăm nút con phải, xử lý nút gốc, thăm nút con trái.
68. Cây nhị phân cân bằng (Balanced Binary Tree) có ưu điểm chính là gì so với cây nhị phân tìm kiếm thông thường?
A. Tăng tốc độ duyệt cây theo chiều sâu (DFS).
B. Giảm thiểu khả năng cây bị suy biến thành danh sách liên kết, đảm bảo hiệu suất tìm kiếm, chèn, xóa gần O(log n).
C. Cho phép lưu trữ nhiều giá trị trùng lặp hơn.
D. Tăng dung lượng lưu trữ tối đa của cây.
69. Khi sử dụng đệ quy để tính giai thừa của một số n (n!), trường hợp cơ sở (base case) nào là quan trọng nhất?
A. n = 0
B. n = 1
C. n > 1
D. n < 0
70. Độ phức tạp thời gian của thuật toán tìm kiếm tuyến tính (Linear Search) trên một mảng không sắp xếp là bao nhiêu trong trường hợp xấu nhất?
A. O(log n)
B. O(1)
C. O(n)
D. O(n log n)
71. Phát biểu nào sau đây là ĐÚNG về cây nhị phân tìm kiếm (BST)?
A. Tất cả các nút bên trái của nút gốc có thể có giá trị lớn hơn hoặc nhỏ hơn nút gốc.
B. Thao tác xóa một nút có hai con có thể phức tạp hơn thao tác chèn hoặc tìm kiếm.
C. Cây nhị phân tìm kiếm luôn đảm bảo hiệu suất O(log n) cho mọi thao tác.
D. Mỗi nút chỉ có tối đa một con.
72. Phát biểu nào sau đây mô tả đúng về cấu trúc dữ liệu đồ thị (Graph) và các thuật toán liên quan?
A. Thuật toán DFS (Depth-First Search) luôn tìm đường đi ngắn nhất trong đồ thị không có trọng số.
B. Thuật toán BFS (Breadth-First Search) luôn tìm đường đi ngắn nhất trong đồ thị không có trọng số.
C. Dijkstra’s algorithm chỉ hoạt động trên đồ thị có trọng số dương.
D. Đồ thị luôn có ít nhất một chu trình.
73. Trong thuật toán sắp xếp nhanh (Quick Sort), chiến lược chính để chia mảng thành các phần nhỏ hơn là gì?
A. Chọn phần tử đầu tiên làm chốt và chia mảng thành hai phần: nhỏ hơn chốt và lớn hơn chốt.
B. Chọn phần tử ở giữa làm chốt và chia mảng thành hai phần: nhỏ hơn chốt và lớn hơn chốt.
C. Chọn một phần tử làm chốt (pivot) và phân hoạch mảng sao cho tất cả các phần tử nhỏ hơn hoặc bằng chốt đứng trước chốt, và tất cả các phần tử lớn hơn chốt đứng sau chốt.
D. Chia mảng thành hai nửa bằng nhau và sắp xếp đệ quy từng nửa.
74. Trong cấu trúc dữ liệu danh sách liên kết đơn (Singly Linked List), thao tác thêm một nút vào đầu danh sách có độ phức tạp thời gian là bao nhiêu?
A. O(n)
B. O(log n)
C. O(1)
D. O(n^2)
75. Trong thuật toán sắp xếp trộn (Merge Sort), bước quan trọng nhất để kết hợp hai mảng con đã sắp xếp là:
A. So sánh phần tử đầu tiên của hai mảng con và chèn phần tử nhỏ hơn vào mảng kết quả.
B. Chèn toàn bộ mảng con thứ nhất vào mảng con thứ hai.
C. Tìm phần tử lớn nhất trong cả hai mảng con và đặt nó vào cuối mảng kết quả.
D. Sắp xếp lại toàn bộ mảng sau khi đã gộp hai mảng con.
76. Phát biểu nào sau đây mô tả đúng nhất hành vi của thuật toán tìm kiếm nhị phân trên một mảng đã sắp xếp?
A. Luôn bắt đầu tìm kiếm từ phần tử đầu tiên của mảng.
B. So sánh phần tử cần tìm với phần tử ở giữa mảng, sau đó loại bỏ một nửa mảng không chứa phần tử cần tìm và tiếp tục tìm kiếm trên nửa còn lại.
C. Duyệt tuần tự từng phần tử cho đến khi tìm thấy phần tử cần tìm.
D. So sánh phần tử cần tìm với phần tử cuối cùng của mảng, sau đó loại bỏ nửa mảng không chứa phần tử cần tìm.
77. Khi biểu diễn cây nhị phân bằng mảng, nếu một nút có chỉ số `i` trong mảng, thì chỉ số của nút con bên trái của nó thường là bao nhiêu?
A. 2*i
B. 2*i + 1
C. i – 1
D. i + 1
78. Khi duyệt cây theo thứ tự trung tố (In-order traversal), trình tự các thao tác trên một nút là gì?
A. Xử lý nút gốc, thăm nút con trái, thăm nút con phải.
B. Thăm nút con trái, xử lý nút gốc, thăm nút con phải.
C. Thăm nút con trái, thăm nút con phải, xử lý nút gốc.
D. Xử lý nút gốc, thăm nút con phải, thăm nút con trái.
79. Trong cấu trúc dữ liệu danh sách liên kết kép (Doubly Linked List), việc xóa một nút bất kỳ (không phải nút đầu hoặc cuối) yêu cầu cập nhật bao nhiêu con trỏ?
A. 1 con trỏ.
B. 2 con trỏ.
C. 3 con trỏ.
D. 4 con trỏ.
80. Trong cấu trúc dữ liệu ngăn xếp (Stack), thao tác nào chỉ đơn thuần trả về giá trị của phần tử ở đỉnh ngăn xếp mà không loại bỏ nó?
A. Pop
B. Push
C. Peek
D. Dequeue
81. Khi duyệt cây theo thứ tự tiền tố (Pre-order traversal), trình tự các thao tác trên một nút là gì?
A. Thăm nút con trái, thăm nút con phải, xử lý nút gốc.
B. Xử lý nút gốc, thăm nút con trái, thăm nút con phải.
C. Thăm nút con trái, xử lý nút gốc, thăm nút con phải.
D. Thăm nút con phải, xử lý nút gốc, thăm nút con trái.
82. Khi thực hiện thao tác chèn một khóa mới vào cây nhị phân tìm kiếm đã tồn tại, vị trí thích hợp để đặt khóa mới là:
A. Luôn là lá cuối cùng được duyệt theo thứ tự tăng dần.
B. Tại vị trí nút lá mà tại đó, việc so sánh khóa mới với giá trị của nút đó không còn tiếp tục được nữa.
C. Luôn là nút gốc của cây.
D. Tại vị trí nút có giá trị lớn nhất trong cây.
83. Trong cấu trúc dữ liệu cây nhị phân tìm kiếm (Binary Search Tree – BST), phát biểu nào sau đây là ĐÚNG về mối quan hệ giữa nút cha và các nút con?
A. Giá trị của nút con bên trái luôn nhỏ hơn giá trị của nút cha, và giá trị của nút con bên phải luôn lớn hơn giá trị của nút cha.
B. Giá trị của nút con bên trái luôn lớn hơn giá trị của nút cha, và giá trị của nút con bên phải luôn nhỏ hơn giá trị của nút cha.
C. Không có quy tắc cố định về giá trị giữa nút cha và nút con trong cây nhị phân tìm kiếm.
D. Giá trị của nút con bên trái có thể lớn hơn hoặc nhỏ hơn nút cha, tương tự với nút con bên phải.
84. Phát biểu nào sau đây mô tả đúng về cách thức hoạt động của đệ quy?
A. Đệ quy chỉ sử dụng vòng lặp để thực hiện các phép tính.
B. Đệ quy giải quyết một vấn đề bằng cách chia nó thành các bài toán con giống hệt nhưng có kích thước nhỏ hơn, cho đến khi đạt đến trường hợp cơ sở.
C. Đệ quy luôn yêu cầu một cấu trúc dữ liệu đặc biệt để hoạt động.
D. Đệ quy không bao giờ sử dụng trường hợp cơ sở để dừng lại.
85. Trong cấu trúc dữ liệu ngăn xếp (Stack), thao tác nào được sử dụng để lấy và loại bỏ phần tử ở đỉnh ngăn xếp?
A. Push
B. Peek
C. Enqueue
D. Pop
86. Phát biểu nào sau đây mô tả đúng về cây nhị phân tìm kiếm (BST) khi chèn các phần tử theo thứ tự giảm dần liên tục?
A. Cây sẽ có chiều cao là 0.
B. Cây sẽ cân bằng hoàn hảo.
C. Cây sẽ trở thành một danh sách liên kết có thứ tự giảm dần, với mỗi nút mới được thêm vào bên trái.
D. Cây sẽ trở thành một danh sách liên kết có thứ tự giảm dần, với mỗi nút mới được thêm vào bên phải.
87. Phát biểu nào sau đây mô tả đúng về cây nhị phân tìm kiếm (BST) khi chèn các phần tử theo thứ tự tăng dần liên tục?
A. Cây sẽ cân bằng hoàn hảo.
B. Cây sẽ trở thành một danh sách liên kết có thứ tự tăng dần, với mỗi nút mới được thêm vào bên phải.
C. Cây sẽ trở thành một danh sách liên kết có thứ tự tăng dần, với mỗi nút mới được thêm vào bên trái.
D. Cây sẽ có chiều cao là 0.
88. Độ phức tạp thời gian của thao tác tìm kiếm trong cây nhị phân tìm kiếm (BST) cân bằng là bao nhiêu trong trường hợp xấu nhất?
A. O(n)
B. O(log n)
C. O(1)
D. O(n log n)
89. Phát biểu nào sau đây KHÔNG ĐÚNG về cấu trúc dữ liệu đệ quy?
A. Một hàm đệ quy luôn có một trường hợp cơ sở (base case) để dừng lại.
B. Các vấn đề có thể giải quyết bằng đệ quy thường có tính chất tự đồng dạng (self-similarity).
C. Đệ quy luôn hiệu quả hơn vòng lặp về mặt tốc độ thực thi.
D. Đệ quy có thể dẫn đến tràn bộ nhớ (stack overflow) nếu trường hợp cơ sở không được định nghĩa đúng hoặc quá sâu.
90. Trong thuật toán sắp xếp nổi bọt (Bubble Sort), bước nào được thực hiện để đưa phần tử lớn nhất về cuối mảng trong một lượt duyệt?
A. So sánh và hoán đổi các cặp phần tử liền kề nếu phần tử đứng trước lớn hơn phần tử đứng sau.
B. Chèn phần tử hiện tại vào vị trí đúng trong phần đã sắp xếp.
C. Chọn một phần tử làm chốt (pivot) và chia mảng thành hai phần.
D. Tìm phần tử nhỏ nhất trong mảng và đặt nó ở đầu.
91. Khái niệm ‘mảng’ (array) trong lập trình dùng để làm gì?
A. Lưu trữ một chuỗi ký tự duy nhất.
B. 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 thông qua chỉ số (index).
C. Định nghĩa một biến có thể mang nhiều giá trị khác nhau tại cùng một thời điểm.
D. Thực hiện các phép toán số học phức tạp.
92. Phát biểu nào sau đây mô tả đúng chức năng của ‘vòng lặp’ (loop) trong lập trình?
A. Đảm bảo chương trình chỉ chạy một lần duy nhất.
B. Cho phép thực hiện lặp đi lặp lại một hoặc nhiều câu lệnh cho đến khi một điều kiện nhất định được thỏa mãn hoặc không thỏa mãn.
C. Liên kết các biến với nhau để tạo thành một cấu trúc dữ liệu phức tạp.
D. Kiểm tra lỗi cú pháp trong mã nguồn.
93. Tại sao việc đặt tên biến một cách có ý nghĩa lại quan trọng trong lập trình?
A. Để chương trình chạy nhanh hơn do trình biên dịch hiểu ý nghĩa tên biến.
B. Để dễ dàng đọc, hiểu và bảo trì mã nguồn bởi chính lập trình viên và người khác.
C. Để đảm bảo chương trình không bị lỗi cú pháp khi biên dịch.
D. Để chương trình có thể tự động sửa lỗi mà không cần can thiệp.
94. Phát biểu nào sau đây mô tả đúng về ‘ngôn ngữ lập trình’ (programming language)?
A. Một công cụ dùng để thiết kế giao diện đồ họa.
B. Một tập hợp các quy tắc và ký hiệu được sử dụng để viết các chỉ thị cho máy tính.
C. Một hệ điều hành để quản lý phần cứng.
D. Một loại thuật toán duy nhất.
95. Khái niệm ‘cấu trúc dữ liệu’ (data structure) trong lập trình đề cập đến điều gì?
A. Tốc độ xử lý của chương trình.
B. Cách tổ chức, quản lý và lưu trữ dữ liệu để truy cập và sửa đổi hiệu quả.
C. Ngôn ngữ lập trình được sử dụng.
D. Giao diện người dùng của ứng dụng.
96. Phát biểu nào sau đây mô tả đúng về ‘ngôn ngữ máy’ (machine language)?
A. Là ngôn ngữ dễ đọc và viết nhất đối với con người.
B. Là tập hợp các chỉ thị được biểu diễn dưới dạng nhị phân (0 và 1) mà bộ xử lý trung tâm (CPU) có thể hiểu trực tiếp.
C. Là ngôn ngữ được sử dụng phổ biến để phát triển ứng dụng web.
D. Là ngôn ngữ trung gian giữa ngôn ngữ tự nhiên và ngôn ngữ lập trình.
97. Phát biểu nào sau đây mô tả đúng vai trò của ‘toán tử’ (operator) trong lập trình?
A. Đại diện cho các giá trị cố định trong chương trình.
B. Xác định cấu trúc của các câu lệnh điều kiện và vòng lặp.
C. Thực hiện các phép toán hoặc hành động trên các toán hạng (operands).
D. Dùng để khai báo kiểu dữ liệu cho biến.
98. Phát biểu nào sau đây mô tả đúng vai trò của ‘bao đóng’ (encapsulation) trong lập trình hướng đối tượng?
A. Cho phép truy cập trực tiếp vào mọi thuộc tính của đối tượng từ bên ngoài.
B. Đóng gói dữ liệu (thuộc tính) và các phương thức thao tác trên dữ liệu đó vào trong một đơn vị duy nhất (lớp), đồng thời kiểm soát việc truy cập dữ liệu từ bên ngoài.
C. Tạo ra nhiều bản sao của cùng một đối tượng.
D. Liên kết các đối tượng với nhau thông qua các tham chiếu.
99. Khi lập trình, ‘bình luận’ (comment) trong mã nguồn có tác dụng gì?
A. Để chương trình chạy nhanh hơn.
B. Để giải thích hoặc ghi chú cho mã nguồn, giúp người đọc hiểu ý đồ của lập trình viên mà không ảnh hưởng đến quá trình thực thi của chương trình.
C. Để định nghĩa các biến mới.
D. Để đảm bảo tính bảo mật của chương trình.
100. Sự khác biệt cơ bản giữa ngôn ngữ lập trình bậc cao và ngôn ngữ lập trình bậc thấp là gì?
A. Ngôn ngữ bậc cao dễ hiểu và gần với ngôn ngữ tự nhiên hơn, còn ngôn ngữ bậc thấp gần với ngôn ngữ máy.
B. Ngôn ngữ bậc thấp không cần trình biên dịch, còn ngôn ngữ bậc cao thì cần.
C. Ngôn ngữ bậc cao chỉ dùng cho ứng dụng di động, ngôn ngữ bậc thấp dùng cho máy tính để bàn.
D. Ngôn ngữ bậc thấp có nhiều từ khóa hơn ngôn ngữ bậc cao.
101. Khái niệm ‘trình biên dịch’ (compiler) có vai trò gì trong quá trình phát triển phần mềm?
A. Thiết kế giao diện người dùng cho ứng dụng.
B. Dịch mã nguồn viết bằng ngôn ngữ lập trình bậc cao thành mã máy hoặc mã trung gian mà máy tính có thể hiểu và thực thi.
C. Gỡ lỗi và tìm sai sót trong mã nguồn.
D. Quản lý dữ liệu trong cơ sở dữ liệu.
102. Trong lập trình, ‘debug’ (gỡ lỗi) là quá trình gì?
A. Viết mã nguồn mới.
B. Tìm kiếm, xác định và sửa các lỗi (bugs) trong mã nguồn của chương trình.
C. Thiết kế giao diện người dùng.
D. Tối ưu hóa hiệu suất của chương trình.
103. Tại sao chỉ số (index) của mảng trong hầu hết các ngôn ngữ lập trình thường bắt đầu từ 0?
A. Để làm cho việc lập trình trở nên khó khăn hơn.
B. Để phù hợp với cách biểu diễn địa chỉ bộ nhớ và các phép tính toán học liên quan đến truy cập phần tử.
C. Vì số 0 là số may mắn trong nhiều nền văn hóa.
D. Để phân biệt rõ ràng giữa mảng và các cấu trúc dữ liệu khác.
104. Phát biểu nào sau đây mô tả đúng về ‘môi trường phát triển tích hợp’ (Integrated Development Environment – IDE)?
A. Một loại thuật toán duy nhất.
B. Một phần mềm cung cấp các công cụ hỗ trợ cho việc lập trình như trình soạn thảo mã, trình biên dịch/thông dịch, trình gỡ lỗi và các công cụ quản lý dự án.
C. Một công cụ để phân tích dữ liệu lớn.
D. Một hệ điều hành chuyên dụng.
105. Tại sao hiệu quả của thuật toán (algorithm efficiency) lại quan trọng trong phát triển phần mềm?
A. Để làm cho mã nguồn trông phức tạp hơn.
B. Để đảm bảo chương trình chạy nhanh, sử dụng ít tài nguyên hệ thống (bộ nhớ, CPU) khi xử lý dữ liệu lớn.
C. Để chương trình chỉ có thể chạy trên một loại máy tính cụ thể.
D. Để mã nguồn dễ bị tấn công bởi hacker.
106. Phát biểu nào sau đây mô tả đúng về ‘thuật toán’ (algorithm)?
A. Một chương trình máy tính hoàn chỉnh.
B. Một tập hợp các bước hữu hạn, rõ ràng và có thứ tự để giải quyết một vấn đề hoặc thực hiện một nhiệm vụ.
C. Một ngôn ngữ lập trình được sử dụng để viết mã.
D. Giao diện đồ họa của một ứng dụng.
107. Trong lập trình hướng đối tượng, ‘lớp’ (class) được định nghĩa là gì?
A. Một giá trị cụ thể của một thuộc tính.
B. Một bản thiết kế hoặc khuôn mẫu để tạo ra các đối tượng, định nghĩa các thuộc tính (attributes) và phương thức (methods) chung.
C. Một biến toàn cục duy nhất.
D. Một câu lệnh điều kiện.
108. Trong lập trình, ‘câu lệnh điều kiện’ (conditional statement) như ‘if-else’ dùng để làm gì?
A. Thực hiện một khối lệnh lặp đi lặp lại nhiều lần.
B. Định nghĩa một hàm mới để tái sử dụng.
C. Cho phép chương trình đưa ra quyết định và thực thi các khối mã khác nhau dựa trên một điều kiện cụ thể.
D. Lưu trữ dữ liệu vào bộ nhớ.
109. Trong lập trình, ‘hàm’ (function) hay ‘phương thức’ (method) được sử dụng chủ yếu để làm gì?
A. Lưu trữ dữ liệu cố định cho toàn bộ chương trình.
B. Tổ chức mã thành các khối có thể tái sử dụng, thực hiện một nhiệm vụ cụ thể.
C. Chỉ dùng để in kết quả ra màn hình.
D. Tạo ra các biến toàn cục.
110. Trong các ngôn ngữ lập trình, ‘hằng số’ (constant) khác với ‘biến’ (variable) ở điểm nào?
A. Hằng số chỉ có thể mang giá trị số, còn biến có thể mang mọi loại dữ liệu.
B. Hằng số được khai báo sau khi chương trình bắt đầu chạy, còn biến được khai báo trước.
C. Giá trị của hằng số không thể thay đổi sau khi được khởi tạo, trong khi giá trị của biến có thể thay đổi.
D. Hằng số chỉ dùng để lưu trữ chuỗi ký tự, biến dùng để lưu trữ số.
111. Phát biểu nào sau đây mô tả đúng nhất chức năng của ‘kiểu dữ liệu’ (data type) trong lập trình?
A. Xác định phạm vi truy cập của biến trong chương trình.
B. Quy định loại giá trị mà một biến có thể lưu trữ và các phép toán có thể thực hiện trên giá trị đó.
C. Đảm bảo tính duy nhất của các biến trong cùng một khối lệnh.
D. Liên kết một biến với một địa chỉ bộ nhớ cố định.
112. Khái niệm ‘đối tượng’ (object) trong lập trình hướng đối tượng là gì?
A. Một thuật toán được thực thi.
B. Một thể hiện cụ thể của một lớp, có trạng thái (giá trị của các thuộc tính) và hành vi (các phương thức).
C. Một hằng số được khai báo.
D. Một cấu trúc dữ liệu cơ bản.
113. Tại sao ‘trừu tượng hóa’ (abstraction) lại quan trọng trong lập trình hướng đối tượng?
A. Để làm cho chương trình phức tạp hơn.
B. Để tập trung vào các đặc điểm cốt lõi và bỏ qua các chi tiết không cần thiết, giúp giảm độ phức tạp và dễ quản lý.
C. Để đảm bảo tất cả các biến đều có thể truy cập được.
D. Để chương trình chỉ chạy trên một loại máy tính nhất định.
114. Khi một hàm trả về một giá trị (return value), điều đó có nghĩa là gì?
A. Hàm đó sẽ không thực hiện bất kỳ hành động nào khác.
B. Hàm đó sẽ in kết quả ra màn hình.
C. Hàm đó sẽ cung cấp một kết quả tính toán hoặc một giá trị cho phần mã đã gọi nó.
D. Hàm đó sẽ tự động dừng chương trình.
115. Phát biểu nào sau đây mô tả đúng về ‘thuộc tính’ (attribute) của một đối tượng trong lập trình hướng đối tượng?
A. Là hành động mà đối tượng có thể thực hiện.
B. Là đặc điểm hoặc dữ liệu mô tả trạng thái của đối tượng.
C. Là tên của lớp mà đối tượng thuộc về.
D. Là một câu lệnh điều kiện.
116. Toán tử ‘+’ trong hầu hết các ngôn ngữ lập trình có thể được sử dụng cho hai mục đích chính nào?
A. So sánh bằng và so sánh khác.
B. Phép cộng số học và phép nối chuỗi ký tự.
C. Phép nhân và phép chia số học.
D. Phép gán giá trị và phép tăng biến.
117. Trong lập trình, khái niệm ‘biến’ (variable) được sử dụng để làm gì?
A. Lưu trữ dữ liệu tạm thời trong quá trình thực thi chương trình.
B. Định nghĩa cấu trúc của một hàm hoặc phương thức.
C. Kiểm soát luồng thực thi của chương trình thông qua các câu lệnh điều kiện.
D. Xác định kiểu dữ liệu của các hằng số trong chương trình.
118. Khái niệm ‘đa hình’ (polymorphism) trong lập trình hướng đối tượng nghĩa là gì?
A. Một đối tượng chỉ có thể có một loại hành vi duy nhất.
B. Cho phép các đối tượng thuộc các lớp khác nhau phản ứng theo cách riêng của chúng đối với cùng một thông điệp (lời gọi phương thức).
C. Một lớp chỉ có thể kế thừa từ một lớp duy nhất.
D. Một biến chỉ có thể lưu trữ một kiểu dữ liệu duy nhất.
119. Nguyên tắc ‘kế thừa’ (inheritance) trong lập trình hướng đối tượng cho phép điều gì?
A. Một lớp có thể tự thay đổi thuộc tính của mình một cách ngẫu nhiên.
B. Một lớp con (child class) có thể kế thừa các thuộc tính và phương thức từ một lớp cha (parent class), giúp tái sử dụng mã và tạo mối quan hệ ‘là một loại’ (is-a).
C. Một đối tượng có thể có nhiều lớp.
D. Một hàm có thể trả về nhiều giá trị.
120. Tại sao ‘lập trình hướng đối tượng’ (Object-Oriented Programming – OOP) lại trở nên phổ biến trong phát triển phần mềm hiện đại?
A. Nó làm cho mã nguồn trở nên khó hiểu hơn, giúp bảo mật tốt hơn.
B. Nó giúp tổ chức mã nguồn một cách logic, dễ tái sử dụng, bảo trì và mở rộng thông qua các khái niệm như lớp (class), đối tượng (object), kế thừa (inheritance), đa hình (polymorphism).
C. Nó chỉ phù hợp với các ứng dụng đơn giản, không cần phức tạp.
D. Nó yêu cầu ít tài nguyên hệ thống hơn các mô hình lập trình khác.
121. Phát biểu nào sau đây mô tả đúng vai trò của ‘hàm’ (function) trong lập trình?
A. Một khối mã có tên, thực hiện một nhiệm vụ cụ thể và có thể được gọi lại nhiều lần.
B. Một biến toàn cục có thể truy cập từ bất kỳ đâu trong chương trình.
C. Một câu lệnh dùng để dừng thực thi chương trình ngay lập tức.
D. Một cấu trúc dữ liệu dùng để lưu trữ một danh sách các giá trị.
122. Phát biểu nào sau đây mô tả đúng vai trò của ‘thuật toán’ (algorithm) trong khoa học máy tính?
A. Một bộ các bước rõ ràng, hữu hạn để giải quyết một vấn đề hoặc thực hiện một nhiệm vụ.
B. Một ngôn ngữ lập trình được sử dụng để viết mã.
C. Một chương trình máy tính đã hoàn chỉnh và có thể chạy được.
D. Một thiết bị phần cứng được sử dụng để xử lý thông tin.
123. Trong lập trình, ‘biến cục bộ’ (local variable) có đặc điểm gì nổi bật?
A. Chỉ có thể truy cập và sử dụng bên trong phạm vi của hàm hoặc khối mã mà nó được khai báo.
B. Có thể truy cập và sử dụng từ bất kỳ đâu trong chương trình.
C. Giá trị của nó được giữ nguyên ngay cả sau khi chương trình kết thúc.
D. Nó luôn được khởi tạo với giá trị mặc định là 0 hoặc chuỗi rỗng.
124. Trong lập trình, khi một chương trình yêu cầu nhập dữ liệu từ người dùng, điều này thường được thực hiện thông qua các lệnh nào?
A. Các hàm hoặc phương thức nhập liệu như ‘input()’ hoặc tương tự.
B. Các lệnh xuất dữ liệu ra màn hình.
C. Các lệnh để khai báo biến.
D. Các lệnh để thực hiện phép tính toán.
125. Phát biểu nào sau đây mô tả đúng chức năng của toán tử ‘+’ trong một biểu thức toán học đơn giản trong lập trình?
A. Thực hiện phép cộng hai toán hạng.
B. Nối hai chuỗi ký tự lại với nhau.
C. So sánh hai giá trị xem có bằng nhau không.
D. Tăng giá trị của một biến lên 1 đơn vị.
126. Phát biểu nào sau đây mô tả đúng vai trò của ‘cấu trúc điều khiển lặp’ (loop control structure)?
A. Cho phép thực thi lặp đi lặp lại một khối mã dựa trên một điều kiện hoặc một số lần xác định.
B. Cho phép thực thi một khối mã chỉ một lần.
C. Cho phép chương trình tự động sửa lỗi.
D. Cho phép lưu trữ nhiều giá trị dưới một biến duy nhất.
127. Phát biểu nào sau đây mô tả đúng chức năng của cấu trúc dữ liệu ‘chuỗi’ (string)?
A. Lưu trữ một dãy các ký tự được sắp xếp theo một thứ tự nhất định.
B. Lưu trữ một tập hợp các số nguyên có thể thay đổi.
C. Lưu trữ một giá trị boolean (đúng/sai).
D. Lưu trữ một tập hợp các phần tử không có thứ tự.
128. Khi so sánh hai biểu thức logic, toán tử ‘AND’ (và) sẽ trả về giá trị ‘đúng’ (true) khi nào?
A. Cả hai biểu thức đều trả về giá trị ‘đúng’.
B. Ít nhất một trong hai biểu thức trả về giá trị ‘đúng’.
C. Chỉ một trong hai biểu thức trả về giá trị ‘đúng’.
D. Cả hai biểu thức đều trả về giá trị ‘sai’.
129. Trong lập trình, ‘vòng lặp for’ thường được sử dụng khi nào?
A. Khi cần thực hiện một khối lệnh một số lần xác định trước.
B. Khi cần thực hiện một khối lệnh cho đến khi một điều kiện cụ thể trở thành sai.
C. Khi cần xử lý từng phần tử của một tập hợp dữ liệu.
D. Khi cần gọi thực thi một hàm hoặc thủ tục.
130. Khi một hàm trả về một giá trị, giá trị đó được gọi là gì?
A. Giá trị trả về (return value).
B. Tham số đầu vào (input parameter).
C. Biến cục bộ (local variable).
D. Hằng số (constant).
131. Phát biểu nào sau đây mô tả đúng chức năng của cấu trúc dữ liệu ‘từ điển’ (dictionary) hay ‘ánh xạ’ (map) trong nhiều ngôn ngữ lập trình?
A. Lưu trữ các cặp khóa-giá trị, cho phép truy cập giá trị thông qua khóa duy nhất.
B. Lưu trữ một dãy các phần tử cùng kiểu dữ liệu theo thứ tự.
C. Lưu trữ một tập hợp các phần tử không có thứ tự và không cho phép trùng lặp.
D. Lưu trữ một chuỗi các ký tự.
132. Trong lập trình, ‘chỉ số’ (index) của một phần tử trong mảng thường bắt đầu từ đâu?
A. Bắt đầu từ 0 trong hầu hết các ngôn ngữ lập trình.
B. Bắt đầu từ 1 trong hầu hết các ngôn ngữ lập trình.
C. Bắt đầu từ một giá trị tùy ý do lập trình viên xác định.
D. Luôn bắt đầu từ giá trị của phần tử đầu tiên.
133. Khi lập trình, điều gì xảy ra khi bạn thực hiện phép chia một số nguyên cho một số nguyên khác và kết quả không phải là số nguyên?
A. Kết quả thường được làm tròn hoặc cắt bỏ phần thập phân, tùy thuộc vào ngôn ngữ lập trình.
B. Chương trình sẽ báo lỗi và dừng thực thi.
C. Kết quả sẽ luôn là một số thực.
D. Phần thập phân sẽ được lưu trữ dưới dạng một biến riêng biệt.
134. Phát biểu nào sau đây mô tả đúng khái niệm ‘kiểu dữ liệu ký tự’ (character data type)?
A. Lưu trữ một ký tự đơn lẻ, ví dụ: ‘A’, ‘b’, ‘7’.
B. Lưu trữ một chuỗi các ký tự.
C. Lưu trữ một số nguyên.
D. Lưu trữ một giá trị đúng/sai.
135. Phát biểu nào sau đây mô tả chính xác nhất khái niệm ‘biến’ trong lập trình?
A. Một tên gọi được gán cho một giá trị cụ thể, có thể thay đổi trong quá trình thực thi chương trình.
B. Một từ khóa được định nghĩa sẵn trong ngôn ngữ lập trình để thực hiện một chức năng nhất định.
C. Một lệnh điều khiển luồng thực thi của chương trình, như vòng lặp hoặc câu lệnh điều kiện.
D. Một giá trị cố định không thể thay đổi trong suốt quá trình chạy chương trình.
136. Phát biểu nào sau đây là đúng về ‘hằng số’ (constant) trong lập trình?
A. Là một biến có giá trị không thể thay đổi sau khi đã được gán lần đầu.
B. Là một biến có thể thay đổi giá trị bất kỳ lúc nào.
C. Là một hàm thực hiện một phép tính cố định.
D. Là một ký tự đặc biệt dùng để kết thúc chuỗi.
137. Trong lập trình, khi thực hiện phép chia số thực cho số thực, kết quả luôn là gì?
A. Luôn là một số thực, có thể có phần thập phân.
B. Luôn là một số nguyên.
C. Chương trình sẽ báo lỗi nếu kết quả không phải số nguyên.
D. Kết quả sẽ được làm tròn về số nguyên gần nhất.
138. Trong lập trình, ‘toán tử so sánh bằng’ (‘==’) dùng để làm gì?
A. Kiểm tra xem hai giá trị có bằng nhau hay không.
B. Gán giá trị của một biến cho biến khác.
C. Tăng giá trị của biến lên 1.
D. Nối hai chuỗi ký tự.
139. Phát biểu nào sau đây đúng về câu lệnh ‘if-else’ trong cấu trúc điều khiển?
A. Cho phép chương trình thực hiện một khối lệnh nếu điều kiện đúng và một khối lệnh khác nếu điều kiện sai.
B. Cho phép chương trình lặp lại một khối lệnh nhiều lần cho đến khi điều kiện sai.
C. Cho phép chương trình nhảy đến một phần khác của mã nguồn dựa trên một điều kiện.
D. Cho phép chương trình lưu trữ nhiều giá trị khác nhau dưới một tên duy nhất.
140. Khi một hàm nhận vào các giá trị để xử lý, các giá trị đó được gọi là gì?
A. Tham số (parameters) hoặc đối số (arguments).
B. Biến cục bộ (local variables).
C. Giá trị trả về (return values).
D. Hằng số (constants).
141. Phát biểu nào sau đây mô tả đúng vai trò của toán tử ‘=’ trong lập trình?
A. Toán tử gán, dùng để gán giá trị của biểu thức bên phải cho biến ở bên trái.
B. Toán tử so sánh, dùng để kiểm tra hai giá trị có bằng nhau không.
C. Toán tử logic, dùng để kết hợp hai điều kiện.
D. Toán tử số học, dùng để thực hiện phép nhân.
142. Khi sử dụng cấu trúc lặp ‘while’ trong lập trình, điều kiện để vòng lặp tiếp tục thực thi là gì?
A. Điều kiện của vòng lặp phải trả về giá trị ‘đúng’ (true).
B. Điều kiện của vòng lặp phải trả về giá trị ‘sai’ (false).
C. Chỉ cần có một biến được khai báo bên trong vòng lặp.
D. Vòng lặp sẽ chạy đúng 10 lần.
143. Phát biểu nào sau đây mô tả đúng khái niệm ‘kiểu dữ liệu chuỗi’ (string) được biểu diễn bằng dấu nháy đơn hoặc nháy kép?
A. Một chuỗi các ký tự, có thể bao gồm chữ cái, số, ký hiệu và khoảng trắng.
B. Một số nguyên có thể âm hoặc dương.
C. Một giá trị đúng hoặc sai.
D. Một danh sách các phần tử có thể thay đổi.
144. Trong lập trình, ‘biến toàn cục’ (global variable) khác với biến cục bộ ở điểm nào?
A. Biến toàn cục có thể truy cập từ bất kỳ đâu trong chương trình, còn biến cục bộ chỉ trong phạm vi khai báo.
B. Biến toàn cục có giá trị luôn là 0, biến cục bộ có thể là bất kỳ số nào.
C. Biến toàn cục không thể thay đổi giá trị, biến cục bộ có thể.
D. Biến toàn cục chỉ dùng cho số thực, biến cục bộ chỉ dùng cho số nguyên.
145. Phát biểu nào sau đây mô tả đúng vai trò của ‘kiểu dữ liệu boolean’ (boolean data type)?
A. Chỉ có thể nhận một trong hai giá trị: đúng (true) hoặc sai (false).
B. Có thể nhận bất kỳ giá trị số nguyên nào.
C. Có thể nhận bất kỳ ký tự nào.
D. Có thể nhận một chuỗi các ký tự.
146. Trong lập trình, ‘gỡ lỗi’ (debugging) là quá trình gì?
A. Tìm kiếm và sửa các lỗi (bugs) trong mã nguồn của chương trình.
B. Viết mã nguồn mới cho một chức năng chưa có.
C. Tối ưu hóa hiệu suất của chương trình.
D. Phân tích yêu cầu của người dùng để thiết kế chương trình.
147. Phát biểu nào sau đây mô tả đúng khái niệm ‘mảng’ (array) trong lập trình?
A. Một tập hợp các phần tử cùng kiểu dữ liệu, được lưu trữ liên tiếp trong bộ nhớ và có thể truy cập bằng chỉ số.
B. Một biến đơn lẻ có thể lưu trữ nhiều loại dữ liệu khác nhau.
C. Một chuỗi các ký tự tạo thành một từ hoặc một câu.
D. Một cấu trúc dữ liệu dùng để lưu trữ các cặp khóa-giá trị.
148. Phát biểu nào sau đây mô tả đúng chức năng của ‘câu lệnh xuất’ (output statement) trong lập trình?
A. Hiển thị thông tin, kết quả hoặc thông báo ra thiết bị đầu ra (thường là màn hình).
B. Nhận dữ liệu nhập từ người dùng.
C. Thực hiện một phép tính toán học.
D. Khai báo một biến mới.
149. Trong ngôn ngữ lập trình Python, phát biểu nào sau đây về kiểu dữ liệu ‘integer’ là đúng?
A. Kiểu dữ liệu ‘integer’ dùng để lưu trữ các số nguyên không có phần thập phân.
B. Kiểu dữ liệu ‘integer’ chỉ có thể lưu trữ các số dương.
C. Kiểu dữ liệu ‘integer’ dùng để lưu trữ các ký tự đơn lẻ.
D. Kiểu dữ liệu ‘integer’ có thể lưu trữ cả số nguyên và số thực.
150. Trong lập trình, ‘phạm vi’ (scope) của một biến đề cập đến điều gì?
A. Phần của chương trình mà tại đó biến có thể được truy cập và sử dụng.
B. Kích thước bộ nhớ mà biến chiếm dụng.
C. Thời gian tồn tại của biến trong bộ nhớ.
D. Kiểu dữ liệu mà biến đang lưu trữ.