Поведение при копировании и расширении среза
newArr сначала имеет len=1 и cap=2. После добавления 2 его len=2, cap=2; после добавления 3 нужен новый массив с cap не меньше 3. arr сохраняет длину 1.
Читать ответПодготовка к интервью
3221 вопрос в категории «Лайвкодинг»
Что проверяют на интервью
В этой подборке вопросы сгруппированы по формату «Лайвкодинг», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: frontend, browser, database.
Каталог
newArr сначала имеет len=1 и cap=2. После добавления 2 его len=2, cap=2; после добавления 3 нужен новый массив с cap не меньше 3. arr сохраняет длину 1.
Читать ответПрограмма заблокируется на отправке в небуферизированный канал до запуска принимающей горутины. В обычной отдельной программе runtime завершит её сообщением о deadlock.
Читать ответСначала задайте приоритет правил и безопасное поведение при ошибках. Ниже действует первое совпадение, по умолчанию доступ запрещён; любой некорректный элемент делает весь набор недействительным.
Читать ответЭлемент map не адресуем, поэтому для значения Bar нельзя автоматически вызвать метод с receiver *Bar. Храните указатели, используйте value receiver или работайте с локальной копией.
Читать ответВ современных Go с включённым асинхронным вытеснением сообщение обычно будет напечатано, несмотря на GOMAXPROCS(1). После этого программа продолжит бесконечный цикл.
Читать ответБудет напечатано `append [1 5]`, затем `after [1 5 3 4]`. У list[:1] длина 1, но capacity 4, поэтому append изменяет общий массив.
Читать ответГлавные вопросы — перезапись существующего файла, обработка ошибок и управление закрытием. Value receiver сам по себе не ломает код: копируется указатель на один и тот же os.File.
Читать ответПредставленный код уже решает задачу: синхронные вызовы printNumber печатают 0, 1, …, 10 по порядку, каждое число на отдельной строке.
Читать ответСама test1 возвращает 1: именованный out сначала равен нулю, а defer увеличивает его перед выходом. Но весь пример не скомпилируется, если test3 нигде не определена.
Читать ответОднозначного вывода нет: конкурентные записи в обычную map образуют data race и могут завершить процесс fatal error. Sleep не синхронизирует горутины.
Читать ответКэш можно реализовать на map с mutex, сроком истечения записи и таймером удаления. Get обязан проверять время сам: выполнение таймера может задержаться.
Читать ответДеление на ноль перехватывает recover в printNumber. Отправки в закрытый канал здесь не будет: close вызывается после wg.Wait. Но при panic теряется занятый слот семафора.
Читать ответ