Skip to content
View: 38
Câu hỏi cơ bản
- C++ là gì?
- Trả lời: C++ là một ngôn ngữ lập trình hướng đối tượng (OOP) được phát triển từ C, hỗ trợ cả lập trình thủ tục và lập trình hướng đối tượng.
- Ai là người tạo ra C++?
- Trả lời: Bjarne Stroustrup đã phát triển C++ vào đầu những năm 1980.
- Sự khác biệt giữa C và C++ là gì?
- Trả lời: C++ mở rộng C bằng cách thêm các tính năng như lớp (class), kế thừa, đa hình và các khái niệm OOP khác.
- C++ có phải là ngôn ngữ biên dịch không?
- Trả lời: Có, C++ là ngôn ngữ biên dịch, mã nguồn được biên dịch thành mã máy trước khi thực thi.
- Tệp tiêu đề (header file) trong C++ là gì?
- Trả lời: Tệp tiêu đề chứa các khai báo hàm, lớp và biến để sử dụng trong chương trình.
#include <iostream>
dùng để làm gì?
- Trả lời: Nó bao gồm thư viện nhập/xuất chuẩn của C++, cho phép sử dụng
cin
và cout
.
using namespace std;
có nghĩa là gì?
- Trả lời: Nó giúp tránh việc phải viết
std::
trước các tên thuộc không gian tên std
, ví dụ: std::cout
có thể viết là cout
.
- Hàm
main()
trong C++ là gì?
- Trả lời: Hàm
main()
là điểm bắt đầu thực thi của mọi chương trình C++.
- Cách khai báo biến trong C++?
- Trả lời: Ví dụ:
int x = 10;
- Các kiểu dữ liệu cơ bản trong C++?
- Trả lời:
int
, float
, double
, char
, bool
, void
.
Câu hỏi về cấu trúc điều khiển
- Cấu trúc điều kiện
if-else
hoạt động như thế nào?
- Trả lời: Nếu điều kiện trong
if
đúng, khối lệnh trong if
sẽ được thực thi; ngược lại, khối lệnh trong else
sẽ chạy.
- Vòng lặp
for
trong C++ hoạt động ra sao?
- Trả lời: Vòng lặp
for
lặp qua một khối lệnh với số lần xác định, thường sử dụng bộ đếm.
- Sự khác biệt giữa
while
và do-while
?
- Trả lời:
while
kiểm tra điều kiện trước khi thực thi, còn do-while
thực thi ít nhất một lần trước khi kiểm tra.
- Lệnh
break
dùng để làm gì?
- Trả lời: Dùng để thoát khỏi vòng lặp hoặc câu lệnh
switch
.
- Lệnh
continue
hoạt động như thế nào?
- Trả lời: Nó bỏ qua phần còn lại của vòng lặp hiện tại và chuyển sang lần lặp tiếp theo.
Câu hỏi về hàm
- Hàm trong C++ là gì?
- Trả lời: Hàm là một khối mã thực hiện một nhiệm vụ cụ thể và có thể được gọi nhiều lần.
- Sự khác biệt giữa tham trị và tham chiếu?
- Trả lời: Tham trị truyền giá trị của biến, trong khi tham chiếu truyền địa chỉ của biến.
- Hàm đệ quy là gì?
- Trả lời: Hàm đệ quy là hàm gọi chính nó để giải quyết vấn đề.
- Hàm inline trong C++ là gì?
- Trả lời: Hàm inline được thay thế trực tiếp bởi mã của nó tại nơi gọi để tăng tốc độ thực thi.
- Default argument trong C++ là gì?
- Trả lời: Là giá trị mặc định được gán cho tham số hàm nếu không có giá trị được truyền vào.
Câu hỏi về mảng và con trỏ
- Mảng trong C++ là gì?
- Trả lời: Mảng là tập hợp các phần tử cùng kiểu dữ liệu được lưu trữ liên tiếp trong bộ nhớ.
- Cách khởi tạo mảng trong C++?
- Trả lời: Ví dụ:
int arr[5] = {1, 2, 3, 4, 5};
- Con trỏ là gì?
- Trả lời: Con trỏ là biến lưu trữ địa chỉ của một biến khác.
- Toán tử
&
và *
trong C++ có ý nghĩa gì?
- Trả lời:
&
lấy địa chỉ của biến, *
truy cập giá trị tại địa chỉ mà con trỏ trỏ tới.
- Sự khác biệt giữa mảng và con trỏ?
- Trả lời: Mảng là tập hợp các phần tử, trong khi con trỏ là biến lưu địa chỉ.
Câu hỏi về OOP
- OOP là gì?
- Trả lời: Lập trình hướng đối tượng (OOP) là phương pháp lập trình dựa trên các đối tượng và lớp.
- Bốn nguyên tắc cơ bản của OOP?
- Trả lời: Đóng gói, kế thừa, đa hình, trừu tượng.
- Class trong C++ là gì?
- Trả lời: Class là bản thiết kế cho đối tượng, chứa các thuộc tính và phương thức.
- Object trong C++ là gì?
- Trả lời: Object là một thể hiện của class.
- Constructor trong C++ là gì?
- Trả lời: Constructor là phương thức đặc biệt được gọi khi tạo đối tượng, dùng để khởi tạo các thuộc tính.
- Destructor trong C++ là gì?
- Trả lời: Destructor là phương thức đặc biệt được gọi khi đối tượng bị hủy, dùng để giải phóng tài nguyên.
- Kế thừa trong C++ hoạt động như thế nào?
- Trả lời: Kế thừa cho phép một class (subclass) kế thừa thuộc tính và phương thức từ class khác (superclass).
- Đa hình là gì?
- Trả lời: Đa hình cho phép một phương thức có thể có nhiều dạng khác nhau.
- Static binding và dynamic binding là gì?
- Trả lời: Static binding xảy ra tại thời điểm biên dịch, dynamic binding xảy ra tại thời điểm chạy.
- Abstract class là gì?
- Trả lời: Abstract class là class chứa ít nhất một phương thức thuần ảo (pure virtual function).
Câu hỏi nâng cao
- STL trong C++ là gì?
- Trả lời: STL (Standard Template Library) cung cấp các cấu trúc dữ liệu và thuật toán chuẩn như vector, list, map.
- Vector trong C++ là gì?
- Trả lời: Vector là một mảng động có thể thay đổi kích thước.
- Map trong C++ hoạt động như thế nào?
- Trả lời: Map lưu trữ dữ liệu dưới dạng cặp key-value.
- Exception handling trong C++ là gì?
- Trả lời: Exception handling xử lý lỗi trong chương trình bằng cách sử dụng
try
, catch
, và throw
.
- Lambda expression trong C++ là gì?
- Trả lời: Lambda expression là hàm ẩn danh được định nghĩa ngay tại chỗ sử dụng.
- Move semantics trong C++ là gì?
- Trả lời: Move semantics tối ưu hóa hiệu suất bằng cách di chuyển tài nguyên thay vì sao chép.
- Smart pointer trong C++ là gì?
- Trả lời: Smart pointer quản lý tự động bộ nhớ, tránh rò rỉ bộ nhớ.
- Thread trong C++ là gì?
- Trả lời: Thread là đơn vị thực thi nhỏ nhất trong chương trình, cho phép lập trình đa luồng.
- RAII trong C++ là gì?
- Trả lời: RAII (Resource Acquisition Is Initialization) đảm bảo tài nguyên được giải phóng khi đối tượng bị hủy.
- Const correctness trong C++ là gì?
- Trả lời: Const correctness đảm bảo rằng các biến hoặc phương thức không thay đổi giá trị khi được khai báo
const
.
Câu hỏi tổng hợp
- C++ có hỗ trợ đa kế thừa không?
- Trả lời: Có, C++ hỗ trợ đa kế thừa, nhưng cần cẩn thận để tránh sự mơ hồ.
- Friend function trong C++ là gì?
- Trả lời: Friend function là hàm được phép truy cập vào các thành viên private và protected của class.
- Operator overloading trong C++ là gì?
- Trả lời: Operator overloading cho phép định nghĩa lại hành vi của các toán tử với các kiểu dữ liệu tùy chỉnh.
- Namespace trong C++ là gì?
- Trả lời: Namespace giúp tổ chức mã nguồn và tránh xung đột tên.
- C++11, C++14, C++17 là gì?
- Trả lời: Đây là các phiên bản chuẩn của C++, bổ sung nhiều tính năng mới như lambda, auto, smart pointer.