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

Ngoài lề: Tụi mình có 1 group discord về IT là "Code club Vietnam" với 1k thành viên, có các anh tech lead, senior, junior cùng các bạn sinh viên trong ngành. Nếu yêu thích, hãy tham gia với tụi mình nhé.

Mình có tổng hợp 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

  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 oauth 2

  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