Golang
Co może widzieć warstwa repozytorium?
Z jakimi metodologiami rozwoju pracowałeś? Które są najbardziej wygodne?
/* Miejsca w kinie są ustawione w jednym rzędzie. Widz, który właśnie przyszedł, wybiera miejsce, aby siedzieć jak najdalej od innych widzów w rzędzie. Czyli odległość od tego miejsca, na którym usiądzie, do najbliższego Gwarantuje się, że w rzędzie zawsze są wolne miejsca i już siedzi co najmniej Napisz funkcję, która na podstawie podanego rzędu miejsc (tablicy zer i jedynek) Przykład: Wejście: [1, 0, 0, 0, 1] Wyjście: 2 Wejście: [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Wyjście: 2 Wejście: [1, 0, 1, 0] Wyjście: 1 */
Czym jest observability? Co obejmuje to pojęcie i co jest potrzebne, aby usługa była gotowa do produkcji? Dlaczego potrzebne są metryki, trace'y i logi?
Podaj przykład przypadku z SELECT FOR UPDATE, kiedy to może prowadzić do deadlocku.
Czym są kanały w Go i jakie są ich rodzaje?
Co robisz, jeśli zdajesz sobie sprawę, że terminy się zbliżają i nie zdążysz na czas?
Czy istnieje sposób na zarządzanie i dostosowanie stop-the-world garbage collector w Go?
// tabela towarów: // ID | cnt_view // ----------- // 1 | 100 // dwaj użytkownicy zaczęli jednocześnie oglądać towar o id = 1 // i w naszej bazie danych uruchomiono 2 równoległe transakcje // jaki będzie wynik? postgresql func IncrementView(ctx context.Context, db *sql.DB, id int64) error { tx, err := db.BeginTx(ctx, nil) if err != nil { return err } defer tx.Rollback() var cnt int err = tx.QueryRowContext(ctx, "SELECT cnt_view FROM goods WHERE id = $1", id, ).Scan(&cnt) if err != nil { return err } cnt++ _, err = tx.ExecContext(ctx, "UPDATE goods SET cnt_view = $1 WHERE id = $2", cnt, id, ) if err != nil { return err } return tx.Commit() }
Czy są pytania dotyczące etapów i zespołów?
Jakie linters używasz w Go i gdzie je uruchamiasz?
Czy zdarzało się zajmować zadaniami architektonicznymi? Jak podejmowano decyzje architektoniczne?
func appendSlice(sl []int, val int) { sl = append(sl, val) } func mutateSlice(sl []int, idx, val int) { sl[idx] = val } package main import "fmt" type Person struct { Name string } func changeName(person *Person) { person = &Person{ Name: "Alice", } } func main() { person := &Person{ Name: "Bob", } fmt.Println(person.Name) // changeName(person) fmt.Println(person.Name) // }
Pakiet błędów: dwie metody, Is i As, jaka jest różnica i kiedy je stosować?
Kiedy byłeś w T-bank, nad jakim projektem pracowałeś tam?
[imię] zapytał: opowiedz o primitive synchronizacji w GoLang.
Jak oceniasz swoje doświadczenie z Kubernetes?
Jak przebiegały zadania w zespole — od biznesu przez analityka do lidera?
Jakie testy uważasz za najbardziej skuteczne?
Czym jest VACUUM w PostgreSQL?