Golang
Miałeś trzy centra danych — jak zorganizowano schemat replikacji/awaryjności między nimi?
Czy znasz Linux i na jakim poziomie?
Czy używaliście obu, czy tylko gRPC?
Dlaczego to trudne zadanie technicznie? Dlaczego nie po prostu funkcja na 100 linii?
Jaki jest łączny doświadczenie w komercyjnym rozwoju w Go?
Jakie systemy konteneryzacji i orkiestracji znasz?
główny pakiet import ( "io" "log" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { go func() { resp, err := http.Get("[link]") if err != nil { log.Println("błąd żądania:", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) w.Write(body) }() } func main() { http.HandleFunc("/proxy", handler) log.Fatal(http.ListenAndServe(":8080", nil)) }
Jak przekazywane są argumenty do funkcji — przez wartość czy przez referencję?
Dany jest posortowany tablica liczb zawierająca duplikaty. Należy usunąć duplikaty in-place (bez tworzenia nowej tablicy) i zwrócić rozmiar otrzymanej tablicy. Przykład: Input: nums = [0,0,1,1,1,2,2,3,3,4] Output: 5, nums = [0,1,2,3,4,_,_,_,_,_] Wyjaśnienie: W tej tablicy jest 5 unikalnych elementów. Umieść je na pierwszych pięciu pozycjach w tablicy i zwróć liczbę 5. Pozostałe elementy w tablicy mogą być dowolne.
Czy kandydat sam projektował systemy, czy tylko uczestniczył w dyskusjach? Jakie usługi?
Czym różnią się goroutines od wątków systemu operacyjnego? Do czego służą goroutines?
func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(advertiserID) if err != nil { return err } partner, err := r.find(partnerID) if err != nil { return err } advertiser.Balance -= amount 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 }
Jakiego stylu Saga użyto: choreografii czy orkiestracji?
Czy nowa nomenklatura (nowy towar) powinna pojawić się w Redis?
Jak planujesz zrealizować morphing obiektu drzewa jabłoni w jabłko? Jakie podejścia widzisz?
func main() { defer func() { if r := recover(); r != nil { fmt.Println("odzyskano") } }() defer func() { fmt.Println("odroczenie") }() go func() { fmt.Println("początek goroutine") panic("bum") fmt.Println("koniec goroutine") }() time.Sleep(time.Second) }
Jak działa scheduler?
Czym różni się odwrócenie zależności od wstrzykiwania zależności?
Jak u ciebie z angielskim?
Czym jest konstrukcja `<-ch` w Go?