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
Show more📈 Analytical overview of Telegram channel Golang вопросы собеседований
Channel Golang вопросы собеседований (@golang_interview) in the Russian language segment is an active participant. Currently, the community unites 15 010 subscribers, ranking 8 348 in the Technologies & Applications category and 43 534 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 15 010 subscribers.
According to the latest data from 26 August, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by 18 over the last 30 days and by 1 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 24.50%. Within the first 24 hours after publication, content typically collects 9.24% reactions from the total number of subscribers.
- Post reach: On average, each post receives 3 675 views. Within the first day, a publication typically gains 1 386 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 20.
- Thematic interests: Content is focused on key topics such as git, docker, github, контейнер, sql.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“@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...”
Thanks to the high frequency of updates (latest data received on 27 August, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
Данил Руденко, 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