Конкурентный доступ к глобальной карте из горутин
После запуска писателя возникает data race, и runtime может аварийно завершить процесс с concurrent map read and map write. Гарантированной последовательности единиц и двоек нет.
Читать ответПодготовка к интервью
3221 вопрос в категории «Лайвкодинг»
Что проверяют на интервью
В этой подборке вопросы сгруппированы по формату «Лайвкодинг», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: frontend, browser, database.
Каталог
После запуска писателя возникает data race, и runtime может аварийно завершить процесс с concurrent map read and map write. Гарантированной последовательности единиц и двоек нет.
Читать ответВ приведённом коде обращения к map уже защищены общим RWMutex: чтение под RLock, запись под Lock. Гонка возможна, только если другие обращения обходят эту защиту.
Читать ответСначала определите дату первого бана, затем суммируйте только покупки раньше неё и отберите SUM(price)>5000. Группируйте по id, чтобы не объединить однофамильцев.
Читать ответФормируйте цифры справа налево, работая в отрицательной области: она включает минимальный int, который нельзя безопасно превратить в положительный через обычное отрицание.
Читать ответЗначение highest не определено надёжно: есть конкурентное чтение и запись, а main не ждёт горутины. Новая семантика переменной цикла не устраняет гонку на общем highest.
Читать ответЕсли T1.a содержит 1 и 2, а T2.b содержит две единицы, результат состоит из (1,1), (1,1) и (2,NULL). Порядок строк без ORDER BY не гарантирован.
Читать ответКлючом группы сделайте отсортированные символы слова. При запрете импортов можно отсортировать []rune простым insertion sort; это сохраняет поддержку Unicode-кодовых точек.
Читать ответПрограмма не скомпилируется без импорта fmt. Даже после его восстановления результат int32(math.Pow(2,64)) не имеет переносимого конкретного значения: число вне диапазона int32.
Читать ответДля разных конкретных типов каналов можно применять reflect.Select и возвращать chan any. Обобщённая merge[T] проще, но требует одинакового T у всех входов одного вызова.
Читать ответТип из условия уже реализует error: у него есть метод Error() string. Значение можно возвращать из функции с результатом error и разбирать через errors.As.
Читать ответНужен LEFT JOIN от cities к users и COUNT(u.id). Так все города сохранятся, а отсутствие пользователей даст ноль.
Читать ответОбёртка может ограничить время ожидания вызывающего, но не принудительно остановить функцию без поддержки отмены. Буфер на один результат не даст работнику зависнуть на поздней отправке.
Читать ответ