Библиотека Go для собеса | вопросы с собеседований
6.86K subscribers
218 photos
6 videos
1 file
413 links
Вопросы с собеседований по Go и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/0b524a15

Для обратной связи: @proglibrary_feeedback_bot

Наши каналы: https://t.me/proglibrary/9197
Download Telegram
Что такое iota и как он работает в Go?

iota — это встроенный идентификатор, используемый для генерации последовательных числовых значений внутри блока const. Он начинается с 0 и увеличивается на 1 с каждой строкой
👍6
Как работает iota в случае переопределения значений

const (
A = iota // 0
B = «Hello» // Переопределение строки
C = iota // 2 (счёт продолжается)
D = 100 // Явное значение
E = iota // 4
)

Когда в блоке const происходит явное переопределение значений, поведение iota остаётся последовательным, но его значение продолжает увеличиваться на каждой строке, независимо от того, используется ли iota явно или задаются другие значения вручную.
👍131😢1
Что такое «магическая дата» в Go?

«Магическая дата» в Go — это фиксированная дата и время: 2006-01-02 15:04:05, выбранная для демонстрации форматов даты и времени. Она служит эталоном для указания шаблонов при работе с функциями форматирования и парсинга времени.

Почему выбрана именно эта дата?
Go использует числовую комбинацию, отражающую порядок элементов даты и времени:
2006 — год, состоящий из 4 цифр.
01 — месяц.
02 — день.
15 — часы в 24-часовом формате.
04 — минуты.
05 — секунды.

Из этой даты получается набор цифр — 1,2,3,4,5,6
🤔11👍6
Может ли одна горутина заблокировать мьютекс, а другая его разблокировать?

Мьютексы в Go не отслеживают, какая конкретно горутина вызвала Lock или Unlock. Это означает, что мьютекс может быть заблокирован одной горутиной и разблокирован другой. Такое поведение допускается на уровне реализации, чтобы мьютексы были максимально простыми и эффективными.
Однако это крайне не рекомендуется, так как приводит к сложностям в управлении состоянием мьютекса и повышает риск возникновения ошибок.
👍24
В каких случаях деление на ноль в языке Go не приводит к панике (panic), и какой результат возвращается в этих случаях?

Деление на ноль в Go не приводит к панике в случаях, когда используются числа с плавающей запятой (float64). В зависимости от знака делимого, результат будет:
Положительное число делится на ноль: результатом будет положительная бесконечность (+Inf).
Отрицательное число делится на ноль: результатом будет отрицательная бесконечность (-Inf).
Ноль делится на ноль: результатом будет «not-a-number» (NaN).
👍21❤‍🔥1
🎨 Новый канал для вдохновения — UX in GIF

Мы запустили свежий канал, где делимся идеями для дизайна интерфейсов. Всё самое стильное, оригинальное и вдохновляющее теперь в одном месте.

📌 Чем полезен канал?

→ Идеи для дизайна интерфейсов.
→ Анимации, которые можно повторить или адаптировать.
→ Лёгкий способ искать вдохновение перед новым проектом.

👉 Подписывайтесь и вдохновляйтесь: UX in GIF
Please open Telegram to view this post
VIEW IN TELEGRAM
🗺 Привычка "срезать углы" при ходьбе – это интуитивное применение алгоритмов?

Так работает жадный алгоритм: вы выбираете наиболее выгодный шаг в каждый момент времени, чтобы минимизировать общий путь. То же самое применяют разработчики, создавая маршруты для такси или доставок.

С нашим курсом «Алгоритмы и структуры данных» вы научитесь решать любые сложные задачи так же эффективно.

🎄Начните свой 2025 со скидкой 35% на все курсы. Это лучшее вложении уходящего года – https://proglib.io/w/014fe6d8
Что произойдет, если в defer использовать анонимную функцию, изменяющую внешнюю переменную?

Изменения произойдут в момент выполнения отложенной функции (а не в момент ее определения)
😢3
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
1👍1
Как проверить, пуст ли интерфейс (interface{})?

Интерфейс (interface{}) в Go считается пустым, только если его значение и тип равны nil. Для точной проверки можно использовать reflect.ValueOf(i).IsZero(), чтобы учесть случаи с nil-значением, но заданным типом.

📎 Подробнее можно почитать здесь
👍8😢1
Можно ли модифицировать map внутри цикла range? Почему?

Нет, модифицировать map во время итерации через range в Go нельзя, так как это может привести к панике (runtime panic). В документации языка указано, что параллельное изменение карты во время итерации не допускается, поскольку внутренняя структура map в Go не поддерживает такие операции.

Причина заключается в том, что изменение map во время итерации может нарушить внутреннюю структуру данных, вызывая неконсистентность или некорректное поведение.
👍8
Чем отличается память в куче от памяти в стеке?

Память в стеке:
Используется для хранения данных с коротким временем жизни (локальные переменные функции).
Быстро выделяется и освобождается, поскольку происходит по принципу LIFO (Last-In-First-Out).
Управляется автоматически при выходе из области видимости функции.
Ограничена по размеру.

Память в куче:
Используется для объектов, срок жизни которых не определён заранее.
Выделение и освобождение сложнее и медленнее, так как управляется сборщиком мусора (GC).
Не ограничена жёсткими рамками, зависит от доступной оперативной памяти.
Подходит для глобальных и длительно живущих объектов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱10👍21😁1
Что такое GOGC?

GOGC (Garbage Collection Goal) — это переменная окружения или настройка, управляющая частотой работы сборщика мусора в Go. GOGC определяет процентный прирост памяти, который допускается перед запуском очередного цикла GC.

Значение GOGC:
100 (по умолчанию): GC запускается, когда используемая память увеличивается на 100% по сравнению с памятью, оставшейся после последнего цикла GC.
0: отключает автоматическую сборку мусора.
<100: увеличивает частоту работы GC (более агрессивная сборка).
>100: снижает частоту работы GC (редкие сборки).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
🎄 Начни 2025-й с апгрейдом навыков,
которые откроют двери в мир IT!

Ты можешь собрать свой персональный план обучения с помощью нашего новогоднего конструктора. Это шанс не просто начать год с полезных знаний, но и сделать инвестицию в своё будущее, которая окупится многократно.

🔗 Собери свой план и начни путь в IT

Почему это выгодно?

📚 Несколько программ по цене одной — максимальная эффективность: учишься сразу тому, что действительно нужно.

💾 Бессрочный доступ — все материалы всегда под рукой, чтобы учиться в своём темпе.

💸 Знания, которые окупятся — навыки, востребованные в любой точке мира.
Какие навыки ты можешь прокачать?

💡 Математика для Data Science + Алгоритмы и структуры данных
— Подготовка к собеседованиям в FAANG и поступлению в ШАД. Решай сложные задачи, работай с данными и моделями на профессиональном уровне.

💡 Алгоритмы и структуры данных + ML
— Улучшай своё алгоритмическое мышление и изучай базовые методы машинного обучения, чтобы создавать интеллектуальные приложения.

💡 Frontend Basic + Базовые модели ML
— Построй свою первую веб-страницу и погрузись в мир ML: от нейросетей до ML-бустинга.

💡 Архитектуры и шаблоны проектирования + Математика для Data Science
— Развивай аналитическое мышление и учись проектировать устойчивые системы.

💡 Алгоритмы и структуры данных + Frontend Basic
— Получи полный набор навыков: от оптимизации алгоритмов до создания современных веб-приложений.

Не упусти шанс сделать шаг в будущее! Новый год — это время обновлений, и твоя карьера может стать одним из них.

🔗 Составь свой IT-маршрут сейчас или выбери курс по новогодней скидке
1
Что такое sync.Pool?

sync.Pool — это потокобезопасная структура для повторного использования временных объектов. Она помогает уменьшить нагрузку на GC, избегая частого выделения и освобождения памяти. Если пул пуст, может создать новый объект через функцию New. Подходит для объектов с коротким сроком жизни, например, буферов. Объекты в пуле не гарантированно сохраняются, так как могут быть очищены GC при недостатке памяти.
👍9
🤨В каких случаях лучше использовать sync.Pool?

sync.Pool подходит для повторного использования объектов, которые:

Имеют короткий срок жизни.
Часто создаются и освобождаются.
Не требуют постоянного хранения в памяти.

Примеры:
Буферы для обработки данных.
Временные структуры, используемые в алгоритмах.
Часто используемые небольшие объекты (например, []byte).

Важно: объекты из sync.Pool могут быть очищены сборщиком мусора, если память ограничена.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
Что делает функция runtime.GC()?

Функция runtime.GC() инициирует принудительную сборку мусора.
1. Выполняет полный цикл сборки мусора (включая STW).
2. Полезна для тестирования или контроля состояния памяти (например, измерения выделений памяти).

Примечание: использование runtime.GC() в продакшене не рекомендуется, так как оно нарушает автоматическое управление памятью.
👍10
Что такое пакет embed в Go, и когда его стоит использовать?

Пакет embed позволяет встраивать файлы в исполняемый бинарник, что полезно для создания автономных приложений, где важно, чтобы все ресурсы (например, конфигурационные файлы или статические данные) были в одном файле. Он особенно полезен для серверов или CLI-инструментов, где важно избежать зависимости от внешних файлов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
Можно ли использовать embed для встраивания динамически изменяемых файлов, например, конфигурационных файлов, которые могут изменяться в процессе работы приложения?
Anonymous Quiz
30%
Да
60%
Нет
10%
Наверное
🔥5
Что делает инструмент go vet?

Это инструмент для статического анализа кода в Go, который помогает обнаружить потенциальные ошибки, такие как неправильное использование форматов в fmt.Printf, неиспользуемые переменные или параметры, проблемы с указателями и возможные ошибки, которые могут повлиять на выполнение программы.
👍143