Библиотека Go для собеса | вопросы с собеседований
Открыть в Telegram
Вопросы с собеседований по Go и ответы на них. Учиться у нас: clc.to/iEeaZw По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot Наши каналы: https://t.me/proglibrary/9197
Больше7 470
Подписчики
-324 часа
-77 дней
+1230 день
Загрузка данных...
Похожие каналы
Облако тегов
Входящие и исходящие упоминания
---
---
---
---
---
---
Привлечение подписчиков
август '26
август '26
+60
в 1 каналах
июль '26
+153
в 2 каналах
Get PRO
июнь '26
+96
в 2 каналах
Get PRO
май '26
+135
в 1 каналах
Get PRO
апрель '26
+143
в 1 каналах
Get PRO
март '26
+153
в 0 каналах
Get PRO
февраль '26
+307
в 3 каналах
Get PRO
январь '26
+154
в 0 каналах
Get PRO
декабрь '25
+139
в 3 каналах
Get PRO
ноябрь '25
+125
в 2 каналах
Get PRO
октябрь '25
+117
в 1 каналах
Get PRO
сентябрь '25
+77
в 0 каналах
Get PRO
август '25
+150
в 2 каналах
Get PRO
июль '25
+144
в 0 каналах
Get PRO
июнь '25
+147
в 3 каналах
Get PRO
май '25
+148
в 0 каналах
Get PRO
апрель '25
+165
в 1 каналах
Get PRO
март '25
+352
в 52 каналах
Get PRO
февраль '25
+214
в 31 каналах
Get PRO
январь '25
+339
в 35 каналах
Get PRO
декабрь '24
+361
в 35 каналах
Get PRO
ноябрь '24
+305
в 37 каналах
Get PRO
октябрь '24
+287
в 35 каналах
Get PRO
сентябрь '24
+317
в 35 каналах
Get PRO
август '24
+309
в 35 каналах
Get PRO
июль '24
+355
в 36 каналах
Get PRO
июнь '24
+293
в 29 каналах
Get PRO
май '24
+314
в 35 каналах
Get PRO
апрель '24
+355
в 35 каналах
Get PRO
март '24
+437
в 29 каналах
Get PRO
февраль '24
+395
в 29 каналах
Get PRO
январь '24
+545
в 24 каналах
Get PRO
декабрь '23
+627
в 28 каналах
Get PRO
ноябрь '23
+488
в 7 каналах
Get PRO
октябрь '23
+1 507
в 22 каналах
| Дата | Привлечение подписчиков | Упоминания | Каналы | |
| 26 августа | +2 | |||
| 25 августа | +2 | |||
| 24 августа | +1 | |||
| 23 августа | +1 | |||
| 22 августа | +3 | |||
| 21 августа | +3 | |||
| 20 августа | +2 | |||
| 19 августа | +2 | |||
| 18 августа | +1 | |||
| 17 августа | +1 | |||
| 16 августа | +2 | |||
| 15 августа | +3 | |||
| 14 августа | +2 | |||
| 13 августа | +1 | |||
| 12 августа | +4 | |||
| 11 августа | +3 | |||
| 10 августа | +2 | |||
| 09 августа | +3 | |||
| 08 августа | 0 | |||
| 07 августа | +1 | |||
| 06 августа | +5 | |||
| 05 августа | +2 | |||
| 04 августа | +4 | |||
| 03 августа | +3 | |||
| 02 августа | +3 | |||
| 01 августа | +4 |
Посты канала
Вам доклады по Go или Java? VK приглашает на митап с двойной начинкой
26 августа VK собирает Go- и Java-инженеров, чтобы прокачать знания.
В программе два трека — Go и Java, по три доклада в каждом.
Трек Go:
• «Компиляция Go в динамическую либу, или как мы ускорили выкатку фичи в два раза, но нам не понравилось», Михаил Кичигин, бэкенд-разработчик, Avito Tech
• «Go-платформа VK: как мы построили единую основу для создания Go-сервисов», Александр Апанасенко, руководитель команды SDK Backend, VK
• «Почтальон от Kubernetes до Palo Alto. Как осуществляется доставка информации об адресах», Дарья Кулькина, бэкенд-разработчик, Точка Банк
Трек Java:
• «Перформанс-трюки в поисковой платформе Ozon», Пётр Портнов, ведущий разработчик среднего поиска, Ozon
• «Архитектура современного движка платёжной системы и переход к новой архитектуре», Игорь Крикунов, технический лидер разработки DBC, Альфа-Банк
• «Переход от федерации S3-кластеров в пользу коммунального и мультитенантного кластера», Кирилл Боблак, ведущий разработчик One-cloud, VK
А ещё будет мастер-класс по прокачке навыка, который сделает вас звездой любого вечера, и афтепати, чтобы обсудить доклады в неформальной обстановке.
Встречаемся в 17:00, начало в 18:00. Участие бесплатное, регистрация обязательна.
| 2 | Горутины и каналы: основы параллелизма в Go. Бесплатный урок курса «Go-разработчик. Базовый уровень»
Конкурентность — одна из главных особенностей Go, но именно здесь начинающие разработчики чаще всего сталкиваются с трудноуловимыми ошибками. Неправильная работа с горутинами, каналами или синхронизацией может привести к состояниям гонки, взаимным блокировкам и утечкам ресурсов, которые сложно найти и исправить.
На открытом уроке 18 августа в 20:00 разберём, как устроен параллелизм в Go и как безопасно использовать горутины в своих проектах. Поговорим о различиях между горутинами и системными потоками, научимся запускать параллельные задачи, организовывать обмен данными через каналы и применять базовые механизмы синхронизации.
Урок будет полезен разработчикам, которые хотят уверенно использовать конкурентность Go в реальных приложениях.
👉 Записаться: https://otus.pw/iA0G/?erid=2W5zFGzTDry
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. | 652 |
| 3 | ❓ Объясните разницу между безопасным доступом к байтам строки через срез и использованием unsafe
Когда строку преобразуют в срез байтов, создаётся новая копия данных, и доступ к этим данным безопасен, но это также означает, что данные строки не изменяются.
unsafe позволяет работать с указателями и памятью напрямую, что даёт больше гибкости, но это также приводит к неопределённому поведению, если использовать эти указатели для изменения данных.
🐸 Библиотека Go для собеса | 1 468 |
| 4 | Покупать новый курс каждый раз, когда меняется рабочая задача, — довольно странная механика. Нашли альтернативу 👇 | 1 420 |
| 5 | 👅 Самое сложное — выбрать не курс, а направление
Сегодня хочется разобраться в AI-агентах. Через пару недель появляется задача, где нужны алгоритмы. Потом понимаешь, что неплохо бы освежить Python или математику для Data Science.
🔜 Именно поэтому подписка на обучение многим оказывается удобнее отдельных курсов. Можно спокойно переключаться между темами, когда меняются задачи, а не покупать новую программу каждый раз.
В подписку Proglib Academy входят все основные направления — AI, ML, Python, алгоритмы, математика для DS и другие курсы, а ещё закрытый видеохаб с вебинарами практиков.
Начать можно с пробного месяца. Если решите остаться, его стоимость зачтётся при оформлении подписки 😎
🔗 Узнать подробнее
🏃♀️ Proglib Academy | 1 181 |
| 6 | ❓ Как создать свою кастомную ошибку в Go
• Пакет errors — самый быстрый способ
Подходит для простых статичных ошибок. Такую переменную удобно объявить один раз и сравнивать через errors.Is.
var ErrNotFound = errors.New("запись не найдена")
• fmt.Errorf() — когда нужен контекст
Позволяет подставить в текст детали. А глагол %w ещё и «оборачивает» исходную ошибку, сохраняя цепочку для errors.Is / errors.Unwrap.
return fmt.Errorf("не удалось загрузить юзера %d: %w", id, ErrNotFound)
• Кастомный тип через struct — максимум гибкости
Нужен, когда к ошибке хочется прикрепить данные (код, поле, статус). Достаточно реализовать метод Error() string — и тип становится ошибкой.
type ValidationError struct {
Field string
Msg string
}
func (e *ValidationError) Error() string {
return fmt.Sprintf("%s: %s", e.Field, e.Msg)
}
Такую ошибку потом можно вытащить через errors.As и прочитать её поля.
🐸 Библиотека Go для собеса | 1 505 |
| 7 | ❓ Что делает CGO_ENABLED
CGO_ENABLED — это переменная окружения, которая включает или выключает CGo при сборке Go-приложений. Принимает два значения: 1 (включено) и 0 (выключено).
CGo — это механизм, позволяющий Go-коду взаимодействовать с C: вызывать C-функции и использовать C-библиотеки прямо из Go-программы.
Зачем этим управлять:
• CGO_ENABLED=0 даёт полностью статический бинарник без зависимостей от системных C-библиотек — удобно для минимальных Docker-образов (scratch, alpine) и упрощает кросс-компиляцию.
• CGO_ENABLED=1 нужен, когда проект реально использует C-код или библиотеки, завязанные на cgo
CGO_ENABLED=0 GOOS=linux go build -o app
Важный нюанс: по умолчанию CGo включён, но при кросс-компиляции (когда GOOS/GOARCH отличаются от хостовых) Go автоматически отключает его, если не задан C-кросс-компилятор.
🐸 Библиотека Go для собеса | 1 340 |
| 8 | 🎯 У разработчика, DevOps-инженера и техлида разные причины задуматься о системной работе с AI-агентами
Но цель одна: перейти от случайных удачных запусков к управляемому процессу на реальном проекте — с понятными правилами, ревью, контролем расходов и безопасности ✔️
На курсе «ИИ для разработчиков» участники выстраивают такой процесс на практике: подключают инструменты, задают границы для агента и учатся понимать, где ему можно доверять работу, а где требуется проверка.
⚡️ Предзапись на осенний поток уже открыта
🏃♀️ Proglib Academy | 800 |
| 9 | Разработчику нужен стабильный результат, DevOps — контроль инфраструктуры, техлиду — правила для всей команды. Собрали это в одном посте 👇 | 1 015 |
| 10 | ❓ Что делает переменная окружения GOOS в Go
GOOS задаёт целевую операционную систему, под которую компилируется Go-приложение. Она используется при кросс-компиляции — когда код пишется на одной платформе, а собирается под другую (часто в паре с GOARCH, задающей архитектуру процессора).
GOOS=linux GOARCH=amd64 go build
Основные значения GOOS (именно в таком виде, в нижнем регистре):
linux
windows
darwin — macOS (не macos)
ios
android
freebsd
openbsd
netbsd
plan9
Полный актуальный список можно получить командой go tool dist list.
🐸 Библиотека Go для собеса | 1 123 |
| 11 | ⚡️ Highload на Go: System Design, Kubernetes и микросервисы под нагрузкой — новый курс на Mentorix
Highload глазами Go-инженера: как проектировать, писать и эксплуатировать сервисы, которые держат нагрузку. С расчётами и симуляциями, как на реальных собеседованиях.
⚙️ Внутри: перцентили и SLO, конкурентность и профилирование, кэширование, rate limiting, ретраи и circuit breaker, очереди, БД под нагрузкой, Kubernetes, system design
🧩 118 задач с автопроверкой — вся практика на Go
🎓 Сертификат · доступ навсегда
▶️ Часть уроков открыта — начать можно бесплатно
🏷 −50% — скидка действует 24 часа
19 990 ₽ → 9 995 ₽
➜ Забрать курс со скидкой
━━━━━━━━━━━━━━
Курс продвинутый — предполагает уверенный Go. Если хотите подтянуть базу, на платформе есть бесплатные курсы:
🧩 Тренажёр Go — 70 задач с автопроверкой
⚡️ Golang — основы языка
Сети для разработчиков: TCP/IP, HTTP, DNS
📚 Все бесплатные курсы Mentorix | 861 |
| 12 | ❓ Как работает пробинг в Swiss Table
1. Считается хеш ключа и делится на две части.
На поддерживаемых CPU используется aeshash, иначе — memhash. Полученный хеш разбивается на:
H1 (старшие 57 бит) — выбирает стартовую группу;
H2 (младшие 7 бит) — «отпечаток» (fingerprint) ключа.
2. Внутри группы контрольные байты проверяются параллельно через SIMD.
Каждая группа — это 8 слотов и 8-байтовый control word, где каждый байт хранит H2 своего слота. Одной SIMD-инструкцией H2 искомого ключа сравнивается сразу со всеми 8 байтами → получаем маску кандидатов. Только для совпавших по fingerprint слотов сверяется полный ключ.
3. Если совпадений нет и пустого слота в группе тоже нет — переходим к следующей группе.
Пробинг идёт по группам квадратично, но по треугольным числам:
offset = (offset + i) mod size, i = 1, 2, 3, 4...
→ смещения: h, h+1, h+3, h+6, h+10, ...
Такая последовательность гарантированно обходит всю таблицу (при размере — степени двойки) и снижает кластеризацию. Если встретился пустой слот — ключа в таблице нет, поиск останавливается.
🐸 Библиотека Go для собеса | 1 120 |
| 13 | Go: управление памятью. Массивы, слайсы и мапы. Бесплатный урок курса «Go-разработчик. Базовый уровень»
Память в Go кажется простой только до первого неожиданного поведения слайсов, лишних аллокаций или просадки производительности. Многие начинающие разработчики используют массивы, слайсы и мапы интуитивно, не понимая, как они устроены внутри. В результате код работает, но расходует больше памяти, становится медленнее под нагрузкой и сложнее в поддержке.
На открытом уроке 3 августа в 20:00 разберём, как устроена работа с памятью в Go и как выбирать подходящие структуры данных под конкретную задачу. Поговорим о различиях между массивами и слайсами, особенностях инициализации через make и new, работе с for range, указателями и копированием значений. Отдельно обсудим производительность коллекций, сложность операций с мапами и слайсами, а также влияние этих механизмов на скорость и эффективность приложений.
Урок не для тех, кто считает, что достаточно просто знать синтаксис Go и не хочет разбираться, как язык управляет памятью. Будет полезен разработчикам, которые хотят писать быстрый, предсказуемый и эффективный код для реальных проектов.
👉 Записаться: https://clc.to/UUCs3g
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576 | 767 |
| 14 | ❓ Что будет, если вызвать time.Sleep(0)
Вопреки распространённому мифу — практически ничего. time.Sleep с длительностью ≤ 0 сразу возвращает управление: горутина не «усыпляется» и не уступает планировщику. По сути это no-op.
Часто думают, что time.Sleep(0) отдаёт управление планировщику Go и позволяет переключиться на другие горутины. Но за это отвечает другая функция:
runtime.Gosched() // вот это уступает управление планировщику
Gosched() снимает текущую горутину с процессора и ставит в очередь, давая шанс другим. А time.Sleep(0) этого не делает — если нужен именно yield, используйте runtime.Gosched().
🐸 Библиотека Go для собеса | 1 155 |
| 15 | У вас в проекте есть файл вроде utils_v2_final_FIX.py, который все боятся трогать ❓
Что делаете с таким легаси?
❤️ Не трогаю: работает — и ладно
👍 Переписываю с нуля и надеюсь на лучшее
🔥 Сначала покрываю тестами, потом рефакторю по частям
👾 У нас такого нет — честно-честно
На курсе «ИИ для разработчиков» разберём третий подход: как с помощью агента зафиксировать текущее поведение легаси-кода тестами, а затем менять его небольшими безопасными шагами — без одного огромного PR на тысячу файлов.
До 31 июля действует скидка и бессрочный доступ к материалам.
🔗 Занять место со скидкой
🏃♀️ Proglib Academy | 802 |
| 16 | Когда название файла уже само по себе считается техническим долгом 👇 | 1 111 |
| 17 | ❓ Что такое fallthrough в Go
fallthrough — это ключевое слово внутри switch, которое передаёт управление следующему case, не проверяя его условие.
В отличие от C и многих других языков, в Go switch по умолчанию не «проваливается» дальше: выполнение завершается сразу после первого совпавшего case, без явного break. fallthrough включает обратное поведение — принудительный переход к следующему блоку.
switch n {
case 1:
fmt.Println("один")
fallthrough
case 2:
fmt.Println("два") // выполнится, даже если n == 1
default:
fmt.Println("другое")
}
Важные нюансы:
• fallthrough передаёт управление безусловно — условие следующего case игнорируется.
• Он должен стоять последним оператором в case, иначе будет ошибка компиляции.
• Из последнего case (или default, если он в конце) провалиться некуда — там fallthrough использовать нельзя.
🐸 Библиотека Go для собеса | 1 292 |
| 18 | ❓ В чём разница между //go:build и // +build
Обе директивы — это build constraints (ограничения сборки), которые указывают компилятору, при каких условиях включать файл в сборку. Разница в синтаксисе и возрасте.
// +build — старая форма, использовавшаяся до Go 1.17:
• Размещается в начале файла, до объявления пакета.
• После блока директив обязательна пустая строка.
• Условия комбинируются неочевидно: пробел означает «И», запятая — «ИЛИ», а несколько строк — тоже «И». Это часто путало.
//go:build — новая форма, введённая в Go 1.17:
• Использует привычные логические выражения с &&, ||, ! и скобками.
• Читается гораздо понятнее.
// Старая форма:
// +build linux,amd64 darwin
// Новая форма:
//go:build (linux && amd64) || darwin
Начиная с Go 1.17, инструмент gofmt автоматически добавляет //go:build рядом со старыми // +build, синхронизируя их. Сегодня рекомендуется использовать именно //go:build, а старую форму оставляют лишь для совместимости со совсем древними версиями Go.
🐸 Библиотека Go для собеса | 1 094 |
| 19 | ❓ Что особенного в chan struct{}
chan struct{} — это канал, по которому передаётся не данные, а сам факт сигнала. Пустая структура struct{} не занимает памяти (0 байт), поэтому такой канал явно говорит читателю кода: «здесь важно только событие, а не его содержимое».
Типичные сценарии:
• Сигнал завершения / отмены. Закрытие канала (close(done)) разом оповещает всех, кто его слушает.
• Синхронизация горутин. Одна горутина ждёт, пока другая пошлёт сигнал ch <- struct{}{}.
• Семафоры и ограничение параллелизма, где важен сам факт занятости слота, а не передаваемое значение.
done := make(chan struct{})
go func() {
// ... работа ...
close(done) // сигнализируем о завершении
}()
<-done // ждём сигнал
Почему именно struct{}, а не, например, chan bool: булев канал намекает, что значение (true/false) несёт смысл, хотя на деле его игнорируют. chan struct{} выражает намерение точнее — «данных нет, есть только событие» — и не тратит память на само значение.
🐸 Библиотека Go для собеса | 1 407 |
| 20 | 📈 Скоро фраза «умею пользоваться AI» в резюме будет звучать так же странно, как сегодня «умею пользоваться Git»
Это просто станет частью профессии. А вот умение встроить AI в процесс разработки так, чтобы он действительно ускорял работу команды, останется конкурентным преимуществом 💡
🔜 На курсе «ИИ для разработчиков» участники работают со своими проектами и учатся делать AI частью ежедневной разработки: планировать задачи, писать код, проверять изменения, готовить PR и автоматизировать рутину.
До конца июля действует специальная цена — 59 990 ₽ вместо 79 990 ₽ 🥳 И получить бессрочный доступ ко всем материалам курса.
🔗 Посмотреть, как устроен курс
🏃♀️ Proglib Academy | 829 |
