50 câu hỏi trắc nghiệm về lập trình C++ kèm đáp án

Phần 1: Cơ bản về C++

  1. Ngôn ngữ C++ là gì?
    a) Ngôn ngữ lập trình hướng đối tượng
    b) Ngôn ngữ lập trình thủ tục
    c) Ngôn ngữ lập trình đa mô hình (hỗ trợ cả hướng đối tượng và thủ tục)
    d) Ngôn ngữ lập trình chức năng
    Đáp án: c
  2. Từ khóa nào được sử dụng để khai báo một lớp trong C++?
    a) class
    b) struct
    c) object
    d) namespace
    Đáp án: a
  3. Ký hiệu nào được sử dụng để chỉ con trỏ trong C++?
    a) &
    b) *
    c) #
    d) %
    Đáp án: b
  4. Hàm nào sau đây được gọi đầu tiên khi chương trình C++ bắt đầu chạy?
    a) main()
    b) start()
    c) init()
    d) begin()
    Đáp án: a
  5. Ký hiệu nào được sử dụng để nhận địa chỉ của một biến trong C++?
    a) *
    b) &
    c) #
    d) %
    Đáp án: b
  6. Kiểu dữ liệu nào sau đây không phải là kiểu dữ liệu cơ bản trong C++?
    a) int
    b) float
    c) string
    d) char
    Đáp án: c
  7. Lệnh nào sau đây được sử dụng để nhập dữ liệu từ bàn phím?
    a) cin
    b) cout
    c) scanf
    d) printf
    Đáp án: a
  8. Lệnh nào sau đây được sử dụng để xuất dữ liệu ra màn hình?
    a) cin
    b) cout
    c) scanf
    d) printf
    Đáp án: b
  9. Từ khóa nào được sử dụng để định nghĩa một hằng số trong C++?
    a) const
    b) static
    c) final
    d) define
    Đáp án: a
  10. Cú pháp đúng để khai báo một mảng trong C++ là gì?
    a) int array[5];
    b) array int[5];
    c) int array = new int[5];
    d) int[5] array;
    Đáp án: a

Phần 2: Hàm và Con trỏ

  1. Hàm nào sau đây được sử dụng để cấp phát bộ nhớ động trong C++?
    a) malloc()
    b) new
    c) calloc()
    d) realloc()
    Đáp án: b
  2. Từ khóa nào được sử dụng để giải phóng bộ nhớ đã cấp phát bằng new?
    a) delete
    b) free
    c) release
    d) remove
    Đáp án: a
  3. Con trỏ này trỏ đến vùng nhớ nào nếu giá trị của nó là nullptr?
    a) Vùng nhớ hợp lệ
    b) Không trỏ đến đâu cả
    c) Vùng nhớ bị lỗi
    d) Vùng nhớ tạm thời
    Đáp án: b
  4. Hàm nào sau đây có thể trả về nhiều giá trị?
    a) Hàm thông thường
    b) Hàm sử dụng tham chiếu
    c) Hàm inline
    d) Hàm lambda
    Đáp án: b
  5. Từ khóa inline trong C++ có tác dụng gì?
    a) Tăng tốc độ thực thi bằng cách thay thế lệnh gọi hàm bằng mã hàm
    b) Giảm kích thước chương trình
    c) Tạo hàm đệ quy
    d) Tạo hàm ẩn danh
    Đáp án: a

Phần 3: Lớp và Đối tượng

  1. Thuộc tính nào sau đây không phải là đặc điểm của lập trình hướng đối tượng?
    a) Đa hình
    b) Kế thừa
    c) Đóng gói
    d) Tối ưu hóa
    Đáp án: d
  2. Từ khóa nào được sử dụng để ngăn chặn việc ghi đè phương thức trong lớp con?
    a) final
    b) static
    c) const
    d) virtual
    Đáp án: a
  3. Từ khóa this trong C++ được sử dụng để làm gì?
    a) Trỏ đến đối tượng hiện tại
    b) Trỏ đến lớp cha
    c) Trỏ đến lớp con
    d) Trỏ đến con trỏ
    Đáp án: a
  4. Phương thức nào được gọi tự động khi một đối tượng được tạo ra?
    a) Constructor
    b) Destructor
    c) Method
    d) Operator
    Đáp án: a
  5. Phương thức nào được gọi tự động khi một đối tượng bị hủy?
    a) Constructor
    b) Destructor
    c) Method
    d) Operator
    Đáp án: b

Phần 4: STL và Thư viện chuẩn

  1. STL là viết tắt của gì?
    a) Standard Template Library
    b) Simple Template Library
    c) Standard Type Library
    d) System Template Library
    Đáp án: a
  2. Loại container nào sau đây không thuộc STL?
    a) vector
    b) list
    c) array
    d) stack
    Đáp án: c
  3. Hàm nào sau đây được sử dụng để sắp xếp một vector trong STL?
    a) sort()
    b) order()
    c) arrange()
    d) organize()
    Đáp án: a
  4. Container nào sau đây hỗ trợ truy cập ngẫu nhiên (random access)?
    a) vector
    b) list
    c) set
    d) map
    Đáp án: a
  5. Hàm nào sau đây được sử dụng để tìm kiếm một phần tử trong một container STL?
    a) find()
    b) search()
    c) locate()
    d) detect()
    Đáp án: a

Phần 5: Nâng cao

  1. Từ khóa friend trong C++ được sử dụng để làm gì?
    a) Cho phép một hàm hoặc lớp truy cập vào các thành viên private của lớp khác
    b) Định nghĩa một hàm mới
    c) Tạo một lớp con
    d) Tạo một đối tượng mới
    Đáp án: a
  2. Đặc điểm nào sau đây không đúng với template trong C++?
    a) Hỗ trợ lập trình tổng quát
    b) Có thể áp dụng cho hàm và lớp
    c) Chỉ hoạt động với kiểu dữ liệu số nguyên
    d) Tăng khả năng tái sử dụng mã nguồn
    Đáp án: c
  3. Từ khóa explicit trong C++ được sử dụng để làm gì?
    a) Ngăn chặn chuyển đổi kiểu ngầm định
    b) Định nghĩa một hàm inline
    c) Tạo một constructor mặc định
    d) Định nghĩa một destructor
    Đáp án: a
  4. Lambda expression trong C++ được sử dụng để làm gì?
    a) Tạo hàm ẩn danh
    b) Định nghĩa một lớp mới
    c) Tạo một đối tượng
    d) Định nghĩa một con trỏ
    Đáp án: a
  5. Từ khóa override trong C++ được sử dụng để làm gì?
    a) Ghi đè phương thức của lớp cha
    b) Tạo một lớp mới
    c) Định nghĩa một constructor
    d) Định nghĩa một destructor
    Đáp án: a

Phần 6: Xử lý ngoại lệ và đa luồng

  1. Từ khóa nào được sử dụng để bắt đầu một khối xử lý ngoại lệ trong C++?
    a) try
    b) catch
    c) throw
    d) finally
    Đáp án: a
  2. Từ khóa nào được sử dụng để ném ra một ngoại lệ trong C++?
    a) try
    b) catch
    c) throw
    d) finally
    Đáp án: c
  3. Khối nào sau đây được sử dụng để bắt và xử lý ngoại lệ trong C++?
    a) try
    b) catch
    c) throw
    d) finally
    Đáp án: b
  4. Ngoại lệ nào sau đây không phải là một loại ngoại lệ chuẩn trong C++?
    a) std::runtime_error
    b) std::logic_error
    c) std::syntax_error
    d) std::bad_alloc
    Đáp án: c
  5. Hàm nào sau đây được sử dụng để tạo một luồng mới trong C++?
    a) std::thread
    b) std::mutex
    c) std::lock_guard
    d) std::async
    Đáp án: a
  6. Từ khóa nào được sử dụng để đảm bảo rằng tài nguyên được giải phóng ngay cả khi xảy ra ngoại lệ?
    a) try
    b) catch
    c) finally
    d) RAII (Resource Acquisition Is Initialization)
    Đáp án: d
  7. Lớp nào trong thư viện chuẩn C++ được sử dụng để đồng bộ hóa giữa các luồng?
    a) std::mutex
    b) std::thread
    c) std::future
    d) std::promise
    Đáp án: a
  8. Hàm nào sau đây được sử dụng để chờ một luồng hoàn thành trong C++?
    a) join()
    b) detach()
    c) wait()
    d) sleep()
    Đáp án: a
  9. Khi sử dụng std::async, giá trị trả về của hàm được lưu trữ trong đối tượng nào?
    a) std::future
    b) std::promise
    c) std::thread
    d) std::mutex
    Đáp án: a
  10. Từ khóa nào được sử dụng để đánh dấu một hàm hoặc biến chỉ được thực thi bởi một luồng tại một thời điểm?
    a) volatile
    b) atomic
    c) synchronized
    d) mutex
    Đáp án: b

Phần 7: File I/O và Streams

  1. Lớp nào trong thư viện chuẩn C++ được sử dụng để đọc dữ liệu từ file?
    a) std::ifstream
    b) std::ofstream
    c) std::fstream
    d) std::iostream
    Đáp án: a
  2. Lớp nào trong thư viện chuẩn C++ được sử dụng để ghi dữ liệu vào file?
    a) std::ifstream
    b) std::ofstream
    c) std::fstream
    d) std::iostream
    Đáp án: b
  3. Chế độ mở file nào sau đây cho phép đọc và ghi đồng thời?
    a) ios::in
    b) ios::out
    c) ios::app
    d) ios::in | ios::out
    Đáp án: d
  4. Hàm nào sau đây được sử dụng để kiểm tra xem đã đến cuối file hay chưa?
    a) eof()
    b) fail()
    c) bad()
    d) good()
    Đáp án: a
  5. Hàm nào sau đây được sử dụng để di chuyển con trỏ file đến vị trí cụ thể?
    a) seekg()
    b) tellg()
    c) read()
    d) write()
    Đáp án: a
  6. Hàm nào sau đây được sử dụng để lấy vị trí hiện tại của con trỏ file?
    a) seekg()
    b) tellg()
    c) read()
    d) write()
    Đáp án: b
  7. Để đóng một file trong C++, bạn sử dụng phương thức nào?
    a) close()
    b) shutdown()
    c) terminate()
    d) end()
    Đáp án: a
  8. Hàm nào sau đây được sử dụng để đọc một ký tự từ file?
    a) get()
    b) getline()
    c) read()
    d) write()
    Đáp án: a
  9. Hàm nào sau đây được sử dụng để ghi một dòng văn bản vào file?
    a) put()
    b) write()
    c) <<
    d) >>
    Đáp án: c
  10. Để mở một file ở chế độ ghi thêm (append), bạn sử dụng chế độ nào?
    a) ios::in
    b) ios::out
    c) ios::app
    d) ios::binary
    Đáp án: c