Golang вопросы собеседований
@notxxx1 - админ @Golang_google - Golang для разработчиков @itchannels_telegram - 🔥лучшие из ит @golangl - chat @golangtests - golang tests @golang_jobsgo - go chat jobs @ai_machinelearning_big_data - AI @data_analysis_ml РКН: clck.ru/3FmtKd
Показати більше📈 Аналітичний огляд Telegram-каналу Golang вопросы собеседований
Канал Golang вопросы собеседований (@golang_interview) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 15 010 підписників, посідаючи 8 348 місце в категорії Технології та додатки та 43 534 місце у регіоні Росія.
📊 Показники аудиторії та динаміка
З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 15 010 підписників.
За останніми даними від 26 серпня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на 18, а за останні 24 години на 1, загальне охоплення залишається високим.
- Статус верифікації: Не верифікований
- Рівень залученості (ER): Середній показник залученості аудиторії становить 24.50%. Протягом перших 24 годин після публікації контент зазвичай збирає 9.24% реакцій від загальної кількості підписників.
- Охоплення публікацій: В середньому кожен допис отримує 3 675 переглядів. Протягом першої доби публікація в середньому набирає 1 386 переглядів.
- Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 20.
- Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як git, docker, github, контейнер, sql.
📝 Опис та контентна політика
Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“@notxxx1 - админ
@Golang_google - Golang для разработчиков
@itchannels_telegram - 🔥лучшие из ит
@golangl - chat
@golangtests - golang tests
@golang_jobsgo - go chat jobs
@ai_machinelearning_big_data - AI
@data_analysis_ml
РКН: clck.ru/3Fmt...”
Завдяки високій частоті оновлень (останні дані отримано 27 серпня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.
Данил Руденко, 2ГИС — «Репозиторий здорового человека» Зачем нужен паттерн «Репозиторий», почему не стоит тащить в него бизнес-логику, с какими сложностями можно столкнуться при работе с транзакциями и как их решать. Никита Метелкин, Cloud.ru — «Как написать свой плагин для protoc-gen-go» Как устроен protoc и как с помощью Go и protogen генерировать собственный код из .proto-файлов. Александр Бухалко, MWS Cloud Platform — «Взросление OpenAPI-кодогенерации» Почему одной модели для запроса и ответа может быть мало, как внедрять частичное обновление данных, переходить на OpenAPI 3.1 и работать с полями в Go и Kotlin.Приходите на наши следующие мероприятия. У нас хорошо Другие инженерные инсайты от 2ГИС → в Telegram-канале RnD
go-linq показал новую версию библиотеки для Go 1.27, которая позволяет писать типобезопасные цепочки запросов в стиле LINQ:
From(users).
Where(...).
Join(...).
ToSlice()
Главная цель проекта - получить удобство LINQ без привычной цены в виде большого runtime-overhead.
По словам автора, производительность уже близка к вручную написанным циклам, а дальше её планируют ещё улучшать.
GitHub: https://github.com/ahmetb/go-linq
@Golang_google / Папка с полезными Go-ресурсамиJulius от Praetorian - open source-инструмент, который по IP:Port или URL определяет, какой AI-сервис работает на endpoint.
Он умеет распознавать больше 60 платформ:
— Ollama
— vLLM
— SGLang
— LiteLLM
— llama.cpp
— Hugging Face TGI
— NVIDIA NIM
— Open WebUI
— Dify
— AWS Bedrock и другие.
Пример:
julius probe 192.168.1.100:8080
Julius отправляет специальные HTTP-probes, анализирует ответы и пытается определить конкретный сервис, а не просто понять, что endpoint совместим с OpenAI API. Он также может показать доступные модели.
Написан на Go, работает локально и собирается в один бинарник.
https://github.com/praetorian-inc/julius goroutineleak в pprof, который помогает находить навсегда зависшие goroutine.
В стандартной библиотеке появился encoding/json/v2 с более строгими настройками и новым streaming API. Старый encoding/json теперь использует v2 внутри для более быстрого unmarshaling, сохраняя обратную совместимость.
Также добавили встроенный пакет uuid, поддержку постквантовых подписей ML-DSA и экспериментальный SIMD API.
Из приятного для повседневной работы: go doc теперь понимает package@version, go mod tidy сам приводит несколько require`-блоков в нормальный вид, а `go fix получил новые modernizer'ы.
https://go.dev/blog/go1.27
@Golang_google«Просто гарантируй, что в каждый момент времени пишет только одна машина».А на скрине как раз часть Go-кода LiteFS, которая продлевает этот lease и следит, чтобы узел не продолжал считать себя primary после истечения TTL.
Go 1.26 → ~9,5 нс
Go 1.27 → ~5,5 нс
Причина в самом аллокаторе.
Раньше даже для маленьких объектов компилятор вызывал одну универсальную функцию, а runtime уже определял нужный size class: 8, 16, 24, 32 байта и т.д.
В Go 1.27 для объектов меньше 80 байт появились специализированные пути аллокации под конкретные классы размеров. Лишняя работа в runtime просто исчезает.
Больше всего выиграют программы, которые постоянно создают множество мелких объектов:
• парсеры
• деревья и списки
• очереди событий
• структуры с отдельной heap-аллокацией каждой ноды
А вот сервисы с редкими крупными аллокациями почти ничего не заметят.
Редкий случай, когда достаточно просто пересобрать проект новым Go и получить ускорение бесплатно.
https://vc.ru/dev/3081222-go-1-27-uluchshaet-proizvoditelnost-allokatsiy-pamyatiNext.
Флойд:
slow := head
fast := head
for fast != nil && fast.Next != nil {
slow = slow.Next
fast = fast.Next.Next
if slow == fast {
return true
}
}
Брент работает иначе: один указатель движется постоянно, а второй используется как контрольная точка. Размер интервала постепенно удваивается:
1 → 2 → 4 → 8 → 16
power, lam := 1, 1
tortoise := head
hare := head.Next
for hare != nil && tortoise != hare {
if power == lam {
tortoise = hare
power *= 2
lam = 0
}
hare = hare.Next
lam++
}
Асимптотика та же:
O(n) по времени
O(1) по памяти
Но Брент обычно делает меньше обращений к следующему элементу списка. Если Next вычисляется дорого или данные читаются через сложную структуру, разница уже может быть заметной.
Флойда спрашивают на собеседованиях постоянно. Про Брента многие Go-разработчики вообще не слышали.SHA-256.
Снаружи разработчик видит обычный crypto/sha256, но внутри Go умеет выбирать оптимальную реализацию под конкретный CPU.
На arm64 логика примерно такая:
if useSHA2 {
blockSHA2(dig, p)
} else {
blockGeneric(dig, p)
}
Если процессор поддерживает SHA-2 instructions - используется платформенно-оптимизированный код. Если нет - generic fallback.
В этом и сила стандартной библиотеки Go: простой API скрывает CPU feature detection, assembly и архитектурные оптимизации.
sha256.Sum256(data) выглядит простенько.
Но под капотом там очень серьёзная инженерия.100.
33.3 → 33
33.3 → 33
33.4 → 33
Итого: 99%
Для простого интерфейса можно округлить первые значения, а последнему передать остаток:
package main
import "math"
func balancePercentages(values []float64) []int {
if len(values) == 0 {
return nil
}
result := make([]int, len(values))
used := 0
for i := 0; i < len(values)-1; i++ {
result[i] = int(math.Round(values[i]))
used += result[i]
}
result[len(values)-1] = 100 - used
return result
}
Результат:
[]int{33, 33, 34}
Сумма останется равной 100.
Но это быстрый приём, а не универсальный алгоритм:
- значения должны быть заранее нормализованы;
- вся погрешность достаётся последнему элементу;
- результат зависит от порядка;
- при некорректных данных последнее значение может стать отрицательным.
Для справедливого распределения лучше использовать метод наибольших остатков: округлить всё вниз, а недостающие единицы отдать значениям с крупнейшей дробной частью.
Код актуален для современной Go 1.26 и работает без изменений. Функция math.Round доступна начиная с Go 1.10.kubectl gadget и CLI ig;
- запускать eBPF-гаджеты из OCI images;
- экспортировать данные в observability-системы.
Пример:
kubectl gadget run trace_open:latest
Покажет, какие файлы открывают процессы внутри кластера.
Полезно для SRE и Kubernetes-инженеров, когда логов и метрик уже недостаточно и нужно посмотреть, что происходит прямо на уровне ядра Linux.
https://github.com/inspektor-gadget/inspektor-gadgetmin, max и clear.
Чаще всего в реальном коде крутятся старые рабочие лошадки:
* make
* append
* len
* cap
* copy
* delete
* close
complex, real, imag нужны далеко не всем.
print и println вообще лучше не тащить в нормальный код — для этого есть fmt, log и нормальные инструменты отладки.
Самое интересное, что Go держит язык маленьким: встроенных функций мало, но почти каждая решает конкретную базовую задачу.
А какие built-in функции вы реально используете чаще всего?mz search. Обычный путь через decompression + grep занимал около 5 секунд, а lz4 -dc | grep — около 10 секунд.
Но это не магия для всего подряд.
MinLZ особенно хорош, когда нужно искать редкие literal byte strings: ID, error codes, request paths, hostnames, JSON keys, hashes. Для regex, fuzzy search, case-insensitive поиска или очень частых паттернов выигрыш может исчезнуть.
Доступно как CLI и как Go API.
GitHub: https://github.com/minio/minlz/releases/tag/v1.2.0