¿Cuál ha sido el proyecto con base de datos de mayor volumen que ha tenido que implementar o mantener?
Golang
¿En qué etapas del proceso de entrevista en varias organizaciones suelen hacer esta pregunta?
¿Cómo se realizan las consultas a la base de datos PostgreSQL?
¿Puede explicar el principio de funcionamiento de gRPC y sus características principales?
¿Cuántas solicitudes de escritura por segundo se recibían en los datos?
¿En qué capa se colocan los clientes para servicios externos y sistemas?
¿En cuántas instancias/contenedores funcionaba el servicio?
¿Cuál es su experiencia en el desarrollo de aplicaciones que utilizan multithreading y cálculos paralelos?
¿Puedes orientarte sobre los hosts? ¿Cuántos hosts y cuántos contenedores se están ejecutando?
¿Por qué principio se debe disminuir o aumentar el contador have?
¿Cuál fue el proyecto de mayor duración en el que trabajaste?
¿Cómo se realiza la conexión y visualización de datos en Grafana?
func maxPlaces(arr []int) int { maxDistance := 0 prev, first := -1, -1 for i := 0; i < len(arr); i++ { if arr[i] == 1 { if first == -1 { first = i maxDistance = max(maxDistance, i) } else { maxDistance = max(maxDistance, (i - prev) / 2) } prev = i } } maxDistance = max(maxDistance, len(arr) - 1 - prev) return maxDistance }
""" Los asientos en el cine están dispuestos en una fila. Un espectador que acaba de llegar elige un asiento, para sentarse lo más lejos posible de los demás espectadores en la fila. Es decir, la distancia desde ese asiento, hasta el espectador más cercano a él, debe ser máxima. Se garantiza que siempre hay asientos libres y que ya hay al menos un espectador sentado. Escriba una función que, dada una fila de asientos (una matriz de ceros y unos), devuelva la distancia (número de espacios entre los asientos) desde el asiento elegido hasta el espectador más cercano. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 """
¿Cómo determinar visual o algorítmicamente que un elemento es único en la estructura de datos Map?
¿Cómo organizar la arquitectura para una solicitud que realiza lógica de negocio, llama a un servicio externo (Google) y guarda el resultado en la base de datos? Describe en capas de arriba hacia abajo.
/* Necesitamos transferir datos desde una fuente a un consumidor. La fuente entrega los datos en pequeños lotes (~decenas de registros), mientras que el consumidor funciona de manera más eficiente con lotes grandes. Un ejemplo real es la transferencia de datos desde colas tipo Kafka a la base de datos Clickhouse. Fuente: - Prácticamente infinita. - La fuente nunca devuelve más de MaxItems registros en una sola llamada a Next. - Dentro de una "sesión" (una llamada a la función Pipe), la fuente devuelve datos nuevos en cada llamada a Next. - Sin embargo, tras reiniciar, la fuente comenzará desde la posición "confirmada" anterior, indicada por cookie. Por lo tanto, *cada* valor de cookie que devuelve Next, después de guardar los datos en el receptor, debe ser confirmado con una llamada a Commit, en el mismo orden en que fueron devueltos por Next. Receptor: - No puede procesar más de MaxItems a la vez. Nivel básico: Se requiere implementar la función func Pipe(p Producer, c Consumer) error que lee datos de la fuente, los agrupa en un buffer de tamaño no mayor a MaxItems y los guarda en el receptor, y luego confirma el progreso en la fuente. */ const MaxItems = 9999 type Producer interface { // Next devuelve: // - un lote de items para procesar // - una cookie para confirmar cuando se complete el procesamiento // - error Next() (items []any, cookie int, err error) // Commit se usa para marcar el lote de datos como procesado Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { var buf []any var cookies []int for { items, cookie, err := p.Next() if err != nil { return err } buf = append(buf, items...) cookies = append(cookies, cookie) if len(buf) >= MaxItems { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } buf = buf[:0] cookies = nil } } if len(buf) > 0 { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } } return nil }
¿Qué indicadores de rendimiento utilizó para evaluar su trabajo en el último proyecto?
¿Estás trabajando ahora o no, y en qué formato: oficina, híbrido, remoto?
func countSubs(s string) int { result := 0 left := 0 hm := make(map[rune]int) n := len(s) for right := 0; right < n; right++ { hm[s[right]]++ for hm[s[right]] > 1 { hm[s[left]]-- if hm[s[left]] == 0 { delete(hm, s[left]) } left++ } result += (right - left + 1) } return result }