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. 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?