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 } } }
Golang
Šta tražiš u poslu, čime želiš da se baviš?
Postoji funkcija `unpredictableFunc()`, koju treba obuhvatiti tako da se izvršava sa timeout-om (na primer, 1 sekunda) i da se beleži vreme izvršenja. // Postoji funkcija koja radi neograničeno dugo i vraća broj. // Nije dozvoljeno menjati njen sadržaj (pretpostavimo da je unutar mrežni zahtev). func unpredictableFunc() int64 { rnd := rand.Int63n(5000) time.Sleep(time.Duration(rnd) * time.Millisecond) return rnd } // Potrebno je izmeniti funkciju za obuhvat, koja će raditi sa zadatim timeout-om (na primer, 1 sekunda). // Ako "duga" funkcija završi u tom vremenu, odlično, vraćamo rezultat. // Ako ne, vraćamo grešku. Rezultat rada u tom slučaju nije važan. // // Takođe, treba izmeriti koliko je vremena trajalo izvršenje ove funkcije (jednostavno ispisati u log). // Potpis funkcije za obuhvat može biti izmenjen. func predictableFunc() int64 { return unpredictableFunc() }
У којем тиму си радио у банци? Шта је био задатак тима?
Kako funkcioniše SSL/TLS? Opisati proces uspostavljanja veze.
Kako su mape organizovane u Go?
Šta je slice u Go?
Da li ste pisali operatore za Kubernetes?
Kako funkcioniše unutar context.WithTimeout?
Šta su nivoi izolacije transakcija? Koje ste koristili?
Kako proveriti opterećenje CPU i memorije u Linuxu?
Šta će prikazati kod? 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 }
**Uslov** Zahtevi ka više URL-ova treba da se izvršavaju paralelno. Prikažite HTTP status kodove, obradite greške. ```go package main func main() { urls := []string{"[link]"} // Uradi nešto } ```
Čime se goroutines razlikuju od niti operativnog sistema? Čemu služe goroutines?
Da li je razmatrana podela podataka na vruće (poslednja 3 meseca) i hladne za smanjenje opterećenja umesto Elasticsearch-a?
Kako pronaći sporo upit u PostgreSQL i kako ga optimizovati?
Kako razlikuješ Junior, Middle i Senior developere? Po kojim kriterijumima smatraš sebe Seniorom?
Ispričaj o resp.Body.Close() — zašto je to potrebno i zašto si postavio bafer od 10?
Колико редова је било у бази података?
Напишите SQL-запрос, который выведет **имя клиента**, его **город** и **общую сумму** всех его заказов. В итоговую выборку должны попасть только те клиенты, суммарные траты которых составляют **более 1000** у.е. --- **Схема данных:** 1. **Таблица `customers`:** - `customer_id` (int) – уникальный идентификатор клиента. - `customer_name` (varchar) – имя клиента. - `city` (varchar) – город проживания. 2. **Таблица `orders`:** - `order_id` (int) – уникальный номер заказа. - `customer_id` (int) – ID клиента, совершившего покупку. - `total_amount` (decimal) – сумма конкретного заказа.