Golang
Qual é o seu nível — middle, middle+, senior?
Análise de código em Go: o que faz o código, quais os problemas existentes?
A que grupo (mutáveis/imutáveis) pertence a interface em Go?
O que são tokens de autorização e quais existem?
Qual é a diferença entre bases de dados relacionais e NoSQL?
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:**
Liste a pilha principal em Go
""" Os lugares no cinema estão dispostos numa única fila. Um espectador que acaba de chegar escolhe um lugar, para sentar-se o mais longe possível dos outros espectadores na fila. Ou seja, a distância desde esse lugar, que o espectador ocupará, até ao espectador mais próximo deve ser máxima. É garantido que há sempre lugares livres na fila e que já há pelo menos um espectador sentado. Escreva uma função que, dada uma fila de lugares (uma matriz de zeros e uns), devolva a distância (número de espaços entre os assentos) desde o lugar escolhido até ao espectador mais próximo. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 [0, 0, 0, 1] [1, 0, 0, 0] place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }
O que é contenção de bloqueio?
O que acontece se a capacidade não for suficiente ao fazer append num sub-slice?
Descreva o processo de carregamento do servidor Linux desde o início até à execução do terminal
Usaste brokers de mensagens no teu trabalho?
O que a camada do repositório pode ver?
Com que metodologias de desenvolvimento trabalhou? Quais são as mais convenientes?
/* Os lugares no cinema estão dispostos numa fila. O espectador que acaba de chegar escolhe um lugar, para se sentar o mais longe possível dos outros espectadores na fila. Ou seja, a distância desde o lugar onde se sentará até ao mais próximo É garantido que há sempre lugares livres na fila e já há pelo menos Escreve uma função que, dada uma fila de lugares (um array de zeros e uns) Exemplo: Entrada: [1, 0, 0, 0, 1] Saída: 2 Entrada: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Saída: 2 Entrada: [1, 0, 1, 0] Saída: 1 */
O que é observabilidade? O que inclui este conceito e o que é necessário para que um serviço esteja pronto para produção? Por que são necessárias métricas, traces e logs?
Dê um exemplo de um caso com SELECT FOR UPDATE em que isso possa levar a um deadlock.
Há quantos anos estás a desenvolver em Go?
O que são canais em Go e quais são os seus tipos?
O que faz se perceber que os prazos estão a chegar e não consegue terminar a tempo?