Sobes.tech

Golang

¿Qué estaban almacenando en caché? ¿Algún directorio?

Senior
МВидео/эльдорадо
166

/* 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 }

Middle
Яндекс
166

¿Puede enumerar las empresas o proveedores con los que ha tratado?

Junior — Middle
166

Cuéntame sobre tu último lugar de trabajo: ¿en qué trabajabas, qué tecnologías usabas, cuáles fueron los desafíos difíciles?

Middle
OZONOZON
166

¿Qué es un slice en Go?

Middle
Бюро 1440Бюро 1440
166

¿Puede enumerar los principales tipos de llamadas utilizados en gRPC?

Junior — Middle
СБЕР дейвайсыСБЕР дейвайсы
166

¿Es permitido obtener información de un canal con modo cerrado establecido?

Junior — Middle
ГазпромГазпром
X5 groupX5 group
AvitoAvito
+1
166

¿Se puede escribir directamente en una partición específica de Kafka, omitiendo la clave para el hash?

Junior — Middle
Самокат Тех
166

¿Puedes explicar el mecanismo de añadir un elemento al final de una estructura de datos, como una lista o un array?

Junior — Middle
Lamoda Tech
Startribe
Самокат Тех
+2
166

¿Qué datos y de qué manera se colocan en la pila durante la ejecución del programa?

Junior — Middle
166

¿Qué métodos de caché prefieres usar en tus proyectos y por qué?

Junior — Middle
166

¿En qué se diferencia una vista materializada de una vista normal?

Middle
RWB
165

¿Qué componentes forman la estructura de una lista enlazada?

Junior — Middle
165

¿Cómo se determina el tiempo de ejecución de la operación de agregar un elemento por clave en la estructura de datos Map?

Junior — Middle
ЯндексЯндекс
165

¿Por qué generalmente se establece el tamaño inicial de la pila de los hilos en 2 MB?

Junior — Middle
165

¿Alguna vez ha utilizado la estructura ErrGroup en sus proyectos para gestionar tareas paralelas?

Junior — Middle
165

¿Qué paquetes inusuales o no estándar ha utilizado en su práctica?

Junior — Middle
165

¿Por qué la tasa de crecimiento de la rebanada se desacelera y no se puede seguir duplicando constantemente?

Middle
RWB
165

¿En qué lugar se ejecutan los comandos durante el proceso de trabajo de GitLab CI/CD?

Junior — Middle
165

¿Qué consecuencias pueden surgir por no seguir los principios SOLID en el diseño de software?

Junior — Middle
Zonatelecom
165
/413