Golang
func fanin[T cualquier](chs ...<-chan T) chan T { out := make(chan T) wg := sync.WaitGroup{} for _, ch := range chs { wg.Add(1) go func(c <-chan T) { defer wg.Done() for v := range c { out <- v } }(ch) } go func() { wg.Wait() close(out) }() return out } func main() { ch1 := make(chan int, 5) ch2 := make(chan int, 5) for i := 1; i <= 5; i++ { ch1 <- i ch2 <- i * 2 } close(ch1) close(ch2) fmt.Println(fanin(ch1, ch2)) }
¿Qué son las particiones en Kafka y cómo elegir la cantidad de consumidores?
¿Cuál es tu pila técnica? Enumera los lenguajes de programación en una escala del 1 al 10.
¿Qué tan bien conoces Linux? ¿Qué comandos usas con más frecuencia?
¿Por qué estás considerando otras ofertas ahora, qué no te satisface de Wildberries?
¿La base de datos sigue siendo compartida para todo el monolito o se dividieron en bases de datos separadas para cada servicio?
¿Qué microservicios desarrollaste?
¿ Los desarrolladores escribieron algunos tests?
Se entregaron 20 picadoras de carne, 5 se enviaron — ¿cuánto queda en el almacén y cuál es el estado actual en el sistema?
Escribe un SELECT simple de todas las columnas de la tabla books.
¿Qué estás buscando ahora para ti, en qué dirección quieres desarrollarte?
// Escribir un manejador asíncrono de tareas como una biblioteca // El cliente pasa un objeto (Task) con datos para realizar la tarea, // en nuestro ejemplo usaremos una estructura vacía. // El manejador puede procesar no más de N tareas simultáneamente, // y no más de X tareas pueden estar en cola para su procesamiento. // Si no hay espacio en la cola, se devuelve un error al cliente inmediatamente. // La tarea se procesa si hay procesadores libres disponibles. // Simulamos la duración del procesamiento con time.Sleep(5*time.Second). // Tan pronto como una tarea termina, tomamos la siguiente de la cola. // Si la cola está vacía, esperamos nuevas tareas de los clientes. // Con un asterisco: ampliar la estructura Task y obtener los estados de las tareas mediante una solicitud separada package scheduler type Scheduler interface { AddTask(t Task) error Close() } type Task interface { Do() }
¿Cómo entender a nivel SQL que ya existe una clave de idempotencia? ¿Cómo usar ON CONFLICT?
¿Cómo se puede acelerar el algoritmo de filtrado de grafos con un gran número de vértices y eventos?
¿Sabes trabajar sin analistas?
¿Qué sabes sobre trabajar con contextos en Go? ¿Qué métodos tiene?
¿Qué se utilizó para evaluar el rendimiento y el perfilado? ¿Se utilizó el perfilado estándar pprof en Go?
¿Qué es más importante: los intereses del negocio o los intereses del usuario?
¿Cuál es su experiencia trabajando con PostgreSQL? ¿Ha tenido que escribir consultas complejas o realizar optimizaciones?
¿Quieres trabajo remoto a tiempo completo o también estás dispuesto a considerar opciones con oficina?