wayground logo

Free Printable Worksheets

NEW

Font size

S
M
L
XL
Worksheets

Câu hỏi về C++

Total questions: 42

Worksheet time: 21mins

Name
Class
Date
1.

std::vector cấp phát bộ nhớ ở đâu?

a)

Static

b)

Register

c)

Stack

d)

Heap

2.

Rule of Five liên quan đến:

a)

Template

b)

STL

c)

Kế thừa

d)

Quản lý tài nguyên

3.

Lambda expression trong C++ dùng để:

a)

Quản lý bộ nhớ

b)

Khai báo lớp

c)

Kế thừa lớp

d)

Tạo hàm ẩn danh

4.

Hàm nào trong STL dùng để sắp xếp vector?

a)

arrange()

b)

order()

c)

sort()

d)

sequence()

5.

Template trong C++ dùng để:

a)

Lập trình tổng quát

b)

Quản lý bộ nhớ

c)

Tăng tốc chương trình

d)

Tạo giao diện

6.

Thứ tự hủy đối tượng trong kế thừa là:

a)

Derived → Base

b)

Base → Derived

c)

Ngẫu nhiên

d)

Không xác định

7.

Phạm vi truy cập protected cho phép:

a)

Chỉ hàm bạn bè truy cập

b)

Lớp dẫn xuất truy cập

c)

Chỉ lớp hiện tại truy cập

d)

Mọi đối tượng truy cập

8.

Từ khóa const sau hàm thành viên có ý nghĩa gì?

a)

Hàm không đổi tham số

b)

Hàm là static

c)

Hàm không thay đổi thuộc tính đối tượng

d)

Hàm không bị override

9.

Capture list trong lambda dùng để:

a)

Truyền tham số

b)

Bắt lỗi

c)

Tạo iterator

d)

Truy cập biến bên ngoài

10.

Điều gì xảy ra nếu destructor của lớp cơ sở không khai báo virtual và xóa đối tượng dẫn xuất thông qua con trỏ lớp cơ sở?

a)

Không cấp phát bộ nhớ

b)

Chương trình không biên dịch

c)

Destructor lớp dẫn xuất không được gọi

d)

Chương trình chạy bình thường

11.

Namespace dùng để:

a)

Tránh trùng tên

b)

Tăng tốc chương trình

c)

Quản lý bộ nhớ

d)

Thay thế class

12.

Từ khóa explicit dùng để:

a)

Khai báo const

b)

Khai báo virtual

c)

Ngăn ép kiểu ngầm

d)

Cho phép ép kiểu

13.

Smart pointer không bao gồm loại nào?

a)

unique_ptr

b)

shared_ptr

c)

auto_ptr

d)

raw_ptr

14.

Static member của lớp:

a)

Chỉ dùng trong hàm main

b)

Không truy cập được

c)

Thuộc từng đối tượng

d)

Thuộc về lớp

15.

Static member của lớp:

a)

Chỉ dùng trong hàm main

b)

Không truy cập được

c)

Thuộc từng đối tượng

d)

Thuộc về lớp

16.

Const object chỉ gọi được:

a)

Hàm static

b)

Hàm virtual

c)

Hàm const

d)

Mọi hàm

17.

Ưu điểm chính của smart pointer là:

a)

Tránh rò rỉ bộ nhớ

b)

Chạy nhanh hơn con trỏ thường

c)

Không cần destructor

d)

Giảm dung lượng chương trình

18.

Dynamic_cast dùng để:

a)

Ép kiểu con trỏ void

b)

Ép kiểu template

c)

Ép kiểu tĩnh

d)

Ép kiểu runtime có kiểm tra

19.

Move constructor giúp:

a)

Hủy đối tượng

b)

Đa hình

c)

Chuyển quyền sở hữu tài nguyên

d)

Sao chép đối tượng

20.

Khi nào nên sử dụng composition thay vì inheritance?

a)

Khi quan hệ "là một"

b)

Khi cần override hàm

c)

Khi cần đa hình

d)

Khi quan hệ "có một"

21.

Phát biểu nào đúng về hàm ảo thuần túy (pure virtual function)?

a)

Có thân hàm

b)

Không thể override

c)

Bắt buộc lớp chứa nó là lớp trừu tượng

d)

Chỉ khai báo trong lớp dẫn xuất

22.

Con trỏ lớp cơ sở trỏ đến đối tượng lớp dẫn xuất cho phép:

a)

Gọi hàm lớp cơ sở

b)

Gọi hàm lớp dẫn xuất

c)

Không gọi được hàm nào

d)

Gọi đúng hàm nếu có virtual

23.

Điều kiện để dùng dynamic_cast với class là:

a)

Có destructor

b)

Có ít nhất một hàm ảo

c)

Có template

d)

Có constructor

24.

Khác biệt chính giữa con trỏ và tham chiếu là:

a)

Con trỏ không thể thay đổi

b)

Tham chiếu có thể null

c)

Tham chiếu phải khởi tạo ngay

d)

Con trỏ không lưu địa chỉ

25.

Hàm nào được gọi đầu tiên khi tạo đối tượng kế thừa?

a)

Constructor lớp dẫn xuất

b)

Destructor lớp cơ sở

c)

Destructor lớp dẫn xuất

d)

Constructor lớp cơ sở

26.

Một lớp có ít nhất một hàm ảo thuần túy được gọi là:

a)

Lớp trừu tượng

b)

Lớp ảo

c)

Lớp dẫn xuất

d)

Lớp đóng gói

27.

int* p = &x;

a)

Không lỗi

b)

Lỗi vì bỏ const

c)

Lỗi cú pháp

d)

Lỗi vì p là con trỏ

28.

STL container nào không cho phép truy cập ngẫu nhiên?

a)

array

b)

deque

c)

vector

d)

list

29.

STL container nào không cho phép truy cập ngẫu nhiên?

a)

array

b)

deque

c)

vector

d)

list

30.

Exception trong C++ dùng để:

a)

Tăng hiệu năng

b)

Quản lý bộ nhớ

c)

Lặp chương trình

d)

Xử lý lỗi runtime

31.

Toán tử nào nên overload khi cấp phát tài nguyên?

a)

[]

b)

++

c)

==

d)

=

32.

Từ khóa nào đảm bảo phương thức không bị override ở lớp dẫn xuất?

a)

const

b)

static

c)

virtual

d)

final

33.

delete[] dùng khi:

a)

Giải phóng vector

b)

Giải phóng mảng động

c)

Giải phóng object static

d)

Giải phóng 1 biến

34.

RAII liên quan đến:

a)

Quản lý tài nguyên tự động

b)

Đa hình

c)

Template

d)

Kế thừa

35.

Constructor có thể được khai báo là virtual không?

a)

Chỉ khi đa hình

b)

Chỉ khi kế thừa

c)

d)

Không

36.

Inline function giúp:

a)

Tạo hàm ảo

b)

Giảm chi phí gọi hàm

c)

Tăng kích thước file

d)

Bắt buộc compiler inline

37.

Phát biểu nào đúng nhất?

a)

OOP chỉ dùng cho GUI

b)

Virtual function hỗ trợ đa hình runtime

c)

Template hỗ trợ đa hình runtime

d)

C++ không hỗ trợ đa hình

38.

Khi nào hàm template được sinh mã?

a)

Khi được sử dụng

b)

Khi khai báo

c)

Khi biên dịch thư viện

d)

Khi chạy chương trình

39.

Overriding trong C++ yêu cầu điều kiện nào?

a)

Tên hàm giống nhau

b)

Tất cả các ý trên

c)

Danh sách tham số giống nhau

d)

Hàm lớp cơ sở phải là virtual

40.

Khối nào bắt ngoại lệ?

a)

throw

b)

final

c)

catch

d)

try

41.

Destructor nên được khai báo virtual khi:

a)

Có kế thừa và xóa qua con trỏ base

b)

Không dùng new

c)

Không dùng kế thừa

d)

Chỉ dùng biến tĩnh

42.

Iterator trong STL dùng để:

a)

Thêm phần tử

b)

Sắp xếp dữ liệu

c)

Duyệt container

d)

Cấp phát bộ nhớ