NEW
Font size
S
M
L
XL
WorksheetsCTDL10
Total questions: 45
Worksheet time: 23mins
Name
Class
Date
1.
Cấu trúc dữ liệu là gì?
a)
Cách tổ chức và lưu trữ dữ liệu trong máy tính
b)
Một loại ngôn ngữ lập trình
c)
Một chương trình hoàn chỉnh
d)
Một thiết bị phần cứng
2.
Ví dụ nào sau đây là cấu trúc dữ liệu tuyến tính?
a)
Cây (tree)
b)
Đồ thị (graph)
c)
Mảng một chiều
d)
Bảng băm (hash table)
3.
Mảng (array) là gì?
a)
Tập hợp các phần tử cùng kiểu, được đánh số thứ tự
b)
Tập hợp các phần tử khác kiểu, không có thứ tự
c)
Một hàm dùng để tính toán
d)
Một kiểu dữ liệu do người dùng tự định nghĩa
4.
Với mảng một chiều có n phần tử, chỉ số hợp lệ của phần tử trong C++/Python là:
a)
1 đến n
b)
0 đến n
c)
0 đến n-1
d)
1 đến n-1
5.
Kiểu dữ liệu nào phù hợp nhất để lưu điểm kiểm tra của học sinh?
a)
int (số nguyên)
b)
float/double (số thực)
c)
string (chuỗi)
d)
bool (đúng/sai)
6.
Đặc điểm chính của mảng so với danh sách liên kết là:
a)
Kích thước mảng có thể thay đổi linh hoạt
b)
Kích thước mảng cố định sau khi khai báo
c)
Mảng không thể chứa số nguyên
d)
Mảng không lưu được nhiều phần tử
7.
Trong C++ và Python, phần tử đầu tiên của mảng/list có chỉ số là:
a)
0
b)
1
c)
-1
d)
Tùy ngôn ngữ
8.
Cấu trúc dữ liệu nào tuân theo nguyên tắc LIFO (Last In First Out)?
a)
Hàng đợi (queue)
b)
Ngăn xếp (stack)
c)
Mảng (array)
d)
Danh sách liên kết (linked list)
9.
Cấu trúc dữ liệu nào tuân theo nguyên tắc FIFO (First In First Out)?
a)
Ngăn xếp (stack)
b)
Hàng đợi (queue)
c)
Danh sách liên kết
d)
Cây nhị phân
10.
Ứng dụng phù hợp của ngăn xếp (stack) là:
a)
Lưu trữ danh sách học sinh trong lớp
b)
Quản lý hàng chờ mua vé xem phim
c)
Kiểm tra cặp dấu ngoặc trong biểu thức
d)
Tìm đường đi ngắn nhất trên bản đồ
11.
Thuật toán là gì?
a)
Một đoạn chương trình cụ thể
b)
Tập hợp hữu hạn các bước giải quyết một bài toán
c)
Một kiểu dữ liệu trong C++
d)
Tên gọi khác của ngôn ngữ lập trình
12.
Thuộc tính nào sau đây KHÔNG phải là tính chất của thuật toán?
a)
Tính hữu hạn (phải dừng)
b)
Tính xác định (rõ ràng)
c)
Tính hiệu quả
d)
Phải luôn chạy vô hạn
13.
Bước đầu tiên khi xây dựng thuật toán là:
a)
Viết mã chương trình ngay
b)
Phân tích và hiểu rõ đề bài
c)
Chọn ngôn ngữ lập trình
d)
Tối ưu độ phức tạp
14.
Biểu diễn nào sau đây thường dùng để mô tả thuật toán?
a)
Lưu đồ (flowchart)
b)
Bảng chân trị
c)
Sơ đồ mạch điện
d)
Bảng điểm môn học
15.
Độ phức tạp thời gian của thuật toán thường được ký hiệu bằng:
a)
P(n)
b)
O(n)
c)
T(n)
d)
F(n)
16.
Thuật toán nào sau đây có độ phức tạp thời gian O(n)?
a)
Tìm phần tử lớn nhất trong mảng n phần tử
b)
Tìm kiếm nhị phân trong mảng đã sắp xếp
c)
Sắp xếp nổi bọt (bubble sort)
d)
Thuật toán cộng hai số nguyên
17.
Tìm kiếm tuần tự (tuyến tính) là:
a)
Chia đôi mảng rồi tìm kiếm
b)
Tìm kiếm từ cuối mảng lên đầu
c)
Duyệt lần lượt từng phần tử từ đầu đến cuối
d)
Sắp xếp mảng rồi dừng lại
18.
Điều kiện quan trọng để áp dụng tìm kiếm nhị phân là:
a)
Mảng có độ dài chẵn
b)
Mảng đã được sắp xếp
c)
Mảng chỉ chứa số nguyên
d)
Mảng không được sắp xếp
19.
Sắp xếp tăng dần là:
a)
Các phần tử từ lớn đến nhỏ
b)
Các phần tử ngẫu nhiên
c)
Các phần tử từ nhỏ đến lớn
d)
Các phần tử theo thứ tự nhập vào
20.
Thuật toán sắp xếp nổi bọt (bubble sort) hoạt động bằng cách:
a)
Chia mảng thành hai nửa rồi sắp xếp
b)
Đổi chỗ các cặp phần tử kề nhau nếu chúng sai thứ tự
c)
Chọn phần tử nhỏ nhất và đưa lên đầu
d)
Đưa phần tử lớn nhất xuống cuối
21.
Độ phức tạp thời gian trung bình của thuật toán bubble sort là:
a)
O(1)
b)
O(log n)
c)
O(n)
d)
O(n^2)
22.
Trong sắp xếp chọn (selection sort), mỗi vòng lặp ngoài sẽ:
a)
Đổi chỗ mọi cặp phần tử
b)
Chọn phần tử nhỏ nhất trong đoạn còn lại và đưa về đầu đoạn
c)
Chia mảng thành hai phần bằng nhau
d)
Không làm gì cả
23.
Lợi ích của việc phân tích độ phức tạp thuật toán là:
a)
Giúp chương trình chạy được trên mọi máy
b)
Ước lượng được thời gian chạy khi dữ liệu lớn
c)
Giảm dung lượng bộ nhớ máy tính
d)
Tự động sửa lỗi chương trình
24.
Trong hàng đợi (queue), thao tác đưa phần tử vào cuối hàng gọi là:
a)
push
b)
pop
c)
enqueue
d)
dequeue
25.
Trong ngăn xếp (stack), thao tác lấy phần tử khỏi đỉnh ngăn xếp gọi là:
a)
push
b)
insert
c)
enqueue
d)
pop
26.
Cấu trúc dữ liệu phù hợp nhất để quản lý thứ tự các yêu cầu in tài liệu là:
a)
Ngăn xếp (stack)
b)
Hàng đợi (queue)
c)
Cây nhị phân
d)
Mảng hai chiều
27.
Pseudocode (giả mã) là:
a)
Mã máy tính đã biên dịch
b)
Mã nguồn C++ hoàn chỉnh
c)
Mô tả thuật toán gần giống ngôn ngữ tự nhiên
d)
Ngôn ngữ lập trình mới
28.
Trong giả mã, kí hiệu “←” thường được hiểu là:
a)
So sánh bằng
b)
Gán giá trị
c)
Cộng thêm 1
d)
Chia đôi giá trị
29.
Trong vòng lặp "for i từ 1 đến n" (bao gồm cả 1 và n), số lần lặp là:
a)
n - 1
b)
n + 1
c)
n
d)
2n
30.
Câu lệnh điều kiện if dùng để:
a)
Lặp lại một đoạn chương trình
b)
Rẽ nhánh chương trình tùy theo điều kiện
c)
Khai báo biến mới
d)
Kết thúc chương trình
31.
Độ phức tạp O(1) nghĩa là:
a)
Thời gian chạy không phụ thuộc vào kích thước dữ liệu
b)
Thời gian chạy tỉ lệ với n
c)
Thời gian chạy tỉ lệ với n^2
d)
Thuật toán không bao giờ dừng
32.
Khi n tăng gấp đôi, thuật toán có độ phức tạp O(n^2) sẽ có thời gian chạy:
a)
Tăng khoảng 2 lần
b)
Tăng khoảng 4 lần
c)
Không thay đổi
d)
Giảm đi một nửa
33.
Cấu trúc dữ liệu nào sau đây có thể được dùng để cài đặt ngăn xếp (stack)?
a)
Mảng
b)
Danh sách liên kết
c)
Cả mảng và danh sách liên kết
d)
Không cấu trúc nào ở trên
34.
Ưu điểm chính của danh sách liên kết so với mảng là:
a)
Truy cập phần tử nhanh hơn
b)
Dễ dàng chèn/xóa mà không cần dời các phần tử khác
c)
Tiết kiệm bộ nhớ hơn trong mọi trường hợp
d)
Không cần cấp phát bộ nhớ
35.
Trong danh sách liên kết đơn, mỗi nút (node) thường chứa:
a)
Chỉ dữ liệu
b)
Chỉ con trỏ tới nút tiếp theo
c)
Dữ liệu và con trỏ tới nút tiếp theo
d)
Dữ liệu và hai con trỏ
36.
Tìm kiếm nhị phân trên mảng có n phần tử có số bước tối đa xấp xỉ:
a)
n
b)
n^2
c)
log2(n)
d)
1
37.
Trường hợp xấu nhất (worst-case) của thuật toán là:
a)
Thời gian chạy tốt nhất có thể
b)
Thời gian chạy trung bình
c)
Thời gian chạy lâu nhất với kích thước dữ liệu n
d)
Thời gian chạy ngẫu nhiên
38.
Khi so sánh hai thuật toán với dữ liệu rất lớn, yếu tố quan trọng nhất là:
a)
Số dòng mã lệnh
b)
Tên biến đặt đẹp
c)
Bậc của độ phức tạp thời gian
d)
Ngôn ngữ lập trình sử dụng
39.
Khi dùng mảng để lưu 100 phần tử trong C++/Python, chỉ số hợp lệ là:
a)
0 đến 99
b)
1 đến 100
c)
0 đến 100
d)
1 đến 99
40.
Tên biến trong chương trình nên được đặt như thế nào?
a)
Ngắn nhất có thể, không cần ý nghĩa
b)
Có ý nghĩa, dễ hiểu, liên quan đến dữ liệu
c)
Dùng toàn số để dễ nhớ
d)
Trùng với từ khóa của ngôn ngữ
41.
Kiểu dữ liệu nào phù hợp để lưu họ tên học sinh?
a)
int
b)
float
c)
string (chuỗi)
d)
bool
42.
Khi một thuật toán không bao giờ dừng lại, nó đã vi phạm tính chất:
a)
Tính xác định
b)
Tính hữu hạn
c)
Tính hiệu quả
d)
Tính đúng đắn
43.
Trong Python, cấu trúc dữ liệu cơ bản thường dùng thay cho mảng là:
a)
dict
b)
tuple
c)
list
d)
set
44.
Đơn vị đo độ phức tạp thời gian thường dựa trên:
a)
Số phép toán cơ bản được thực hiện
b)
Số dòng code của chương trình
c)
Tốc độ CPU thực tế
d)
Dung lượng file .exe
45.
Khi viết thuật toán, bước nào sau đây giúp hạn chế lỗi logic?
a)
Không cần kiểm tra lại vì máy sẽ sửa lỗi
b)
Chỉ chạy thử với dữ liệu lớn
c)
Thử thuật toán với một số ví dụ nhỏ, đơn giản
d)
Chỉ quan tâm đến tốc độ, không quan tâm kết quả
Reset
