Sobes.tech

Golang

/* Se da una cadena de caracteres. Encontrar la cantidad de pares de índices i y j (i <= j), entre los cuales no hay caracteres repetidos. Para la cadena "aba" la respuesta es 5: pueden ser ASCII [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") */

187

¿Has utilizado nubes públicas? Si es así, ¿con qué proveedores y servicios?

185

¿Has tenido experiencia en soporte o desarrollo de sistemas distribuidos?

185

¿Cómo trabajan la arquitectura: hay un arquitecto en el equipo, plataforma, comité?

184

¿Qué tan rápido funcionará una búsqueda lineal de todos los backend en una alta RPS (por ejemplo, 30,000 RPS y 10 backend)?

183

type Balancer struct { // TODO backends []*BackendImpl index int mu sync.Mutex N int K time.Duration } var _ Backend = &Balancer{} func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { if len(b.backends) == 0 { return nil, fmt.Errorf("Кол-во backends в слайсе 0") } b.mu.Lock() index := b.index for b.backends[index].banned { b.index = (b.index + 1) % len(b.backends) index = b.index } b.index = (b.index + 1) % len(b.backends) b.mu.Unlock() backend := b.backends[index] resp, err := backend.Backend.Invoke(ctx, req) if err != nil && backend.countErrors < b.N { backend.mu.Lock() backend.countErrors += 1 if backend.countErrors == b.N { backend.banned = true go func() { time.Sleep(b.K) backend.mu.Lock() defer backend.mu.Unlock() backend.banned = false backend.countErrors = 0 }() } backend.mu.Unlock() } return resp, err } // addrs содержат адреса всех балансируемых экземпляров func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImplF, len(addrs)) for _, addr := range addrs { implF := BackendImplF{ Backend: NewBackend(addr), } backends = append(backends, &implF) } }

181

¿En cuántos hosts funcionaba el servicio y cuántas instancias se lanzaban?

180

/** :-))) :-(( "ab :-)" = "ab " "ab :-)))" = "ab " "ab :-)))(" = "ab (" "ab ):-)" = "ab )" ":-)" = "" **/ func deleteP(str string) string { n := len(str) res := make([]byte, 0, n) i := 0 for i < n { if str[i] == ':' && str[i+1] == '-' && (str[i+2] == ')' || str[i+2] == '(') { ch := str[i+2] i += 2 for i < n && str[i] == ch { i++ } } else { res = append(res, str[i]) } } return string(res) }

180

¿Qué tan activas son las búsquedas? ¿Quizás ya hay algunas ofertas?

180

¿Cómo verificar rápidamente que en la ventana hay todos los caracteres (comparación de dos mapas)?

180

¿Cuál ha sido el mayor volumen de datos con el que ha trabajado en bases de datos?

180

¿Puedes contarme más sobre tu primer trabajo desde 2019 hasta 2021?

180

¿Existen formas más simples y rápidas de equilibrar la carga en lugar de elegir el backend menos cargado?

179

¿Cuántas personas participaron en el proyecto más grande en el que has trabajado? ¿Menos de diez, decenas, cientos?

178

¿Cómo resolver el problema de la limitación de solicitudes paralelas en un sistema distribuido con varias instancias, si el usuario debe esperar en lugar de recibir un error?

177

Encuentra errores de sintaxis en el código corregido

177

¿Por qué los mensajes del Message Service van directamente a través de gRPC, en lugar de a través de Kafka?

176

func countSubs(s string) int { result := 0 left := 0 hm := make(map[rune]int) for right := 0; right < len(s); 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 }

176

Implementa el método BulkCreateUsers basado en el archivo proto: crea la estructura del proyecto, la lógica de negocio, el repositorio y las consultas SQL siguiendo los principios SOLID

175

¿Se puede hacer memoria constante sin quitar el mapa?

174
/11