Sobes.tech

Golang

/* É uma string de caracteres dada. Encontrar o número de pares de índices i e j (i <= j), entre os quais não há caracteres repetidos. Para a string "aba", a resposta é 5: podem ser ASCII [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") */

187

Tem experiência em suporte ou desenvolvimento de sistemas distribuídos?

185

Já utilizou nuvens públicas? Se sim, com quais provedores e serviços?

185

Como você trabalha a arquitetura — há um arquiteto na equipe, plataforma, comité?

184

Qual será a velocidade de uma busca linear de todos os backends com alta RPS (por exemplo, 30.000 RPS e 10 backends)?

183

Como verificar rapidamente se há todos os caracteres na janela (comparação de dois mapas)?

182

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("Número de backends no slice 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 contêm os endereços de todas as instâncias balanceadas 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

Qual foi o maior volume de dados com que trabalhou em bases de dados?

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

Em quantos hosts o serviço funcionava e quantas instâncias eram iniciadas?

180

Fala-me mais sobre o teu primeiro emprego de 2019 a 2021.

180

Quão ativamente estão a procurar? Talvez já existam algumas ofertas?

180

Existem formas mais simples e rápidas de equilibrar a carga em vez de escolher o backend menos carregado?

179

Quantas pessoas estiveram envolvidas no maior projeto em que trabalhaste? Menos de dez, dezenas, centenas?

178

Como resolver o problema de limitação de pedidos paralelos num sistema distribuído com várias instâncias, se o utilizador deve esperar em vez de receber um erro?

177

Encontre erros de sintaxe no código corrigido

177

Por que as mensagens do Message Service vão diretamente através do gRPC, em vez de através do 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

Implemente o método BulkCreateUsers com base no arquivo proto: crie a estrutura do projeto, a lógica de negócios, o repositório e as consultas SQL seguindo os princípios SOLID

175

É possível fazer memória constante sem remover o mapa?

174
/11