Менеджер публикаций‑подписок
Каждая подписка должна иметь отдельный канал, иначе сообщения будут распределяться между читателями, а не рассылаться всем. Ограниченный буфер допускает пример из условия и создаёт backpressure.
Читать ответПодготовка к интервью
3221 вопрос в категории «Лайвкодинг»
Что проверяют на интервью
В этой подборке вопросы сгруппированы по формату «Лайвкодинг», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: frontend, browser, database.
Каталог
Каждая подписка должна иметь отдельный канал, иначе сообщения будут распределяться между читателями, а не рассылаться всем. Ограниченный буфер допускает пример из условия и создаёт backpressure.
Читать ответВ типичной реализации с достаточной capacity у foo результат — [1 2 3 5] [1 2 3 5]. Но точную стратегию роста capacity язык не фиксирует, поэтому важна оговорка о совместном массиве.
Читать ответКак написано, программа не компилируется из-за закомментированного импорта fmt. После его восстановления будет [1 2 3 4]: append выполняется в новом массиве, а результат sub игнорируется.
Читать ответВторой цикл записан с синтаксической ошибкой. После замены на for range values программа получит три значения; их порядок не гарантирован и зависит от семантики переменной v.
Читать ответВместо горутины на каждый URL создайте фиксированный пул работников. Уберите log.Fatal из работника: он завершает весь процесс, а не только обработку неудачного запроса.
Читать ответИсходник не компилируется: example1 не определена, а -- не является бинарным сравнением. Если заменить имя на example и оператор на ==, вывод будет <nil>, <nil>, false.
Читать ответСоздайте фиксированные три работника и канал заданий. После окончания генератора обязательно закройте очередь и дождитесь работников: исходный main иначе завершит процесс раньше ответов.
Читать ответОсновные дефекты: SQL-инъекция через id, nil-разыменования, запись в неинициализированную errs map и игнорирование ошибок. Нужны типизированный ввод, явная авторизация и репозиторий с context/error.
Читать ответПосле тайм-аута получатель уходит, а горутина навсегда блокируется на отправке в небуферизированный канал. Минимальное исправление — буфер на один результат; полноценное — отменяемая медленная операция.
Читать ответБез изменения Logger можно сериализовать Log и Close обёрткой с mutex. Это обеспечивает согласованность, но не ускоряет сам диск и не создаёт определённый порядок одновременных вызовов заранее.
Читать ответИспользуйте strings.Builder и strconv.Itoa вместо многократного копирования накопленной строки через +=. Пример улучшения в условии уже реализует этот подход.
Читать ответВ приведённом main переменная p не объявлена, поэтому программа не компилируется. После замены p=&v на p:=&v она выведет 3 и 3.
Читать ответ