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 } } }
Golang
Ishda nima qidiryapsiz, nima bilan shug'ullanishni xohlaysiz?
`unpredictableFunc()` funksiyasını bükmək lazımdır ki, o, vaxt limiti ilə (məsələn, 1 saniyə) işləsin və icra vaxtını qeyd etsin. // Sonsuz işləyən və ədəd qaytaran funksiya var. // Onun gövdəsini dəyişdirmək olmaz (daxildə şəbəkə sorğusu olduğunu fərz edək). func unpredictableFunc() int64 { rnd := rand.Int63n(5000) time.Sleep(time.Duration(rnd) * time.Millisecond) return rnd } // Bu funksiyanı əhatə edən funksiyanı dəyişdirmək lazımdır, o, müəyyən edilmiş vaxt limiti ilə işləyəcək (məsələn, 1 saniyə). // Əgər "uzun" funksiya bu vaxt ərzində işləyibsə, çox yaxşı, nəticəni qaytarırıq. // Əks halda, səhv qaytarırıq. Bu halda işləmə nəticəsi bizim üçün vacib deyil. // // Əlavə olaraq, bu funksiyanın nə qədər işlədiyini ölçmək lazımdır (sadəcə logda göstərin). // Əhatə edən funksiyanın imzasını dəyişmək olar. func predictableFunc() int64 { return unpredictableFunc() }
Bankda qaysi jamoada ishladingiz? Jamoaning vazifasi nima edi?
SSL/TLS qanday ishlaydi? Ulanishni o'rnatish jarayonini tavsiflang.
Go'da xaritalar qanday ishlaydi?
Go tilida slice nima?
Siz Kubernetes uchun operatorlar yozdingizmi?
context.WithTimeout ichki tuzilishi qanday ishlaydi?
Tranzaktsiya izolyatsiya darajalari nima? Qaysilarini ishlatdingiz?
Linuxda CPU va xotira yuklamasini qanday tekshirish mumkin?
Kod nima chiqaradi? 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 }
**Shart** Bir nechta URLga so'rovlar parallel ravishda bajarilishi kerak. HTTP holat kodlarini ko'rsatish, xatolarni boshqarish. ```go package main func main() { urls := []string{"[link]"} // Biror narsa qilish } ```
Goroutinlar operatsion tizim iplaridan qanday farq qiladi? Goroutinlar nima uchun kerak?
Yukni kamaytirish uchun Elasticsearch o'rniga ma'lumotlarni issiq (so'nggi 3 oy) va sovuqga bo'lishni o'ylab ko'rdingizmi?
PostgreSQL'da sekin so'rovni qanday topish va uni qanday optimallashtirish mumkin?
resp.Body.Close() haqida gapir — nima uchun kerak va nima uchun 10 ta buffer o'rnatding?
Qanday qilib Junior, Middle va Senior dasturchilarni ajratasiz? Qaysi mezonlarga ko'ra o'zingizni Senior deb hisoblaysiz?
Ma'lumotlar bazasida nechta satr bor edi?
Ma'lumotlar bazalarida indekslar nima? Qanday turdagi indekslar mavjud?