Синхронный доступ к общей map в Go
Приведённый код уже защищает map с помощью одного RWMutex. При доступе только через эти функции ошибки concurrent map read and map write быть не должно.
Читать ответПодготовка к интервью
3221 вопрос в категории «Лайвкодинг»
Что проверяют на интервью
В этой подборке вопросы сгруппированы по формату «Лайвкодинг», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: frontend, browser, database.
Каталог
Приведённый код уже защищает map с помощью одного RWMutex. При доступе только через эти функции ошибки concurrent map read and map write быть не должно.
Читать ответФрагмент не компилируется: строки неизменяемы, а "z" нельзя присвоить байтовому элементу. var s string создаёт пустую строку.
Читать ответОтсортируйте интервалы по началу и объединяйте каждый следующий с последним, если next.start <= last.end. Сложность O(n log n).
Читать ответВывод будет Bob, затем Alice. Присваивание *p1 заменяет содержимое объекта, на который указывает исходный p.
Читать ответПрограмма не компилируется: элемент строки нельзя присваивать, а "R" — строка, не байт. Даже первый println до ошибки не выполнится.
Читать ответПри обычной вместимости src = 4 вывод будет [1 2 3] [1 2 3 5] [1 2 3 5]: два append перезаписывают одну общую ячейку.
Читать ответБудут напечатаны 0, 2, 4, 6 и 8. Для единственной горутины канал вместимости 1 попеременно пуст и заполнен.
Читать ответmain не ждёт горутины, поэтому программа обычно завершается почти сразу и ничего не печатает. Десять секунд из десяти Sleep здесь не складываются.
Читать ответWaitGroup решит ожидание, но не гонку между тремя писателями map. Нужен также mutex для самих записей.
Читать ответfmt.Println покажет квадратные скобки с девятью пробелами: срез содержит десять пустых строк, которые печатаются без кавычек.
Читать ответПрограмма напечатает 1, 2, 3, 4, 5 и затем заблокируется на шестом чтении. Канал пуст, но не закрыт, отправителей больше нет.
Читать ответРаботники не должны читать valueCh и забирать чужой успех. Повторяйте временные ошибки до отмены, а ErrNotFound считайте окончательным только для данной реплики.
Читать ответ