Проверка возможности приведения одного интерфейса к другому в Go
Type assertion f.(BC) успешен: динамический тип *Foo реализует B и C. Но программа не компилируется из-за y.A() и неиспользованной локальной переменной a.
Читать ответПодготовка к интервью
866 вопросов по Golang с технических собеседований
Что проверяют на интервью
На странице собраны вопросы по Golang — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: go, backend, concurrency.
Каталог
Type assertion f.(BC) успешен: динамический тип *Foo реализует B и C. Но программа не компилируется из-за y.A() и неиспользованной локальной переменной a.
Читать ответУказатель на слайс сохраняет новую длину src, но не отделяет его массив от arr. В данном коде вывод будет [1 5] и [1 5 3], поэтому комментарий об неизменности arr неверен.
Читать ответКанал Go передаёт типизированные значения и синхронизирует горутины. Небуферизированная передача требует готового получателя, а буфер позволяет временно хранить несколько значений.
Читать ответОбычный синхронный callback обычно дешевле передачи через канал, но это разные механизмы. Канал добавляет коммуникацию и синхронизацию, которых прямой вызов функции не предоставляет.
Читать ответПеременная value в range — копия элемента, поэтому её изменение не переписывает исходный слайс. Без записи по индексу можно построить новый слайс через append и присвоить результат.
Читать ответcontext передаёт отмену и дедлайн по цепочке вызовов. HTTP-запросы, обращения к БД и фоновые операции должны наблюдать его завершение и корректно освобождать ресурсы.
Читать ответОпишите реальное обновление: зачем понадобилось, как проверяли совместимость и как выпускали. Если опыта не было, предложите план, не выдавая его за завершённую миграцию.
Читать ответВ коде есть ошибки типов, небезопасный SQL, нет атомарности выплаты и идемпотентности, а счётчик имеет гонку. Исправление требует согласованной транзакции и безопасной публикации событий.
Читать ответДобавляйте контекст через fmt.Errorf с %w, сохраняя исходную ошибку в цепочке. Затем errors.Is проверит причину, а errors.As позволит получить ошибку нужного типа.
Читать ответВ стандартном пакете sync есть Mutex для исключительного доступа и RWMutex для разделения читателей и писателей. Оба нельзя копировать после начала использования.
Читать ответРасскажите о конкретном бинарном формате, его полях, порядке байтов и проверке целостности. Если такого опыта не было, обозначьте это и объясните возможный подход.
Читать ответappend добавляет элементы к слайсу и возвращает новый заголовок слайса. Если capacity хватает, используется прежний массив; иначе выделяется другой массив и элементы копируются.
Читать ответ