Golang
Como otimizar a pesquisa numa base de dados? O que são índices e qual é a sua complexidade?
Como lidou com devoluções e pagamentos?
Quantos threads o agendador Go irá lançar? E especificamente no AMD EPYC com 64 núcleos e 128 threads?
Por quais critérios separavam os grupos de consumidores?
Tem uma ideia da diferença entre fluxo e processo?
Tipos de invalidação de cache. Quais conhece, já usou algum?
O que é um índice e que tipos de índices existem no PostgreSQL?
SELECT u.id, u.name, o.id as order_id, o.amount FROM users u ? JOIN orders o ON u.id = o.user_id;
Quais chaves podem estar em um map em Go?
Como inserir 10 mil milhões de linhas no ClickHouse rapidamente?
Questão 4: Encontrar erros no código com canais e goroutines (fechamento duplo do canal)
Design de um sistema de mensagens escalável suportando 150 milhões de utilizadores, 75 milhões de DAU, 225 milhões de MAU, 1,2M de leituras / 300k de escritas no pico de QPS, 5 milhões de utilizadores simultâneos, 60 PB de novos dados por ano, crescimento de 30% ao ano, SLA de 99,95%, p99 <200 ms para leitura, <300 ms para escrita. CONTEXT É necessário projetar um sistema de mensagens distribuído, semelhante ao WhatsApp, que suporte chats 1:1 e em grupo, garanta a entrega de mensagens, exiba estados online dos utilizadores e permita a transferência de ficheiros multimédia (fotos, vídeos, áudios). O sistema deve garantir alta disponibilidade e baixa latência, suportar alto paralelismo e escalar globalmente. REQUISITOS FUNCIONAIS - Suporte para chats pessoais (1:1) e em grupo com capacidade de adicionar/remover participantes - Envio e receção de mensagens de texto e ficheiros multimédia Não há uma implementação clara do mecanismo de encriptação end-to-end ao nível de serviços ou clientes, além de uma anotação geral. - Ausência de descrição explícita de sharding e replicação de bases de dados por chat_id ou user_id para escalabilidade e tolerância a falhas. - Não há um componente ou mecanismo claro para lidar com sincronização offline de mensagens e recibos de entrega. - A forma como se realiza o balanceamento de carga entre bases de dados e serviços, especialmente em picos de carga, não está clara. **Pontos críticos a considerar:**
O que acontecerá se for necessário abandonar o Kafka e substituí-lo por outro broker de mensagens? Como isolar o Kafka de serviços externos?
Qual é aproximadamente o volume de dados nos snapshots?
Por que os erros não retornam no método Process? É necessário corrigir e enviar o código completamente funcional.
Fale sobre sua experiência com bancos de dados — além do ClickHouse, quais bancos e quão profundamente?
Tem experiência em design de sistemas — pensar na arquitetura do zero, defender perante a equipa?
Pode falar sobre a composição da equipa?
Fala-me sobre o teorema de CAP.
Você transferiu mensagens inválidas para um tópico separado ou como?