1. Nếu một chương trình Pascal đọc dữ liệu từ tệp theo từng dòng bằng vòng lặp While not Eof(f) do ReadLn(f, line);, thì biến ‘line’ sẽ có kiểu dữ liệu nào để lưu trữ một dòng văn bản?
A. String
B. Char
C. Integer
D. Boolean
2. Khi sử dụng thủ tục ReadLn(f, var1, var2, …); để đọc dữ liệu từ tệp, điều gì xảy ra nếu số lượng biến trong danh sách không khớp với số lượng trường dữ liệu trên một dòng?
A. Chương trình có thể báo lỗi hoặc đọc sai dữ liệu, tùy thuộc vào cách triển khai.
B. Chương trình tự động bỏ qua các biến thừa.
C. Chương trình tự động thêm các biến trống.
D. Chương trình sẽ chuyển sang đọc dòng tiếp theo.
3. Phát biểu nào sau đây là SAI khi so sánh tệp văn bản và tệp nhị phân trong lập trình?
A. Tệp văn bản lưu trữ dữ liệu dưới dạng các ký tự có thể đọc được, còn tệp nhị phân lưu trữ dữ liệu dưới dạng mã máy.
B. Việc đọc/ghi dữ liệu trong tệp văn bản thường đơn giản hơn và ít tốn tài nguyên hơn so với tệp nhị phân.
C. Tệp nhị phân cho phép truy cập ngẫu nhiên (seek) hiệu quả hơn tệp văn bản.
D. Tệp văn bản luôn có dung lượng nhỏ hơn tệp nhị phân cho cùng một lượng thông tin.
4. Phát biểu nào sau đây là ĐÚNG về cách khai báo biến tệp trong Pascal?
A. Biến tệp phải được khai báo kiểu ‘Text’.
B. Biến tệp không cần khai báo kiểu cụ thể.
C. Biến tệp phải được khai báo kiểu ‘String’.
D. Biến tệp phải được khai báo kiểu ‘File’.
5. Trong Pascal, sau khi thực hiện lệnh Assign(f, ‘ketqua.txt’);, bước tiếp theo cần thiết để có thể ghi dữ liệu vào tệp là gì?
A. Rewrite(f);
B. ReadLn(f);
C. Close(f);
D. Eof(f);
6. Phát biểu nào sau đây là SAI về chế độ làm việc với tệp văn bản trong Pascal?
A. Chế độ đọc (mở bằng Reset) cho phép ghi dữ liệu vào tệp.
B. Chế độ ghi (mở bằng Rewrite) xóa hết nội dung cũ của tệp.
C. Chế độ ghi nối (mở bằng Append) cho phép ghi dữ liệu vào cuối tệp.
D. Chế độ đọc (mở bằng Reset) chỉ cho phép đọc dữ liệu từ tệp.
7. Phát biểu nào sau đây là SAI về vai trò của thủ tục Assign trong Pascal?
A. Assign(f, ‘data.txt’) sẽ mở tệp ‘data.txt’ cho việc đọc hoặc ghi.
B. Assign chỉ là bước liên kết tên tệp vật lý với biến tệp logic.
C. Sau Assign, bạn cần dùng Reset hoặc Rewrite để bắt đầu thao tác với tệp.
D. Assign có thể được sử dụng để đổi tên tệp.
8. Phát biểu nào sau đây là SAI về chức năng của hàm Eoln(f) trong Pascal khi làm việc với tệp văn bản?
A. Eoln(f) trả về True nếu con trỏ tệp đang ở cuối dòng.
B. Eoln(f) trả về True nếu con trỏ tệp đang ở ký tự xuống dòng (End Of Line marker).
C. Eoln(f) trả về False nếu con trỏ tệp đang ở giữa một dòng văn bản.
D. Eoln(f) trả về True nếu tệp đã hết (Eof(f) cũng trả về True).
9. Khi làm việc với tệp văn bản trong Pascal, việc đóng tệp sau khi sử dụng có vai trò gì quan trọng nhất?
A. Đảm bảo dữ liệu đã ghi được lưu hoàn chỉnh và giải phóng bộ nhớ liên quan đến tệp.
B. Cho phép mở lại tệp đó cho các hoạt động khác.
C. Ngăn chặn người dùng khác truy cập vào tệp.
D. Tăng tốc độ đọc/ghi dữ liệu.
10. Mục đích chính của việc sử dụng biến tệp khi làm việc với tệp văn bản là gì?
A. Để quản lý và tham chiếu đến tệp vật lý trên hệ thống lưu trữ.
B. Để lưu trữ toàn bộ nội dung của tệp vào bộ nhớ.
C. Để mã hóa dữ liệu trong tệp.
D. Để kiểm tra quyền truy cập vào tệp.
11. Khi nào thì việc sử dụng thủ tục Append(f) là lựa chọn tốt nhất?
A. Khi cần ghi thêm thông tin vào cuối một tệp log đã tồn tại.
B. Khi cần tạo một tệp mới hoàn toàn và ghi dữ liệu.
C. Khi chỉ muốn đọc dữ liệu từ tệp.
D. Khi cần xóa toàn bộ nội dung tệp.
12. Nếu bạn muốn đọc từng dòng của tệp ‘input.txt’ và xử lý mỗi dòng, cấu trúc lặp nào sau đây là hiệu quả và đúng đắn nhất trong Pascal?
A. While not Eof(f) do begin ReadLn(f, line); Process(line); end;
B. For line := 1 to FileSize(f) do begin ReadLn(f, line); Process(line); end;
C. Repeat ReadLn(f, line); Process(line); Until Eoln(f);
D. Repeat ReadLn(f, line); Process(line); Until Eof(f) and Eoln(f);
13. Câu lệnh nào trong Pascal dùng để kiểm tra xem đã đọc hết tệp văn bản hay chưa?
A. Eof(f)
B. Eoln(f)
C. Eof
D. Eoln
14. Giả sử bạn có một tệp văn bản tên ‘data.txt’ và bạn muốn đọc từng ký tự một từ tệp này. Lệnh Pascal nào phù hợp nhất cho mục đích này?
A. Read(f, c);
B. ReadLn(f, c);
C. Readln;
D. Read(c);
15. Phát biểu nào sau đây là ĐÚNG về sự khác biệt giữa Read(f, var) và ReadLn(f, var1, var2, …)?
A. Read(f, var) đọc một đơn vị dữ liệu (ví dụ: ký tự), còn ReadLn đọc một dòng và bỏ qua ký tự xuống dòng.
B. ReadLn chỉ dùng cho tệp nhị phân, Read dùng cho tệp văn bản.
C. Read bỏ qua các dòng trống, ReadLn đọc cả dòng trống.
D. Read bắt buộc phải có biến kiểu chuỗi, ReadLn có thể dùng với mọi kiểu dữ liệu.
16. Nếu bạn sử dụng ‘var f: Text;’ để khai báo biến tệp, thì ‘Text’ là một kiểu dữ liệu:
A. Được định nghĩa sẵn trong Pascal để làm việc với tệp văn bản.
B. Cần phải tự định nghĩa.
C. Tương đương với kiểu ‘File’.
D. Chỉ cho phép lưu trữ các số nguyên.
17. Trong lập trình Pascal, câu lệnh nào được sử dụng để đọc một dòng văn bản từ tệp văn bản và lưu vào biến kiểu chuỗi?
A. Readln(f, s);
B. Read(f, s);
C. ReadLn;
D. WriteLn(f, s);
18. Trong Pascal, nếu bạn muốn đọc một ký tự từ tệp ‘f’ và lưu vào biến ‘ch’, bạn sẽ sử dụng lệnh nào?
A. Read(f, ch);
B. ReadLn(f, ch);
C. Read(ch);
D. Assign(f, ch);
19. Thủ tục nào trong Pascal được sử dụng để đóng một tệp văn bản đã mở?
A. Close(f)
B. Open(f)
C. Flush(f)
D. Seek(f)
20. Trong Pascal, nếu bạn muốn ghi thêm dữ liệu vào cuối một tệp văn bản mà không làm mất nội dung hiện có, bạn nên sử dụng thủ tục nào?
A. Append(f);
B. Rewrite(f);
C. Reset(f);
D. Close(f);
21. Khi bạn sử dụng Write(f, ‘Hello’); trong Pascal, điều gì xảy ra với tệp văn bản ‘f’?
A. Chuỗi ‘Hello’ được ghi vào tệp, và con trỏ tệp di chuyển đến vị trí sau chuỗi đó.
B. Chuỗi ‘Hello’ được ghi vào đầu tệp, xóa hết nội dung cũ.
C. Chương trình sẽ báo lỗi vì Write chỉ dùng cho biến kiểu ký tự.
D. Chuỗi ‘Hello’ được thêm vào cuối tệp.
22. Trong Pascal, nếu bạn gọi Reset(f) trên một tệp đã mở bằng Rewrite, điều gì sẽ xảy ra?
A. Tệp sẽ được mở lại ở chế độ đọc và con trỏ tệp sẽ được đặt ở đầu tệp.
B. Chương trình sẽ báo lỗi vì không thể mở tệp ở chế độ đọc sau khi đã ghi.
C. Nội dung tệp sẽ bị xóa.
D. Con trỏ tệp sẽ được chuyển đến cuối tệp.
23. Phát biểu nào sau đây là SAI về các thao tác cơ bản trên tệp văn bản trong Pascal?
A. Tệp văn bản luôn được mở ở chế độ chỉ đọc mặc định.
B. Có thể ghi dữ liệu vào tệp đã tồn tại mà không làm mất nội dung cũ nếu sử dụng chế độ ghi nối (append).
C. Thủ tục Assign gán một tên tệp cho một biến tệp.
D. Thủ tục Reset mở tệp để đọc, còn Rewrite mở tệp để ghi (xóa nội dung cũ).
24. Phát biểu nào sau đây là SAI về việc sử dụng biến tệp trong Pascal?
A. Một biến tệp có thể được dùng để làm việc với nhiều tệp vật lý khác nhau bằng cách sử dụng Assign.
B. Sau khi đóng tệp, biến tệp vẫn có thể được sử dụng để đọc dữ liệu.
C. Tất cả các thao tác đọc/ghi phải được thực hiện thông qua biến tệp.
D. Biến tệp không lưu trữ trực tiếp nội dung tệp mà là một tham chiếu.
25. Trong một chương trình Pascal, nếu bạn đọc từng ký tự của tệp văn bản và muốn đếm số lần xuất hiện của một ký tự cụ thể, bạn sẽ dùng cấu trúc lặp nào phổ biến nhất?
A. While not Eof(f) do begin … Read(f, ch); … end;
B. For i := 1 to Length(f) do begin … end;
C. Repeat … Until Eof(f);
D. Repeat … Until Eoln(f);
26. Khi chương trình Pascal thực hiện lệnh Rewrite(f), điều gì sẽ xảy ra với tệp được liên kết với biến tệp ‘f’?
A. Tệp sẽ được tạo mới nếu chưa có, hoặc nội dung cũ sẽ bị xóa hoàn toàn nếu tệp đã tồn tại.
B. Tệp sẽ được mở ở chế độ chỉ đọc.
C. Con trỏ tệp sẽ được đặt ở cuối tệp.
D. Tệp sẽ được mở ở chế độ ghi nối (append).
27. Phát biểu nào sau đây là ĐÚNG về việc sử dụng tên tệp trong lập trình Pascal?
A. Tên tệp có thể chứa các ký tự đặc biệt tùy thuộc vào hệ điều hành.
B. Tên tệp bắt buộc phải có phần mở rộng (extension).
C. Tên tệp trong Pascal không phân biệt chữ hoa, chữ thường.
D. Tên tệp luôn được lưu dưới dạng chuỗi cố định.
28. Phát biểu nào sau đây là SAI về cách xử lý tệp văn bản trong Pascal?
A. Thủ tục Assign chỉ đơn thuần liên kết tên tệp với biến tệp, chưa mở tệp.
B. Thủ tục Reset mở tệp ở chế độ chỉ ghi, xóa sạch dữ liệu cũ.
C. Thủ tục Append mở tệp ở chế độ ghi nối.
D. Hàm Eof kiểm tra xem đã đến cuối tệp hay chưa.
29. Để đọc một chuỗi ký tự từ tệp văn bản ‘myFile’ vào biến ‘lineStr’, câu lệnh đúng là gì?
A. ReadLn(myFile, lineStr);
B. Read(myFile, lineStr);
C. ReadLn(lineStr);
D. Read(lineStr);
30. Khi đọc dữ liệu từ tệp văn bản, việc sử dụng biến đệm (buffer variable) có lợi ích gì?
A. Giúp đọc dữ liệu hiệu quả hơn bằng cách giảm số lần truy cập vật lý vào đĩa.
B. Cho phép truy cập trực tiếp vào bất kỳ vị trí nào trong tệp.
C. Tự động dịch dữ liệu sang định dạng nhị phân.
D. Ngăn chặn việc ghi đè dữ liệu.
31. Phát biểu nào sau đây mô tả đúng về ‘zero-day exploit’?
A. Một cuộc tấn công đã được phát hiện và vá lỗi từ lâu.
B. Một lỗ hổng bảo mật chưa được nhà cung cấp phần mềm biết đến hoặc chưa có bản vá.
C. Một phương pháp mã hóa dữ liệu cực kỳ mạnh.
D. Một công cụ để kiểm tra hiệu suất của mạng.
32. Tường lửa (firewall) hoạt động dựa trên nguyên tắc cơ bản nào để bảo vệ mạng?
A. Mã hóa tất cả lưu lượng mạng ra vào.
B. Kiểm soát và lọc lưu lượng mạng dựa trên các quy tắc định trước.
C. Phát hiện và loại bỏ virus trong các tệp tin.
D. Ngăn chặn người dùng truy cập vào các trang web không mong muốn.
33. Tại sao việc sử dụng mật khẩu mạnh và duy nhất cho mỗi tài khoản trực tuyến lại quan trọng?
A. Để hệ thống ghi nhớ mật khẩu dễ dàng hơn.
B. Để giảm thiểu rủi ro bị xâm nhập tài khoản nếu một mật khẩu bị lộ.
C. Để tăng tốc độ đăng nhập vào các dịch vụ.
D. Để hệ thống yêu cầu thay đổi mật khẩu ít thường xuyên hơn.
34. Phát biểu nào sau đây mô tả đúng bản chất của tấn công lừa đảo (phishing)?
A. Tấn công khai thác lỗ hổng phần mềm để chiếm quyền điều khiển hệ thống.
B. Kẻ tấn công mạo danh nguồn đáng tin cậy để lừa người dùng tiết lộ thông tin nhạy cảm.
C. Tấn công làm quá tải máy chủ bằng lượng truy cập khổng lồ.
D. Tấn công cài đặt phần mềm độc hại vào máy tính người dùng mà họ không hay biết.
35. Khi nói về ‘chữ ký số’, mục đích chính của việc sử dụng cặp khóa công khai và khóa bí mật là gì?
A. Khóa bí mật dùng để mã hóa, khóa công khai dùng để giải mã.
B. Khóa bí mật dùng để tạo chữ ký số, khóa công khai dùng để xác minh chữ ký số.
C. Cả hai khóa đều dùng để mã hóa dữ liệu.
D. Cả hai khóa đều dùng để xác minh danh tính người gửi.
36. Phát biểu nào sau đây mô tả đúng về ‘backdoor’ trong an toàn thông tin?
A. Một lỗ hổng bảo mật được công bố rộng rãi.
B. Một phương pháp bí mật cho phép truy cập vào hệ thống mà không cần qua các quy trình xác thực thông thường.
C. Một công cụ để kiểm tra hiệu suất của mạng.
D. Một loại phần mềm chống virus.
37. Phát biểu nào sau đây mô tả đúng về ‘keylogger’?
A. Một công cụ để ghi lại và gửi các lệnh tới máy chủ từ xa.
B. Một chương trình ghi lại các lần nhấn phím của người dùng, thường để đánh cắp thông tin đăng nhập.
C. Một phần mềm chống virus có khả năng phát hiện keylogger.
D. Một phương pháp mã hóa thông tin liên lạc.
38. Biện pháp nào sau đây hiệu quả nhất để phòng chống mã độc ransomware?
A. Thường xuyên cập nhật hệ điều hành và phần mềm diệt virus.
B. Mở tất cả các tệp đính kèm email để kiểm tra.
C. Tắt tường lửa để tăng tốc độ mạng.
D. Lưu trữ tất cả dữ liệu quan trọng trên một ổ đĩa duy nhất.
39. Việc sử dụng mật khẩu có độ dài tối thiểu 8 ký tự, bao gồm chữ hoa, chữ thường, số và ký tự đặc biệt là một biện pháp bảo mật nhằm:
A. Giúp người dùng nhớ mật khẩu dễ dàng hơn.
B. Tăng cường độ phức tạp của mật khẩu, khiến việc đoán hoặc bẻ khóa trở nên khó khăn hơn.
C. Giảm thiểu số lần người dùng phải thay đổi mật khẩu.
D. Đảm bảo mật khẩu được lưu trữ an toàn trên máy chủ.
40. Phát biểu nào sau đây mô tả đúng nhất vai trò của việc sử dụng mã hóa trong giao tiếp mạng máy tính?
A. Đảm bảo tính bí mật của dữ liệu, ngăn chặn truy cập trái phép.
B. Tăng tốc độ truyền dữ liệu trên mạng.
C. Giảm thiểu số lượng gói tin cần truyền.
D. Tự động sửa lỗi trong quá trình truyền dữ liệu.
41. Khi một trang web hiển thị ‘HTTPS’ thay vì ‘HTTP’ ở đầu địa chỉ, điều này có ý nghĩa gì đối với người dùng?
A. Trang web đó chắc chắn không chứa quảng cáo.
B. Kết nối giữa trình duyệt của người dùng và máy chủ web đã được mã hóa.
C. Trang web đó sử dụng công nghệ mới nhất và nhanh nhất.
D. Trang web đó thuộc sở hữu của một tổ chức chính phủ.
42. Trong ngữ cảnh an toàn thông tin, ‘tấn công Man-in-the-Middle’ (MITM) có nghĩa là gì?
A. Một kẻ tấn công cố gắng chiếm quyền điều khiển máy chủ từ xa.
B. Một kẻ tấn công xen vào giữa hai bên đang giao tiếp để nghe lén hoặc sửa đổi thông tin.
C. Một cuộc tấn công từ chối dịch vụ (DoS) nhằm làm quá tải hệ thống.
D. Một kẻ tấn công sử dụng kỹ thuật lừa đảo (phishing) để lấy cắp thông tin đăng nhập.
43. Mục đích của việc sử dụng VPN (Virtual Private Network) là gì?
A. Tăng tốc độ tải xuống.
B. Tạo một kết nối mạng an toàn và riêng tư qua mạng công cộng (như Internet).
C. Nén dữ liệu để tiết kiệm băng thông.
D. Chặn tất cả các quảng cáo trực tuyến.
44. Mục đích chính của việc sử dụng thuật toán băm (hashing) trong xác thực dữ liệu là gì?
A. Nén dữ liệu để tiết kiệm dung lượng lưu trữ.
B. Tạo ra một giá trị duy nhất, không thể đảo ngược, để kiểm tra sự toàn vẹn của dữ liệu.
C. Mã hóa dữ liệu để chỉ người nhận hợp lệ mới đọc được.
D. Phân chia dữ liệu thành các phần nhỏ hơn để truyền tải.
45. Phát biểu nào sau đây mô tả đúng về ‘tấn công XSS’ (Cross-Site Scripting)?
A. Một cuộc tấn công nhằm vào việc đánh cắp thông tin từ cơ sở dữ liệu.
B. Một cuộc tấn công cho phép kẻ tấn công chèn mã độc (thường là JavaScript) vào các trang web mà người dùng khác xem.
C. Một cuộc tấn công từ chối dịch vụ nhắm vào máy chủ web.
D. Một phương pháp để mã hóa dữ liệu truyền qua mạng.
46. Tại sao việc cập nhật định kỳ hệ điều hành và các ứng dụng phần mềm lại quan trọng đối với an ninh mạng?
A. Để làm cho giao diện người dùng đẹp hơn.
B. Để vá các lỗ hổng bảo mật đã biết mà kẻ tấn công có thể khai thác.
C. Để tăng tốc độ xử lý của máy tính.
D. Để giảm thiểu dung lượng lưu trữ cần thiết.
47. Công nghệ nào được sử dụng phổ biến để bảo vệ các kết nối mạng không dây (Wi-Fi)?
A. HTTP Secure (HTTPS)
B. Secure Shell (SSH)
C. Wi-Fi Protected Access (WPA) hoặc WPA2/WPA3
D. Domain Name System (DNS)
48. Phát biểu nào sau đây mô tả đúng về ‘tấn công SQL Injection’?
A. Một cuộc tấn công nhằm vào việc đánh cắp dữ liệu từ cơ sở dữ liệu thông qua việc chèn các câu lệnh SQL độc hại.
B. Một cuộc tấn công từ chối dịch vụ nhắm vào máy chủ cơ sở dữ liệu.
C. Một phương pháp để mã hóa dữ liệu trong cơ sở dữ liệu.
D. Một công cụ để tối ưu hóa hiệu suất truy vấn SQL.
49. Phát biểu nào sau đây mô tả đúng về ‘tấn công botnet’?
A. Một cuộc tấn công nhằm vào việc đánh cắp mật khẩu người dùng.
B. Một mạng lưới các máy tính bị nhiễm mã độc (bot), được điều khiển từ xa bởi kẻ tấn công để thực hiện các hành vi độc hại.
C. Một phương pháp để mã hóa dữ liệu một cách an toàn.
D. Một chương trình tự động hóa việc cập nhật phần mềm.
50. Tại sao việc kiểm tra nguồn gốc của email và liên kết trước khi nhấp vào lại quan trọng?
A. Để đảm bảo email được gửi từ người quen.
B. Để tránh bị lừa đảo bởi các email giả mạo (phishing) hoặc bị tấn công bởi mã độc.
C. Để tăng tốc độ xử lý email.
D. Để hệ thống tự động phân loại email.
51. Mục đích của việc sử dụng giao thức TLS/SSL là gì trong truyền thông mạng?
A. Chỉ để tăng tốc độ truyền dữ liệu.
B. Để đảm bảo tính xác thực, toàn vẹn và bí mật của dữ liệu được truyền.
C. Để nén dữ liệu trước khi gửi đi.
D. Để định tuyến các gói tin đến đích chính xác.
52. Phát biểu nào sau đây mô tả đúng về một ‘trojan horse’ (ngựa thành Troy)?
A. Một chương trình tự nhân bản và lây lan qua mạng.
B. Một chương trình có vẻ hữu ích nhưng chứa mã độc ẩn giấu bên trong.
C. Một loại virus lây nhiễm vào bộ khởi động của máy tính.
D. Một công cụ dùng để quét và tìm lỗ hổng bảo mật.
53. Tại sao việc sao lưu dữ liệu định kỳ (backup) lại là một biện pháp quan trọng trong chiến lược an ninh mạng?
A. Để đảm bảo tất cả các tệp tin luôn được cập nhật phiên bản mới nhất.
B. Để phục hồi dữ liệu trong trường hợp mất mát do lỗi phần cứng, tấn công mạng, hoặc thiên tai.
C. Để tăng dung lượng lưu trữ trên ổ cứng.
D. Để giảm thiểu thời gian tải trang web.
54. Tại sao việc xóa bỏ các tệp tin và dữ liệu không cần thiết khỏi máy tính lại có lợi cho an ninh mạng?
A. Để làm cho máy tính chạy nhanh hơn.
B. Để giảm thiểu bề mặt tấn công, hạn chế khả năng mã độc ẩn náu hoặc khai thác các tệp tin cũ.
C. Để tăng dung lượng lưu trữ trống.
D. Để làm cho việc tìm kiếm tệp tin dễ dàng hơn.
55. Mục đích của việc sử dụng mật khẩu hai lớp (two-factor authentication – 2FA) là gì?
A. Để đơn giản hóa quá trình đăng nhập.
B. Để tăng cường bảo mật bằng cách yêu cầu hai yếu tố xác minh khác nhau (ví dụ: mật khẩu và mã gửi qua SMS).
C. Để lưu trữ tất cả mật khẩu của người dùng ở một nơi.
D. Để tăng tốc độ tải trang web.
56. Khi nói về ‘tấn công từ chối dịch vụ’ (Denial of Service – DoS), mục tiêu chính của kẻ tấn công là gì?
A. Đánh cắp thông tin cá nhân của người dùng.
B. Làm cho một dịch vụ hoặc tài nguyên mạng không khả dụng đối với người dùng hợp pháp.
C. Cài đặt phần mềm quảng cáo trái phép.
D. Sửa đổi nội dung của các trang web.
57. Trong các hình thức tấn công mạng, ‘kỹ thuật xã hội’ (social engineering) nhấn mạnh vào khía cạnh nào?
A. Khai thác các lỗ hổng kỹ thuật trong phần mềm.
B. Thao túng tâm lý con người để thu thập thông tin hoặc thực hiện hành động độc hại.
C. Sử dụng các thuật toán mã hóa phức tạp.
D. Tấn công vào các thiết bị phần cứng.
58. Mục đích của việc sử dụng chứng chỉ số (digital certificate) là gì?
A. Để nén và gửi tệp tin lớn qua mạng.
B. Để xác minh danh tính của một người dùng, máy chủ hoặc tổ chức.
C. Để tăng tốc độ kết nối internet.
D. Để loại bỏ quảng cáo khỏi các trang web.
59. Phân biệt giữa ‘mã độc’ (malware) và ‘virus máy tính’ là gì?
A. Virus máy tính là một dạng duy nhất của mã độc.
B. Mã độc là một thuật ngữ chung bao gồm virus, sâu máy tính, trojan, ransomware, v.v.
C. Virus máy tính luôn lây lan qua mạng, còn mã độc thì không.
D. Không có sự khác biệt, hai thuật ngữ này đồng nghĩa.
60. Phát biểu nào sau đây mô tả chính xác về ‘sâu máy tính’ (computer worm)?
A. Sâu máy tính cần một tệp tin chủ để lây lan.
B. Sâu máy tính có khả năng tự nhân bản và lây lan qua mạng mà không cần sự tương tác của người dùng.
C. Sâu máy tính chỉ tấn công vào các tệp tin văn bản.
D. Sâu máy tính luôn đòi tiền chuộc dữ liệu bị mã hóa.
61. Khi nào một lớp con KHÔNG bắt buộc phải triển khai các phương thức trừu tượng của lớp cha (abstract class)?
A. Khi lớp con đó cũng là một lớp trừu tượng.
B. Khi lớp cha có một phương thức mặc định.
C. Khi lớp cha có các phương thức tĩnh.
D. Luôn luôn phải triển khai.
62. Trong lập trình hướng đối tượng, khái niệm nào đề cập đến việc một lớp có thể kế thừa các thuộc tính và phương thức từ một lớp khác, cho phép tái sử dụng mã và tạo ra các mối quan hệ phân cấp?
A. Đóng gói (Encapsulation)
B. Trừu tượng hóa (Abstraction)
C. Kế thừa (Inheritance)
D. Đa hình (Polymorphism)
63. Khi một lớp con ghi đè (override) một phương thức của lớp cha, phương thức đó phải có cùng tên, cùng kiểu trả về và cùng danh sách tham số. Đây là nguyên tắc của hiện tượng nào?
A. Đóng gói
B. Trừu tượng hóa
C. Kế thừa
D. Đa hình (cụ thể là ghi đè phương thức)
64. Trong lập trình hướng đối tượng, một ‘abstract class’ (lớp trừu tượng) có thể có những gì?
A. Chỉ các phương thức trừu tượng.
B. Chỉ các phương thức đã được định nghĩa.
C. Cả phương thức trừu tượng và phương thức đã được định nghĩa.
D. Không thể có bất kỳ phương thức nào.
65. Đâu là một lợi ích chính của việc sử dụng tính đa hình trong lập trình hướng đối tượng?
A. Giảm số lượng biến cần khai báo.
B. Tăng cường khả năng bảo trì và mở rộng mã nguồn.
C. Giảm dung lượng bộ nhớ sử dụng.
D. Tăng tốc độ thực thi chương trình.
66. Việc gom các 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 gọi là gì?
A. Kế thừa
B. Đa hình
C. Đóng gói
D. Trừu tượng hóa
67. Khái niệm nào trong lập trình hướng đối tượng liên quan đến việc che giấu chi tiết triển khai bên trong và chỉ hiển thị những gì cần thiết cho người dùng?
A. Kế thừa
B. Đóng gói
C. Đa hình
D. Trừu tượng hóa
68. Trong ngữ cảnh của lập trình hướng đối tượng, ‘abstraction’ (trừu tượng hóa) và ‘encapsulation’ (đóng gói) có mối liên hệ như thế nào?
A. Chúng là hai khái niệm hoàn toàn độc lập.
B. Đóng gói là một cơ chế để đạt được trừu tượng hóa.
C. Trừu tượng hóa là một cơ chế để đạt được đóng gói.
D. Chúng luôn đi đôi với nhau và không thể tách rời.
69. Phương thức ‘toString()’ trong Java thường được sử dụng để làm gì?
A. Trả về giá trị boolean cho biết đối tượng có tồn tại không.
B. Trả về một chuỗi biểu diễn giá trị của đối tượng.
C. Tạo một bản sao của đối tượng.
D. Kiểm tra sự bằng nhau giữa hai đối tượng.
70. Một lớp có thể triển khai bao nhiêu interface trong Java?
A. Một
B. Hai
C. Không giới hạn
D. Ba
71. Khi một lớp con ghi đè phương thức ‘toString()’ của lớp cha, nó muốn đạt được mục đích gì?
A. Ngăn lớp cha thực thi phương thức đó.
B. Cung cấp một biểu diễn chuỗi tùy chỉnh và có ý nghĩa hơn cho đối tượng của lớp con.
C. Tăng tốc độ truy cập thông tin của đối tượng.
D. Che giấu hoàn toàn thông tin của đối tượng.
72. Trong lập trình hướng đối tượng, hiện tượng một phương thức có thể có nhiều biểu hiện khác nhau tùy thuộc vào đối tượng gọi nó được gọi là gì?
A. Đóng gói
B. Kế thừa
C. Trừu tượng hóa
D. Đa hình
73. So sánh ‘composition’ và ‘inheritance’, ‘inheritance’ thường được coi là mối quan hệ gì?
A. Mối quan hệ ‘có một’ (has-a).
B. Mối quan hệ ‘là một’ (is-a).
C. Mối quan hệ ‘sử dụng một’ (uses-a).
D. Mối quan hệ ‘phụ thuộc’ (depends-on).
74. Trong Java, từ khóa ‘static’ khi áp dụng cho một phương thức (class method) có ý nghĩa gì?
A. Phương thức đó chỉ có thể được gọi thông qua một đối tượng cụ thể.
B. Phương thức đó thuộc về lớp và có thể được gọi trực tiếp bằng tên lớp mà không cần tạo đối tượng.
C. Phương thức đó không thể truy cập các biến instance (thuộc tính của đối tượng).
D. Phương thức đó luôn trả về giá trị null.
75. Đâu là một ví dụ về ‘encapsulation’ trong Java?
A. Một lớp kế thừa thuộc tính từ lớp cha.
B. Một lớp có các thuộc tính là ‘private’ và các phương thức ‘getter/setter’ công khai để truy cập chúng.
C. Một lớp có nhiều phương thức cùng tên nhưng khác nhau về tham số.
D. Một lớp khai báo một phương thức là ‘abstract’.
76. Đâu là một ví dụ về ‘runtime polymorphism’ (đa hình thời gian chạy) trong Java?
A. Việc gọi một phương thức có nhiều phiên bản với các tham số khác nhau.
B. Việc gọi một phương thức của lớp cha thông qua từ khóa ‘super’.
C. Việc một đối tượng của lớp con được gọi thông qua tham chiếu của lớp cha và thực thi phương thức đã được ghi đè.
D. Việc khai báo một lớp là ‘abstract’.
77. Khái niệm ‘composition’ (thành phần) trong lập trình hướng đối tượng mô tả mối quan hệ gì giữa các đối tượng?
A. Mối quan hệ ‘là một’ (is-a relationship).
B. Mối quan hệ ‘có một’ (has-a relationship).
C. Mối quan hệ ‘sử dụng một’ (uses-a relationship).
D. Mối quan hệ ‘gọi một’ (calls-a relationship).
78. Khi nói về ‘polymorphism’ (đa hình) trong Java, ‘method overloading’ (nạp chồng phương thức) được coi là một dạng của đa hình nào?
A. Đa hình thời gian biên dịch (Compile-time polymorphism).
B. Đa hình thời gian chạy (Runtime polymorphism).
C. Đa hình giao diện (Interface polymorphism).
D. Đa hình trừu tượng (Abstract polymorphism).
79. Khi một phương thức static gọi một biến instance (biến thuộc tính của đối tượng) trong cùng lớp, điều gì xảy ra?
A. Chương trình biên dịch thành công và hoạt động bình thường.
B. Chương trình sẽ báo lỗi biên dịch vì phương thức static không thể truy cập biến instance.
C. Biến instance sẽ tự động trở thành biến static.
D. Biến instance sẽ được khởi tạo với giá trị mặc định.
80. Interface trong Java có thể chứa những gì?
A. Chỉ các phương thức trừu tượng và hằng số.
B. Chỉ các phương thức trừu tượng.
C. Chỉ các biến thành viên thông thường.
D. Các phương thức trừu tượng, phương thức mặc định (default methods), phương thức tĩnh (static methods) và hằng số.
81. Trong Java, phương thức ‘equals()’ được sử dụng để làm gì?
A. Kiểm tra xem hai đối tượng có cùng tham chiếu đến một đối tượng trong bộ nhớ hay không.
B. So sánh nội dung của hai đối tượng để xem chúng có tương đương nhau hay không.
C. Trả về một chuỗi biểu diễn đối tượng.
D. Tạo một bản sao của đối tượng.
82. Trong Java, làm thế nào để một lớp con truy cập vào constructor của lớp cha?
A. Sử dụng từ khóa ‘this()’.
B. Sử dụng từ khóa ‘super()’.
C. Gọi trực tiếp tên lớp cha.
D. Không thể truy cập constructor của lớp cha.
83. Đâu là một nguyên tắc cơ bản của lập trình hướng đối tượng?
A. Chỉ sử dụng các biến cục bộ.
B. Tập trung vào các câu lệnh điều kiện và vòng lặp.
C. Sử dụng các khái niệm như đóng gói, trừu tượng hóa, kế thừa và đa hình.
D. Tránh sử dụng các lớp và đối tượng.
84. Trong Java, từ khóa ‘final’ khi áp dụng cho một phương thức có ý nghĩa gì?
A. Phương thức đó không thể được gọi.
B. Phương thức đó không thể bị ghi đè bởi lớp con.
C. Phương thức đó luôn trả về một giá trị cố định.
D. Phương thức đó chỉ có thể được gọi từ bên trong lớp.
85. Trong Java, khi nào bạn nên sử dụng ‘composition’ thay vì ‘inheritance’?
A. Khi muốn tạo ra một loại đối tượng mới hoàn toàn khác biệt.
B. Khi muốn tận dụng lại các chức năng đã có mà không cần thay đổi hành vi gốc.
C. Khi muốn thể hiện mối quan hệ ‘là một’ và cần sự linh hoạt cao.
D. Khi muốn liên kết chặt chẽ hành vi của hai lớp mà không cần sự kế thừa.
86. 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ỉ thuộc về một đối tượng cụ thể.
B. Biến đó thuộc về lớp và chia sẻ giữa tất cả các đối tượng của lớp đó.
C. Biến đó không thể được truy cập từ bên ngoài lớp.
D. Biến đó sẽ được khởi tạo lại mỗi khi một đối tượng mới được tạo.
87. Trong Java, một ‘abstract method’ (phương thức trừu tượng) có đặc điểm gì?
A. Nó có một thân phương thức đầy đủ.
B. Nó được khai báo bằng từ khóa ‘final’.
C. Nó chỉ có chữ ký (signature) và không có thân phương thức; phải được triển khai bởi lớp con không trừu tượng.
D. Nó chỉ có thể được gọi từ bên trong lớp trừu tượng.
88. Trong Java, từ khóa ‘this’ được sử dụng để làm gì?
A. Tham chiếu đến lớp cha.
B. Tham chiếu đến đối tượng hiện tại.
C. Định nghĩa một hằng số.
D. Tạo một đối tượng mới.
89. Trong Java, từ khóa ‘super’ được sử dụng để làm gì?
A. Tham chiếu đến đối tượng hiện tại.
B. Tham chiếu đến lớp cha để gọi constructor hoặc phương thức của nó.
C. Định nghĩa một biến không thể thay đổi giá trị.
D. Tạo một đối tượng mới của cùng lớp.
90. Một lớp trong Java có thể kế thừa trực tiếp từ bao nhiêu lớp cha?
A. Một
B. Hai
C. Không giới hạn
D. Ba
91. Trong Pascal, nếu muốn thực hiện một khối lệnh nhiều lần nhưng không biết trước số lần lặp, cấu trúc nào là phù hợp nhất?
A. For…Do
B. If…Then
C. While…Do
D. Case…Of
92. Trong Pascal, làm thế nào để kết thúc một chương trình hoàn chỉnh?
A. Kết thúc bằng End;
B. Kết thúc bằng End.
C. Kết thúc bằng Program;
D. Kết thúc bằng Begin.
93. Phát biểu nào sau đây mô tả đúng nhất về cấu trúc ‘If…Then…Else’ trong Pascal?
A. Luôn thực hiện cả hai nhánh ‘Then’ và ‘Else’.
B. Chỉ thực hiện nhánh ‘Then’ nếu điều kiện đúng.
C. Thực hiện một trong hai nhánh ‘Then’ hoặc ‘Else’ tùy thuộc vào điều kiện.
D. Thực hiện nhánh ‘Else’ nếu điều kiện sai và bỏ qua nhánh ‘Then’.
94. Phát biểu nào sau đây mô tả đúng nhất về việc sử dụng toán tử ‘+’ trong Pascal?
A. Chỉ dùng để cộng hai số nguyên.
B. Dùng để cộng hai số hoặc nối hai chuỗi ký tự.
C. Chỉ dùng để nối hai chuỗi ký tự.
D. Dùng để so sánh hai giá trị.
95. Phát biểu nào sau đây mô tả đúng nhất về kiểu dữ liệu ‘Boolean’ trong Pascal?
A. Lưu trữ các ký tự alphabet.
B. Lưu trữ giá trị đúng hoặc sai.
C. Lưu trữ các số nguyên dương.
D. Lưu trữ các số có dấu phẩy động.
96. Phát biểu nào sau đây mô tả đúng nhất về cách khai báo một hằng số có giá trị là 3.14 trong Pascal?
A. VAR PI: Real = 3.14;
B. CONST PI = 3.14;
C. DEFINE PI: Real := 3.14;
D. PI: Real; PI := 3.14;
97. Phát biểu nào sau đây là đúng về khai báo hằng trong Pascal?
A. Hằng có thể thay đổi giá trị trong quá trình thực thi chương trình.
B. Hằng được khai báo trong phần ‘var’.
C. Hằng có giá trị cố định và không thay đổi.
D. Hằng không cần khai báo kiểu dữ liệu.
98. Trong Pascal, từ khóa nào dùng để bắt đầu một khối lệnh hoặc một chương trình?
A. End
B. Begin
C. Program
D. Procedure
99. Trong Pascal, khi nào câu lệnh trong cấu trúc ‘Repeat…Until’ được thực thi ít nhất một lần?
A. Khi điều kiện ‘Until’ là đúng.
B. Khi điều kiện ‘Until’ là sai.
C. Luôn luôn, vì câu lệnh nằm trước ‘Until’.
D. Chỉ khi điều kiện ‘Until’ được kiểm tra lần đầu.
100. Toán tử nào trong Pascal được dùng để thực hiện phép chia lấy phần dư?
101. Để đọc giá trị từ bàn phím vào một biến kiểu số thực trong Pascal, ta sử dụng thủ tục nào?
A. Write
B. Readln
C. Writeln
D. Read
102. Phát biểu nào sau đây là đúng về kiểu dữ liệu ‘Real’ trong Pascal?
A. Chỉ lưu trữ số nguyên.
B. Lưu trữ số thực, có thể có phần thập phân.
C. Lưu trữ ký tự.
D. Lưu trữ giá trị đúng/sai.
103. Phát biểu nào sau đây là đúng về việc sử dụng dấu hai chấm (:) trong Pascal?
A. Dấu hai chấm dùng để kết thúc câu lệnh.
B. Dấu hai chấm dùng để phân tách tên biến và kiểu dữ liệu.
C. Dấu hai chấm dùng để bắt đầu một khối lệnh.
D. Dấu hai chấm chỉ dùng trong khai báo hằng.
104. Để khai báo một biến có thể lưu trữ ký tự như ‘A’, ‘b’, ‘7’, ta sử dụng kiểu dữ liệu nào trong Pascal?
A. Integer
B. Real
C. Char
D. Boolean
105. Khi so sánh hai giá trị bằng nhau trong Pascal, ta sử dụng toán tử nào?
106. Để thực hiện phép chia lấy phần nguyên trong Pascal, ta sử dụng toán tử nào?
107. Trong cấu trúc lặp ‘While…Do’ của Pascal, điều kiện kiểm tra được thực hiện khi nào?
A. Sau mỗi lần lặp.
B. Trước mỗi lần lặp.
C. Chỉ khi vòng lặp kết thúc.
D. Không kiểm tra điều kiện.
108. Trong cấu trúc điều khiển lặp ‘For…Do’ của Pascal, biến đếm thường thuộc kiểu dữ liệu nào?
A. Real
B. String
C. Boolean
D. Integer
109. Trong Pascal, thủ tục ‘Read’ khác với ‘Readln’ ở điểm nào?
A. ‘Read’ đọc nhiều giá trị, ‘Readln’ chỉ đọc một giá trị.
B. ‘Read’ không xuống dòng sau khi đọc, ‘Readln’ có xuống dòng.
C. ‘Read’ chỉ đọc ký tự, ‘Readln’ đọc số.
D. ‘Read’ bắt buộc khai báo kiểu dữ liệu, ‘Readln’ thì không.
110. Phát biểu nào sau đây là đúng về việc sử dụng dấu chấm phẩy (;) trong Pascal?
A. Dấu chấm phẩy ngăn cách các khai báo.
B. Dấu chấm phẩy kết thúc một câu lệnh hoặc một khối 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.
111. Phát biểu nào sau đây là sai về cấu trúc lặp ‘For…Do’ trong Pascal?
A. Biến đếm có thể tăng hoặc giảm giá trị.
B. Số lần lặp thường được xác định trước.
C. Vòng lặp có thể không chạy lần nào nếu điều kiện ban đầu không thỏa mãn.
D. Biến đếm thuộc kiểu dữ liệu số nguyên hoặc ký tự.
112. Trong Pascal, để in một chuỗi ký tự ra màn hình kèm theo việc xuống dòng, ta sử dụng thủ tục nào?
A. Write
B. Readln
C. Writeln
D. Print
113. Trong Pascal, để khai báo một đoạn mã thực hiện một tác vụ cụ thể và có thể gọi lại nhiều lần, ta sử dụng khái niệm nào?
A. Biến
B. Hằng
C. Thủ tục (Procedure) hoặc Hàm (Function)
D. Kiểu dữ liệu
114. Phát biểu nào sau đây mô tả đúng nhất về cách khai báo một chương trình Pascal?
A. Bắt đầu bằng ‘VAR’ và kết thúc bằng ‘END;’.
B. Bắt đầu bằng ‘PROGRAM’ theo sau là tên chương trình và dấu chấm phẩy.
C. Bắt đầu bằng ‘BEGIN’ và kết thúc bằng ‘END.’.
D. Bắt đầu bằng tên chương trình và kết thúc bằng ‘END;’.
115. Trong Pascal, câu lệnh nào sau đây sẽ thực thi khối lệnh trong ‘THEN’ nếu biến ‘flag’ là True?
A. IF flag = FALSE THEN BEGIN … END;
B. IF flag = TRUE THEN BEGIN … END;
C. IF NOT flag THEN BEGIN … END;
D. IF flag THEN BEGIN … END;
116. Phát biểu nào sau đây mô tả đúng nhất về kiểu dữ liệu ‘String’ trong Pascal?
A. Lưu trữ một ký tự duy nhất.
B. Lưu trữ một dãy các ký tự.
C. Lưu trữ giá trị đúng/sai.
D. Lưu trữ số thực với độ chính xác cao.
117. Trong ngôn ngữ lập trình Pascal, từ khóa nào được sử dụng để khai báo một biến kiểu số nguyên?
A. Real
B. String
C. Integer
D. Boolean
118. Phát biểu nào sau đây là đúng về toán tử so sánh ” trong Pascal?
A. Kiểm tra xem hai giá trị có bằng nhau không.
B. Kiểm tra xem giá trị bên trái có nhỏ hơn giá trị bên phải không.
C. Kiểm tra xem hai giá trị có khác nhau không.
D. Kiểm tra xem giá trị bên trái có lớn hơn hoặc bằng giá trị bên phải không.
119. Trong Pascal, để thực hiện phép gán giá trị cho một biến, ta sử dụng ký hiệu nào?
120. Phát biểu nào sau đây mô tả đúng nhất về mục đích của phần khai báo trong một chương trình Pascal?
A. Chứa các câu lệnh thực thi logic của chương trình.
B. Nơi định nghĩa các biến, hằng, thủ tục và hàm sẽ sử dụng.
C. Chứa các comment giải thích mã.
D. Nơi bắt đầu và kết thúc chương trình.
121. Phân tích vai trò của các câu lệnh trong phần ‘IMPLEMENTATION’ của một Unit trong Pascal.
A. Phần ‘IMPLEMENTATION’ chứa các khai báo về các biến toàn cục và các hằng số được sử dụng trong toàn bộ chương trình. Kết luận Lý giải
B. Phần ‘IMPLEMENTATION’ chứa định nghĩa chi tiết của các thủ tục và hàm đã được khai báo trong phần ‘INTERFACE’ của Unit, cung cấp mã nguồn thực thi cho các chức năng đó. Kết luận Lý giải
C. Phần ‘IMPLEMENTATION’ chỉ chứa các câu lệnh để khai báo giao diện người dùng (UI) cho Unit. Kết luận Lý giải
D. Phần ‘IMPLEMENTATION’ là nơi để viết các comment và tài liệu hóa cho Unit, không chứa mã thực thi. Kết luận Lý giải
122. Phân tích cách xử lý lỗi truy cập ngoài phạm vi chỉ số của mảng trong Pascal và hậu quả tiềm ẩn.
A. Trình biên dịch Pascal sẽ tự động sửa lỗi bằng cách điều chỉnh chỉ số cho phù hợp, không gây ảnh hưởng. Kết luận Lý giải
B. Lỗi truy cập ngoài phạm vi chỉ số của mảng thường dẫn đến hành vi không xác định của chương trình, có thể gây tràn bộ nhớ, lỗi chương trình hoặc dữ liệu bị sai lệch nghiêm trọng. Kết luận Lý giải
C. Pascal sẽ dừng chương trình ngay lập tức với thông báo lỗi rõ ràng và không cho phép chạy tiếp. Kết luận Lý giải
D. Lỗi này chỉ xảy ra khi mảng rỗng, không ảnh hưởng đến mảng có dữ liệu. Kết luận Lý giải
123. Phân tích sự khác biệt cơ bản giữa kiểu dữ liệu ‘INTEGER’ và ‘REAL’ trong Pascal về phạm vi giá trị và cách biểu diễn số.
A. ‘INTEGER’ lưu trữ số nguyên trong một phạm vi nhất định, còn ‘REAL’ lưu trữ số thực với phần thập phân, có thể biểu diễn cả số nguyên và số thực. Kết luận Lý giải
B. ‘INTEGER’ có thể lưu trữ cả số nguyên và số thực, còn ‘REAL’ chỉ lưu trữ số nguyên. Kết luận Lý giải
C. ‘INTEGER’ có phạm vi giá trị lớn hơn ‘REAL’, cho phép lưu trữ các số rất lớn. Kết luận Lý giải
D. ‘INTEGER’ và ‘REAL’ đều có phạm vi giá trị và cách biểu diễn số giống hệt nhau, sự khác biệt chỉ là tên gọi. Kết luận Lý giải
124. Khi cần thực hiện một chuỗi các hành động chỉ khi một điều kiện là đúng, và sau đó có thể thực hiện một chuỗi hành động khác nếu điều kiện là sai, cấu trúc điều khiển nào của Pascal là phù hợp nhất?
A. Cấu trúc ‘IF…THEN’. Kết luận Lý giải
B. Cấu trúc ‘IF…THEN…ELSE’. Kết luận Lý giải
C. Cấu trúc ‘WHILE…DO’. Kết luận Lý giải
D. Cấu trúc ‘CASE…OF’. Kết luận Lý giải
125. Trong Pascal, khi sử dụng câu lệnh ‘IF…THEN…ELSE’, điều gì xảy ra nếu điều kiện trong ‘IF’ là đúng và điều gì xảy ra nếu điều kiện là sai?
A. Nếu điều kiện đúng, câu lệnh sau ‘THEN’ sẽ thực thi. Nếu điều kiện sai, câu lệnh sau ‘ELSE’ sẽ thực thi. Kết luận Lý giải
B. Nếu điều kiện đúng, câu lệnh sau ‘ELSE’ sẽ thực thi. Nếu điều kiện sai, câu lệnh sau ‘THEN’ sẽ thực thi. Kết luận Lý giải
C. Nếu điều kiện đúng, cả hai câu lệnh sau ‘THEN’ và ‘ELSE’ đều thực thi. Nếu điều kiện sai, không có câu lệnh nào thực thi. Kết luận Lý giải
D. Nếu điều kiện đúng, câu lệnh sau ‘THEN’ sẽ thực thi. Nếu điều kiện sai, không có câu lệnh nào được thực thi (bỏ qua phần ‘ELSE’). Kết luận Lý giải
126. Trong Pascal, khi khai báo một biến kiểu ‘CHAR’, nó có thể lưu trữ những loại ký tự nào?
A. Chỉ các chữ cái in hoa (A-Z). Kết luận Lý giải
B. Chỉ các chữ cái in thường (a-z). Kết luận Lý giải
C. Bất kỳ một ký tự đơn nào, bao gồm chữ cái (hoa/thường), chữ số, ký hiệu đặc biệt và khoảng trắng. Kết luận Lý giải
D. Chỉ các chữ số (0-9). Kết luận Lý giải
127. Phân tích vai trò của câu lệnh ‘BEGIN…END’ trong Pascal khi nhóm các câu lệnh lại thành một khối. Khi nào thì việc sử dụng ‘BEGIN…END’ là bắt buộc?
A. ‘BEGIN…END’ dùng để định nghĩa một hàm hoặc thủ tục mới, và nó luôn luôn là bắt buộc. Kết luận Lý giải
B. ‘BEGIN…END’ dùng để nhóm các câu lệnh lại thành một khối logic, và nó bắt buộc phải sử dụng khi có nhiều hơn một câu lệnh trong cấu trúc điều kiện (IF, CASE) hoặc cấu trúc lặp (FOR, WHILE, REPEAT). Kết luận Lý giải
C. ‘BEGIN…END’ chỉ dùng để kết thúc chương trình, không có vai trò nhóm lệnh. Kết luận Lý giải
D. ‘BEGIN…END’ dùng để khai báo biến, tương tự như từ khóa ‘VAR’. Kết luận Lý giải
128. Phân tích vai trò của câu lệnh ‘WITH…DO’ trong Pascal và trường hợp sử dụng điển hình của nó.
A. ‘WITH…DO’ dùng để tạo một vòng lặp vô hạn. Kết luận Lý giải
B. ‘WITH…DO’ dùng để khai báo các biến có kiểu dữ liệu phức tạp, giúp truy cập các trường của bản ghi (record) hoặc phần tử của đối tượng một cách ngắn gọn hơn. Kết luận Lý giải
C. ‘WITH…DO’ dùng để định nghĩa lại các toán tử trong Pascal. Kết luận Lý giải
D. ‘WITH…DO’ dùng để khai báo hằng số. Kết luận Lý giải
129. Trong Pascal, khi khai báo một thủ tục (PROCEDURE) với các tham số truyền vào, việc sử dụng từ khóa ‘VAR’ trước tên tham số có ý nghĩa gì đặc biệt so với việc không dùng ‘VAR’?
A. Việc dùng ‘VAR’ cho phép thủ tục thay đổi giá trị của biến gốc được truyền vào. Kết luận Lý giải
B. Việc dùng ‘VAR’ chỉ đơn thuần là quy ước đặt tên, không ảnh hưởng đến cách truyền tham số. Kết luận Lý giải
C. Việc dùng ‘VAR’ làm cho việc truyền tham số diễn ra chậm hơn, vì phải sao chép toàn bộ giá trị. Kết luận Lý giải
D. Việc dùng ‘VAR’ chỉ áp dụng cho các biến có kiểu dữ liệu ‘REAL’, không áp dụng cho ‘INTEGER’. Kết luận Lý giải
130. Trong Pascal, khi khai báo một biến kiểu ‘BOOLEAN’, nó có thể nhận những giá trị nào?
A. Các số nguyên từ 0 đến 255. Kết luận Lý giải
B. Chỉ nhận hai giá trị là ‘TRUE’ (đúng) hoặc ‘FALSE’ (sai). Kết luận Lý giải
C. Bất kỳ ký tự nào. Kết luận Lý giải
D. Một chuỗi ký tự bất kỳ. Kết luận Lý giải
131. Trong Pascal, khi bạn muốn một chương trình thực hiện một khối lệnh chỉ khi một điều kiện cụ thể là đúng, bạn sẽ sử dụng cấu trúc điều khiển nào?
A. Cấu trúc ‘WHILE…DO’. Kết luận Lý giải
B. Cấu trúc ‘REPEAT…UNTIL’. Kết luận Lý giải
C. Cấu trúc ‘IF…THEN’. Kết luận Lý giải
D. Cấu trúc ‘CASE…OF’. Kết luận Lý giải
132. Trong Pascal, khi làm việc với chuỗi ký tự (STRING), thao tác nào sau đây cho phép truy cập và thay đổi một ký tự cụ thể trong chuỗi?
A. Sử dụng toán tử ‘+’, ví dụ: Chuoi := Chuoi + ‘A’. Kết luận Lý giải
B. Sử dụng chỉ số của ký tự trong chuỗi, ví dụ: Chuoi[vi_tri] := ‘B’. Kết luận Lý giải
C. Sử dụng hàm ‘DELETE’, ví dụ: Chuoi := DELETE(Chuoi, vi_tri, 1). Kết luận Lý giải
D. Sử dụng hàm ‘COPY’, ví dụ: Chuoi := COPY(Chuoi, vi_tri, 1). Kết luận Lý giải
133. Phân tích cách thức hoạt động của vòng lặp ‘REPEAT…UNTIL’ trong Pascal, đặc biệt là vai trò của từ khóa ‘UNTIL’.
A. Vòng lặp thực thi các câu lệnh từ ‘REPEAT’ đến ‘UNTIL’ cho đến khi điều kiện sau ‘UNTIL’ là sai. Kết luận Lý giải
B. Vòng lặp thực thi các câu lệnh từ ‘REPEAT’ đến ‘UNTIL’ cho đến khi điều kiện sau ‘UNTIL’ là đúng. Kết luận Lý giải
C. Vòng lặp chỉ thực thi đúng một lần, bất kể điều kiện sau ‘UNTIL’ là gì. Kết luận Lý giải
D. Từ khóa ‘UNTIL’ dùng để thoát khỏi vòng lặp ngay lập tức, không liên quan đến điều kiện. Kết luận Lý giải
134. Phân tích vai trò của phần ‘INTERFACE’ trong một Unit của Pascal.
A. Phần ‘INTERFACE’ chứa định nghĩa chi tiết của tất cả các thủ tục và hàm, là mã nguồn thực thi. Kết luận Lý giải
B. Phần ‘INTERFACE’ chỉ chứa các khai báo về các thủ tục, hàm, biến, hằng số và kiểu dữ liệu mà Unit này cung cấp cho các Unit hoặc chương trình khác sử dụng, định nghĩa ‘giao diện’ tương tác. Kết luận Lý giải
C. Phần ‘INTERFACE’ dùng để khai báo các biến cục bộ chỉ sử dụng trong Unit. Kết luận Lý giải
D. Phần ‘INTERFACE’ là nơi duy nhất để viết các câu lệnh thực thi chính của chương trình. Kết luận Lý giải
135. Phân tích sự khác biệt giữa việc khai báo biến cục bộ (local) bên trong một thủ tục/hàm và biến toàn cục (global) bên ngoài tất cả các khối lệnh trong Pascal.
A. Biến cục bộ chỉ có thể được sử dụng bên trong thủ tục/hàm khai báo nó, còn biến toàn cục có thể truy cập từ bất kỳ đâu trong chương trình. Kết luận Lý giải
B. Biến toàn cục chỉ có thể được sử dụng bên trong thủ tục/hàm khai báo nó, còn biến cục bộ có thể truy cập từ bất kỳ đâu. Kết luận Lý giải
C. Cả biến cục bộ và biến toàn cục đều có thể truy cập từ bất kỳ đâu trong chương trình. Kết luận Lý giải
D. Biến cục bộ có phạm vi sử dụng lớn hơn biến toàn cục. Kết luận Lý giải
136. Trong lập trình Pascal, làm thế nào để có thể thực hiện một hành động lặp lại một số lần không xác định trước, mà chỉ dừng lại khi một điều kiện cụ thể được thỏa mãn?
A. Sử dụng cấu trúc ‘FOR…DO’ với một biến đếm lớn, hy vọng nó sẽ dừng lại trước khi đạt đến giới hạn. Kết luận Lý giải
B. Sử dụng cấu trúc ‘WHILE…DO’ hoặc ‘REPEAT…UNTIL’, với điều kiện dừng được kiểm tra trước hoặc sau mỗi lần lặp. Kết luận Lý giải
C. Sử dụng cấu trúc ‘CASE…OF’ để kiểm tra điều kiện lặp. Kết luận Lý giải
D. Không thể thực hiện lặp lại với số lần không xác định trước trong Pascal. Kết luận Lý giải
137. Tại sao việc sử dụng tên biến có ý nghĩa và tuân thủ quy ước đặt tên lại quan trọng trong lập trình Pascal, ngay cả khi chương trình vẫn chạy đúng với tên biến không rõ ràng?
A. Tên biến có ý nghĩa giúp chương trình chạy nhanh hơn vì trình biên dịch hiểu rõ hơn mục đích của biến. Kết luận Lý giải
B. Tên biến có ý nghĩa và quy ước giúp tăng khả năng đọc hiểu, bảo trì và gỡ lỗi chương trình cho chính người lập trình và những người khác trong tương lai. Kết luận Lý giải
C. Tên biến có ý nghĩa giúp tránh xung đột với các từ khóa của ngôn ngữ lập trình Pascal. Kết luận Lý giải
D. Tên biến có ý nghĩa là yêu cầu bắt buộc của trình biên dịch, nếu không tuân thủ chương trình sẽ không thể biên dịch được. Kết luận Lý giải
138. Tại sao việc sử dụng các hằng số (constants) được khai báo rõ ràng trong Pascal lại được khuyến khích hơn là nhúng trực tiếp các giá trị số vào mã nguồn?
A. Sử dụng hằng số giúp chương trình chạy nhanh hơn vì trình biên dịch nhận diện chúng dễ dàng hơn. Kết luận Lý giải
B. Việc sử dụng hằng số giúp mã nguồn dễ đọc, dễ bảo trì và dễ thay đổi giá trị. Khi cần thay đổi một giá trị được sử dụng nhiều lần, chỉ cần sửa ở một nơi duy nhất là phần khai báo hằng. Kết luận Lý giải
C. Sử dụng hằng số là yêu cầu bắt buộc để chương trình có thể biên dịch. Kết luận Lý giải
D. Hằng số chỉ dùng để định nghĩa tên của các kiểu dữ liệu. Kết luận Lý giải
139. Khi khai báo một mảng trong Pascal với phạm vi chỉ số là ‘1..100’, điều này có nghĩa là gì về số lượng phần tử và cách truy cập chúng?
A. Mảng có 100 phần tử, được đánh chỉ số từ 0 đến 99. Kết luận Lý giải
B. Mảng có 100 phần tử, được đánh chỉ số từ 1 đến 100. Kết luận Lý giải
C. Mảng có 101 phần tử, được đánh chỉ số từ 1 đến 100. Kết luận Lý giải
D. Mảng có 99 phần tử, được đánh chỉ số từ 1 đến 99. Kết luận Lý giải
140. Phân tích ý nghĩa của việc sử dụng kiểu dữ liệu mảng (ARRAY) trong Pascal để lưu trữ một tập hợp các giá trị cùng kiểu.
A. Mảng cho phép lưu trữ các giá trị thuộc nhiều kiểu dữ liệu khác nhau trong cùng một cấu trúc. Kết luận Lý giải
B. Mảng cho phép truy cập từng phần tử dữ liệu một cách hiệu quả thông qua chỉ số, giúp tổ chức và xử lý dữ liệu có cấu trúc một cách thuận tiện. Kết luận Lý giải
C. Mảng chỉ có thể lưu trữ một giá trị duy nhất, không thể lưu trữ tập hợp. Kết luận Lý giải
D. Mảng không cần khai báo kích thước, nó tự động thay đổi theo số lượng dữ liệu. Kết luận Lý giải
141. Trong ngôn ngữ lập trình Pascal, khai báo biến với từ khóa ‘VAR’ có ý nghĩa gì và tại sao nó lại quan trọng trong cấu trúc chương trình?
A. Khai báo ‘VAR’ dùng để định nghĩa các hàm và thủ tục, giúp tổ chức mã nguồn một cách logic. Kết luận Lý giải
B. Khai báo ‘VAR’ dùng để định nghĩa kiểu dữ liệu mới, cho phép người dùng tự tạo các cấu trúc dữ liệu phức tạp. Kết luận Lý giải
C. Khai báo ‘VAR’ dùng để khai báo các biến, chỉ rõ tên biến và kiểu dữ liệu mà biến đó sẽ lưu trữ, giúp trình biên dịch kiểm tra và cấp phát bộ nhớ. Kết luận Lý giải
D. Khai báo ‘VAR’ dùng để khai báo hằng số, định nghĩa các giá trị không thay đổi trong suốt quá trình thực thi chương trình. Kết luận Lý giải
142. Trong Pascal, làm thế nào để kết hợp nhiều điều kiện logic (ví dụ: điều kiện A VÀ điều kiện B) để đưa ra quyết định trong câu lệnh ‘IF’?
A. Sử dụng từ khóa ‘OR’ để kết hợp hai điều kiện. Kết luận Lý giải
B. Sử dụng từ khóa ‘AND’ để kết hợp hai điều kiện. Kết luận Lý giải
C. Sử dụng từ khóa ‘NOT’ để kết hợp hai điều kiện. Kết luận Lý giải
D. Không thể kết hợp nhiều điều kiện trong một câu lệnh ‘IF’. Kết luận Lý giải
143. Trong Pascal, khi khai báo một biến mảng có kích thước lớn, ví dụ 1000 phần tử, điều này có thể dẫn đến vấn đề gì về hiệu năng hoặc quản lý bộ nhớ?
A. Việc khai báo mảng lớn có thể làm chậm quá trình biên dịch nhưng không ảnh hưởng đến hiệu năng khi chạy. Kết luận Lý giải
B. Việc khai báo mảng lớn có thể tiêu tốn một lượng lớn bộ nhớ RAM ngay cả khi không sử dụng hết các phần tử, tiềm ẩn nguy cơ tràn bộ nhớ hoặc làm chậm hệ thống. Kết luận Lý giải
C. Pascal tự động điều chỉnh kích thước mảng để phù hợp với bộ nhớ trống, nên không có vấn đề gì. Kết luận Lý giải
D. Chỉ những mảng có kích thước trên 1 triệu phần tử mới gây ra vấn đề về bộ nhớ. Kết luận Lý giải
144. Phân tích sự khác biệt giữa ‘WHILE…DO’ và ‘REPEAT…UNTIL’ về thời điểm kiểm tra điều kiện và đảm bảo vòng lặp thực thi ít nhất một lần.
A. ‘WHILE…DO’ kiểm tra điều kiện trước khi thực thi khối lệnh, có thể không thực thi lần nào nếu điều kiện ban đầu sai. ‘REPEAT…UNTIL’ kiểm tra điều kiện sau khi thực thi khối lệnh, đảm bảo khối lệnh thực thi ít nhất một lần. Kết luận Lý giải
B. ‘WHILE…DO’ kiểm tra điều kiện sau khi thực thi khối lệnh, còn ‘REPEAT…UNTIL’ kiểm tra trước. Kết luận Lý giải
C. Cả ‘WHILE…DO’ và ‘REPEAT…UNTIL’ đều kiểm tra điều kiện trước khi thực thi khối lệnh. Kết luận Lý giải
D. ‘WHILE…DO’ và ‘REPEAT…UNTIL’ có cách kiểm tra điều kiện giống nhau và đều đảm bảo thực thi ít nhất một lần. Kết luận Lý giải
145. Khi làm việc với mảng trong Pascal, việc khai báo kích thước của mảng là bắt buộc. Tại sao việc xác định rõ ràng kích thước (số lượng phần tử tối đa) của mảng lại quan trọng?
A. Việc xác định kích thước mảng giúp tăng tốc độ truy cập dữ liệu, vì trình biên dịch có thể tính toán trước địa chỉ bộ nhớ của từng phần tử. Kết luận Lý giải
B. Việc xác định kích thước mảng giúp trình biên dịch kiểm tra lỗi truy cập ngoài phạm vi mảng, ngăn chặn việc ghi đè lên các vùng nhớ khác, đảm bảo tính toàn vẹn của dữ liệu. Kết luận Lý giải
C. Việc xác định kích thước mảng chỉ mang tính chất tùy chọn, giúp chương trình trở nên dễ đọc hơn nhưng không ảnh hưởng đến hoạt động. Kết luận Lý giải
D. Việc xác định kích thước mảng giúp giảm dung lượng bộ nhớ sử dụng, chỉ cấp phát đúng số lượng phần tử cần thiết. Kết luận Lý giải
146. Tại sao trong Pascal, khi gọi một hàm (FUNCTION) và sử dụng giá trị trả về của nó, chúng ta thường gán kết quả đó cho một biến hoặc sử dụng trực tiếp trong một biểu thức?
A. Vì hàm trong Pascal chỉ có thể trả về một giá trị duy nhất, và giá trị này cần được lưu trữ hoặc sử dụng ngay lập tức. Kết luận Lý giải
B. Việc gán hoặc sử dụng kết quả của hàm là bắt buộc theo cú pháp, nếu không chương trình sẽ báo lỗi. Kết luận Lý giải
C. Hàm trong Pascal không thực sự trả về giá trị, mà chỉ thực hiện một hành động và việc gán kết quả chỉ là hình thức. Kết luận Lý giải
D. Việc gán hoặc sử dụng kết quả của hàm là tùy chọn, có thể bỏ qua nếu không cần thiết. Kết luận Lý giải
147. Trong Pascal, khi một thủ tục (PROCEDURE) không nhận tham số hoặc không trả về giá trị, nó được xem như là một loại lệnh độc lập. Điều này có ý nghĩa gì đối với cấu trúc chương trình?
A. Nó chỉ có thể được gọi một lần duy nhất trong toàn bộ chương trình. Kết luận Lý giải
B. Nó giúp chia nhỏ chương trình thành các khối chức năng độc lập, dễ quản lý, tái sử dụng và đọc hiểu hơn. Kết luận Lý giải
C. Nó chỉ có thể được sử dụng trong phần khai báo biến của chương trình. Kết luận Lý giải
D. Nó bắt buộc phải có ít nhất một tham số, ngay cả khi không sử dụng. Kết luận Lý giải
148. Trong Pascal, cấu trúc ‘CASE…OF’ được sử dụng để làm gì và nó có ưu điểm gì khi so sánh với việc sử dụng nhiều câu lệnh ‘IF…THEN…ELSE’ lồng nhau để kiểm tra nhiều trường hợp của cùng một biến?
A. ‘CASE…OF’ cho phép thực hiện nhiều hành động khác nhau dựa trên các giá trị khác nhau của một biến hoặc biểu thức, giúp mã nguồn trở nên gọn gàng, dễ đọc và hiệu quả hơn so với chuỗi ‘IF…THEN…ELSE’ lồng nhau. Kết luận Lý giải
B. ‘CASE…OF’ chỉ dùng để kiểm tra hai trường hợp, tương đương với một câu lệnh ‘IF…THEN…ELSE’ đơn giản. Kết luận Lý giải
C. ‘CASE…OF’ dùng để lặp lại một khối lệnh nhiều lần, tương tự như cấu trúc ‘FOR…DO’. Kết luận Lý giải
D. ‘CASE…OF’ có ưu điểm là xử lý tất cả các trường hợp có thể xảy ra của biến, không cần quan tâm đến trường hợp ‘OTHERWISE’ (nếu có). Kết luận Lý giải
149. Trong Pascal, cấu trúc lặp ‘FOR…DO’ thường được sử dụng khi nào và nó có những ưu điểm gì so với các cấu trúc lặp khác (như WHILE…DO) trong trường hợp này?
A. ‘FOR…DO’ được sử dụng khi số lần lặp đã biết trước hoặc có thể xác định được dựa trên một phạm vi giá trị, giúp mã nguồn ngắn gọn và dễ đọc hơn so với việc tự quản lý biến đếm. Kết luận Lý giải
B. ‘FOR…DO’ phù hợp khi điều kiện lặp phụ thuộc vào một giá trị thay đổi ngẫu nhiên trong quá trình thực thi, không thể xác định trước. Kết luận Lý giải
C. ‘FOR…DO’ chỉ dùng để lặp với số lần cố định là 100 lần, không thể thay đổi. Kết luận Lý giải
D. ‘FOR…DO’ có ưu điểm là luôn đảm bảo chương trình kết thúc, không bao giờ rơi vào vòng lặp vô hạn. Kết luận Lý giải
150. Trong Pascal, khi cần thực hiện một tác vụ nhiều lần với các giá trị tăng dần hoặc giảm dần theo một quy luật cố định, cấu trúc lặp nào là phù hợp nhất và tại sao?
A. Cấu trúc ‘WHILE…DO’ vì nó linh hoạt với mọi điều kiện. Kết luận Lý giải
B. Cấu trúc ‘REPEAT…UNTIL’ vì nó đảm bảo thực thi ít nhất một lần. Kết luận Lý giải
C. Cấu trúc ‘FOR…DO’ vì nó được thiết kế để lặp với số lần xác định trước hoặc theo một phạm vi có quy luật, quản lý biến đếm tự động. Kết luận Lý giải
D. Cấu trúc ‘CASE…OF’ vì nó có thể lặp lại các trường hợp. Kết luận Lý giải