Библиотека Go для собеса | вопросы с собеседований
6.91K subscribers
248 photos
10 videos
1 file
564 links
Вопросы с собеседований по Go и ответы на них.

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

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

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

Наши каналы: https://t.iss.one/proglibrary/9197
Download Telegram
Какой подход использовать, если нужно модифицировать данные так, чтобы другие срезы не видели изменений

Нужно сделать новый срез с нужной длиной и емкостью, затем скопировать в него данные из исходного среза через copy. После этого изменения будут вноситься только в копию, и исходный срез и другие срезы на те же данные останутся без изменений.

Пример:
func modifyLocal(s []int) []int {
copySlice := make([]int, len(s))
copy(copySlice, s)
// изменения только в copySlice
copySlice[0] = 100
return copySlice
}


🔹 Основы IT для непрограммистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉1
Как регулируется сборка мусора в Go

В Go управление запуском сборщика мусора задаётся параметром GOGC. Этот параметр определяет, насколько увеличится используемая память с момента последней очистки, прежде чем запустится следующий процесс сборки мусора.

Что означают разные значения GOGC:

• Значение по умолчанию — 100 — запускает сборку, когда память удваивается по сравнению с после-очисточным состоянием.

• Если поставить 0, автосборка мусора отключается полностью.

• Числа меньше 100 заставляют сборщик работать чаще, сокращая использование памяти, но увеличивая нагрузку на процессор.

• Значения больше 100 — запускают сборку реже, что снижает нагрузку CPU, но увеличивает объём занятой памяти.

🔹 Специалист по ИИ
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
Как вам вопросы прошедшей недели

Оцените их по шкале 🔥,❤️,👍,😢, 🥱,
где 🔥 — это супер, а 🥱 — это скучно.

Также приветствуется фидбек в комментах.

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥192🥱2👍1
В чём разница между sync.Pool и ручной реализацией object pool через chan или []T + sync.Mutex

sync.Pool ничего не гарантирует: объект, который положили в пул, может быть в любой момент выкинут GC и никогда не вернуться из Get. Это «лучше есть, чем хранить», а не кэш с гарантией.

Пул на chan или []T+Mutex ведёт себя как обычная очередь/стек: пока вы сами не выбросите объект, он будет там лежать и обязательно вернётся, если его взять.

🔹 Экспресс-курс «Математика для Data Science»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔3
В каких случаях применение sync.Pool будет неэффективным или даже вредным для производительности

Когда sync.Pool не нужен

Объекты создаются редко или их создание дешёвое: накладные расходы на Get/Put и внутреннюю механику пула могут оказаться дороже, чем простая новая аллокация.

Объектов мало и они живут долго: в этом случае они и так нормально переживаются в heap, а пул только усложняет код и увеличивает удерживаемый объём памяти.

Когда sync.Pool вредит производительности:

Высокая конкуренция, но мало реюза: если горутин много, а «хитов» по пулу мало, вы платите за синхронизацию и усложнение GC, почти не снижая количество аллокаций.

Объекты большие: удерживание крупных структур в пуле раздувает память и увеличивает нагрузку на GC, иногда сильнее, чем выгода от экономии аллокаций.

🔹 Математика для Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🎄 С Нового года начну учиться — знакомо?

А потом январь — освоюсь после праздников, февраль — доделаю текущие дела... Не откладывай на следующий год то, что можно начать уже в этом.

🗓️ 4 декабря стартует экспресс-курс «Математика для Data Science»— всё, что нужно для уверенных ответов на собесах:

→ 2 месяца без воды;
→ обновлённая программа (ноябрь 2025);
→ живые вебинары с экспертами;
→ записи всех занятий;
→ практика на Python + финальный проект с фидбэком.

Формат: 2 месяца интенсива и к началу следующего года ты готов к собесам.

Пока другие будут собираться с мыслями после НГ, ты уже будешь на полпути к офферу мечты.

🎁 Только до 30 ноября:

→ скидка 40% на курс;
→ курс «Базовая математика» в подарок;
→ бесплатный тест уровня математики.

👉🏻 Хочешь на курс → пиши менеджеру
🤔1
Расскажите про поля и методы sync.Pool. Для чего используется поле New, как ведёт себя Get, если пул пуст

Поле New — это функция func() any, которую можно задать, чтобы пул умел сам создавать новые объекты, когда внутри ничего нет.

Если New не задано и пул пуст, то Get вернёт nil, и код, который этим пользуется, обязан это корректно обработать.


🔹 AI-агенты для DS-специалистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🎉1
Что произойдёт, если класть в один и тот же sync.Pool объекты разных типов

Пул примет значения разных типов: Put не проверяет тип, а Get вернёт any, который вы потом приведёте к конкретному типу через type assertion.

Если из пула вернётся объект не того типа, type assertion даст panic в рантайме, причём воспроизвести и отладить это будет сложно из‑за конкуренции и недетерминизма.

🔹 Основы IT для непрограммистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍1
Нужно ли как‑то очищать объект перед возвратом в пул и почему это важно с точки зрения безопасности и багов

При реюзе можно получить грязное состояние: старые поля структуры, неочищенный bytes.Buffer, кусок старого JSON в []byte и т.д. Это может привести к трудноотлавливаемым багам.

Если в объекте были чувствительные данные, возврат объекта без очистки даёт риск утечки: другой код может прочитать их при следующем Get.

🔹 Алгоритмы и структуры данных
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Какие стандартные инструменты для сортировки есть в пакете sort в Go

Пакет sort предоставляет готовые функции для базовых типов: sort.Ints для слайсов целых чисел, sort.Strings для слайсов строк и sort.Float64s для слайсов чисел с плавающей запятой.

Для проверки, отсортирован ли слайс, есть функции IntsAreSorted, StringsAreSorted и Float64sAreSorted, которые возвращают bool.

🔹 AI-агенты для DS-специалистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
🤖 Раньше в AI мог попасть любой, кто осилил пару туториалов.

Теперь нужны те, кто может объяснить:

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

Все эти навыки требуют понимания того, как и почему работают модели. А это чистая математика.

🔥 Proglib Academy запускает курс «Математика для разработки AI-моделей». Ведут эксперты из SberAI, ВШЭ, Т-Банк, Wildberries.

📝 Что внутри?

→ 2 месяца живых занятий с возможностью задавать вопросы напрямую.
→ Практика на Python. Не теория в вакууме, а применение.
→ 3 домашних задания + финальный проект с детальным разбором.

Старт 4 декабря

Только до конца ноября:
→ Скидка 40%;
→ Курс «Школьная математика» в подарок;
Тест на определение уровня математики.

🎄 Сделай себе подарок на Новый год
1