Golang
Jak zapewnili spójność danych w projekcie? Czy zdarzały się przypadki rozbieżności?
Co się stanie z bieżącymi żądaniami bez Graceful Shutdown podczas kończenia procesu?
Gdzie powinien znajdować się metod getExternalOrderIdFromCRM? Jak strukturyzować projekt?
Osobiście testowałem, że Postgres przestawia kolumny i optymalizatorowi nie jest obojętne, w jakiej kolejności napiszesz zapytanie — sam je przebuduje jak trzeba. Co o tym myślisz?
Co zostanie wyświetlone podczas uruchamiania programu: 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) // Symulacja pracy }() } wg.Wait() fmt.Println(len(counter)) }
Wymień poziomy izolacji transakcji w Postgres. Dlaczego bardziej rygorystyczne poziomy izolacji działają wolniej? Od którego poziomu pojawia się konkurencja o dane?
Napisz funkcję, która usuwa wszystkie elementy równe val z slice'a in-place. Zwraca slice bez usuniętych wartości. func RemoveValue(slice []int, val int) []int { // twój kod } // Przykład 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{}
Jakie narzędzia używałeś do zarządzania zależnościami w Go?
Opowiedz mi o Garbage Collector w Go, jak on działa.
Jakie problemy mogą wystąpić podczas korzystania z Redis pod dużym obciążeniem?
Co poprawiłeś w sobie w ciągu ostatnich pół roku do roku? Czego nauczyłeś się poza pracą?
Opowiedz mi o sync.Atomic: do czego służy, czy musiałeś go używać w pracy?
Jak Kafka był używany w Twoim projekcie?
Czym jest transakcja i na czym polegają zasady ACID?
Na ilu hostach działała usługa i ile instancji było uruchomionych?
Jak pracowałeś z WebSocket? Na poziomie konfiguracji infrastruktury czy tylko kod? Jakie technologie używałeś? Czy wystąpiły problemy z połączeniem na poziomie infrastruktury?
Czy możesz krótko opisać, z jakich usług składał się system i jak się ze sobą komunikowały?
func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(advertiserID) // dodać transakcję if err != nil { return err } partner, err := r.find(partnerID) if err != nil { return err } advertiser.Balance -= amount // zabezpieczyć 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 }
Co piszesz w Go — mikroserwisy czy usługi?
Czy kolejność, w jakiej pola są dodawane do indeksu złożonego, ma znaczenie?