Sobes.tech

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

Жұмыста не іздейсің, не істеуді қалайсың?

308

`unpredictableFunc()` функциясын орау керек, оны тайм-аутпен (мысалы, 1 секунд) орындап, орындалу уақытын логтау керек. // Белгілі бір ұзақ уақыт жұмыс істейтін және санды қайтаратын функция бар. // Оның денесін өзгертуге болмайды (ішінде желілік сұрау бар деп ойлаңыз). func unpredictableFunc() int64 { rnd := rand.Int63n(5000) time.Sleep(time.Duration(rnd) * time.Millisecond) return rnd } // Тайм-аутпен жұмыс істейтін орау функциясын өзгерту керек (мысалы, 1 секунд). // Егер "ұзақ" функция осы уақыт ішінде жұмыс істеп үлгерсе - жақсы, нәтижесін қайтару керек. // Егер жоқ болса - қате қайтару керек. Бұл жағдайда жұмыс нәтижесі маңызды емес. // // Сонымен қатар, бұл функция қанша уақыт жұмыс істегенін өлшеу керек (просто логқа шығару). // Орау функциясының сигнатурасын өзгертуге болады. func predictableFunc() int64 { return unpredictableFunc() }

291

Банкте қандай командада жұмыс істедіңіз? Команда қандай міндеттерді атқарды?

278

SSL/TLS қалай жұмыс істейді? Қосылу орнату процесін сипаттаңыз.

264

Go-да карталар қалай құрылымдалған?

247

Go тілінде слайс дегеніміз не?

243

Сіз Kubernetes үшін операторлар жаздыңыз ба?

236

context.WithTimeout ішкі құрылымы қалай?

231

Транзакция оқшаулау деңгейлері дегеніміз не? Қандай қолдандыңыз?

220

Linux-те CPU және жад жүктемесін қалай тексеруге болады?

216

//код не қандай нәтиже береді? 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

**Шарт** Бірнеше URL мекенжайларына сұраулар бір уақытта орындалуы керек. HTTP-статустарды шығарып, қателерді өңдеу керек. ```go package main func main() { urls := []string{"[link] "[link] // Бір нәрсе жасаңыз } ```

212

Жүктемені азайту үшін Elasticsearch орнына деректерді ыстық (соңғы 3 ай) және суық деп бөлу туралы ойладыңыз ба?

207

Goroutine-тер мен операциялық жүйе ағындары қалай ерекшеленеді? Неге goroutine-тер қажет?

206

PostgreSQL-да баяу сұрауларды қалай табуға және оларды қалай оңтайландыруға болады?

206

resp.Body.Close() туралы айта аласыз ба — ол не үшін қажет және неге 10 буферін қойдыңыз?

202

Сіз қалай Junior, Middle және Senior әзірлеушілерін ажырата аласыз? Өзіңізді Senior деп санайтын критерийлер қандай?

202

Деректер қорында неше жол болды?

197

Дерекқорлардағы индекстер дегеніміз не? Қандай түрлері бар?

197
/3