Hoe wordt een slice doorgegeven aan een functie in een programmeertaal?
Golang
Vertel me hoe de scheduler voor goroutines in Go (GMP) werkt.
func fn() { str := "" for i := 0; i < 100000; i++ { str += fmt.Sprintf("%d", i) } fmt.Println(str) }
Vertel me over ontwerppatronen. Wat is double-checked locking (dubbele controlevergrendeling) en waar wordt het voor gebruikt?
Leg uit waarom en welke (met betrekking tot de uitvoer van de code)
Is een situatie van Niet-Repeatable Read mogelijk bij gebruik van het isolatieniveau Read Committed?
Vertel me hoe Redis werkt, wat het is?
Wat wordt er bij elke print weergegeven? func fn(a []int) { a[2] = 5 a = append(a, 6) fmt.Println(a) // a = append(a, 7) a[0] = 5 fmt.Println(a) // } func main() { a := make([]int, 0, 5) for i := 0; i < 4; i++ { a = append(a, i) } fn(a[:3]) fmt.Println(a) // }
In regel 7 wordt geconcludeerd dat de interne array overvol zal raken en dat er een nieuwe zal worden gemaakt. Waarom heb je dat zo besloten?
Zijn er fouten / problemen op het werk geweest?
Vertel eens, wat is een map in Go en hoe begrijp je dat?
Wat gebeurt er met de Token Bucket rate limiter in het scenario: 1 verzoek aan het begin van de seconde, 99 aan het einde, en daarna nog 100 in de volgende seconde?
Vertel me over het gebruik van gebeurtenissen (event-driven aanpak) in jouw voorbeeld
// Wat is er mis met deze code? Hoe kan het verbeterd worden? func fn() { str := "" for i := 0; i < 100000; i++ { str += fmt.Sprintf("%d", i) } fmt.Println(str) }
Ontwerp een rate limiter voor een externe API met een limiet van 100 verzoeken per seconde/minuut
Welke taken vind je leuk? Wat zoek je voor jezelf?
Wie heeft het project ontworpen — jij als feature-lead, samen met het team, of als teamleider?
Gebruik je Golang?
Wat wordt er weergegeven bij elke print? func fn(a []int) { a[2] = 5 a = append(a, 6) fmt.Println(a) // a = append(a, 7) a[0] = 5 fmt.Println(a) // } func main() { a := make([]int, 0, 5) for i := 0; i < 4; i++ { a = append(a, i) } fn(a[:3]) fmt.Println(a) // }
Hoe werden ze opgelost?