1. Việc sử dụng biến toàn cục một cách bừa bãi có thể dẫn đến hậu quả gì?
A. Chương trình chạy nhanh hơn.
B. Mã nguồn dễ đọc và dễ tái sử dụng.
C. Khó khăn trong việc theo dõi và sửa lỗi, tăng nguy cơ xung đột tên biến.
D. Tăng cường tính đóng gói của dữ liệu.
2. Phạm vi hàm (function scope) áp dụng cho loại biến nào?
A. Chỉ các biến được khai báo bên ngoài mọi hàm.
B. Các biến được khai báo bên trong hàm, bao gồm cả tham số.
C. Các biến được khai báo trong vòng lặp for.
D. Các biến toàn cục được truy cập từ bên trong hàm.
3. Biến toàn cục (global variable) có đặc điểm gì?
A. Chỉ có thể truy cập được bên trong hàm mà nó được khai báo.
B. Có thể truy cập được từ bất kỳ đâu trong chương trình.
C. Tự động bị hủy khi ra khỏi khối lệnh mà nó được khai báo.
D. Chỉ tồn tại trong thời gian thực thi một vòng lặp.
4. Biến được khai báo bên trong một khối lệnh (ví dụ: bên trong một hàm hoặc vòng lặp) thường có phạm vi là gì?
A. Phạm vi toàn cục (global scope).
B. Phạm vi khối (block scope).
C. Phạm vi cục bộ (local scope) chỉ trong hàm chứa nó.
D. Phạm vi chương trình (program scope).
5. Phạm vi của một tham số hàm (function parameter) là gì?
A. Phạm vi toàn cục.
B. Phạm vi khối của hàm gọi nó.
C. Phạm vi cục bộ, giới hạn trong hàm mà nó là tham số.
D. Phạm vi lớp.
6. Biến được khai báo bên ngoài tất cả các hàm và lớp trong một tệp tin chương trình thường có phạm vi là gì?
A. Phạm vi cục bộ (local scope).
B. Phạm vi khối (block scope).
C. Phạm vi toàn cục (global scope) cho tệp tin đó.
D. Phạm vi hàm (function scope).
7. Khái niệm phạm vi nhúng (nested scope) đề cập đến trường hợp nào?
A. Khi hai biến có cùng tên trong cùng một phạm vi.
B. Khi một phạm vi biến nằm hoàn toàn bên trong một phạm vi biến khác.
C. Khi một biến có thể truy cập được từ mọi nơi trong chương trình.
D. Khi một biến chỉ tồn tại trong một khối lệnh đơn giản.
8. Trong kịch bản nào, việc sử dụng biến cục bộ là tốt hơn biến toàn cục?
A. Khi giá trị của biến cần được truy cập từ mọi nơi.
B. Khi biến chỉ cần thiết cho một hàm hoặc một khối lệnh cụ thể.
C. Khi muốn giảm thiểu số lượng biến trong chương trình.
D. Khi biến cần được chia sẻ giữa nhiều module độc lập.
9. Phạm vi của biến là một thuộc tính nội tại của biến, không phụ thuộc vào:
A. Nơi biến được khai báo.
B. Tên của biến.
C. Kiểu dữ liệu của biến.
D. Giá trị hiện tại của biến.
10. Phạm vi của biến là một khái niệm quan trọng để:
A. Quyết định tốc độ xử lý của thuật toán.
B. Đảm bảo tính bảo mật của dữ liệu.
C. Xác định vòng đời và khả năng truy cập của biến.
D. Tự động hóa quá trình biên dịch mã.
11. Khi một biến được khai báo ở phạm vi toàn cục, nó có thể bị thay đổi giá trị bởi?
A. Chỉ bởi hàm main.
B. Chỉ bởi các hàm được khai báo cùng cấp với nó.
C. Bất kỳ hàm hoặc khối lệnh nào trong chương trình.
D. Chỉ bởi các biến cục bộ khác.
12. Trong các ngôn ngữ có hỗ trợ phạm vi khối (block scope), biến được khai báo bằng let (ví dụ trong JavaScript) có phạm vi như thế nào?
A. Phạm vi toàn cục, có thể truy cập từ mọi nơi.
B. Phạm vi hàm, chỉ có thể truy cập trong hàm chứa nó.
C. Phạm vi khối, chỉ có thể truy cập trong khối lệnh mà nó được khai báo.
D. Phạm vi module, chỉ có thể truy cập trong tệp tin mà nó được khai báo.
13. Trong các ngôn ngữ lập trình hiện đại, phạm vi lớp (class scope) cho phép các thuộc tính (biến thành viên) của lớp có thể truy cập?
A. Chỉ từ bên ngoài lớp thông qua tên lớp.
B. Từ bất kỳ đâu trong chương trình, giống biến toàn cục.
C. Từ bên trong các phương thức của lớp đó.
D. Chỉ từ các lớp kế thừa từ lớp đó.
14. Biến nào sau đây thường có tuổi đời (lifetime) dài nhất trong một chương trình máy tính?
A. Biến cục bộ được khai báo trong một hàm.
B. Biến toàn cục được khai báo ở đầu chương trình.
C. Biến tạm thời trong một vòng lặp.
D. Tham số của một hàm.
15. Đâu là một ví dụ về biến có phạm vi khối (block scope)?
A. Biến được khai báo bằng int x; trong hàm C++.
B. Biến được khai báo bằng var x; ở cấp cao nhất của tệp JavaScript.
C. Biến được khai báo bằng let x; bên trong dấu ngoặc nhọn {} của một câu lệnh if trong JavaScript.
D. Biến toàn cục trong Python.
16. Trong một số ngôn ngữ lập trình, biến được khai báo mà không có từ khóa phạm vi rõ ràng (ví dụ: khai báo trực tiếp trong một số ngữ cảnh) có thể mặc định có phạm vi nào?
A. Phạm vi khối.
B. Phạm vi toàn cục.
C. Phạm vi cục bộ.
D. Phạm vi lớp.
17. Trong lập trình hướng đối tượng, phạm vi của biến thành viên (member variable) của một lớp có thể được điều chỉnh bằng các từ khóa như public, private, protected. Điều này liên quan đến:
A. Chỉ thời gian tồn tại của biến.
B. Mức độ truy cập từ các phần khác nhau của chương trình.
C. Kiểu dữ liệu của biến.
D. Tên gọi duy nhất của biến.
18. Trong lập trình, khái niệm phạm vi của biến (scope) liên quan đến điều gì?
A. Vùng trong chương trình mà tại đó biến có thể được truy cập hoặc sử dụng.
B. Thời gian tồn tại của biến từ lúc khai báo đến khi kết thúc chương trình.
C. Kích thước bộ nhớ mà biến chiếm dụng.
D. Kiểu dữ liệu mà biến có thể lưu trữ.
19. Biến được khai báo bên trong một hàm, nhưng không phải là tham số của hàm đó, thì có phạm vi như thế nào?
A. Phạm vi toàn cục.
B. Phạm vi khối.
C. Phạm vi cục bộ (local) chỉ trong hàm đó.
D. Phạm vi lớp.
20. Một biến có phạm vi là phạm vi module (module scope) có nghĩa là gì?
A. Biến đó chỉ có thể truy cập được bên trong một lớp.
B. Biến đó có thể truy cập được từ mọi nơi trong toàn bộ dự án.
C. Biến đó chỉ có thể truy cập được trong tệp tin (module) mà nó được khai báo.
D. Biến đó chỉ tồn tại trong thời gian một hàm được gọi.
21. Nếu một biến được khai báo bên trong một lớp nhưng không có từ khóa truy cập cụ thể (như public, private), nó thường mặc định có phạm vi như thế nào?
A. Phạm vi toàn cục.
B. Phạm vi khối.
C. Phạm vi cục bộ.
D. Phạm vi lớp (thường là private hoặc protected tùy ngôn ngữ).
22. Tại sao việc quản lý phạm vi của biến lại quan trọng trong lập trình?
A. Để tăng tốc độ thực thi chương trình.
B. Để tránh xung đột tên biến và giúp quản lý mã nguồn dễ dàng hơn.
C. Để giảm dung lượng bộ nhớ sử dụng.
D. Để bắt buộc người dùng nhập đúng giá trị cho biến.
23. Khi một biến được khai báo trong một vòng lặp for bằng cách sử dụng từ khóa let trong các ngôn ngữ hỗ trợ phạm vi khối, biến đó sẽ:
A. Tồn tại và có thể truy cập sau khi vòng lặp kết thúc.
B. Chỉ tồn tại và có thể truy cập bên trong mỗi lần lặp của vòng lặp.
C. Trở thành biến toàn cục.
D. Bị hủy ngay khi vòng lặp bắt đầu.
24. Khi so sánh phạm vi của biến var và let trong JavaScript, let có đặc điểm khác biệt rõ rệt là gì?
A. var có phạm vi toàn cục, còn let có phạm vi hàm.
B. var có phạm vi hàm, còn let có phạm vi khối.
C. var có phạm vi khối, còn let có phạm vi toàn cục.
D. var và let đều có phạm vi khối giống nhau.
25. Khi một biến cục bộ (local variable) có cùng tên với biến toàn cục, điều gì thường xảy ra bên trong phạm vi của biến cục bộ?
A. Biến toàn cục bị ghi đè vĩnh viễn.
B. Biến cục bộ sẽ được ưu tiên truy cập.
C. Chương trình sẽ báo lỗi.
D. Cả hai biến cùng tồn tại và có thể truy cập đồng thời.