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
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام 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