Ограничение количества одновременно работающих горутин при массовой отправке запросов
Захватывайте слот семафора до запуска goroutine: тогда одновременно существует не больше N рабочих горутин. WaitGroup ждёт выполнения всех вызовов.
Читать ответПодготовка к интервью
3221 вопрос в категории «Лайвкодинг»
Что проверяют на интервью
В этой подборке вопросы сгруппированы по формату «Лайвкодинг», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: frontend, browser, database.
Каталог
Захватывайте слот семафора до запуска goroutine: тогда одновременно существует не больше N рабочих горутин. WaitGroup ждёт выполнения всех вызовов.
Читать ответВыводятся [0], [0], [2], затем panic из-за индекса 1 при длине 1. Четвёртый Println не выполняется.
Читать ответНужно создать map, защищать проверку и вставку одним lock и закрыть uniqueIDs после всех отправителей. Иначе есть panic, гонка и зависание range.
Читать ответКаждая запись хранит собственный срок, а таймер удаляет только то поколение, для которого создан. Get дополнительно проверяет TTL независимо от задержки таймера.
Читать ответОтправьте запросы всем репликам и возвращайте первый ответ без ошибки. Остальные отмените общим context; ErrNotFound не должен завершать поиск раньше успеха.
Читать ответНужен INNER JOIN cities и users по city_id. Но сначала исправьте DDL: круглые скобки, запятые между полями и строками VALUES.
Читать ответОжидаемое математическое число — 100000, но программа содержит data race и его не гарантирует. WaitGroup не делает counter++ атомарным.
Читать ответБудет напечатано 0: аргумент fmt.Println вычисляется при регистрации defer, до того как второе отложенное действие увеличит a.
Читать ответИсходник не компилируется из-за нескольких опечаток. После исправления он выведет карту с пятью случайными ID и <nil> примерно через 50 мс или дольше.
Читать ответПрограмма напечатает foo. Интерфейс i не равен nil, а метод Foo безопасен для nil-получателя, потому что не разыменовывает его.
Читать ответГруппируйте покупки по идентификатору пользователя и примените HAVING SUM(price) > 5000. Для примера суммы равны 15200 у Ивана и 8400 у Анны.
Читать ответСоедините cities и users по users.city_id = cities.id. Один город будет повторён для каждого проживающего в нём пользователя.
Читать ответ