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

366

Какво търсиш в работата, с какво искаш да се занимаваш?

316

В коя екип работи в банката? С какво се занимаваше екипът?

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

297

Как работи SSL/TLS? Опишете процеса на установяване на връзката.

266

Как са устроени map-овете в Go?

247

Какви са индексите в базите данни? Какви видове индекси има?

245

Писали ли сте оператори за Kubernetes?

240

Как работи вътрешно context.WithTimeout?

239

Как различаваш Junior, Middle и Senior разработчици? По кои критерии се счита за Senior?

236

Обмисляло ли се разделянето на данните на горещи (последните 3 месеца) и студени за намаляване на натоварването вместо Elasticsearch?

223

Какви са нивата на изолация на транзакциите? Кои сте използвали?

220

Какво ще покаже кода? 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 }

218

Как да проверите натоварването на CPU и памет в Linux?

216

**Условие** Заявките към няколко URL трябва да се изпълняват паралелно. Покажете HTTP статусите, обработете грешките. ```go package main func main() { urls := []string{"[link]"} // Направете нещо } ```

216

Как да намерим бавен заявка в PostgreSQL и как да я оптимизираме?

214

Какво отличава горутините от нишките на ОС? За какво са нужни горутините?

213

Напишете SQL заявка, която ще покаже **името на клиента**, неговия **град** и **общата сума** на всички негови поръчки. В крайния резултат трябва да попаднат само онези клиенти, чиято обща сума на разходите е **повече от 1000** единици. --- **Схема на данните:** 1. **Таблица `customers`:** - `customer_id` (int) – уникален идентификатор на клиента. - `customer_name` (varchar) – името на клиента. - `city` (varchar) – градът на пребиваване. 2. **Таблица `orders`:** - `order_id` (int) – уникален номер на поръчката. - `customer_id` (int) – ID на клиента, направил поръчката. - `total_amount` (decimal) – сумата на конкретната поръчка.

204

Разкажи за resp.Body.Close() — защо е необходимо и защо постави буфер 10?

202
/3