Библиотека Go для собеса | вопросы с собеседований
Open in Telegram
Вопросы с собеседований по Go и ответы на них. Покажем, как запустить своего ии-агента: https://clc.to/tvpmD По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot Наши каналы: https://t.me/proglibrary/9197
Show more7 428
Subscribers
-324 hours
-167 days
+930 days
Posts Archive
🔬 Вы когда-нибудь смотрели на код и думали: «Работает, но почему?»
А теперь представьте, что вы:
→ понимаете, почему модель учится слишком медленно или слишком быстро;
→ видите, какие данные реально влияют на предсказание, а какие — шум;
→ знаете, что происходит внутри нейронки.
4 декабря стартует курс «Математика для разработки AI-моделей».
Линал, оптимизация, матан, статистика — всё, что происходит внутри модели между input и output. Практика на Python. Живые разборы с экспертами из SberAI, ВШЭ, Wildberries&Russ.
3 задания + финальный проект. Без теории ради теории — только то, что реально используется в моделях.
🎁 Бонус: курс по школьной математике + тест уровня математики
👉 Записаться
❓ Когда стоит использовать sort.Sort, а когда sort.Stable
sort.Sort не гарантирует сохранение относительного порядка равных элементов и обычно быстрее за счёт менее строгих требований.
sort.Stable обеспечивает стабильную сортировку, то есть элементы с одинаковым ключом остаются в исходном порядке, что важно при многократной сортировке по разным полям.
🔹 Математика для Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go для собеса❓ Какие методы нужно реализовать, чтобы тип удовлетворял sort.Interface
Нужно три метода:
Len() int — количество элементов в коллекции, Less(i, j int) bool — должен ли элемент i идти перед j, и Swap(i, j int) — как поменять местами элементы по индексам i и j.
После этого такой тип можно передавать в sort.Sort или sort.Stable.
🔹 Алгоритмы и структуры данных
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go для собеса❓ Как вам вопросы прошедшей недели
Оцените их по шкале 🔥,❤️,👍,😢, 🥱,
где 🔥 — это супер, а 🥱 — это скучно.
Также приветствуется фидбек в комментах.
🐸 Библиотека Go для собеса
❓ Что использовать, если нужно сортировать не только числа и строки, а пользовательские структуры
Для сортировки кастомных типов используется интерфейс
sort.Interface, который можно реализовать для собственного типа коллекции.
Это позволяет описать произвольный порядок элементов, например по полю или по нескольким полям подряд.
🔹 Специалист по ИИ
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go для собеса🤖 Раньше в AI мог попасть любой, кто осилил пару туториалов.
Теперь нужны те, кто может объяснить:
→ почему эта архитектура сработает, а та — нет;
→ что происходит внутри модели, когда она не сходится;
→ как найти решение, а не перебирать гиперпараметры наугад.
Все эти навыки требуют понимания того, как и почему работают модели. А это чистая математика.
🔥 Proglib Academy запускает курс «Математика для разработки AI-моделей». Ведут эксперты из SberAI, ВШЭ, Т-Банк, Wildberries.
📝 Что внутри?
→ 2 месяца живых занятий с возможностью задавать вопросы напрямую.
→ Практика на Python. Не теория в вакууме, а применение.
→ 3 домашних задания + финальный проект с детальным разбором.
⏰ Старт 4 декабря
⌛ Только до конца ноября:
→ Скидка 40%;
→ Курс «Школьная математика» в подарок;
→ Тест на определение уровня математики.
🎄 Сделай себе подарок на Новый год
❓ Какие стандартные инструменты для сортировки есть в пакете sort в Go
Пакет sort предоставляет готовые функции для базовых типов: sort.Ints для слайсов целых чисел, sort.Strings для слайсов строк и sort.Float64s для слайсов чисел с плавающей запятой.
Для проверки, отсортирован ли слайс, есть функции IntsAreSorted, StringsAreSorted и Float64sAreSorted, которые возвращают bool.
🔹 AI-агенты для DS-специалистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go для собеса
❓ Нужно ли как‑то очищать объект перед возвратом в пул и почему это важно с точки зрения безопасности и багов
При реюзе можно получить грязное состояние: старые поля структуры, неочищенный bytes.Buffer, кусок старого JSON в
[]byte и т.д. Это может привести к трудноотлавливаемым багам.
Если в объекте были чувствительные данные, возврат объекта без очистки даёт риск утечки: другой код может прочитать их при следующем Get.
🔹 Алгоритмы и структуры данных
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go для собеса❓ Что произойдёт, если класть в один и тот же sync.Pool объекты разных типов
Пул примет значения разных типов: Put не проверяет тип, а Get вернёт any, который вы потом приведёте к конкретному типу через type assertion.
Если из пула вернётся объект не того типа, type assertion даст panic в рантайме, причём воспроизвести и отладить это будет сложно из‑за конкуренции и недетерминизма.
🔹 Основы IT для непрограммистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go для собеса
❓ Расскажите про поля и методы sync.Pool. Для чего используется поле New, как ведёт себя Get, если пул пуст
Поле New — это функция
func() any, которую можно задать, чтобы пул умел сам создавать новые объекты, когда внутри ничего нет.
Если New не задано и пул пуст, то Get вернёт nil, и код, который этим пользуется, обязан это корректно обработать.
🔹 AI-агенты для DS-специалистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go для собеса🎄 С Нового года начну учиться — знакомо?
А потом январь — освоюсь после праздников, февраль — доделаю текущие дела... Не откладывай на следующий год то, что можно начать уже в этом.
🗓️ 4 декабря стартует экспресс-курс «Математика для Data Science»— всё, что нужно для уверенных ответов на собесах:
→ 2 месяца без воды;
→ обновлённая программа (ноябрь 2025);
→ живые вебинары с экспертами;
→ записи всех занятий;
→ практика на Python + финальный проект с фидбэком.
Формат: 2 месяца интенсива и к началу следующего года ты готов к собесам.
Пока другие будут собираться с мыслями после НГ, ты уже будешь на полпути к офферу мечты.
🎁 Только до 30 ноября:
→ скидка 40% на курс;
→ курс «Базовая математика» в подарок;
→ бесплатный тест уровня математики.
👉🏻 Хочешь на курс → пиши менеджеру
❓ В каких случаях применение sync.Pool будет неэффективным или даже вредным для производительности
Когда sync.Pool не нужен
• Объекты создаются редко или их создание дешёвое: накладные расходы на Get/Put и внутреннюю механику пула могут оказаться дороже, чем простая новая аллокация.
• Объектов мало и они живут долго: в этом случае они и так нормально переживаются в heap, а пул только усложняет код и увеличивает удерживаемый объём памяти.
Когда sync.Pool вредит производительности:
• Высокая конкуренция, но мало реюза: если горутин много, а «хитов» по пулу мало, вы платите за синхронизацию и усложнение GC, почти не снижая количество аллокаций.
• Объекты большие: удерживание крупных структур в пуле раздувает память и увеличивает нагрузку на GC, иногда сильнее, чем выгода от экономии аллокаций.
🔹 Математика для Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go для собеса
❓ В чём разница между sync.Pool и ручной реализацией object pool через chan или []T + sync.Mutex
sync.Pool ничего не гарантирует: объект, который положили в пул, может быть в любой момент выкинут GC и никогда не вернуться из Get. Это «лучше есть, чем хранить», а не кэш с гарантией.
Пул на
chan или []T+Mutex ведёт себя как обычная очередь/стек: пока вы сами не выбросите объект, он будет там лежать и обязательно вернётся, если его взять.
🔹 Экспресс-курс «Математика для Data Science»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go для собеса❓ Как вам вопросы прошедшей недели
Оцените их по шкале 🔥,❤️,👍,😢, 🥱,
где 🔥 — это супер, а 🥱 — это скучно.
Также приветствуется фидбек в комментах.
🐸 Библиотека Go для собеса
❓ Как регулируется сборка мусора в Go
В Go управление запуском сборщика мусора задаётся параметром GOGC. Этот параметр определяет, насколько увеличится используемая память с момента последней очистки, прежде чем запустится следующий процесс сборки мусора.
Что означают разные значения GOGC:
• Значение по умолчанию — 100 — запускает сборку, когда память удваивается по сравнению с после-очисточным состоянием.
• Если поставить 0, автосборка мусора отключается полностью.
• Числа меньше 100 заставляют сборщик работать чаще, сокращая использование памяти, но увеличивая нагрузку на процессор.
• Значения больше 100 — запускают сборку реже, что снижает нагрузку CPU, но увеличивает объём занятой памяти.
🔹 Специалист по ИИ
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go для собеса
❓ Какой подход использовать, если нужно модифицировать данные так, чтобы другие срезы не видели изменений
Нужно сделать новый срез с нужной длиной и емкостью, затем скопировать в него данные из исходного среза через
copy. После этого изменения будут вноситься только в копию, и исходный срез и другие срезы на те же данные останутся без изменений.
Пример:
func modifyLocal(s []int) []int {
copySlice := make([]int, len(s))
copy(copySlice, s)
// изменения только в copySlice
copySlice[0] = 100
return copySlice
}
🔹 Основы IT для непрограммистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go для собеса❓ В чем разница между context.Background() и context.TODO()
context.Background() — это корневой контекст для вашего приложения. Используйте его как точку отсчета в главной функции или верхнем уровне обработки запросов. Это полностью независимый контекст без родителя:
func main() {
ctx := context.Background()
// начало всей программы
}
context.TODO() — заглушка для тех случаев, когда вы еще не определились, какой контекст передавать. Это временное решение: код работает, но вы планируете заменить его на правильный контекст, когда уточните требования:
func processData() {
ctx := context.TODO() // TODO: заменить на нужный контекст
// временный вариант
}
Оба создают не имеющий родителя контекст, но семантически они разные.
🔹 Алгоритмы и структуры данных
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go для собеса❓ Почему nil-срез и пустой срез через []int{} — разные значения, но ведут себя одинаково
Оба имеют длину 0 и ёмкость 0. Но nil-срез — это буквально nil, а []int{} — это выделенная память нулевого размера.
var nilSlice []int
emptySlice := []int{}
fmt.Println(nilSlice == nil) // true
fmt.Println(emptySlice == nil) // false
// Но в большинстве операций ведут себя одинаково
for range nilSlice { }
for range emptySlice { }
s := append(nilSlice, 1) // работает
s = append(emptySlice, 1) // работает
Различие заметно только при прямом сравнении с nil. В остальном — функционально эквивалентны.
🔹 Специалист по ИИ
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека Go для собеса❓ Почему append на nil-срезе работает, а добавление в nil-мапу ломается
В Go срезы и мапы ведут себя по-разному, когда не инициализированы:
nil-срез — это жизнеспособный срез с длиной и ёмкостью равными нулю. Когда используется append к nil-срезу, Go автоматически выделяет новую память и создаёт срез нужного размера. Поэтому добавлять элементы в nil-срез можно без проблем.
var a []int
a = append(a, 4, 5, 6) // Go создал новый срез под эти значения
fmt.Println(a) // [4 5 6]
nil-мапа — это просто пустой указатель без выделенной памяти. Если попытаться добавить ключ в такую мапу, Go выдаст панику, потому что для хранения данных места нет. Чтобы использовать мапу, её надо сначала инициализировать через make.
var m map[int]int
// m[1] = 1 // вызовет панику
m = make(map[int]int)
m[1] = 1 // теперь работает
🐸 Библиотека Go для собеса🔥 Закрой пробелы в математике за 8 недель
Валишься на вопросах про математику на собесах?
Proglib Academy запускает курс «Математика для Data Science», чтобы помочь тебе получить вакансию мечты!
🔎 Тебя ждут:
→ топовые эксперты, один из них на видео — Мария Тихонова. Мария — кандидат компьютерных наук, руководитель исследовательского направления SberAI, доцент факультета компьютерных наук и преподаватель НИУ ВШЭ;
→ живые вебинары, на которых можно задать вопросы спикерам;
→ доступ к материалам в записи, если не успели на лекцию и чат;
→ 3 задания с практикой на Python и финальный проект с подробной обратной связью от экспертов курса;
→ актуальные знания: программа разработана в ноябре 2025г;
→ программа без воды — 2 месяца только самого нужного для старта.
👉 Пройди короткий тест и узнай свой уровень математики.
Приятные бонусы:
🎁 скидка 40% до 30 ноября;
🎁 оплати до конца ноября → курс «Школьная математика» в подарок.
🔗 Подробнее о курсе
Available now! Telegram Research 2025 — the year's key insights 
