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
Tại sao dùng golang?
Concurrency trong golang
Channel là gì?
Sự khác nhau giữa channel buffer và unbuffer
Giải thích method & interface
Slice là gì?
Pointer trong go
Làm sao để dừng một chương trình go routine
Giải thích sự khác nhau giữa map và struct
Race condition là gì?
Deadlock là gì?
GRPC là gì?
Generics trong golang là gì?
Defer trong go để làm gì?
Select trong golang
Khi nào sử dụng panic?
Viết unit testing như nào
Các trường hợp memory leak
Thiết kế chức năng graceful shutdown golang
garbage collection
Giải thích go runtime, go schedule
Tại sao dùng gin framework (hoặc framework mà bạn sử dụng)
Làm sao để monitor được RAM
Manual management heap như nào cho đỡ lâu
Golang có OOP không
Phiên bản mới nhất của golang là gì?
Sự khác nhau giữa nil và empty slice
Tại sao dùng channel truyền data trong khi có thể implement truyền thẳng trên go func
Làm sao để nối chuỗi
Sự khác nhau giữa data race và race condition
Nil channel để làm gì?
Làm sao để xử lý dữ liệu bị sai khi ở múi giờ khác nhau
II. Database
ORM là gì?
Tối ưu hiệu suất của một API bằng cách nào?
Cách remote debug trên môi trường production mà không dùng log hay chọc vào database
Phân biệt SQL và NoSQL
Tại sao chọn PostgreSQL (hoặc database mà bạn sử dụng)
Xử lý race condition trong database
Làm sao để tối ưu performance của slow query
SQL injection là gì?
Sự khác nhau giữa cluster INDEX và non-cluster INDEX
Sự khác nhau giữa WHERE và HAVING
Giải thích ACID
Sự khác nhau giữa UNION và UNION ALL?
Xử lý câu lệnh tìm kiếm trong elasticSearch như thế nào?
Chia partition trong database như thế nào?
Setup replication database như thế nào?
Giải thích về grapQL
Tại sao sử dụng elasticSearch
master | slave | sharding trong noSQL
Phân quyền cho developer trong database như thế nào?
Làm sao để INSERT nhiều sản phẩm vào database
Cách phân trang trong dữ liệu
CDC là gì?
Sự khác nhau giữa INNER JOIN và LEFT OUTER JOIN
III. Design & Architecture
Giải thích SOLID
Nguyên tắc DI và IOC
Định lý CAP? Các use-case khi sử dụng
Sự khác nhau giữa Domain Driven Design vs Event Driven Design
Sự khác nhau giữa Clean architecture vs Layered architecture
Object Oriented Design
Giải thích repository pattern
DTO và DAO
Giải thích về TCP và UDP
Sự khác nhau giữa proxy và reverse proxy
Khi làm thường sử dụng pattern nào?
Giải thích về connection pool
Giải thích Websocket
CPU cache
LRU cache
Gossip protocol là gì
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ể)
Thiết kế hệ thống chơi game
Làm sao để build 1 hệ thống crawl data
Dựng một reverse proxy như thế nào
Giải thích cách bạn làm CI/CD
Mô tả bức tranh sau
Làm sao để xử lý hàng triệu notification
Mô tả cách tích hợp thư viện thứ 3 như payment hay delivery
Điều gì xảy ra khi user nhập 1 URL
Xây dựng chức năng gửi mail
Một số phương pháp bảo mật client-server | server -server
Thiết kế chức năng livestream
Password được lưu như thế nào trong database
Làm sao để tự tạo sub-domain
Có sử dụng log bao giờ chưa?
Bạn đã dùng monitor bao giờ chưa?
Làm sao để scale up một hệ thống chat
Giữa connection pool max và message queue thì chọn cái nào?
Xử lý caching như thế nào?
Làm sao để hạn chế user request nhiều lần
Phân quyền cho người dùng như thế nào?
Giải thích login social với oauth2
Kể về cách deploy một sản phẩm lên cloud?
Xây dựng chức năng bình luận như thế nào?
Xây dựng chức năng undo | redo như nào?
Giải thích về SSO
Làm sao để kiểm tra sức khỏe của các nodes (check heatbeat)
Thiết kế chức năng lưu ảnh, caching ảnh
Xử lý automation test như thế nào?
V. Others
Phân biệt giữa git rebase | merge | squash
Sự khác nhau giữa pull | git fetch
Lamda trong AWS để làm gì?
Giải thích lệnh sudo chmod - R 777 /var/www/html/
K8S là gì?
Làm sao để build source code thành docker image
Sự khác nhau giữa docker kill và docker desktop
Sự khác biệt giữa Docker và Docker compose
Docker network để làm gì, nếu không dùng thì có cách nào khác không?
Gateway là gì?
CDN là gì?
Sự khác nhau giữa gói snap và apt
Với việc sử dụng JWT, làm sao để đăng xuất toàn bộ thiết bị
So sánh giữa Rabbitmq và kafka
Use-case sử dụng redis