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

345

Ce cauți la un loc de muncă, cu ce vrei să te ocupi?

308

Există o funcție `unpredictableFunc()`, pe care trebuie să o înveliți astfel încât să se execute cu un timeout (de exemplu, 1 secundă) și să se înregistreze timpul de execuție. // Există o funcție care funcționează indefinit și returnează un număr. // Corpul său nu poate fi modificat (să presupunem că în interior există o solicitare de rețea). func unpredictableFunc() int64 { rnd := rand.Int63n(5000) time.Sleep(time.Duration(rnd) * time.Millisecond) return rnd } // Trebuie modificată funcția de înveliș, care va funcționa cu un timeout stabilit (de exemplu, 1 secundă). // Dacă "funcția lungă" s-a terminat în acest timp, excelent, returnăm rezultatul. // Dacă nu, returnăm o eroare. Rezultatul funcției în acest caz nu este important. // // În plus, trebuie măsurat cât timp a durat această funcție (pur și simplu afișând în log). // Semnătura funcției de înveliș poate fi modificată. func predictableFunc() int64 { return unpredictableFunc() }

291

În ce echipă ai lucrat la bancă? Cu ce se ocupa echipa?

276

Cum funcționează SSL/TLS? Descrieți procesul de stabilire a conexiunii.

264

Cum funcționează intern context.WithTimeout?

229

Ce sunt nivelurile de izolare a tranzacțiilor? Pe care le-ai folosit?

220

Cum să verifici încărcarea CPU și memorie în Linux?

216

Ce va afișa codul? 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 }

216

Cu ce se deosebesc goroutine-urile de firele sistemului de operare? La ce sunt utile goroutine-urile?

206

**Condiție** Solicitările către mai multe URL-uri trebuie să fie efectuate în paralel. Afișați statusurile HTTP, tratați erorile. ```go package main func main() { urls := []string{"[link]"} // Fă ceva } ```

206

A fost luată în considerare divizarea datelor în hot (ultimele 3 luni) și cold pentru reducerea încărcăturii în loc de Elasticsearch?

205

Cum găsești o interogare lentă în PostgreSQL și cum o optimizezi?

204

Cum deosebești dezvoltatorii Junior, Middle și Senior? Pe ce criterii te consideri Senior?

202

Vorbește despre resp.Body.Close() — de ce este necesar și de ce ai pus un buffer de 10?

200

Scrieți o interogare SQL care afișează **numele clientului**, **orașul** și **suma totală** a tuturor comenzilor sale. Numai clienții ale căror cheltuieli totale depășesc **1000** de unități trebuie incluși în rezultatul final. --- **Schema datelor:** 1. **Tabelul `customers`:** - `customer_id` (int) – identificator unic al clientului. - `customer_name` (varchar) – numele clientului. - `city` (varchar) – orașul de reședință. 2. **Tabelul `orders`:** - `order_id` (int) – numărul unic al comenzii. - `customer_id` (int) – ID-ul clientului care a plasat comanda. - `total_amount` (decimal) – suma unei comenzi specifice.

196
/3