Ngoài lề: Tụi mình có 1 group discord về IT tên là "Code club Vietnam" với 1k thành viên, có các anh tech lead, senior, junior ở các công ty lớn cùng các bạn sinh viên trong ngành IT. Nếu yêu thích, hãy tham gia thảo luận với tụi mình.
Trong quá trình phỏng vấn và nằm vùng trong các group thì mình có tổng hợp được một số câu hỏi phỏng vấn cho Back-end. Mình học golang nên 1/4 câu hỏi sẽ liên quan đến go, 3/4 còn lại là câu hỏi mà back-end nào cũng có thể bị hỏi.
Để trả lời một câu hỏi không chỉ là đọc được vài khái niệm trên mạng mà chém với nhà tuyển dụng. Khi bạn hiểu được một vấn đề là khi bạn có thể trả lời được các câu hỏi:
- 4W + 1H (What, Why, When, Where, How)
- Có dễ maintain, dễ training không, chi phí như nào?
- Điểm mạnh, điểm yếu là gì, rồi đem so sánh nó với một cái tương tự (dẫn chứng thực tế, từ sách hay các ông lớn).
Dưới đây là 100+ câu hỏi phỏng vấn. Hiện tại chỉ có câu hỏi, câu trả lời mình sẽ update ở các phần sau. Ngoài ra nhiều câu mình cũng không biết, nên nếu bạn biết hãy comment để mọi người cùng học hỏi nhé.

I. Golang

1. Tại sao dùng golang?
2. Concurrency trong golang
3. Channel là gì?
4. Sự khác nhau giữa channel buffer và unbuffer
5. Giải thích method & interface
6. Slice là gì?
7. Pointer trong go
8. Làm sao để dừng một chương trình go routine
9. Giải thích sự khác nhau giữa map và struct
10. Race condition là gì?
11. Deadlock là gì?
12. GRPC là gì?
13. Generics trong golang là gì?
14. Defer trong go để làm gì?
15. Select trong golang
16. Khi nào sử dụng panic?
17. Viết unit testing như nào
18. Các trường hợp memory leak
19. Thiết kế chức năng graceful shutdown golang
20. garbage collection
21. Giải thích go runtime, go schedule
22. Tại sao dùng gin framework (hoặc framework mà bạn sử dụng)
23. Làm sao để monitor được RAM
24. Manual management heap như nào cho đỡ lâu
25. Golang có OOP không
26. Phiên bản mới nhất của golang là gì?
27. Sự khác nhau giữa nil và empty slice
28. Tại sao dùng channel truyền data trong khi có thể implement truyền thẳng trên go func
29. Làm sao để nối chuỗi
30. Sự khác nhau giữa data race và race condition
31. Nil channel để làm gì?
32. Làm sao để xử lý dữ liệu bị sai khi ở múi giờ khác nhau

II. Database

33. ORM là gì?
34. Tối ưu hiệu suất của một API bằng cách nào?
35. Cách remote debug trên môi trường production mà không dùng log hay chọc vào database
36. Phân biệt SQL và NoSQL
37. Tại sao chọn PostgreSQL (hoặc database mà bạn sử dụng)
38. Xử lý race condition trong database
39. Làm sao để tối ưu performance của slow query
40. SQL injection là gì?
41. Sự khác nhau giữa cluster INDEX và non-cluster INDEX
42. Sự khác nhau giữa WHERE và HAVING
43. Giải thích ACID
44. Sự khác nhau giữa UNION và UNION ALL?
45. Xử lý câu lệnh tìm kiếm trong elasticSearch như thế nào?
46. Chia partition trong database như thế nào?
47. Setup replication database như thế nào?
48. Giải thích về grapQL
49. Tại sao sử dụng elasticSearch
50. master | slave | sharding trong noSQL
51. Phân quyền cho developer trong database như thế nào?
52. Làm sao để INSERT nhiều sản phẩm vào database
53. Cách phân trang trong dữ liệu
54. CDC là gì?
55. Sự khác nhau giữa INNER JOIN và LEFT OUTER JOIN

III. Design & Architecture

56. Giải thích SOLID
57. Nguyên tắc DI và IOC
58. Định lý CAP? Các use-case khi sử dụng
59. Sự khác nhau giữa Domain Driven Design vs Event Driven Design
60. Sự khác nhau giữa Clean architecture vs Layered architecture
61. Object Oriented Design
62. Giải thích repository pattern
63. DTO và DAO
64. Giải thích về TCP và UDP
65. Sự khác nhau giữa proxy và reverse proxy
66. Khi làm thường sử dụng pattern nào?
67. Giải thích về connection pool
68. Giải thích Websocket
69. CPU cache
70. LRU cache
71. Gossip protocol là gì
72. Hệ thống linux phân quyền như thế nào?

IV. Câu hỏi tình huống (trình bày ý tưởng, sơ đồ cụ thể)

73. Thiết kế hệ thống chơi game
74. Làm sao để build 1 hệ thống crawl data
75. Dựng một reverse proxy như thế nào
76. Giải thích cách bạn làm CI/CD
77. Mô tả bức tranh sau
78. Làm sao để xử lý hàng triệu notification
79. Mô tả cách tích hợp thư viện thứ 3 như payment hay delivery
80. Điều gì xảy ra khi user nhập 1 URL
81. Xây dựng chức năng gửi mail
82. Một số phương pháp bảo mật client-server | server -server
83. Thiết kế chức năng livestream
84. Password được lưu như thế nào trong database
85. Làm sao để tự tạo sub-domain
86. Có sử dụng log bao giờ chưa?
87. Bạn đã dùng monitor bao giờ chưa?
88. Làm sao để scale up một hệ thống chat
89. Giữa connection pool max và message queue thì chọn cái nào?
90. Xử lý caching như thế nào?
91. Làm sao để hạn chế user request nhiều lần
92. Phân quyền cho người dùng như thế nào?
93. Giải thích login social với oauth2
94. Kể về cách deploy một sản phẩm lên cloud?
95. Xây dựng chức năng bình luận như thế nào?
96. Xây dựng chức năng undo | redo như nào?
97. Giải thích về SSO
98. Làm sao để kiểm tra sức khỏe của các nodes (check heatbeat)
99. Thiết kế chức năng lưu ảnh, caching ảnh
100. Xử lý automation test như thế nào?

V. Others

101. Phân biệt giữa git rebase | merge | squash
102. Sự khác nhau giữa pull | git fetch
103. Lamda trong AWS để làm gì?
104. Giải thích lệnh sudo chmod - R 777 /var/www/html/
105. K8S là gì?
106. Làm sao để build source code thành docker image
107. Sự khác nhau giữa docker kill và docker desktop
108. Sự khác biệt giữa Docker và Docker compose
109. Docker network để làm gì, nếu không dùng thì có cách nào khác không?
110. Gateway là gì?
111. CDN là gì?
112. Sự khác nhau giữa gói snap và apt
113. Với việc sử dụng JWT, làm sao để đăng xuất toàn bộ thiết bị
114. So sánh giữa Rabbitmq và kafka
115. Use-case sử dụng redis