[C++] Trả lời các câu hỏi phỏng vấn C++ (P3)

Xem tất cả các câu hỏi tại Các câu hỏi phỏng vấn C++

Xem các câu trả lời từ 1-11 tại Trả lời các câu hỏi phỏng vấn C++ ( P1 )

Xem các câu trả lời từ 12-22 tại Trả lời các câu hỏi phỏng vấn C++ ( P2)

23. Khái niệm STL có nghĩa là gì?

STL – Standard Template Library là bộ thư viện chuẩn của C++, bao gồm 1 tập hợp các class được xây dựng sẵn, cung cấp khuôn mẫu về tổ chức dữ liệu, thuật toán, bộ lặp.

Các class trong STL đều được định nghĩa ở dạng tổng quát (generic) với từ khóa template

24. Khái niệm Vector có nghĩa là gì?

Vector là “sequence containers” trong STL, có các phần tử sắp xếp tuần tự tuyến tính, ta có thế truy cập đến từng phần tử của vector thông qua chỉ số của phần tử đó.

Ta có thể thêm, sửa, xóa các phần tử trong vector 1 cách dễ dàng, linh động.

25. Cái gì được chứa strong phần header <algorithms>?

Chứa các thuật toán làm việc với các phần tử của container class trong STL.

Các thuật toán : search, sort, insert, reorder, remove, copy….

26. Điểm khác nhau giữa ‪#‎include‬ <iostream.h> và #include <iostream> là gì

Trong C++ các file thư viện .h là version cũ, nhiều trình biên dịch không còn hỗ trợ. Thư viên .h không được định nghĩa trong namespace std.

Các file thư viện KHÔNG.h là version mới, với new version tất cả thư viện chuẩn được định nghĩa trong namespace std.

#include <iostream>      =     #include<iostream.h>
using namespace std;

27. Điểm khác nhau giữa “++i” and “i++” là gì?

++i là tiền tố, biến i được tăng lên 1 trước khi thực hiện biểu thức.

i++ là hậu tố, thực hiện biểu thức xong mới tăng biến i lên 1

28. Ước lượng short circuit có nghĩa là gì? Nó được sử dụng như thế nào? Tại sao việc sử dụng nó có thể gây nguy hiểm?

Short circuit là các toán tử logic : &&, ||

Nó được dùng khi muốn kiểm tra kết hợp nhiều điều kiện.

Nó có thể gây nguy hiểm:

  • Với toán tử and : dk1 && dk2 (nếu dk 1 false ko kiểm tra dk2, dk2 có thể side effect)
  • Với toán tử or : dk1 || dk2 (nếu dk 1 true ko kiểm tra dk2, dk2 có thể side effect)

29. Toán tử ‘,’ có ý nghĩa gì?

Comma operator

Là toán tử thực hiện biểu thức bên toán hạng đầu tiên trước, sau đó thực hiện đến biểu thức bên toán hạng thứ 2 và trả về kết quả của biểu thức toán hạng thứ 2

int x = 3;

int y = 5;

int z = (x, y); // z = y = 5

30. Toán tử tam nguyên có nghĩa là gì? Cách sử dụng nó như thế nào?

Tóan tử tam nguyên hay toán tử điều kiện, được dùng để thay thế câu lệnh if – else

result = bieu_thuc_1 ? bieu_thuc_2 : bieu_thuc_3;

Biểu thức 1 dúng => return giá trị biểu thức 2;

Biểu thức 1 sai => return giá trị biêu thức 3;

31. Hàm hằng thành viên (const member) có nghĩa là gì và nó được sử dụng như thế nào?

Không thể thay đổi data member của class trong hàm hằng thành viên.


class Person

{

private:

   string name;
public:

   //Hàm hằng thành viên
   string GetName() const

   {

      return name;

   }

};

32. Làm thế nào để sử dụng try/catch trong C++?

Try/catch được sử dụng để bắt, và xử lý ngoại lệ.

try
{
   //Khối lệnh thực hiện
   //Nếu xảy ra lỗi và throw ra  exception thì dừng lại và thực hiện khối catch tương ứng với lỗi đó
}
catch(...)
{
    //Bắt lỗi exception ném ra từ khối lệnh try và xử lý
}

33. Tại sao bạn đừng bao giờ ném ra một ngoại lệ trong một hàm hủy?

Ném ngoại lệ trong hàm hủy là undefined behavior, nó có thể làm crash chương trình. Vì thường trong hàm hủy ta chỉ dọn dẹp, hủy các đối tượng nên nếu có lỗi xảy ra ta có thể bỏ qua chúng.

34. Từ khóa explicit có ý nghĩa gì?

Dùng cho constructor, không cho phép trình biên dịch ép kiểu ngầm định để giải quyết tham số của hàm.

Xem bài viết về explicit : Từ khóa explicit trong C++

35. Đâu là cách đúng để thực thi một ép kiểu trong C++?

Trong C++ hỗ trợ các cách ép kiểu:

  • static_cast
  • dynamic_cast
  • const_cast
  • reinterpret_cast
  • C-style casts

36. Khái niệm inline có nghĩa là gì?

Hàm được khai báo inline để báo với trình biên dịch chèn toàn bộ thân hàm vào trong từng ngữ cảnh , nơi hàm sử dụng.

Leave A Comment?