24 câu hỏi phỏng vấn lập trình C++ trình độ căn bản và câu trả lời

Phỏng vấn là một bước quan trọng với cả người lao động và doanh nghiệp. Với người lao động, bạn cần trả lời tốt các câu hỏi phỏng vấn để được nhận vào làm. Trong khi đó,  doanh nghiệp có nhu cầu tuyển dụng phải tạo ra một bộ câu hỏi phù hợp để đánh giá chuẩn xác nhất năng lực của ứng viên.

Trong bài viết này, Quản Trị Mạng sẽ tổng hợp 24 câu hỏi phỏng vấn lập trình C++ phổ biến nhất ở cấp độ căn bản (Fresher). Quản Trị Mạng hy vọng rằng bài viết này sẽ có ích đối với cả những lập trình viên mới vào nghề đang đi xin việc và nhà tuyển dụng.

Câu 1: C và C++ có gì khác nhau?

Trả lời: Với câu hỏi này, các bạn nên kẻ bảng so sánh để trình bày mọi thứ rõ ràng hơn.

CC++
C là ngôn ngữ lập trình hướng thủ tụcC++ là ngôn ngữ lập trình hướng đối tượng một phần
C tuân theo cách tiếp cận từ trên xuốngC++ tuân theo cách tiếp cận từ dưới lên
C không hỗ trợ nạp chồng hàm hoặc toán tửC++ hỗ trợ nạp chồng hàm hoặc toán tử
C không hỗ trợ hàm ảo và hàm bạnC++ có hỗ trợ hàm ảo và hàm bạn
C chỉ có 32 từ khóaC++ có 52 từ khóa

Câu 2: Lớp và đối tượng trong C++ là gì?

Trả lời: Một lớp (class) giống như một bản thiết kế của một đối tượng (object). Nó là kiểu dữ liệu do người dùng định nghĩa, chứa các dữ liệu thành phần hoặc hàm thành phần và được định nghĩa bằng từ khóa class.

Bạn định nghĩa các đối tượng như một thể hiện của một lớp. Khi nó tạo ra đối tượng thì nó có thể hoạt động trên cả dữ liệu thành phần hoặc hàm thành phần.

Câu 3: Công cụ sửa đổi truy cập (access modifiers) là gì?

Trả lời: Bạn sử dụng công cụ sửa đổi quyền truy cập để xác định khả năng truy cập cho các thành viên của lớp. Nó định nghĩa cách truy cập các thành viên của lớp bên ngoài phạm vi lớp.

Có ba loại công cụ sửa đổi quyền truy cập:

  • Private (Riêng tư)
  • Public (Công cộng)
  • Protected (Được bảo vệ)

Câu 4: Toán tử bằng (==) và gán (=) khác nhau như thế nào?

Trả lời: Toán tử == kiểm tra xem hai giá trị có bằng nhau không. Nếu bằng nhau thì kết quả trả về là đúng còn nếu không kết quả trả về là sai.

Toán tử gán = sẽ gán giá trị của biểu thức bên phải cho toán hạng bên trái.

Câu 5: Vòng lặp while và do-while có gì khác nhau?

Trả lời:

whiledo-while
Vòng lặp while xác minh điều kiện, nếu nó đúng, vòng lặp sẽ được lặp đi lặp lại cho đến khi điều kiện trở thành saiĐầu tiên, vòng lặp do-while tiến hành lặp lại thân của nó một lần sau đó nó kiểm tra điều kiện

Syntax:

while (condition)

{

statements

}

Syntax:

do{

statements

}

while(condition);

Nếu điều kiện sai trong vòng lặp while thì không có câu lệnh nào được thực thi trong vòng lặpNếu điều kiện trong vòng lặp do-while là sai thì phần thân của vòng lặp sẽ được thực hiện một lần

Câu 6: Kích thước của kiểu dữ liệu int là bao nhiêu?

A: 4 bytes

B: 1 byte

C: 8 bytes

D: 2 bytes

Trả lời: Đáp án là A, 4 bytes. Kiểu dữ liệu số nguyên trong C++ là 4 bytes.

Câu 7: Toán tử nào sau đây không thể nạp chồng?

A: -

B: +

C: ?:

D: %

Trả lời: Đáp án là C, toán tử ?: không thể nạp chồng.

Câu 8: Điều gì sau đây được sử dụng để trả về số lượng ký tự trong một chuỗi?

A: Size (Kích thước)

B: Length (Chiều dài)

C: Cả size và length (Cả kích thước và chiều dài)

D: Name (Tên)

Trả lời: Đáp án là C, cả kích thước và chiều dài được sử dụng để trả về số lượng ký tự trong một chuỗi.

Câu 9: Tiền tố và hậu tố khác nhau như thế nào?

Trả lời:

Trong tiền tố (++i), đầu tiên, nó tăng giá trị biến, sau đó nó gán biến cho biểu thức.

Trong hậu tố (i++), nó gán giá trị cho biểu thức sau đó mới tăng giá trị của biến.

Câu 10: Bạn có thể biên dịch một chương trình mà không có hàm main hay không?

Trả lời: Có, chúng ta có thể biên dịch một chương trình mà không có hàm main nhưng không thể chạy hoặc thực thi chương trình đó vì hàm main() là điểm truy cập, từ đó tất cả quá trình thực thi bắt đầu. Khi không có điểm truy cập thì bạn không thể thực thi chương trình.

Câu 11: std trong C++ là gì?

A: std là một lớp tiêu chuẩn trong C++

B: std header đọc file tiêu chuẩn

C: std là một file header

D: std là một namespace tiêu chuẩn

Trả lời: Đáp án là D, std là một namespace tiêu chuẩn.

Câu 12: Bốn loại dữ liệu trong C++ khác nhau như thế nào?

Trả lời:

  • Nguyên thủy/Cơ bản: Char, int, short, float, double, long, bool,...
  • Phái sinh: Array, pointer,...
  • Liệt kê: Enum
  • Người dùng định nghĩa: Structure, class,...

Câu 13: Cấu trúc (structure) khác với lớp (class) như thế nào?

Trả lời:

StructureClass
Theo mặc định, các thành phần của nó là công cộngTheo mặc định, các thành phần của nó là riêng tư
Các chỉ định truy cập mặc định là công cộng khi lấy một cấu trúc từ một lớp/cấu trúcCác chỉ định truy cập mặc định là riêng tư khi lấy một lớp

Câu 14: Bạn hiểu như thế nào về tính đa hình trong C++?

Trả lời: Thuật ngữ đa hình đề cập đến sự hiện diện của nhiều hình thức. Tính đa hình thường xảy ra khi có một hệ thống phân cấp của các lớp được liên kết với nhau bằng tính kế thừa.

Tính đa hình trong C++ có nghĩa là tùy thuộc vào loại đối tượng gọi hàm, một hàm khác sẽ được thực thi.

Câu 15: So sánh đa hình Compile-time và đa hình runtime.

Trả lời:

Đa hình compile-timeĐa hình runtime
Phương thức được thực thi đã biết ở thời điểm biên dịch. Và lệnh đã được giải quyết bởi trình biên dịch.Phương pháp được thực hiện được biết trong thời gian chạy. Trình biên dịch không giải quyết lệnh.
Cung cấp khả năng thực thi nhanh hơn bởi vì nó được biết tại thời điểm biên dịchThời gian thực thi chậm hơn vì nó được biết tại thời điểm chạy
Đạt được bằng cách vận hành hoặc nạp chồng hàmĐạt được bằng cách ghi đè hàm

Câu 16: Hàm tạo trong C++ là gì?

Trả lời: Trong C++, một Object hàm là một "MEMBER FUNCTION" cụ thể có cùng tiêu đề với lớp mà nó thuộc về và được sử dụng để khởi tạo các giá trị cụ thể cho các dữ liệu thành viên của đối tượng.

#include <iostream>

using namespace std;

class student {

    int no;

public:

    student()

    {

        cout << "Enter the RollNo:";

        cin >> rno;

   }

    void display()

    {

        cout << endl << rno << "\t";

    }

};

int main()

{

    student s; // constructor gets called automatically when

               // we create the object of the class

    s.display();

    return 0;

}

Câu 17: Hàm ảo là gì?

Trả lời: Hàm ảo là một hàm thành viên trong lớp cơ sở được định nghĩa lại trong lớp dẫn xuất. Nó được khai báo bằng từ khóa virtual. Nó đảm bảo rằng hàm chính xác được gọi cho một đối tượng, bất kể loại tham chiếu/con trỏ được sử dụng cho lệnh gọi hàm. Các hàm ảo đa phần được sử dụng cho đa hình runtime.

Câu 18: Bạn hiểu gì về hàm bạn và lớp bạn?

Trả lời: Giống như một hàm bạn, một lớp bạn có thể truy cập các biến cá nhân và được bảo vệ của loại mà nó được khai báo. Tất cả các hàm thành viên của các lớp được chỉ định là bạn của một lớp khác là các hàm bạn của lớp bạn.

class Node {

private:

int key;

Node* next;

/* Other members of Node Class */

// Now class LinkedList can

// access private members of Node

friend class LinkedList;

};

Câu 19: Ba loại chỉ định truy cập của C++ khác gì nhau?

Trả lời:

  • Public (Công khai): Tất cả các hàm thành viên và dữ liệu thành viên đều có thể truy cập được bên ngoài lớp.
  • Protected (Được bảo vệ): Tất cả các hàm thành viên và dữ liệu thành viên đều có thể truy cập được trong lớp và lớp dẫn xuất.
  • Private (Riêng tư): Tất cả các hàm thành viên và dữ liệu thành viên đều không thể truy cập được bên ngoài lớp.

Câu 20: Trừu tượng hóa (abstraction) trong C++ là gì?

Trả lời: Tính trừu tượng có nghĩa là hiển thị các chi tiết cho người dùng trong khi ẩn đi các chi tiết không liên quan hoặc cụ thể mà bạn không muốn hiển thị cho người dùng. Nó có hai loại:

  • Control abstraction
  • Data abstraction

Câu 21: Hàm hủy trong C++ là gì?

Trả lời: Hàm hủy là hàm thành viên được gọi ngay lập tức khi một đối tượng thoát khỏi phạm vi của nó hoặc bị xóa bởi lệnh xóa.

class X {

public:

  // Constructor for class X

  X();

  // Destructor for class X

  ~X();

};

Câu 22: Có thể tải chồng hàm hủy không? Đưa ra lý do cho câu trả lời của bạn.

Trả lời: Không, điều này là không thể vì hàm hủy không nhận đối số hoặc trả về bất cứ thứ gì. Chỉ có một hàm hủy trống cho mỗi lớp. Nó phải có một danh sách tham số void.

Câu 23: Lớp trừu tượng là gì? Khi nào nó được sử dụng?

Trả lời: Một lớp trừu tượng là một lớp mà các đối tượng của nó không thể được tạo ra. Nó đóng vai trò là cha của các lớp dẫn xuất. Đặt một hàm thuần ảo trong lớp sẽ biến nó thành một lớp trừu tượng.

Câu 24: Bạn hiểu gì về thành viên tĩnh và hàm thành viên tĩnh?

Trả lời: Một biến trong một lớp được khai báo là tĩnh có không gian được phân bổ trong suốt thời gian tồn tại của chương trình. Chỉ có một bản sao duy nhất của thành viên tĩnh, bất kể số lượng đối tượng của lớp đó được tạo ra. Tất cả các đối tượng của lớp đó đều có thể truy cập cùng một thành viên tĩnh.

Hàm thành viên tĩnh có thể được gọi ngay cả khi không có đối tượng lớp nào tồn tại. Nó được truy cập chỉ bằng tên lớp và toán tử phân giải phạm vi (::).

Thứ Hai, 05/12/2022 09:29
3,73 👨 1.417
0 Bình luận
Sắp xếp theo
    ❖ Lập trình C++