Sobes.tech
Senior

#claruey #technician 1. What is great about Go? - goroutines and the scheduler that allows working without thinking about how it handles concurrency. 2. What are the downsides of Go? - error handling 3. How did you come to Go? 4. What ensures the lightweight nature of Go and why do Go routines switch faster? Why couldn't this be done in OS? 5. What do we sacrifice when using goroutines instead of OS threads? 6. What is concurrency and parallelism? 7. What is the net.Listener interface and what are its methods? 8. Have you worked directly with networks or through frameworks and which ones? 9. How does TCP differ from UDP and what are they generally used for? 10. What are the risks when using TCP and UDP? 11. What are bigEndian and littleEndian? 12. What is TLS? 13. What are the ways to transfer data between microservices (e.g., commands/requests/responses/file transfer)? What patterns or development tools can we choose here and what are their nuances? 14. What are the methods of data transfer over the network and their pros/cons? 15. Which DBMS have you worked with and what tools did you use? 16. What library did you use for each database in Go? 17. How do you handle database growth during development? 18. If the database schema changes, how do you handle it without destroying old data? What about migrations, their pros and cons? 19. How do you change the database in production? Who did it? 20. How to best abstract the database component from the main logic so that SQL queries and methods don't spread across the code? Put it in a separate directory, pass an interface, and use tags? 21. Why are indexes needed and what are their downsides? 22. You were tasked to write code that you would include in a project and how would you document the results? 23. What documentation do you usually use and for what purpose + where does it go? For example, what is this interface for? 24. Do you actively use go doc and is it a practice in your team? 25. Do you accompany specs or markdown documentation? How do you do it? 26. What was your workflow, who assigned tasks, and what was the next step? 27. How detailed are your tasks? Do you just need to access or also think architecturally and ask others? 28. We have a project with many goroutines. What synchronization tools are used to gracefully and safely shut down all goroutines? 29. Where in the project have you used goroutines? 30. When passing an interface into a function, how many bytes does it occupy? 31. What is an httpHandler, what does it receive, what structure does it have, what does it return, what are its arguments and signature? What is it used for and where is it used further? 32. What is middleware and how to use it? How was it in your project? 33. What language features of Go allow building middleware and what is the function it takes and outputs? 34. If you have a function that takes another function and after execution starts a goroutine and calls back, and you pass a method of a struct that takes no arguments and returns nothing - will there be a compilation error or something else? It has an empty signature, and you have a method that expects such a function, but instead of passing a plain function, you pass a method, i.e., an object.method. 35. If a function takes an int32 and you try to pass an int16, what will happen and at what stage? 36. How many bytes does a slice occupy in memory on amd64? 24 bytes, and the data itself is not passed to the function? 37. How can you implement a set in Golang and what are their differences and nuances? 38. What is UUID and was it used in your project, where, and which library did you use? 39. You have a map with 1,000,000 elements, what happens if you add one more element? What are the possible scenarios and how does the data retrieval speed change? 41. Did you use Docker (containers/pods)? What other services did you use before Docker, like "how to deploy a binary on a server"? After building your code, what should it be turned into so that the service starts on OS boot?