Golang
Opíšte zloženie svojho tímu.
Akými nástrojmi ste používali?
Prečo sa vôbec používajú rozhrania (vo vývoji, nielen v Go)?
Aký je dôvod rozhodnutia opustiť Wildberries?
Ako často sú úlohy, ktoré vyžadujú zmeny zmlúv?
Ako bol organizovaný proces stanovovania úloh? Kto napĺňal backlog?
Ako veľmi sú pre vás vzácne stretnutia s klientom diskutovateľné?
Ako ste zvládali dlhé/oneskorené dotazy v PostgreSQL?
Je Go objektovo orientovaný alebo štruktúrovaný jazyk? Prejdite si základné princípy OOP (zapúzdrenie, polymorfizmus, dedičstvo, abstrakcia) a ukážte, ako sú implementované v Go.
Ako ste používali Redis?
Ešte stále pracujete v [spoločnosti]?
Popíšte proces inicializácie operačného systému Linux: init proces (PID 1), zavádzač a initramfs.
Prečo ste zvolili sharding podľa account_id? Na čo vôbec slúži sharding?
Prečo nebolo možné všetko postaviť na ClickHouse a jednoducho zobraziť metriky cez službu na frontende?
Čo sa robilo so správami po ručnom spracovaní? Aké boli možnosti?
Čo teraz hľadáš pre seba, čo je pre teba dôležité?
Kedy sa spúšťa Garbage Collector? Sú v určitých momentoch nejaké špeciálne body zastavenia?
Povedz mi o profilovaní služieb v Go — ako vyzerá proces ladenia a hľadania úzkych miest?
// 2 func merge(chans ...chan int) <-chan int { panic("not implemented") } func main() { a,b,c := make(chan int), make(chan int), make(chan int) out := merge(a,b,c) go func(){ for v := range out { println(v) } }() a <- 1 a <- 2 a <- 3 b <- 4 c <- 5 close(c) a <- 6 } Implementujte funkciju merge koja prihvata više kanala celih brojeva i vraća jedan kanal koji spaja vrednosti sa svih ulaznih kanala. Spojeni kanal treba zatvoriti kada su svi ulazni kanali zatvoreni.
Je mapa v Go bezpečná pre vlákna?