func Copy(src io.Reader, dst io.Writer) error { //... } import gocopy s := file.Open() err := gocopy.Copy(s, d) func Copy(src io.Reader, dst io.Writer) (statusCh, error) { //... go func() { statusCh }() } func Read() { select { case status := <-statusCh: } } type Stat struct { status string err error } func Copy(src io.Reader, dst io.Writer) chan Stat { //... statusCh := make(chan Stat{}) go func() { statusCh{ } } return statusCh } func Read() { select { case status := <-statusCh: } } import gocopy s := file.Open() err := gocopy.Copy(s, d) func Copy(src io.Reader, dst io.Writer) chan Stat { //... statusCh := make(chan Stat{}) buf := make([]byte, 1024) var total int64 go func() { for { n, err := src.Read(buf) if n > 0 { writen, err := dst.Write(buf[:n]) total += int64(writen) if err != nil { statusCh <- Stat{ status: "done with err", err: err, } return } } if err == io.EOF { statusCh <- Stat{ bCopy: total, status: "done", err: nil, } return } if err != nil { statusCh <- Stat{ status: "done with err", err: err, } return } } } return statusCh } func Read() { select { case status := <-statusCh: if status.err != nil { return } } } func Copy(src io.Reader, dst io.Writer) chan Stat { //... statusCh := make(chan Stat{}) buf := make([]byte, 1024) var total int64 go func() { for { select { case : n, err := src.Read(buf) if n > 0 { writen, err := dst.Write(buf[:n]) total += int64(writen) if err != nil { statusCh <- Stat{ status: "done with err", err: err, } return } } if err == io.EOF { statusCh <- Stat{ bCopy: total, status: "done", err: nil, } return } if err != nil { statusCh <- Stat{ status: "done with err", err: err, } return } default: statusCh <- Stat{ bCopy: total, status: "pending", err: nil, } } } } return statusCh } func Read() { select { case status := <-statusCh: if status.err != nil { return } } }
Golang
¿Qué buscas en un trabajo, en qué quieres trabajar?
Hay una función `unpredictableFunc()`, que necesita ser envuelta para que se ejecute con un tiempo límite (por ejemplo, 1 segundo) y registre el tiempo de ejecución. // Hay una función que funciona indefinidamente y devuelve un número. // No se puede modificar su cuerpo (supongamos que dentro hay una solicitud de red). func unpredictableFunc() int64 { rnd := rand.Int63n(5000) time.Sleep(time.Duration(rnd) * time.Millisecond) return rnd } // Se debe modificar la función envolvente, que trabajará con un tiempo límite establecido (por ejemplo, 1 segundo). // Si la "función larga" termina en ese tiempo, perfecto, devuelve el resultado. // Si no, devuelve un error. El resultado de la ejecución en ese caso no nos importa. // // Además, se debe medir cuánto tiempo estuvo en ejecución esta función (simplemente imprimir en el log). // La firma de la función envolvente puede ser modificada. func predictableFunc() int64 { return unpredictableFunc() }
¿En qué equipo trabajaste en el banco? ¿Cuál era la tarea del equipo?
¿Cómo funciona SSL/TLS? Describa el proceso de establecimiento de la conexión.
¿Cómo funcionan los mapas en Go?
¿Qué es un slice en Go?
¿Escribiste operadores para Kubernetes?
¿Cómo funciona el context.WithTimeout internamente?
¿Qué son los niveles de aislamiento de transacciones? ¿Cuáles utilizaste?
¿Qué mostrará el código? package main import "fmt" func main() { nums := make([]int, 1, 2) fmt.Println(nums) // appendSlice(nums, 1024) fmt.Println(nums) // mutateSlice(nums, 1, 512) fmt.Println(nums) // } func appendSlice(sl []int, val int) { sl = append(sl, val) } func mutateSlice(sl []int, idx, val int) { sl[idx] = val }
¿Cómo verificar la carga de CPU y memoria en Linux?
¿En qué se diferencian las goroutines de los hilos del sistema operativo? ¿Para qué sirven las goroutines?
**Condición** Las solicitudes a varias URL deben realizarse en paralelo. Se deben mostrar los estados HTTP y manejar errores. ```go package main func main() { urls := []string{"[link]"} // Hacer algo } ```
¿Se ha considerado dividir los datos en calientes (últimos 3 meses) y fríos para reducir la carga en lugar de Elasticsearch?
¿Cómo distingues a los desarrolladores Junior, Middle y Senior? ¿Por qué criterios te consideras Senior?
¿Cómo encontrar una consulta lenta en PostgreSQL y cómo optimizarla?
Cuéntame sobre resp.Body.Close() — ¿por qué es necesario y por qué configuraste un búfer de 10?
¿Cuántas filas había en la base de datos?
Escriba una consulta SQL que muestre **el nombre del cliente**, su **ciudad** y **el monto total** de todos sus pedidos. La consulta final debe incluir solo aquellos clientes cuyo gasto total sea **superior a 1000** unidades. --- **Esquema de datos:** 1. **Tabla `customers`:** - `customer_id` (int) – identificador único del cliente. - `customer_name` (varchar) – nombre del cliente. - `city` (varchar) – ciudad de residencia. 2. **Tabla `orders`:** - `order_id` (int) – número único de pedido. - `customer_id` (int) – ID del cliente que realizó la compra. - `total_amount` (decimal) – monto de un pedido específico.