#claruey #técnico
1. O que há de ótimo no Go? - goroutines e o agendador que permite trabalhar sem pensar em como lida com concorrência.
2. Quais são as desvantagens do Go? - tratamento de erros
3. Como você chegou ao Go?
4. O que garante a leveza do Go e por que as goroutines trocam mais rápido? Por que isso não poderia ser feito no SO?
5. O que sacrificamos ao usar goroutines em vez de threads do SO?
6. O que é concorrência e paralelismo?
7. O que é a interface net.Listener e quais são seus métodos?
8. Você trabalhou diretamente com redes ou através de frameworks e quais?
9. Como o TCP difere do UDP e para que eles são geralmente usados?
10. Quais são os riscos ao usar TCP e UDP?
11. O que são bigEndian e littleEndian?
12. O que é TLS?
13. Quais são as formas de transferir dados entre microserviços (por exemplo, comandos/solicitações/respostas/transferência de arquivos)? Quais padrões ou ferramentas de desenvolvimento podemos escolher aqui e quais são suas nuances?
14. Quais são os métodos de transferência de dados pela rede e seus prós/contras?
15. Com quais SGBDs você trabalhou e quais ferramentas usou?
16. Que biblioteca você usou para cada banco de dados em Go?
17. Como você lida com o crescimento do banco de dados durante o desenvolvimento?
18. Se o esquema do banco de dados mudar, como você lida com isso sem destruir dados antigos? E as migrações, seus prós e contras?
19. Como você muda o banco de dados em produção? Quem fez isso?
20. Como abstrair melhor o componente de banco de dados da lógica principal para que as consultas SQL e métodos não se espalhem pelo código? Coloque-o em um diretório separado, passe uma interface e use tags?
21. Por que os índices são necessários e quais são suas desvantagens?
22. Você foi encarregado de escrever um código que você incluiria em um projeto e como você documentaria os resultados?
23. Que documentação você normalmente usa e para que propósito + onde ela vai? Por exemplo, o que é essa interface e para que ela serve?
24. Você usa ativamente go doc e é uma prática na sua equipe?
25. Você acompanha especificações ou documentação markdown? Como você faz isso?
26. Qual foi seu fluxo de trabalho, quem atribuiu tarefas e qual foi o próximo passo?
27. Quão detalhadas são suas tarefas? Você só precisa acessá-las ou também pensar na arquitetura e perguntar a outros?
28. Temos um projeto com muitas goroutines. Quais ferramentas de sincronização você usa para que todas as goroutines terminem de forma elegante e segura?
29. Onde no projeto você usou goroutines?
30. Ao passar uma interface para uma função, quantos bytes ela ocupa?
31. O que é um httpHandler, o que ele recebe, qual estrutura tem, o que devolve, quais são seus argumentos e assinatura? Para que serve e onde é usado?
32. O que é middleware e como usá-lo? Como foi no seu projeto?
33. Quais propriedades da linguagem Go permitem construir middlewares e qual é a função que ela aceita e o que ela devolve?
34. Se você tem uma função que aceita outra função e, após executá-la, inicia uma goroutine e faz um callback, e você passa um método de uma estrutura que não aceita argumentos e não devolve nada, haverá um erro de compilação ou algo assim? Ela tem assinatura vazia, e você tem um método que exige essa função, mas, em vez de uma função simples, você passou um método, ou seja, um objeto.método.
35. Há uma função que aceita um int32 e você tenta passar um int16, o que acontecerá e em que etapa?
36. Quantos bytes uma fatia ocupa na memória em amd64? 24 bytes, e os dados em si não são passados para a função?
37. Como você pode implementar um conjunto em Golang e quais são suas diferenças e nuances?
38. O que é UUID e você o usou no seu projeto, onde e qual biblioteca usou?
39. Você tem um mapa com 1.000.000 de elementos, o que acontece se você adicionar mais um? Quais são os cenários possíveis e como a velocidade de acesso aos dados muda?
41. Você usou Docker (containers/pods)? Quais outros serviços você usou antes do Docker, como "como implantar um binário em um servidor"? Depois de compilar seu código, em que ele deve se transformar para que o serviço inicie na inicialização do SO?