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 } } }

368

Čo hľadáš v práci, čím chceš byť?

316

V akom tíme si pracoval v banke? Čo robila tím?

310

Existuje funkcia `unpredictableFunc()`, ktorú je potrebné obaliť tak, aby sa vykonávala s časovým limitom (napríklad 1 sekunda) a zaznamenávala čas vykonávania. // Existuje funkcia, ktorá beží neobmedzene dlho a vracia číslo. // Telo tejto funkcie nemožno meniť (predstavme si, že vo vnútri je sieťová požiadavka). func unpredictableFunc() int64 { rnd := rand.Int63n(5000) time.Sleep(time.Duration(rnd) * time.Millisecond) return rnd } // Je potrebné upraviť obalovaciu funkciu, ktorá bude pracovať s daným časovým limitom (napríklad 1 sekunda). // Ak "dlhá" funkcia skončí v tomto čase, je to skvelé, vrátime výsledok. // Ak nie, vrátime chybu. Výsledok tejto funkcie nás v tomto prípade nezaujíma. // // Navyše je potrebné zmerať, ako dlho táto funkcia bežala (stačí vypísať do logu). // Signatúra obalovacej funkcie môže byť zmenená. func predictableFunc() int64 { return unpredictableFunc() }

297

Ako funguje SSL/TLS? Opíšte proces nadviazania spojenia.

268

Čo sú indexy v databázach? Aké typy indexov existujú?

245

Ako funguje vo vnútri context.WithTimeout?

239

Ako rozlišuješ Junior, Middle a Senior vývojárov? Podľa akých kritérií považuješ sám seba za Senior?

236

Bolo zvážené rozdelenie dát na horúce (posledné 3 mesiace) a studené na zníženie záťaže namiesto Elasticsearch?

223

Aké sú úrovne izolácie transakcií? Ktoré ste použili?

220

Čo zobrazí kód? 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 }

220

Ako skontrolovať zaťaženie CPU a pamäte v Linuxe?

216

**Podmienka** Žiadosti na viacero URL by mali byť vykonávané paralelne. Zobraziť HTTP stavy, spracovať chyby. ```go package main func main() { urls := []string{"[link]"} // Urobiť niečo } ```

216

V čom sa líšia goroutines od vlákien OS? Na čo sú goroutines potrebné?

215

Ako nájsť pomalý dopyt v PostgreSQL a ako ho optimalizovať?

214

Napíšte SQL dotaz, ktorý zobrazí **meno zákazníka**, jeho **mestá** a **celkovú sumu** všetkých jeho objednávok. Do konečného výberu by mali patriť iba tí zákazníci, ktorých celkové výdavky presahujú **1000** jednotiek. --- **Dátové schéma:** 1. **Tabuľka `customers`:** - `customer_id` (int) – jedinečný identifikátor zákazníka. - `customer_name` (varchar) – meno zákazníka. - `city` (varchar) – mesto bydliska. 2. **Tabuľka `orders`:** - `order_id` (int) – jedinečné číslo objednávky. - `customer_id` (int) – ID zákazníka, ktorý vykonal nákup. - `total_amount` (decimal) – suma konkrétnej objednávky.

204

Rozprávaj o resp.Body.Close() — prečo je to potrebné a prečo si nastavili buffer 10?

202
/3