Tuyển tập 200 câu hỏi phỏng vấn lập trình C/C++

Tuyển tập 200 câu hỏi phỏng vấn lập trình C/C++

Ngôn ngữ lập trình C

1. Phân biệt Syntax-error, Runtime-error and Logical error?

2. Complier and linker là gì?

3. Vòng lặp vô hạn là gì?

4. Biến static, extern là gì?

5. Hàm sprintf() được sử dụng trong trường hợp nào?

6. Sư khác nhau giữa memcpy và strcpy?

7. Sự khác nhau giữa memcpy() và memmove()?

8.  Sự khác nhau giữa truyền giá trị và truyền tham biến (con trỏ và tham chiếu)?

9. Memory leak là gì? Cách tránh memory leak?

10. Ưu và nhược điểm khi sử dụng mảng trong ngôn ngữ C?

11. Sự khác nhau giữa cấp phát tĩnh và cấp phát động?

12. Sự khác nhau giữa const char* s và char* const s?

13. Sự khác nhau giữa mảng và chuỗi?

14. Con trỏ void là gì?

15. Sự khác nhau giữa malloc() và calloc()?

16. Sự khác nhau giữa việc #include và  #include “xxx.h”?

17. Từ khóa auto có ý nghĩa gì?

Đáp án

Biến auto là biến local, thời gian tồn tại trong hàm và giá trị của biến auto không được lưu giữa các lần gọi hàm.

18. Sử dụng macro hay function tốt hơn?

19. Sự khác nhau giữa kích thước của biến con trỏ int* và biến con trỏ char* ?

Đáp án
  • Kích thước biến con trỏ không phụ thuộc vào kiểu dữ liệu con trỏ trỏ tới vì con trỏ lưu địa chỉ của biến. Địa chỉ của biến là kiểu int.
  • Do vậy, kích thước là 2 byte cho OS 16 bit, 4 byte cho OS 32 bit, 8 byte cho OS 64 bit.
  • Toán tử sizeof() để tính kích thước của biến (con trỏ, mảng, struct,..)

20. Sự khác nhau giữa struct và union?

21. Sự khác nhau giữa #define và const?

22. Sự khác nhau giữa bộ nhớ stack và heap?

23. Sự khác nhau giữa hàm strdup() và strcpy()?

22. Sự khác nhau giữa mảng và link list?

23. Mảng con trỏ là gì? Ứng dụng của mảng con trỏ?

24. Con trỏ hàm là gì? Ứng dụng con trỏ hàm?

25. Double pointer và ứng dụng

25. Con trỏ gần(near pointer) là gì?

26. Con trỏ xa (far pointer) là gì?

27. Alignment struct là gì?

29. Mối liên hệ giữa con trỏ và mảng 1 chiều?

30. Mối liên hệ giữa con trỏ và mảng 2 chiều?

31. Macro là gì? Ưu và nhược điểm khi sử dụng macro?

32. Sự khác nhau giữa ++x và x++ trong C/C++?

33. Tại sao keyword default và break được sử dụng trong lệnh switch case?

34. Nên sử dụng switch case hay if else?

35. Sử dụng hàm nào an toàn hơn trong 2 hàm fgets() và gets()?

36. Những ưu điểm khi sử dụng enum thay vì sử dụng #define?

37. Từ khóa #prama là gì?

38. Viết con trỏ tương ứng với giá trị mảng a[i][j][k][m]?

39. Sự khác nhau giữa const và volatite?

40. Tại sao nên gán NULL cho con trỏ sau khi giải phóng vùng nhớ?

41. Sự khác nhau giữa linker và linkage?

42. Sự khác nhau giữa malloc() và new()?

43. Liệt kê và giải thích các thuộc tính của OOP?

44. Hàm inline() là gì?

45. Hàm tạo, hàm hủy là gì?
46. Hàm hủy ảo (virtual destructor) là gì?
47. Hàm tạo copy  là gì? Khi nào hàm tạo copy được gọi?
48. Viết 5 điểm khác nhau giữa C và C++
49. Viết 3 điểm khác nhau giữa inline function và macro có tham số truyền vào
50. Khái niệm Name mangling trong C++ là gì?
51. Sự khác nhau giữa con trỏ và tham chiếu
52. Khái niệm null reference là gì?
53. Tại sao chúng ta sử dụng chồng toán tử (operator overloading)
54. Trong trường hợp nào nên sử dụng tham số hằng tham chiếu. Cho ví dụ minh họa?
55. Const function là gì?
56. Hàm tạo copy được gọi trong trường hợp nào?
57. Template class là gì?
58. Những toán tử nào ko thể thực hiện overloading?
59. Khi nào chúng ta cần deep copy?
60. Trong C++, Conversion constructor là gì?
61. Khi nào sử dụng static data member trong C++. Cho ví dụ minh họa
62. Trong C++, mutable data members là gì?
63. Smart pointer trong C++ là gì?
64. Sự khác nhau giữa đa kế thừa (multiple inheritance) và kế thừa nhiều mức (multilevel inheritance) là gì?
65. Sự khác nhau giữa overloading và overriding?
66. Ý nghĩa của ‘vptr’ trong hàm ảo là gì?
67. Đa hình động (runtime polymorphism) được thực thi như thế nào trong C++?
68. So sánh đa hình tĩnh (compile polymorphism) và đa hình động (runtime polymorphism)?
69. Ý nghĩa của hàm thuần ảo (pure virtual function) trong C++?
70. Kể ra các loại đa hình trong C++?
71. Liệt kê các loại exception trong C++?
72. dynamic_cast trong C++ là gì?
73. Viết 5 sample sử dụng STL sequence containers?
74. dangling pointer C++ là gì?
75. Namespace là gì? Ưu điểm của việc sử dụng namespace? Cho ví dụ minh họa.
76. Tại sao static member trong class lại ko nhận con trỏ “this”?
77. abstraction C++ là gì?
78. encapsulation C++ là gì?
79. Binding C++ là gì? Mô tả static và run-time binding?
80. Khi nào chúng ta sử dụng hàm hủy ảo (virtual destructor)?