Golang
Cos'è API Gateway e perché ne abbiamo bisogno?
Hai lavorato con l'architettura? Racconta un paio di soluzioni architettoniche
Un puntatore può puntare sia allo stack che all'heap?
Avevi un analista, cioè lavoravi secondo un brief? Come era?
Quanto sarebbe accettabile per te un formato di lavoro in ufficio/ibrido (ufficio tra [localizzazione])?
Perché è necessaria la combinazione Load Balancer + API Gateway? Qual è il ruolo di ciascun componente?
Come viene garantita la coerenza dei dati nel progetto?
Cosa succede se avvii 5 trilioni di goroutine? Come ottimizzare?
Ti posizioni come sviluppatore di livello medio o senior?
Quali sono gli svantaggi di passare un'entità attraverso il contesto in Go?
Come capire se la degradazione è avvenuta proprio a causa dell'aumento del consumo di risorse (CPU, ecc.)?
Hai progettato un'architettura da zero, hai lavorato con il progettazione di sistemi?
Cosa cambia se si passa la capacità iniziale durante la creazione di uno slice?
Da dove inizi a lavorare se arrivi in un progetto dove il codice è stato scritto negli anni, ci sono molti legacy, nessun test e tutto sta per crollare?
Parlami della tua esperienza con Docker e Kubernetes: cosa hai dovuto fare?
Perché stai cercando qualcos'altro? C'è una ragione particolare?
Quali primitive di sincronizzazione delle goroutine esistono in Go?
Gli aggiornamenti dei documenti arrivano al servizio message Document { string Url = 1; // URL del documento, il suo identificatore univoco uint64 PubDate = 2; // ora di pubblicazione dichiarata del documento uint64 FetchTime = 3; // ora di ricezione di questo aggiornamento del documento, può essere considerato come identificatore di versione. La coppia (Url, FetchTime) è unica. string Text = 4; // testo del documento uint64 FirstFetchTime = 5; // inizialmente assente, deve essere compilato } I documenti possono arrivare in qualsiasi ordine (non nell'ordine in cui sono stati aggiornati), e possono esserci messaggi duplicati. È necessario, in uscita, formare messaggi uguali, ma con campi corretti secondo le seguenti regole (tutto quanto sotto vale per un gruppo di documenti con lo stesso campo Url): Il campo Text e FetchTime devono essere uguali a quelli del documento con il FetchTime più grande ricevuto finora. Il campo PubDate deve essere uguale a quello del messaggio con il FetchTime più piccolo. Il campo FirstFetchTime deve essere uguale al valore minimo di FetchTime. In altre parole, in ogni momento prendiamo PubDate e FirstFetchTime dalla prima versione ricevuta finora (se ordiniamo per FetchTime), e Text dall'ultima. L'interfaccia nel codice può essere implementata così: type Processor interface { Process(doc *Document) (*Document, error) } Questo codice funzionerà in un servizio che legge messaggi da una coda (Kafka o simile), e scrive anche il risultato nella coda. Se Process restituisce Null, nulla viene scritto nella coda.
Hai usato CTE? Racconta cos'è.
In quali team hai lavorato?