wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Ôn Tập CS 11 - Trắc Nghiệm

Total questions: 101

Worksheet time: 51mins

Name
Class
Date
1.

Điều kiện vòng while để dịch phải trong insertion sort:

a)

i == j

b)

j >= 0 và A[j] > key

c)

i < n và A[i] < key

d)

A[j] == key

2.

Tạo bản sao ĐỘC LẬP của list a (shallow copy) là:

a)

b = a

b)

b = list; b(a)

c)

copy(a) (không đối số)

d)

b = a[:]

3.

Số lần dịch phải trong insertion sort phụ thuộc:

a)

không phụ thuộc dữ liệu

b)

chỉ độ dài danh sách

c)

số phần tử bên trái lớn hơn key

d)

chỉ phụ thuộc n^2

4.

Thiết kế mô đun tốt hướng tới:

a)

tên biến rất ngắn

b)

1 hàm thật dài

c)

nhiều biến toàn cục

d)

mỗi mô đun giải 1 nhiệm vụ rõ ràng (cohesion cao)

5.

Câu 5: Đoạn mã tính tổng các phần tử nào và IN kết quả?

a)

Hàng 0

b)

Cột 0

c)

Đường chéo chính

d)

Đường chéo phụ

6.

Câu 6: Gọi n là số nguyên dương. Số lần lặp xấp xỉ bằng:

a)

n^2

b)

n

c)

⌊log2(n)⌋ + 1

d)

1

7.

"Làm mịn dần" (stepwise refinement) là:

a)

gộp nhiều nhiệm vụ vào 1 hàm

b)

chia bài toán lớn thành các bước/tiểu bài toán cụ thể dần

c)

tối ưu tốc độ ở bước cuối

d)

bỏ mã giả/sơ đồ

8.

Hoán đổi HAI HÀNG i và k trong A bằng 1 câu lệnh:

a)

A[i]==A[k]

b)

swap(A[i],A[k])

c)

for j: A[i][j]=A[k][j]

d)

A[i], A[k] = A[k], A[i]

9.

Chọn phát biểu KHÔNG đúng về danh sách Python (list):

a)

Có thể chứa phần tử khác kiểu trong cùng 1 list

b)

Duyệt list bằng for rất phổ biến

c)

Chỉ số bắt đầu từ 0

d)

Các phần tử luôn phải liền kề trong bộ nhớ

10.

Phát biểu đúng về 'slicing' a[L:R] của list:

a)

lấy phần tử từ L đến R-1

b)

luôn tạo bản sao sâu

c)

lấy phần tử từ L đến R

d)

gây lỗi nếu R > len(a)

11.

Đoạn mã trên tính tổng các phần tử của:

a)

Đường chéo chính

b)

Cột 0

c)

Hàng 0

d)

Đường chéo phụ

12.

Giả sử a đã sắp xếp. Độ phức tạp thời gian (theo n) là:

a)

O(n^2)

b)

O(n)

c)

O(log n)

d)

O(1)

13.

Khởi tạo ma trận 3×3 toàn 0, mỗi hàng độc lập là:

a)

[0]*9

b)

[[0]*3 for _ in range(3)]

c)

[[0]*3]*3

d)

(0)*9

14.

Tính giá trị trung bình của dãy số nguyên a = [1,2,3]:

a)

mean(a) không cần import

b)

sum(a)/len(a)

c)

a/len(a)

d)

sum(a)/(len(a)-1)

15.

Insertion sort: 'nhấc' phần tử cần chèn tại vị trí i là lệnh:

a)

j -= 1

b)

key = A[i]

c)

A[j+1] = A[j]

d)

A[j] > key

16.

Trong ma trận vuông n×n, 'đường chéo phụ' gồm các phần tử có chỉ số:

a)

i == j

b)

i == 0

c)

j == n-1

d)

i + j == n - 1

17.

Với a như trên, chương trình IN ra giá trị nào?

a)

15

b)

14

c)

13

d)

'31415'

18.

Gọi n = len(a) ≥ 1. Độ phức tạp thời gian của đoạn mã sau là:

a)

O(log n)

b)

O(n^2)

c)

O(n)

d)

O(1)

19.

Lỗi thường gặp khi dùng [[0]*m]*n để tạo ma trận:

a)

sai kiểu

b)

Python không hỗ trợ 2D

c)

thiếu bộ nhớ

d)

các hàng cùng tham chiếu 1 danh sách con

20.

Sau vòng while, lệnh chèn đúng:

a)

key = A[j]

b)

A[i] = key

c)

swap(A[j],key)

d)

A[j+1] = key

21.

Tìm phần tử lớn nhất trong list a (không sắp xếp lại a) nên:

a)

dùng toán tử in

b)

duyệt toàn bộ và cập nhật biến max

c)

sắp xếp rồi lấy phần tử cuối

d)

tạo bản sao rồi tìm

22.

Phân biệt 'shallow copy' và 'deep copy' của list:

a)

không có khác biệt

b)

shallow copy sao chép tham chiếu phần tử; deep copy sao chép đệ quy

c)

deep copy chỉ sao chép lớp ngoài

d)

shallow copy luôn nhanh hơn và đúng

23.

Giả sử b tham chiếu cùng danh sách với a; chương trình IN ra:

a)

[9, 1, 2, 3, 4, 5]

b)

Lỗi IndexError

c)

[1, 2, 3, 4, 5]

d)

[9, 2, 3, 4, 5]

24.

Gọi n và m là hai kích thước độc lập. Độ phức tạp thời gian là:

a)

O(n+m)

b)

O(1)

c)

O(max(n,m))

d)

O(n·m)

25.

Cho a = [1, 2]; lệnh nào thêm phần tử 3 vào CUỐI danh sách?

a)

a.append(3)

b)

a.insert_first(3)

c)

a.add(3)

d)

push(a,3)

26.

Trong ma trận vuông, 'đường chéo chính' gồm các phần tử có chỉ số:

a)

i == j

b)

i == 0

c)

j == 0

d)

i + j == n - 1

27.

Khởi tạo ma trận n×m mọi giá trị đều v (hàng độc lập):

a)

[[v]*m for _ in range(n)]

b)

[[v]*n for _ in range(m)]

c)

[v]*n*m

d)

(v)*n*m

28.

Mảng 1 chiều (list số) và ma trận (list lồng nhau) khác nhau chủ yếu ở:

a)

khả năng sắp xếp

b)

khả năng lặp

c)

số chiều truy cập phần tử

d)

kiểu số trong phần tử

29.

Giá trị được IN ra từ phần tử hàng 1, cột 0 của A là: 1. A = [[1,2,3],[4,5,6]] 2. print(A[1][0])

a)

1

b)

6

c)

4

d)

2

30.

Gọi n là số phần tử cần duyệt. Độ phức tạp thời gian là:

a)

O(log n)

b)

O(n)

c)

O(1)

d)

O(n^2)

31.

Dãy gần tăng sẵn nên chọn:

a)

selection sort

b)

insertion sort

c)

bubble sort

d)

heap sort

32.

Với A = [[1,2,3],[4,5,6]], phần tử hàng 1 (thứ hai), cột 0 là:

a)

6

b)

1

c)

4

d)

2

33.

In các phần tử đường chéo chính của ma trận vuông n×n:

a)

for i in range(n): print(A[i][i])

b)

for j: print(A[0][j])

c)

for i: print(A[i][n-1-i])

d)

print(A[0][n-1])

34.

Với danh sách a = [2, 4, 6, 8], chỉ số đầu tiên hợp lệ trong Python là:

a)

0

b)

Tuỳ phiên bản

c)

1

d)

-1

35.

Vì khởi tạo bằng 'for _ in range(3)', các hàng ĐỘC LẬP; chương trình IN:

1. A = [[0]*3 for _ in range(3)]

2. A[0][1] = 5

3. print(A)

a)

[[5, 5, 5],[5, 5, 5],[5, 5, 5]]

b)

[[0, 5, 0], [0, 0, 0], [0, 0, 0]]

c)

Lỗi

d)

[[0, 5, 0], [0, 5, 0], [0, 5, 0]]

36.

Độ phức tạp thời gian theo n là:

a)

O(n^3)

b)

O(n)

c)

O(n^2)

d)

O(n·log n)

37.

Với a = [2, 4, 6, 8], biểu thức a[-1] trả về:

a)

4

b)

Lỗi vì chỉ số âm

c)

6

d)

8

38.

Insertion sort được xem là 'ổn định' (stable) vì:

a)

giữ nguyên thứ tự tương đối của các phần tử bằng nhau

b)

không dùng bộ nhớ phụ

c)

luôn chạy O(n log n)

d)

chỉ cần 1 lần quét

39.

Với a = [1,2,3,4,5], lát cắt a[1:4] (trái‑kín phải‑mở) cho:

a)

[2,3,4]

b)

[2,4]

c)

[1,4]

d)

[1,2,3]

40.

Nếu a có n phần tử, phép truy cập a[i] (0 ≤ i < n) có thời gian gần đúng:

a)

O(1)

b)

O(log n)

c)

O(n)

d)

Phụ thuộc kiểu phần tử

41.

Xét 1 lượt chèn với i=1 trong insertion sort; mảng IN ra là:

a)

[2, 4, 5, 6]

b)

[4, 5, 2, 6]

c)

[5, 2, 4, 6]

d)

[2, 5, 4, 6]

42.

Gọi n là số nguyên dương. Số lần tăng k xấp xỉ bằng:

a)

1

b)

n^2

c)

n/2 (bậc O(n))

d)

log2(n)

43.

Trường hợp tốt nhất (best case) của insertion sort là khi dãy:

a)

ngẫu nhiên

b)

giảm sẵn

c)

toàn phần tử bằng nhau

d)

đã tăng sẵn

44.

Viết mã giả/sơ đồ khối trước khi code giúp:

a)

kiểm tra cú pháp

b)

làm rõ ý tưởng & cấu trúc

c)

tự sinh giao diện

d)

đo thời gian chạy

45.

'Làm mịn dần' (stepwise refinement) dùng để:

a)

đánh giá tốc độ chương trình

b)

biến chương trình thành 1 hàm duy nhất

c)

chuyển bài toán lớn thành các bước nhỏ dễ cài đặt

d)

tự sinh mã nguồn từ sơ đồ khối

46.

Tổng cột j (0 ≤ j < m) của A có n hàng:

a)

A[0][j] + A[j][0]

b)

sum(A[j][i] for i in range(m))

c)

sum(A[i] for i trong range(n))

d)

sum(A[i][j] for i in range(n))

47.

Chọn đúng **1 dòng** cần điền để tính tổng mọi phần tử của a.

a)

s += x

b)

s = s * x

c)

x += s

d)

s = 0

48.

Gọi n = len(a). Số phép cộng được thực hiện xấp xỉ bằng:

a)

n

b)

n^2

c)

n(n-1)/2

d)

log2(n)

49.

Khi lập trình ma trận bằng list lồng nhau, lỗi do [[0]*m]*n là:

a)

mọi hàng cùng trỏ 1 list con

b)

không thể truy cập A[i][j]

c)

A[i]==A[k] luôn False

d)

tự động deep copy

50.

Trong Python, 'list' là cấu trúc dữ liệu có tính chất:

a)

không có thứ tự, bất biến

b)

bất biến và có thứ tự

c)

có thứ tự, thay đổi được (mutable)

d)

tập hợp không lặp

51.

Lấy giá trị lớn nhất của toàn ma trận A:

a)

A.max()

b)

sorted(A)[-1]

c)

max(A)

d)

max(max(row) for row in A)

52.

Ưu tiên khi chuyển thuật toán sang mã nguồn:

a)

nhiều vòng lặp lồng

b)

bỏ chú thích

c)

ít dòng nhất

d)

đúng đắn trước, tối ưu sau

53.

Điền **1 dòng** để hoàn tất bước CHÈN của insertion sort:

a)

A[i] = key

b)

swap(A[j], key)

c)

A[j+1] = key

d)

key = A[j]

54.

Gọi n là kích thước. Độ phức tạp thời gian là:

a)

O(log n)

b)

O(n)

c)

O(1)

d)

O(n^2)

55.

Biểu thức 3 in [1,3,5,7] trả về:

a)

False

b)

Lỗi cú pháp

c)

True

d)

3

56.

Thiết kế từ trên xuống (top‑down) là:

a)

bắt đầu từ chi tiết thấp

b)

tối ưu câu lệnh nhỏ

c)

viết mã từ dòng đầu

d)

từ ý tưởng tổng quát đến chi tiết hoá dần

57.

Trung bình từng cột của A kích thước n×m:

a)

[sum(A[i][j] for i in range(n))/n for j in range(m)]

b)

[sum(row)/m for row in A]

c)

sum(A)/m

d)

[sum(A[j][i] for j in range(m))/m for i in range(n)]

58.

Ma trận A kích thước n×m là:

a)

danh sách 1 chiều

b)

tập hợp không thứ tự

c)

bảng chữ nhật gồm n hàng, m cột

d)

cây nhị phân cân bằng

59.

Đoạn mã tính tổng các phần tử nào và IN kết quả?

a)

Đường chéo chính

b)

Đường chéo phụ

c)

Cột 0

d)

Hàng 0

60.

Gọi n là kích thước. Số lần tăng k xấp xỉ bằng:

a)

n^2+n

b)

n

c)

n(n-1)/2

d)

2n

61.

Điều kiện vòng while để dịch phải trong insertion sort:

a)

A[j] == key

b)

j >= 0 và A[j] > key

c)

i < n và A[i] < key

d)

i == j

62.

Tạo bản sao ĐỘC LẬP của list a (shallow copy) là:

a)

b = list; b(a)

b)

b = a

c)

b = a[:]

d)

copy(a) (không đối số)

63.

Số lần dịch phải trong insertion sort phụ thuộc:

a)

không phụ thuộc dữ liệu

b)

chỉ độ dài danh sách

c)

chỉ phụ thuộc n^2

d)

số phần tử bên trái lớn hơn key

64.

Thiết kế mô đun tốt hướng tới:

a)

mỗi mô đun giải 1 nhiệm vụ rõ ràng (cohesion cao)

b)

1 hàm thật dài

c)

nhiều biến toàn cục

d)

tên biến rất ngắn

65.

Gọi n = len(a), m = len(b). Độ phức tạp thời gian là:

a)

O(n + m)

b)

O(n·m)

c)

O(max(n,m))

d)

O(1)

66.

"Làm mịn dần" (stepwise refinement) là:

a)

tối ưu tốc độ ở bước cuối

b)

chia bài toán lớn thành các bước/tiểu bài toán cụ thể dần

c)

bỏ mã giả/sơ đồ

d)

gộp nhiều nhiệm vụ vào 1 hàm

67.

Hoán đổi HAI HÀNG i và k trong A bằng 1 câu lệnh:

a)

A[i], A[k] = A[k], A[i]

b)

swap(A[i],A[k])

c)

for j: A[i][j]=A[k][j]

d)

A[i]==A[k]

68.

Chọn phát biểu KHÔNG đúng về danh sách Python (list):

a)

Chỉ số bắt đầu từ 0

b)

Có thể chứa phần tử khác kiểu trong cùng 1 list

c)

Duyệt list bằng for rất phổ biến

d)

Các phần tử luôn phải liền kề trong bộ nhớ

69.

Phát biểu đúng về 'slicing' a[L:R] của list:

a)

lấy phần tử từ L đến R

b)

gây lỗi nếu R > len(a)

c)

luôn tạo bản sao sâu

d)

lấy phần tử từ L đến R-1

70.

Với a như trên, chương trình IN ra giá trị nào?

a)

15

b)

13

c)

'31415'

d)

14

71.

Gọi n là số nguyên dương. Số lần lặp xấp xỉ bằng:

a)

n^2

b)

1

c)

n

d)

⌊log2(n)⌋ + 1

72.

Khởi tạo ma trận 3×3 toàn 0, mỗi hàng độc lập là:

a)

[[0]*3]*3

b)

[0]*9

c)

[[0]*3 for _ in range(3)]

d)

(0)*9

73.

Tính giá trị trung bình của dãy số nguyên a = [1,2,3]:

a)

sum(a)/(len(a)-1)

b)

mean(a) không cần import

c)

sum(a)/len(a)

d)

a/len(a)

74.

Insertion sort: 'nhấc' phần tử cần chèn tại vị trí i là lệnh:

a)

key = A[i]

b)

A[j+1] = A[j]

c)

j -= 1

d)

A[j] > key

75.

Trong ma trận vuông n×n, 'đường chéo phụ' gồm các phần tử có chỉ số:

a)

j == n-1

b)

i == 0

c)

i + j == n - 1

d)

i == j

76.

Giả sử b tham chiếu cùng danh sách với a; chương trình IN ra:

a)

[1, 2, 3, 4, 5]

b)

[9, 1, 2, 3, 4, 5]

c)

[9, 2, 3, 4, 5]

d)

Lỗi IndexError

77.

Giả sử a đã sắp xếp. Độ phức tạp thời gian (theo n) là:

a)

O(log n)

b)

O(n^2)

c)

O(1)

d)

O(n)

78.

Lỗi thường gặp khi dùng [[0]*m]*n để tạo ma trận:

a)

Python không hỗ trợ 2D

b)

sai kiểu

c)

thiếu bộ nhớ

d)

các hàng cùng tham chiếu 1 danh sách con

79.

Sau vòng while, lệnh chèn đúng:

a)

key = A[j]

b)

A[j+1] = key

c)

A[i] = key

d)

swap(A[j],key)

80.

Tìm phần tử lớn nhất trong list a (không sắp xếp lại a) nên:

a)

dùng toán tử in

b)

duyệt toàn bộ và cập nhật biến max

c)

tạo bản sao rồi tìm

d)

sắp xếp rồi lấy phần tử cuối

81.

Phân biệt 'shallow copy' và 'deep copy' của list:

a)

không có khác biệt

b)

deep copy chỉ sao chép lớp ngoài

c)

shallow copy sao chép tham chiếu phần tử; deep copy sao chép đệ quy

d)

shallow copy luôn nhanh hơn và đúng

82.

Giá trị được IN ra từ phần tử hàng 1, cột 0 của A là:

a)

2

b)

4

c)

1

d)

6

83.

Gọi n = len(a) ≥ 1. Độ phức tạp thời gian của đoạn mã sau là:

1. x = a[0]

a)

O(1)

b)

O(log n)

c)

O(n)

d)

O(n^2)

84.

Cho a = [1, 2]; lệnh nào thêm phần tử 3 vào CUỐI danh sách?

a)

a.insert_first(3)

b)

a.append(3)

c)

a.add(3)

d)

push(a,3)

85.

Trong ma trận vuông, 'đường chéo chính' gồm các phần tử có chỉ số:

a)

i == j

b)

i == 0

c)

j == 0

d)

i + j == n - 1

86.

Khởi tạo ma trận n×m mọi giá trị đều v (hàng độc lập):

a)

[[v]*m for _ in range(n)]

b)

(v)*n*m

c)

[v]*n*m

d)

[[v]*n for _ in range(m)]

87.

Mảng 1 chiều (list số) và ma trận (list lồng nhau) khác nhau chủ yếu ở:

a)

khả năng lặp

b)

kiểu số trong phần tử

c)

số chiều truy cập phần tử

d)

khả năng sắp xếp

88.

Vì khởi tạo bằng 'for _ in range(3)', các hàng ĐỘC LẬP; chương trình IN:

a)

[[0, 5, 0], [0, 0, 0], [0, 0, 0]]

b)

Lỗi

c)

[[5, 5, 5],[5, 5, 5],[5, 5, 5]]

d)

[[0, 5, 0], [0, 5, 0], [0, 5, 0]]

89.

Gọi n và m là hai kích thước độc lập. Độ phức tạp thời gian là:

a)

O(n+m)

b)

O(1)

c)

O(n·m)

d)

O(max(n,m))

90.

Dãy gần tăng sẵn nên chọn:

a)

bubble sort

b)

heap sort

c)

selection sort

d)

insertion sort

91.

Với A = [[1,2,3],[4,5,6]], phần tử hàng 1 (thứ hai), cột 0 là:

a)

2

b)

4

c)

6

d)

1

92.

In các phần tử đường chéo chính của ma trận vuông n×n:

a)

for i: print(A[i][n-1-i])

b)

for i in range(n): print(A[i][i])

c)

print(A[0][n-1])

d)

for j: print(A[0][j])

93.

Với danh sách a = [2, 4, 6, 8], chỉ số đầu tiên hợp lệ trong Python là:

a)

1

b)

Tuỳ phiên bản

c)

0

d)

-1

94.

Xét 1 lượt chèn với i=1 trong insertion sort; mảng IN ra là:

a)

[4, 5, 2, 6]

b)

[2,5,4,6]

c)

[2,4,5,6]

d)

[5,2,4,6]

95.

Với a = [2, 4, 6, 8], biểu thức a[-1] trả về:

a)

Lỗi vì chỉ số âm

b)

4

c)

6

d)

8

96.

Chọn đúng **1 dòng** cần điền để tính tổng mọi phần tử của a.

a)

s = s * x

b)

s += x

c)

s = 0

d)

x += s

97.

Điền **1 dòng** để hoàn tất bước CHÈN của insertion sort:

a)

key = A[j]

b)

A[j+1] = key

c)

swap(A[j], key)

d)

A[i] = key

98.

Đoạn mã tính tổng các phần tử nào và IN kết quả?

a)

Đường chéo chính

b)

Hàng 0

c)

Cột 0

d)

Đường chéo phụ

99.

Đoạn mã trên tính tổng các phần tử của:

a)

Cột 0

b)

Hàng 0

c)

Đường chéo phụ

d)

Đường chéo chính

100.

Câu 65: Đoạn mã trên tính tổng các phân tử của:

a)

Hàng 0

b)

Đường chéo chính

c)

Cột 0

d)

Đường chéo phụ

101.

Đoạn mã trên tính tổng các phần tử của:

a)

Hàng 0

b)

Đường chéo chính

c)

Cột 0

d)

Đường chéo phụ