Какие проблемы могут возникнуть из-за общей памяти у потоков? Как их избежать? Какие способы синхронизации знаешь?
Какие тесты вы бы написали для этого кода помимо юнит-тестов? Как бы вы тестировали многопоточность?
Какие примитивы синхронизации есть в Go? Расскажи про WaitGroup и Mutex.
Что такое зомби-процесс?
Проблема гонки данных при списании баланса: как исправить?
Как данные из расчётов попадали в 1С?
Вопрос рекрутера о зарплатных ожиданиях и условиях проектной занятости (230 тыс. vs 280 тыс., срочный договор)
Какие методы REST являются идемпотентными?
Задача на написание кода: найти наименьшее натуральное число, отсутствующее в массиве
Каковы твои зарплатные ожидания?
import "fmt" func maxDistants(arr []int)int{ maxDist := 0 lastOne := -1 for i:= 0; i < len(arr); i++{ if arr[i] == 1 { if lastOne == -1 { maxDist = i } else { dist := (i - lastOne)/2 if dist > maxDist { maxDist = dist } } lastOne = i } } if arr[len(arr)-1] == 0 { dist := len(arr) - 1 - lastOne if dist > maxDist { maxDist = dist } } return maxDist } func main() { fmt.Println(maxDistants([]int{1, 0, 0, 0, 1})) }
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 } } }
What pipeline?
Написать функцию, которая проверяет, является ли строка палиндромом. Палиндром - последовательность символов, одинаково читающейся в обоих направлениях. Проверить нужно только на символы алфавита а- я, А- Я, не учитывать case-sensitive.
Использовать готовую библиотеку или написать свою? (дилемма build vs buy)
1.21 func main() { var nums []*int for i := 0; i < 10; i++ { nums = append(nums, &i) } for _, v := range nums { go func() { fmt.Println(v) }() } }
Что такое DNS и как он работает?
Code review: проблемы в функции getExternalOrderIdFromCRM (HTTP-клиент)
Какие примитивы синхронизации в Go вы знаете?
Работаешь с gRPC? Как работаешь с обратной совместимостью в gRPC?