+33

100+ câu hỏi phỏng vấn Back-end (golang | database | microservice)

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

  1. ORM là gì?
  2. Tối ưu hiệu suất của một API bằng cách nào?
  3. Cách remote debug trên môi trường production mà không dùng log hay chọc vào database
  4. Phân biệt SQL và NoSQL
  5. Tại sao chọn PostgreSQL (hoặc database mà bạn sử dụng)
  6. Xử lý race condition trong database
  7. Làm sao để tối ưu performance của slow query
  8. SQL injection là gì?
  9. Sự khác nhau giữa cluster INDEX và non-cluster INDEX
  10. Sự khác nhau giữa WHERE và HAVING
  11. Giải thích ACID
  12. Sự khác nhau giữa UNION và UNION ALL?
  13. Xử lý câu lệnh tìm kiếm trong elasticSearch như thế nào?
  14. Chia partition trong database như thế nào?
  15. Setup replication database như thế nào?
  16. Giải thích về grapQL
  17. Tại sao sử dụng elasticSearch
  18. master | slave | sharding trong noSQL
  19. Phân quyền cho developer trong database như thế nào?
  20. Làm sao để INSERT nhiều sản phẩm vào database
  21. Cách phân trang trong dữ liệu
  22. CDC là gì?
  23. Sự khác nhau giữa INNER JOIN và LEFT OUTER JOIN

III. Design & Architecture

  1. Giải thích SOLID
  2. Nguyên tắc DI và IOC
  3. Định lý CAP? Các use-case khi sử dụng
  4. Sự khác nhau giữa Domain Driven Design vs Event Driven Design
  5. Sự khác nhau giữa Clean architecture vs Layered architecture
  6. Object Oriented Design
  7. Giải thích repository pattern
  8. DTO và DAO
  9. Giải thích về TCP và UDP
  10. Sự khác nhau giữa proxy và reverse proxy
  11. Khi làm thường sử dụng pattern nào?
  12. Giải thích về connection pool
  13. Giải thích Websocket
  14. CPU cache
  15. LRU cache
  16. Gossip protocol là gì
  17. 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ể)

  1. Thiết kế hệ thống chơi game
  2. Làm sao để build 1 hệ thống crawl data
  3. Dựng một reverse proxy như thế nào
  4. Giải thích cách bạn làm CI/CD
  5. Mô tả bức tranh sau image.png
  6. Làm sao để xử lý hàng triệu notification
  7. Mô tả cách tích hợp thư viện thứ 3 như payment hay delivery
  8. Điều gì xảy ra khi user nhập 1 URL
  9. Xây dựng chức năng gửi mail
  10. Một số phương pháp bảo mật client-server | server -server
  11. Thiết kế chức năng livestream
  12. Password được lưu như thế nào trong database
  13. Làm sao để tự tạo sub-domain
  14. Có sử dụng log bao giờ chưa?
  15. Bạn đã dùng monitor bao giờ chưa?
  16. Làm sao để scale up một hệ thống chat
  17. Giữa connection pool max và message queue thì chọn cái nào?
  18. Xử lý caching như thế nào?
  19. Làm sao để hạn chế user request nhiều lần
  20. Phân quyền cho người dùng như thế nào?
  21. Giải thích login social với oauth2 image.png
  22. Kể về cách deploy một sản phẩm lên cloud?
  23. Xây dựng chức năng bình luận như thế nào?
  24. Xây dựng chức năng undo | redo như nào?
  25. Giải thích về SSO
  26. Làm sao để kiểm tra sức khỏe của các nodes (check heatbeat)
  27. Thiết kế chức năng lưu ảnh, caching ảnh
  28. Xử lý automation test như thế nào?

V. Others

  1. Phân biệt giữa git rebase | merge | squash
  2. Sự khác nhau giữa pull | git fetch
  3. Lamda trong AWS để làm gì?
  4. Giải thích lệnh sudo chmod - R 777 /var/www/html/
  5. K8S là gì?
  6. Làm sao để build source code thành docker image
  7. Sự khác nhau giữa docker kill và docker stop
  8. Sự khác biệt giữa Docker và Docker compose
  9. Docker network để làm gì, nếu không dùng thì có cách nào khác không?
  10. Gateway là gì?
  11. CDN là gì?
  12. Sự khác nhau giữa gói snap và apt
  13. Với việc sử dụng JWT, làm sao để đăng xuất toàn bộ thiết bị
  14. So sánh giữa Rabbitmq và kafka
  15. Use-case sử dụng redis

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí