Sobes.tech

Golang

func Copy(src io.Reader, dst io.Writer) error { //... } import gocopy s := file.Open() err := gocopy.Copy(s, d) func Copy(src io.Reader, dst io.Writer) (statusCh, error) { //... go func() { statusCh }() } func Read() { select { case status := <-statusCh: } } type Stat struct { status string err error } func Copy(src io.Reader, dst io.Writer) chan Stat { //... statusCh := make(chan Stat{}) go func() { statusCh{ } } return statusCh } func Read() { select { case status := <-statusCh: } } import gocopy s := file.Open() err := gocopy.Copy(s, d) func Copy(src io.Reader, dst io.Writer) chan Stat { //... statusCh := make(chan Stat{}) buf := make([]byte, 1024) var total int64 go func() { for { n, err := src.Read(buf) if n > 0 { writen, err := dst.Write(buf[:n]) total += int64(writen) if err != nil { statusCh <- Stat{ status: "done with err", err: err, } return } } if err == io.EOF { statusCh <- Stat{ bCopy: total, status: "done", err: nil, } return } if err != nil { statusCh <- Stat{ status: "done with err", err: err, } return } } } return statusCh } func Read() { select { case status := <-statusCh: if status.err != nil { return } } } func Copy(src io.Reader, dst io.Writer) chan Stat { //... statusCh := make(chan Stat{}) buf := make([]byte, 1024) var total int64 go func() { for { select { case : n, err := src.Read(buf) if n > 0 { writen, err := dst.Write(buf[:n]) total += int64(writen) if err != nil { statusCh <- Stat{ status: "done with err", err: err, } return } } if err == io.EOF { statusCh <- Stat{ bCopy: total, status: "done", err: nil, } return } if err != nil { statusCh <- Stat{ status: "done with err", err: err, } return } default: statusCh <- Stat{ bCopy: total, status: "pending", err: nil, } } } } return statusCh } func Read() { select { case status := <-statusCh: if status.err != nil { return } } }

246

Istnieje funkcja `unpredictableFunc()`, którą trzeba opakować tak, aby działała z limitem czasu (np. 1 sekunda) i logowała czas wykonania. // Istnieje funkcja, która działa nieskończenie długo i zwraca liczbę. // Nie można zmieniać jej ciała (załóżmy, że wewnątrz jest żądanie sieciowe). func unpredictableFunc() int64 { rnd := rand.Int63n(5000) time.Sleep(time.Duration(rnd) * time.Millisecond) return rnd } // Należy zmodyfikować funkcję opakowującą, która będzie działać z ustawionym limitem czasu (np. 1 sekunda). // Jeśli "długa" funkcja zakończy się w tym czasie, to świetnie, zwracamy wynik. // Jeśli nie, zwracamy błąd. Wynik działania w tym przypadku nie jest ważny. // // Dodatkowo, trzeba zmierzyć, jak długo ta funkcja była wykonywana (wystarczy wypisać w logu). // Sygnaturę funkcji opakowującej można zmienić. func predictableFunc() int64 { return unpredictableFunc() }

241

Czego szukasz w pracy, czym chcesz się zajmować?

233

Jak działa SSL/TLS? Opisz proces nawiązywania połączenia.

201

W jakim zespole pracowałeś w banku? Czym zajmował się zespół?

192

Opowiedz o resp.Body.Close() — dlaczego jest to potrzebne i dlaczego ustawiłeś bufor na 10?

185

Jak działa wewnętrznie context.WithTimeout?

174

Co kod wyświetli? package main import "fmt" func main() { nums := make([]int, 1, 2) fmt.Println(nums) // appendSlice(nums, 1024) fmt.Println(nums) // mutateSlice(nums, 1, 512) fmt.Println(nums) // } func appendSlice(sl []int, val int) { sl = append(sl, val) } func mutateSlice(sl []int, idx, val int) { sl[idx] = val }

170

Jak sprawdzić obciążenie CPU i pamięci w Linux?

166

Czy pisałeś operatorów dla Kubernetes?

165

Czym są indeksy w bazach danych? Jakie są rodzaje indeksów?

164

Czym różnią się goroutines od wątków systemu operacyjnego? Do czego służą goroutines?

163

Czym są poziomy izolacji transakcji? Które używałeś?

161

**Warunek** Zapytania do wielu adresów URL powinny być wykonywane równolegle. Należy wyświetlić statusy HTTP i obsłużyć błędy.

156

Jak znaleźć wolne zapytanie w PostgreSQL i jak je zoptymalizować?

154

**Warunek** Zapytania do wielu URL powinny być wykonywane równolegle. Wyświetl statusy HTTP, obsłuż błędy. ```go package main func main() { urls := []string{"[link]"} // Zrób coś } ```

153

Jak rozróżniasz programistów Junior, Middle i Senior? Na podstawie jakich kryteriów uważasz się za Seniora?

150

Napisz zapytanie SQL, które wyświetli **imię klienta**, jego **miasto** i **łączną sumę** wszystkich jego zamówień. Do końcowego wyniku powinni trafić tylko ci klienci, których łączne wydatki wynoszą **więcej niż 1000** jednostek. --- **Schemat danych:** 1. **Tabela `customers`:** - `customer_id` (int) – unikalny identyfikator klienta. - `customer_name` (varchar) – imię klienta. - `city` (varchar) – miasto zamieszkania. 2. **Tabela `orders`:** - `order_id` (int) – unikalny numer zamówienia. - `customer_id` (int) – ID klienta dokonującego zakupu. - `total_amount` (decimal) – kwota konkretnego zamówienia.

146
/3