Golang
Hoe werd de procedure uitgevoerd voor het verwijderen van het oude product uit de Elasticsearch-index en het toevoegen van het nieuwe product?
Is het probleem van het vastleggen van de variabele in een goroutine-closure afhankelijk van de Go-versie?
Wat zijn berichtbrokers? Welke kent u? Hoe verschilt RabbitMQ van Kafka?
Hoe is het gelukt om de betrouwbaarheid van de integratie met de medische aggregator te verhogen en het dataverlies van 2% tot 0,01% te verminderen? En is dat niet veel — 2% verloren gegevens in de geneeskunde?
Waarom ben je het bedrijf verlaten?
Vraag 4: Fouten vinden in de code met kanalen en goroutines (dubbele sluiting van het kanaal)
Het evenement komt aan bij het eerste datacenter via Kafka, we vangen het op en slaan het op in Redis. Hoe zijn deze gegevens in alle drie de datacenters terechtgekomen?
Heeft u gewerkt met opgeslagen procedures in databases?
Vertel over kanalen in Go.
Heb je zelf iets beschreven voor observability — metrics, alerts?
Waarom is een mutex nodig in een rate limiter? Kan het probleem zonder mutex worden opgelost, met behulp van sync.Map?
Beoordeel je kennis van Go en PostgreSQL van 1 tot 10.
Is er een microservice voor het afschrijven van geld van het saldo van de gebruiker? Bij replicatie van de service ontstaat een race condition probleem. Hoe los je dit probleem op?
Welk werkformaat overweeg je?
Wat gebeurt er met de huidige verzoeken zonder Graceful Shutdown bij het afsluiten van het proces?
Kun je het laatste voorbeeld geven van een taak waar je van hebt genoten?
Hoe werd de rate limit ingesteld? Waarop was het gebaseerd en waar werd het geïmplementeerd? Wat werd technisch gebruikt?
Hoe schrijf je parallelle HTTP-verzoeken in Golang?
Persoonlijk heb ik getest dat Postgres de kolommen herordent en dat de optimizer niet geeft om de volgorde waarin je de query schrijft — hij zal deze zelf aanpassen zoals nodig. Wat vind jij?
Wat wordt weergegeven bij het uitvoeren van het programma: func main() { counter := make([]int, 0, 1000) var wg sync.WaitGroup for i := 0; i < 1000; i++ { wg.Add(1) go func() { defer wg.Done() counter = append(counter, i) time.Sleep(10 * time.Millisecond) // Werk simulatie }() } wg.Wait() fmt.Println(len(counter)) }