Конкурентный упорядоченный вывод чисел с синхронизацией
Запустить горутины можно одновременно, но строгий порядок с паузой требует последовательно разрешать выполнение showNumber. Для этого подойдёт цепочка каналов-сигналов.
Читать ответПодготовка к интервью
3221 вопрос в категории «Лайвкодинг»
Что проверяют на интервью
В этой подборке вопросы сгруппированы по формату «Лайвкодинг», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: frontend, browser, database.
Каталог
Запустить горутины можно одновременно, но строгий порядок с паузой требует последовательно разрешать выполнение showNumber. Для этого подойдёт цепочка каналов-сигналов.
Читать ответСнаружи numbers сохраняет len=1 и cap=1. Внутри add после append локальный слайс имеет len=2 и cap не меньше 2, но этот новый заголовок не возвращается вызывающему.
Читать ответПри обычной capacity=4 после первых четырёх append вывод будет [0 1 2 3 4] [0 1 2 3 5]. Каждый следующий append тогда выделяет отдельный массив.
Читать ответСуммируйте amount по клиенту, упорядочьте по убыванию суммы и возьмите первые десять строк. COUNT(*) считал бы позиции, а не количество единиц товара.
Читать ответДекоратор проверяет локальный TTL-кэш перед удалённым Get и сохраняет успешный ответ. Совпадающие промахи стоит объединять, а размер кэша ограничивать.
Читать ответИнициализируйте map и защищайте проверку с добавлением одной критической секцией. Передавайте число аргументом горутины и ждите все горутины через WaitGroup.
Читать ответСлияние каналов выполняют читателями, пересылающими данные в общий выход. WaitGroup позволяет закрыть его только тогда, когда все входные потоки закончились.
Читать ответНа каждый непустой вход запустите читателя, а выход закройте отдельной горутиной после WaitGroup. Отправка нескольких горутин в один канал безопасна без дополнительного mutex.
Читать ответИсходник не компилируется: у слайса нет метода append. Если заменить a.append(a,7) на a=append(a,7), вывод будет [0 1 5 6], [5 1 5 6 7], затем [5 1 5 6].
Читать ответПоказанный код уже работает: foo(6) возвращает ненулевой *MyError, и fmt.Println напечатает oops: i > 5. Описанная в тексте неисправность не воспроизводится этим фрагментом.
Читать ответВ PostgreSQL можно использовать DISTINCT ON с сортировкой по pickpoint_id и убывающему created. Для одинакового времени задайте дополнительное правило выбора, например максимальный уникальный id.
Читать ответБудут выведены пары a 1, b 2 и c 3, каждая на отдельной строке, но их порядок не определён. map не хранит контракт порядка вставки или сортировки.
Читать ответ