Tổng hợp 500+ câu hỏi phỏng vấn C/C++
Tổng hợp những câu hỏi phỏng vấn C/C++ mới nhất, chính xác nhất theo từng cấp bậc!
Câu hỏi phỏng vấn C/C++
Hãy xem các câu hỏi chúng tôi đã tổng hợp và cùng ôn luyện lại nhé!
Các kiểu dữ liệu cơ bản trong C/C++ bao gồm:
- Kiểu số nguyên (integer): int, long, short, và unsigned int, unsigned long, unsigned short
- Kiểu số thực (floating-point): float, double
- Kiểu ký tự (character): char
- Kiểu boolean: bool
- Kiểu vô kiểu (void): void (được sử dụng khi không có giá trị trả về)
- Kiểu chuỗi ký tự (string): dùng thư viện string trong C++, không có kiểu chuỗi ký tự cơ bản trong C
Mỗi kiểu dữ liệu có kích thước và phạm vi giá trị khác nhau, và được sử dụng để lưu trữ và xử lý các loại dữ liệu khác nhau trong chương trình.
Trong C/C++, con trỏ và tham chiếu là hai khái niệm quan trọng để tham chiếu đến các biến hoặc đối tượng.
-
Con trỏ:
- Con trỏ là một biến chứa địa chỉ bộ nhớ của biến hoặc đối tượng khác.
- Để khai báo con trỏ, ta sử dụng ký tự trước tên biến. Ví dụ: int ptr;
- Con trỏ có thể thay đổi địa chỉ mà nó đang trỏ tới.
- Để truy cập đến giá trị của biến hay đối tượng mà con trỏ đang trỏ tới, ta sử dụng toán tử giải tham chiếu (*) trước tên con trỏ.
- Con trỏ cần được khởi tạo trước khi sử dụng, hoặc có thể được gán giá trị của một con trỏ khác.
-
Tham chiếu:
- Tham chiếu là một biến bổ phận cho một biến khác và trở thành một tên mới đối với biến đó.
- Để khai báo tham chiếu, ta sử dụng ký tự & trước tên biến. Ví dụ: int &ref = num;
- Tham chiếu phải được khởi tạo ngay khi nó được khai báo, và không thể tham chiếu tới một biến khác sau đó.
- Tham chiếu không thể thay đổi biến nó đang tham chiếu tới.
- Khi thay đổi giá trị của tham chiếu, giá trị của biến mà nó tham chiếu sẽ thay đổi theo.
Tóm lại, con trỏ cho phép thay đổi địa chỉ mà nó trỏ tới và có thể tham chiếu đến nhiều biến hoặc đối tượng khác nhau trong quá trình chạy. Trong khi đó, tham chiếu là một biến bổ phận cho một biến khác và không thể thay đổi biến mà nó tham chiếu tới.
Trong C/C++, chúng ta có thể khai báo hàm bằng cách sau:
-
Khai báo hàm trong phần đầu của chương trình:
- Cú pháp:
kiểu_dữ_liệu tên_hàm(tham_số)
- Ví dụ:
void printHello()
- Cú pháp:
-
Trong trường hợp hàm có tham số, chúng ta phải xác định kiểu dữ liệu của từng tham số:
- Cú pháp:
kiểu_dữ_liệu tên_hàm(kiểu_dữ_liệu tham_số1, kiểu_dữ_liệu tham_số2, ...)
- Ví dụ:
int sum(int a, int b)
- Cú pháp:
-
Đối với hàm trả về giá trị, chúng ta cần xác định kiểu dữ liệu trả về:
- Cú pháp:
kiểu_dữ_liệu trả về tên_hàm(tham_số)
- Ví dụ:
int calculateSum(int a, int b)
- Cú pháp:
Lưu ý rằng, việc khai báo hàm chỉ mô tả tên hàm, kiểu dữ liệu của tham số và kiểu dữ liệu trả về (nếu có). Để thực hiện các công việc trong hàm, chúng ta cần viết định nghĩa hàm ở phần sau khai báo.
Sự khác nhau giữa hằng số và biến trong C/C++:
-
Hằng số (Constant): Là một giá trị không thay đổi trong suốt chương trình, không thể thay đổi giá trị của hằng số trong quá trình thực thi chương trình. Ví dụ: const int MAX = 100;
-
Biến (Variable): Là một vùng nhớ được cấp phát để lưu trữ giá trị, có thể thay đổi giá trị của biến trong quá trình thực thi chương trình. Ví dụ: int count = 0;
Các khác nhau cụ thể giữa hằng số và biến như sau:
- Khai báo: Hằng số được khai báo bằng từ khoá "const" trước kiểu dữ liệu, biến không cần từ khoá "const".
- Gán giá trị: Hằng số không thể gán giá trị mới sau khi đã được khai báo, trong khi biến có thể gán giá trị mới bất kỳ lúc nào.
- Sử dụng trong phép tính: Hằng số có thể sử dụng trong phép tính, nhưng không thay đổi giá trị của mình. Biến có thể sử dụng và tham gia các phép tính và có thể thay đổi giá trị của mình qua các phép tính.
- Bộ nhớ: Biến có vùng nhớ riêng để lưu trữ giá trị, trong khi hằng số thường được lưu trữ trực tiếp tại nơi sử dụng.
Bản chất của sự khác biệt này giúp hằng số và biến phục vụ cho các mục đích khác nhau trong quá trình lập trình.
Trong C/C++, câu lệnh điều khiển if-else được sử dụng để kiểm tra điều kiện và chọn một trong hai khối lệnh để thực hiện dựa trên kết quả của điều kiện.
Cách sử dụng câu lệnh if-else trong C/C++ như sau:
- Cú pháp của câu lệnh if-else:
if (condition) { // khối lệnh được thực hiện khi điều kiện đúng } else { // khối lệnh được thực hiện khi điều kiện sai }
- Ví dụ về sử dụng câu lệnh if-else:
int x = 10;
if (x > 5) { cout << "x lon hon 5" << endl; } else { cout << "x khong lon hon 5" << endl; }
Kết quả của ví dụ trên sẽ là "x lon hon 5" vì giá trị của biến x là 10, lớn hơn 5.
Trong C/C++, có một số quy tắc cần tuân theo khi đặt tên biến:
-
Tên biến phải bắt đầu bằng một chữ cái hoặc ký tự gạch dưới '_', không được bắt đầu bằng số hoặc ký tự đặc biệt.
-
Tên biến chỉ có thể chứa các chữ cái (in hoa hoặc in thường), số và ký tự gạch dưới. Không được sử dụng các ký tự đặc biệt như !,@,#, $, %, và các ký tự khoảng trống.
-
Tên biến không được trùng với các từ khóa (keywords) của ngôn ngữ C/C++, ví dụ như "int", "for", "if",...
-
Tên biến nên có ý nghĩa để dễ hiểu và giúp tăng khả năng đọc và hiểu code.
-
Tên biến nên sử dụng chữ viết thường cho các từ đơn và sử dụng kiểu viết hoa chữ cái đầu tiên cho các từ trong một tên biến kép (camelCase), ví dụ: myVariable, firstName.
-
Không nên sử dụng quá ngắn hoặc quá dài tên biến, nên tuân theo một quy tắc nhất định để đảm bảo đồng nhất trong code.
-
Không nên sử dụng tên biến quá phổ biến hoặc có thể gây hiểu nhầm với biến khác trong chương trình.
Tuân theo những quy tắc trên sẽ giúp tạo ra mã nguồn dễ đọc, dễ hiểu và dễ bảo trì.
Trong ngôn ngữ lập trình C/C++, cấu trúc vòng lặp for, while và do-while được sử dụng như sau:
-
Vòng lặp for: Cú pháp:
for (khởi tạo; điều kiện; cập nhật) { // các câu lệnh }
- Ở đây, "khởi tạo" là một lệnh dùng để khởi tạo một biến đếm.
- "điều kiện" là một biểu thức kiểu bool. Nếu điều kiện là đúng (true), thì các câu lệnh trong vòng lặp được thực thi. Ngược lại, nếu điều kiện là sai (false), thì vòng lặp dừng.
- "cập nhật" là một lệnh dùng để cập nhật giá trị của biến đếm sau mỗi lần lặp.
-
Vòng lặp while: Cú pháp:
while (điều kiện) { // các câu lệnh }
- "điều kiện" là một biểu thức kiểu bool. Nếu điều kiện là đúng (true), thì các câu lệnh trong vòng lặp được thực thi. Ngược lại, nếu điều kiện là sai (false), thì vòng lặp dừng.
-
Vòng lặp do-while: Cú pháp:
do { // các câu lệnh } while (điều kiện);
- "điều kiện" là một biểu thức kiểu bool. Các câu lệnh trong vòng lặp được thực thi ít nhất một lần, sau đó kiểm tra điều kiện. Nếu điều kiện là đúng (true), thì vòng lặp tiếp tục. Ngược lại, nếu điều kiện là sai (false), thì vòng lặp dừng.
Cả ba loại vòng lặp này đều được sử dụng để lặp lại một khối mã nhiều lần trong khi một điều kiện nào đó vẫn đúng. Tuy nhiên, cần lưu ý rằng không được để lệnh cập nhật (trong trường hợp vòng lặp for) hoặc điều kiện (trong trường hợp vòng lặp while và do-while) gây ra lặp vô tận.
Trong C/C++, câu lệnh switch-case được sử dụng để kiểm tra giá trị của biểu thức và thực hiện một hành động cụ thể tùy thuộc vào giá trị của biểu thức đó. Cú pháp của câu lệnh switch-case như sau:
switch (biểu_thức)
{
case giá_trị_1:
// Hành động 1
break;
case giá_trị_2:
// Hành động 2
break;
...
default:
// Hành động mặc định (nếu không có case khớp)
break;
}
biểu_thức
là một biểu thức có thể có giá trị là kiểu số nguyên hoặc ký tự.giá_trị_1
,giá_trị_2
, ... là các giá trị mà biểu thức có thể có và sẽ được kiểm tra.- Mỗi
case
đại diện cho một giá trị mà biểu thức có thể có và sẽ thực hiện các hành động cụ thể bên trong nếu giá trị khớp với biểu_thức. default
là một trường hợp tùy chọn được sử dụng khi không cócase
nào khớp với giá trị của biểu_thức. Hành động trongdefault
sẽ được thực hiện.break
được sử dụng để kết thúc mỗi trường hợp và ngăn chặn các trường hợp tiếp theo được thực hiện.
Chú ý rằng giá trị của biểu thức chỉ có thể là kiểu số nguyên hoặc ký tự. Trong mỗi case, bạn có thể thực hiện bất kỳ hành động nào mong muốn, bao gồm gọi các hàm, thay đổi giá trị của các biến, v.v.
Mảng 1 chiều và mảng 2 chiều là hai loại mảng khác nhau trong C/C++. Có sự khác biệt trong cách khai báo, sử dụng và lưu trữ dữ liệu.
- Mảng 1 chiều:
- Mảng 1 chiều là một tập hợp các phần tử có cùng kiểu dữ liệu và được lưu trữ liên tiếp trong bộ nhớ.
- Mảng này được khai báo bằng cách chỉ định kích thước của mảng và kiểu dữ liệu của phần tử.
- Cú pháp khai báo mảng 1 chiều:
dataType arrayName[arraySize]
. - Truy cập vào các phần tử trong mảng bằng chỉ mục (index) bắt đầu từ 0.
- Dữ liệu trong mảng 1 chiều được lưu trữ trong một hàng liên tiếp của ô nhớ.
- Ví dụ:
int myArray[5]; // Khai báo mảng myArray với kích thước 5
myArray[0] = 10; // Gán giá trị 10 cho phần tử đầu tiên
int x = myArray[2]; // Truy cập và gán giá trị từ phần tử thứ 3 của mảng
- Mảng 2 chiều:
- Mảng 2 chiều là một tập hợp các hàng và cột của các phần tử có cùng kiểu dữ liệu, được lưu trữ trong một vùng nhớ liên tục.
- Mảng này được khai báo bằng cách chỉ định kích thước của mảng và kiểu dữ liệu của phần tử.
- Cú pháp khai báo mảng 2 chiều:
dataType arrayName[rowSize][colSize]
. - Truy cập vào các phần tử trong mảng bằng chỉ mục của hàng và cột.
- Dữ liệu trong mảng 2 chiều được lưu trữ dưới dạng các hàng liên tiếp, mỗi hàng lưu trữ dữ liệu trong một vùng nhớ liên tiếp.
- Ví dụ:
int myArray[2][3]; // Khai báo mảng myArray với 2 hàng và 3 cột
myArray[0][0] = 10; // Gán giá trị 10 cho phần tử vị trí (0,0)
int x = myArray[1][2]; // Truy cập và gán giá trị từ phần tử vị trí (1,2)
Tóm lại, mảng 1 chiều và mảng 2 chiều trong C/C++ có các điểm khác nhau về khai báo, truy cập và lưu trữ dữ liệu. Dựa vào yêu cầu của bài toán, người lập trình sẽ lựa chọn mảng phù hợp để lưu trữ và xử lý dữ liệu.
Trong C/C++, các hàm nhập và xuất dữ liệu căn bản bao gồm:
-
printf: Hàm này được sử dụng để xuất dữ liệu ra màn hình. Ví dụ: printf("Hello world!");
-
scanf: Hàm này được sử dụng để nhập dữ liệu từ bàn phím. Ví dụ: scanf("%d", &num); (ở đây, %d là định dạng của biến số nguyên và &num là địa chỉ của biến num).
-
cin, cout: Đây là hàm nhập và xuất dữ liệu trong C++ dùng cho đối tượng kiểu stream. Ví dụ: int num; cin >> num; (để nhập dữ liệu) hoặc cout << "Hello world!"; (để xuất dữ liệu).
-
gets, puts: Hàm gets được sử dụng để nhập chuỗi ký tự từ bàn phím và hàm puts được sử dụng để in chuỗi ký tự ra màn hình. Ví dụ: char str[20]; gets(str); (để nhập chuỗi) hoặc puts(str); (để in chuỗi).
Câu hỏi phỏng vấn C/C++ | Phong-Van.Com
1 day ago Top 40 Câu Hỏi Tình Huống, Hành Vi trong Phỏng Vấn phổ biến. 1 week ago Mar 9, 2022 · Top các câu hỏi tình huống hành vi phổ biến trong phỏng vấn. 1. Nhóm câu hỏi về kỹ năng làm …
Các câu hỏi phỏng vấn C/C++ - Phỏng vấn IT - PhongvanIT.com
1 day ago Các câu hỏi phỏng vấn C/C++
Câu Hỏi Phỏng Vấn C++ [Tổng Hợp 1000 Câu Hỏi] - Techacademy
2 days ago C là ngôn ngữ hướng thủ tục (POP), trong khi C++ là ngôn ngữ lập trình hướng đối tượng.C chỉ hỗ trợ con trỏ trong khi C++ hỗ trợ cả con trỏ và tham chiếu.C không cho phép bạn sử dụng tính năng nạp chồng hàm trong khi C++ cho phép bạn sử dụng tính năng nạp chồng hàm.C hỗ trợ các kiểu dữ liệu tích hợp trong khi C++ hỗ trợ các kiểu dữ liệu cài sẵn cũng như d…
› 5/5 (1)
› Published: May 1, 2023
Các câu hỏi phỏng vấn tìm việc làm thường gặp | VietnamWorks
1 week ago Tham khảo câu trả lời phỏng vấn mẫu bằng Tiếng Anh: "My former colleague / manager helped and guided me a lot during my time at company X. Although disagreements were inevitable at …
1001 các câu hỏi phỏng vấn xin việc thường gặp và cách trả lời …
5 days ago Dec 27, 2019 · Bạn đang tìm hiểu các câu hỏi phỏng vấn kĩ càng nhằm ghi điểm trong mắt nhà tuyển dụng. Bạn hãy tham khảo bộ các câu hỏi phỏng vấn xin việc thường gặp tại
Top 40+ câu hỏi phỏng vấn Mobile Developer phổ biến
1 week ago Nov 12, 2024 · Top 50+ câu hỏi phỏng vấn OOP và trả lời mới nhất (Phần 2) Các câu hỏi phỏng vấn Mobile Developer cụ thể cho hệ điều hành iOS ... Flutter cung cấp bộ widget phong phú, …
21 câu hỏi phỏng vấn Java hàng đầu - CodeGym
3 days ago Jul 21, 2023 · 21 câu hỏi phỏng vấn Java hàng đầu. Xuất bản trong nhóm. Tham gia. Có vô số câu hỏi phỏng vấn Java và chúng tôi không thể tập hợp tất cả chúng trong một bài viết. Tuy …
Top 20+ câu hỏi phỏng vấn IT Helpdesk phổ biến - ITviec Blog
1 week ago Oct 21, 2024 · Top 20+ câu hỏi phỏng vấn IT Helpdesk phổ biến. Khi ứng tuyển vào vị trí IT Helpdesk, việc chuẩn bị kỹ lưỡng cho các câu hỏi phỏng vấn là yếu tố then chốt để gây ấn …
Top 30+ câu hỏi phỏng vấn Magento phổ biến - ITviec Blog
1 week ago Nov 12, 2024 · Kể tên các loại hình ảnh trong Magento. Có 4 loại hình ảnh trong Magento: Hình ảnh cơ bản (Base image): Hình ảnh cơ bản (Base image) là hình minh họa chính trên trang …
THE 30 BEST Restaurants in North Bergen - With Menus, Reviews, …
4 days ago Taco Bell. We've gathered up the best places to eat in North Bergen. Our current favorites are: 1: Brazeiro Churrascaria & Rodizio, 2: Zapallar Restaurant & Bakery, 3: Harry’s Food and Drink, …
The 10 Best Nursing Homes in Bergen County, NJ for 2024
1 week ago 304 S. Van Dien Ave, Ridgewood, NJ 07450. 3.7 (8 reviews) "STAFF WAS COMPETENT ,CAPABLE. AND CARING..." READ MORE. Get Pricing Learn More. ... The staff is top notch. …
Top 20+ câu hỏi phỏng vấn PHP phổ biến - ITviec Blog
1 week ago Nov 12, 2024 · Top 20+ câu hỏi phỏng vấn PHP phổ biến. Khi chuẩn bị cho một buổi phỏng vấn liên quan đến PHP, việc nắm vững các câu hỏi thường gặp là điều vô cùng quan trọng. Các …
Bergen.edu | Bergen Community College
1 week ago Oct 10, 2024 · MAIN CAMPUS 400 Paramus Rd Paramus, NJ 07652 (201) 447-7100. MEADOWLANDS 1280 Wall Street W Lyndhurst, NJ 07071 (201) 301-9699. CIARCO …
44 Nursing Homes Communities in Bergen County, NJ (with Reviews)
2 days ago 304 S. Van Dien Ave, Ridgewood, NJ 07450. Call 1-855-287-5093 for details. Get ... Prospect Heights Cc. 336 Prospect Avenue , Hackensack, NJ 07601. Call 1-855-287-5093 for details. …
FAQs - Câu hỏi thường gặp về phỏng vấn?
Những câu hỏi thường gặp để phản ánh chính sách và quy trình cụ thể của bạn hoặc để phù hợp với mục đích cụ thể của phỏng vấn.