Golang
Onde é armazenada a configuração do Redis se estiver numa máquina separada?
Houve tarefas relacionadas com a arquitetura no seu trabalho: teve que projetar toda a arquitetura ou apenas serviços/microserviços específicos?
A fachada acessa 10 serviços internos (cada um de 100-300 ms) além de um serviço global na China (500 ms), o tempo total de resposta é de cerca de 3,5 segundos. Como você resolveria esse problema para acelerar o processamento?
Os processos podem comunicar-se entre si? Quais os métodos de IPC (interprocessamento) existem?
Quais são as suas expectativas financeiras? Está disposto a considerar uma oferta com prémios?
Fale mais sobre WaitGroup: para que é usado, quais métodos existem?
Suponhamos que somos uma grande rede de publicidade. Colocamos banners em sites parceiros em todo o mundo. Precisamos projetar um sistema de coleta e processamento de eventos em tempo real. Esses dados são críticos para dois propósitos: Faturação: Deduzir dinheiro dos anunciantes por cliques. Analítica: Exibir a eficácia atual das campanhas (CTR, impressões) no painel de controlo. Dados de entrada (para calcular a carga) Deve avaliar por si mesmo as capacidades necessárias (RPS, tráfego, armazenamento), com base nas seguintes métricas: Rede de parceiros: 500.000 sites ativos. Tráfego: Em média, cada site recebe 2 visualizações de página por segundo. Blocos publicitários: Em cada página, são exibidos 3 banners simultaneamente. Conversão: A taxa média de cliques (CTR) é de 1%. Irregularidade: A carga de pico (horas da noite) é 4 vezes maior que a média. Tamanho do evento: O objeto do evento (ID do banner, ID do site, UserID, Timestamp, tipo de evento) pesa aproximadamente 500 bytes. Requisitos técnicos Quase em tempo real: Os dados na interface analítica devem aparecer com um atraso não superior a 10 segundos. Confiabilidade: A perda de cliques não é aceitável (isto implica perda de dinheiro). A perda de impressões é aceitável até 0,01%. Escalabilidade: O sistema deve poder ser facilmente expandido com o crescimento do número de plataformas.
Como funciona o coletor de lixo em Go e em qual área de memória ele opera?
Onde terminam os contextos neste código?
Liste a pilha principal em Go
CREATE TABLE staff ( id TEXT name TEXT head_id TEXT ); id | name | head_id -------------------- 1 | Ivan | NULL 2 | Petr | 1 3 | Alice | 1 4 | Max | 2 5 | Alex | 2 6 | Elena | 4 7 | Bob | NULL Espera-se obter: employee_name | manager_name --------------------------- Ivan | NULL Petr | Ivan Alice | Ivan Max | Petr Alex | Petr Elena | Max Bob | NULL SELECT e.name AS employee_name, m.name AS manager_name FROM staff e LEFT JOIN staff m ON e.head_id = m.id
Fala-me sobre o estágio: quanto tempo trabalhaste como estagiário, quando passaste a tempo inteiro, o que aconteceu com os teus estudos?
O que é uma goroutine? Como ela é estruturada?
Você projetou e executou a migração do núcleo comercial para 8 microsserviços. Qual foi o seu papel no projeto?
Se tiver 100 mil clientes simultâneos conectados ao GameServer via WebSocket, que problemas podem surgir? Como escalar um sistema assim?
Houve alguma tarefa mais importante ou mais difícil que gostaria de destacar da sua experiência?
Qual é a diferença entre SQL e NoSQL?
Como exatamente a mensagem era marcada como duplicada? Onde exatamente essa marcação acontecia?
Princípios de design de API
// Tarefa 3 // Descrever qual tarefa este código resolve // Quais problemas existem nesta solução? // Como reescreveria este código? var c int type Trace struct { // Alguns campos aqui } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { c++ if c == 100 { sender.Send(tr) c = 0 } }