По зарплатным ожиданиям, от какой суммы сейчас рассматриваешь предложение?
Проблема гонки данных при списании баланса: как исправить?
Какой лучше взять канал для этой задачи: буферизированный или небуферизированный? Чем они отличаются?
Как осуществляется резолв DNS в Kubernetes? Расскажи про FQDN и цепочку DNS-резолва.
Можешь переписать конструкцию отправки задач через range?
Что происходит в Kubernetes когда выполняется kubectl create -f deployment.yaml? Опиши полную цепочку.
Если хэш-функция всегда возвращает одно и то же значение (единицу), что произойдёт с map? Как работают бакеты?
Что такое defer в Go? Что выведет код с двумя defer?
Что выведет код со слайсами и передачей в функцию? Как работает передача слайса в функцию?
Задача с интерфейсом error и nil: что выведет код с различными способами присвоения nil?
Задача с горутинами и счётчиком: будут ли гонки? Как исправить? Чем отличается Mutex от Atomic?
Задача на написание кода: найти наименьшее натуральное число, отсутствующее в массиве
Уровень изоляции Serializable — как работает?
**Условие** Запросы к нескольким URL-адресам должны выполняться параллельно. Нужно вывести HTTP-статусы, обработать ошибки. ```go package main func main() { urls := []string{"[link] "[link] // Do something } ```
// Нужно изменить функцию обёртку, которая будет работать с заданным таймаутом (например, 1 секунду). // Если "длинная" функция отработала за это время - отлично, возвращаем результат. // Если нет - возвращаем ошибку. Результат работы в этом случае нам не важен. // // Дополнительно нужно измерить, сколько выполнялась эта функция (просто вывести в лог). // Сигнатуру функцию обертки менять можно.
Спроектируйте публичный интерфейс (API) библиотеки для копирования файлов на Go — заголовки функций и типов, максимально удобные для разработчиков.
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 } } }
Что используют для того, чтобы из одной горутины завершить другую?
Вы сталкивались с рекламными метриками? Знаете, в чём они измеряются?
Расскажи про принцип единственной ответственности (SRP). Как его применить к функции CreateOrder?