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
İşdə nə axtarırsan, nə ilə məşğul olmaq istəyirsən?
`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 hansı komandada işləyirdin? Komanda nə ilə məşğul olurdu?
SSL/TLS necə işləyir? Bağlantının qurulma prosesini təsvir edin.
Go-da xəritələr necə qurulub?
Go-da dilim nədir?
Kubernetes üçün operatorlar yazmısınızmı?
context.WithTimeout daxili necə işləyir?
Əməliyyatların izolasiya səviyyələri nədir? Hansını istifadə etmisiniz?
Kod nə göstərəcək? 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 }
Linux-da CPU və yaddaş yüklənməsini necə yoxlamaq olar?
Goroutine-lər əməliyyat sistemi iplərindən necə fərqlənir? Goroutine-lər nə üçün lazımdır?
**Şərt** Bir neçə URL-ə sorğular paralel şəkildə həyata keçirilməlidir. HTTP status kodlarını göstərin, səhvləri idarə edin. ```go package main func main() { urls := []string{"[link]"} // Nə isə et } ```
Yükü azaltmaq üçün Elasticsearch yerinə məlumatların isti (son 3 ay) və soyuq bölünməsini nəzərdən keçirdinizmi?
Junior, Middle və Senior inkişaf etdiriciləri necə fərqləndirirsən? Özünü Senior kimi hansı meyarlarla hesab edirsən?
PostgreSQL-də yavaş sorğunu necə tapmaq və onu necə optimallaşdırmaq olar?
resp.Body.Close() haqqında danış — niyə lazımdır və niyə 10-luq tampon qoymusunuz?
Verilənlər bazasında neçə sətir var idi?
SQL sorğusunu yazın, **müştəri adını**, onun **şəhərini** və **bütün sifarişlərinin ümumi məbləğini** göstərəcək. Yekun nəticəyə yalnız **ümumi xərcləri 1000-dən çox olan** müştərilər daxil edilməlidir. --- **Məlumat sxeması:** 1. **`customers` cədvəli:** - `customer_id` (int) – müştərinin unikal identifikatoru. - `customer_name` (varchar) – müştərinin adı. - `city` (varchar) – yaşadığı şəhər. 2. **`orders` cədvəli:** - `order_id` (int) – unikal sifariş nömrəsi. - `customer_id` (int) – alış-veriş edən müştərinin ID-si. - `total_amount` (decimal) – müəyyən bir sifarişin məbləği.