#claruey #técnico
1. ¿Qué es lo genial de Go? - las goroutines y el planificador que permite trabajar sin pensar en cómo maneja la concurrencia.
2. ¿Qué desventajas ves en Go? - manejo de errores
3. ¿Cómo llegaste a Go?
4. ¿Qué asegura la ligereza de Go y por qué las goroutines cambian más rápido? ¿Por qué no se pudo hacer esto en el SO?
5. ¿Qué sacrificamos al usar goroutines en lugar de hilos del SO?
6. ¿Qué es la concurrencia y el paralelismo?
7. ¿Qué es la interfaz net.Listener y cuáles son sus métodos?
8. ¿Has trabajado directamente con redes o a través de frameworks y cuáles?
9. ¿En qué se diferencia TCP de UDP y para qué se usan generalmente?
10. ¿Cuáles son los riesgos al usar TCP y UDP?
11. ¿Qué son bigEndian y littleEndian?
12. ¿Qué es TLS?
13. ¿Cuáles son las formas de transferir datos entre microservicios (por ejemplo, comandos/solicitudes/respuestas/transferencia de archivos)? ¿Qué patrones o herramientas de desarrollo podemos elegir y cuáles son sus matices?
14. ¿Cuáles son los métodos de transferencia de datos por red y sus ventajas/desventajas?
15. ¿Con qué SGBD has trabajado y qué herramientas usaste?
16. ¿Qué biblioteca usaste para cada base de datos en Go?
17. ¿Cómo manejas el crecimiento de la base de datos durante el desarrollo?
18. Si cambian el esquema de la base de datos, ¿cómo lo manejas sin destruir datos antiguos? ¿Qué hay de las migraciones, sus ventajas y desventajas?
19. ¿Cómo cambias la base de datos en producción? ¿Quién lo hizo?
20. ¿Cómo abstraer mejor el componente de base de datos del lógica principal para que las consultas SQL y los métodos no se dispersen en el código? ¿Colócalo en un directorio separado, pasa una interfaz y usa etiquetas?
21. ¿Por qué son necesarias las índices y cuáles son sus desventajas?
22. Se te asignó la tarea de escribir código que incluirías en un proyecto y cómo documentarías los resultados?
23. ¿Qué documentación usas normalmente y para qué propósito + dónde va? Por ejemplo, ¿qué es esta interfaz y para qué se usa?
24. ¿Usas activamente go doc y es una práctica en tu equipo?
25. ¿Acompañas especificaciones o documentación markdown? ¿Cómo lo haces?
26. ¿Cuál fue tu flujo de trabajo, quién asignó las tareas y cuál fue el siguiente paso?
27. ¿Qué tan detalladas son tus tareas? ¿Solo necesitas acceder o también pensar en la arquitectura y preguntar a otros?
28. Tenemos un proyecto con muchas goroutines. ¿Qué herramientas de sincronización usas para cerrar todas las goroutines de manera elegante y segura?
29. ¿Dónde en el proyecto has usado goroutines?
30. Cuando pasas una interfaz a una función, ¿cuántos bytes ocupa?
31. ¿Qué es un httpHandler, qué recibe, qué estructura tiene, qué devuelve, cuáles son sus argumentos y firma? ¿Para qué sirve y dónde se usa?
32. ¿Qué es middleware y cómo usarlo? ¿Cómo fue en tu proyecto?
33. ¿Qué propiedades del lenguaje Go permiten construir middleware y qué función toma y qué devuelve?
34. Si tienes una función que toma otra función y después de ejecutarla inicia una goroutine y hace un callback, y pasas un método de una estructura que no toma argumentos y no devuelve nada, ¿habrá un error de compilación o qué?
¿Tiene firma vacía y tienes un método que requiere esa función, pero en lugar de una función simple pasaste un método, es decir, un objeto.método?
35. Hay una función que toma un int32 y tratas de pasarle un int16, ¿qué pasará y en qué etapa?
36. ¿Cuántos bytes ocupa en memoria un slice en amd64? 24 bytes, y los datos en sí no se pasan a la función?
37. ¿Cómo puedes implementar un conjunto en Golang y cuáles son sus diferencias y matices?
38. ¿Qué es UUID y lo usaste en tu proyecto, dónde y qué biblioteca usaste?
39. Tienes un mapa con 1,000,000 de elementos, ¿qué pasa si añades uno más? ¿Cuáles son los escenarios posibles y cómo cambia la velocidad de acceso a los datos?
41. ¿Usaste Docker (contenedores/pods)? ¿Qué otros servicios usaste antes de Docker, como "cómo desplegar un binario en un servidor"? Después de compilar tu código, ¿en qué debe convertirse para que el servicio inicie al arrancar el SO?