Golang
Pastāsti par kanāliem Go.
Vai tu pats kaut ko aprakstīji par observability — metriku, brīdinājumiem?
Kas tev patīk Go un kas tevi tracina?
Vai pakalpojumā bija kādas beigu punkti, lai pārbaudītu tā darbību — vai pakalpojums pašlaik darbojas?
Kādas ir ieteicamās prakses, rakstot Go moduļus?
Kā nodrošinājāt datu saskaņotību projektā? Vai bija novirzes gadījumi?
Kas notiks ar pašreizējām pieprasījumiem bez Graceful Shutdown procesa beigās?
Personīgi es pārbaudīju, ka Postgres pārkārto kolonnas un optimizatoram nav svarīgi, kādā secībā tu uzraksti vaicājumu — tas to pārstrukturēs pats. Ko tu domā?
Ko tiks gaidīt, palaižot programmu: 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) // Darba imitācija }() } wg.Wait() fmt.Println(len(counter)) }
Izceliet transakciju izolācijas līmeņus Postgres. Kāpēc stingrākie izolācijas līmeņi darbojas lēnāk? No kura līmeņa sākas konkurence par datiem?
Uzrakstiet funkciju, kas vietā izņem visus elementus, kas ir vienādi ar val, no slice. Atgriež slice bez izņemtajām vērtībām. func RemoveValue(slice []int, val int) []int { // jūsu kods } // Piemērs RemoveValue([]int{1,2,3,2,4}, 2) // -> []int{1,3,4} RemoveValue([]int{1,2,3}, 5) // -> []int{1,2,3} RemoveValue([]int{}, 1) // -> []int{}
Kādus rīkus izmantojāt atkarību pārvaldībai Go?
Pastāstiet man par Garbage Collector'i Go, kā tas darbojas.
Kādi problēmas var rasties, izmantojot Redis ar lielu slodzi?
Pastāsti par sync.Atomic: kam tas ir paredzēts, vai tev nācies to izmantot darbā?
Kas ir darījums un kādi ir ACID principi?
Cik daudz hostos darbojās pakalpojums un cik instances tika palaistas?
Kā jūs strādājāt ar WebSocket? Infrastruktūras uzstādīšanas līmenī vai tikai kodā? Kādas tehnoloģijas izmantojāt? Vai bija problēmas ar savienojumu infrastruktūras līmenī?
Vai jūs varētu īsi aprakstīt, no kādiem pakalpojumiem sastāvēja sistēma un kā tās savstarpēji sazinājās?
func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(advertiserID) // pievienot darījumu if err != nil { return err } partner, err := r.find(partnerID) if err != nil { return err } advertiser.Balance -= amount // aizsargāt SELECT FOR UPDATE partner.Hold -= amount partner.Balance += amount if err := r.save(advertiser); err != nil { return err } if err := r.save(partner); err != nil { return err } r.totalPayouts++ return nil }