Golang Backend | YeaHub
641 subscribers
181 photos
19 videos
1 file
307 links
Теория, подготовка к интервью и курсы для Golang разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#полезное
😊 Простой загрузчик конфигураций для Go, который читает и отслеживает изменения из файла, переменных окружения, флагов командной строки и облачных провайдеров (AWS, Azure, GCP).

https://github.com/nil-go/konf

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
#полезное
😇 Ты неправильно пишешь HTTP-обработчики

Большинство Go-разработчиков пишут обработчики, которые не возвращают ошибки (стандартный способ) — они просто логируют их или вызывают http.Error прямо внутри.

Но гораздо чище давать обработчику возможность возвращать ошибку и обрабатывать её централизованно. Это делает код более удобным для тестирования, читаемым и сопровождаемым. Вот компактный способ, как это реализовать:

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
#Собес #networks
🤔 Что такое серверная ферма?

Серверная ферма - это группа серверов, объединённых для выполнения задач с высокой производительностью. Они используются для хостинга веб-сайтов, облачных сервисов и сложных вычислений.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
Красивая и функционально насыщенная библиотека командной строки для Go, которая упрощает создание эффектных терминальных приложений

https://github.com/alperdrsnn/clime

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥1🥰1
👣 Middle+ Golang Backend-разработчик в Ozon

Техническое собеседование. Лето 2025. Вилка 290к+. Проект: мультисервисная платформа для работы с заказами и аналитикой в Ozon. Опыт в резюме — 3.5 года. Было много вопросов по конкурентности, работе с HTTP, базам данных, Kafka, паттерну Outbox, архитектуре и SQL.

Вопросы:
- Зачем нужно закрывать тело HTTP-ответа в Go?
- Что произойдёт, если не закрывать resp.Body в случае ошибки?
- Как запустить HTTP-запросы асинхронно в Go?
- Почему чаще используют небуферизированные каналы?
- Как реализовать worker pool в Go?

Все 15 вопросов можно посмотреть на нашей платформе

#собес
Please open Telegram to view this post
VIEW IN TELEGRAM
4
#Собес #kubernetes
🤔 Что такое service mesh в Kubernetes?

Service mesh - это инфраструктурный слой, который управляет сетевым взаимодействием сервисов в Kubernetes. Он добавляет такие функции, как маршрутизация трафика, балансировка нагрузки, безопасность и мониторинг, без необходимости изменения кода приложения.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
👨‍💻 powerline-go — минималистичная замена Powerline для Bash, Zsh и Fish, написанная на Go. Проект показывает статус Git/Mercurial, путь в сокращённом виде, виртуальные окружения Python/Ruby и даже время выполнения последней команды.

Инструмент имеет кастомизацию через флаги: можно менять тему, скрывать лишние сегменты или добавить правую часть промпта. Работает без зависимостей — достаточно скачать бинарник или собрать из исходников.
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
2
#статьи
👋 Статья объясняет, что современные ОС и Go разделяют два типа времени: wall clock (реальное системное время, которое может синхронизироваться или скакать) и monotonic clock (монотонное время, которое только идёт вперёд и не подвержено корректировкам).

В Go time.Now() возвращает структуру time.Time, содержащую оба значения, что позволяет правильно измерять интервалы и избегать багов, связанных с изменением системного времени

https://victoriametrics.com/blog/go-time-monotonic-wall-clock/

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
❤️‍🔥 Использование конструктора запросов dbx в Go для гибких SQL-запросов

Если вам нужен лёгкий и гибкий конструктор запросов в Go без погружения в магию ORM, dbx — отличный выбор. Он позволяет писать SQL-подобные запросы с привязками

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
2
#полезное
😘 Персональный, приватный аналог ngrok — но заточен специально для продакшн-использования и приватных сетей

https://github.com/SyneHQ/rabbit.go

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Подводные камни работы с каналами в Go

Каналы — одна из самых мощных фич Go, но именно с ними связано больше всего граблей. Разберём те, на которые чаще всего наступают даже опытные разработчики.

1. Deadlock из-за незакрытого канала

Закрывать канал — хороший тон, особенно если на нём кто-то ещё читает. Но если закрыть его дважды — получим панику.

ch := make(chan int)
close(ch)
close(ch) // panic: close of closed channel

Решение: Используйте sync.Once или продумывайте логику завершения.

2. Блокировка на пустом канале

Отправка или чтение из nil-канала блокирует горутину навсегда:

var ch chan int // nil
ch <- 42 // вечная блокировка

Решение: Всегда инициализируйте каналы через make.

3. Утечки горутин из-за забытого закрытия

Если горутина читает из канала, а отправитель больше не планирует писать — она зависнет навсегда:

go func() {
for msg := range ch { // вечный цикл, если ch не закрыть
fmt.Println(msg)
}
}()

Решение: Чётко контролируйте жизненный цикл канала.

4. Небуферизированные каналы vs буферизированные

Небуферизированные каналы синхронны — отправитель ждёт получателя. Буферизированные позволяют "развязать" их, но могут маскировать проблемы.

ch := make(chan int, 100)
// Писатель быстро заполнит буфер и уйдёт,
// а читатель может не успеть обработать данные

Решение: Буфер — не всегда решение. Иногда лучше workerpool

5. Паника при отправке в закрытый канал

Попытка писать в закрытый канал вызывает панику:

ch := make(chan int)
close(ch)
ch <- 1 // panic: send on closed channel

Решение: Используйте defer close() и проверяйте статус канала через ok в select.

Вывод:
Каналы — это просто, пока не станет сложно. Главное:
✔️ Всегда закрывайте каналы (но только один раз)
✔️ Не работайте с nil-каналами
✔️ Следите за утечками горутин
✔️ Выбирайте правильный тип канала
4👍2🔥2
#Собес #kubernetes
🤔 Что такое Kubernetes Istio?

Istio - это service mesh, который управляет сетевым взаимодействием сервисов внутри Kubernetes. Он позволяет контролировать трафик, настраивать балансировку нагрузки, управлять безопасностью (аутентификацией и авторизацией) и обеспечивать мониторинг сетевых взаимодействий между микросервисами.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
😎 Пакет resend-go предоставляет удобный способ отправки email-сообщений в Go-приложениях через Resend API

https://github.com/resend/resend-go

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Middle Golang Backend-разработчик в Газпром.

Техническое собеседование. Осень 2024. Вилка 150к+. Опыт в резюме: 3 года. Были вопросы про текущее место работы.

Вопросы:
- Что будет, если попытаться писать в закрытом канале?
- Что такое FULL VACUUM и зачем он применяется?
- Что такое транзакции в PostgreSQL?
- Что такое индекс в базе данных?

Все вопросы можно посмотреть на нашей платформе

#собес
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1🔥1🤔1
#полезное
😜 Реализация ротации логов в Go: особенности logrus, zap и slog

В большинстве существующих логирующих библиотек, включая стандартную библиотеку log/slog из Go, обычно предусмотрена поддержка ротации и разделения лог-файлов. Однако эти возможности не идут «из коробки» — их необходимо явно настраивать.

В этой статье мы рассмотрим несколько популярных логгеров, таких как logrus, zap и официальную библиотеку slog. Мы разберем ключевые архитектурные решения в этих библиотеках и обсудим, как именно они позволяют настраивать ротацию и разделение логов
Читать

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21
#Собес #kubernetes
🤔 Что такое Custom Resource Definition (CRD) в Kubernetes?

💬 Кратко:
CRD - это способ добавить в Kubernetes новый тип ресурса, например Database ИЛИ Cache , который будет управляться пользовательским контроллером.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1🔥1
#полезное
🥄 Permitta — простая и понятная Go-библиотека для контроля доступа (permission management)

Что умеет:
- Управление правами CRUD‑операций (Create, Read, Update, Delete, Execute)
- Тайминг доступа: можно задать, когда права действуют (час/день/неделя и др.)
- Ограничения по квоте и пакетной обработке
- Контроль на уровне сущности: пользователь, роль, группа, организация
- Упорядочение проверки прав — от общего к частному

Почему удобно:
🔵 Логика интуитивна, но справляется с комплексными сценариями
🔵 Ясная структура — подойдёт и новичкам, и опытным разработчикам
🔵 Open-source (MIT), легко добавить в проект:

go get -u github.com/limitlessDonald/permitta
Github

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Go для вкатунов: 5 вопросов, которые точно зададут на собеседовании

Если вы ищете первую работу Go-разработчиком, то скорее всего вас будут проверять не на знание всех пакетов из стандартной библиотеки, а на понимание базовых принципов языка.
Вот 5 типичных тем, которые встретятся на собеседованиях с вероятностью 90%

1. Как работают слайсы в Go
Что такое len и cap, чем слайс отличается от массива, что происходит при append.
Часто просят объяснить, в каких случаях изменение слайса внутри функции изменит оригинал, а в каких нет.

2. Что такое горутины и как их синхронизировать
Объясните, что такое конкурентность в Go, как запускается горутина, зачем нужны WaitGroup, Mutex и atomic.
Почти всегда проверяют, понимаете ли вы, что без синхронизации возникает гонка данных.

3. Что такое замыкание и как оно ведёт себя в горутинах
Классический вопрос: почему в цикле с горутинами часто выводятся одинаковые значения.
Нужно рассказать, как работает захват переменных в анонимных функциях и как это исправить.

4. Как работает передача данных через каналы
Различие между буферизированными и небуферизированными каналами, что будет при отправке или чтении, если нет готового получателя/отправителя.
Могут попросить реализовать простую передачу данных между двумя горутинами.

5. Как обрабатывать ошибки в Go
Почему в Go нет исключений как в других языках, как работает паттерн if err != nil { ... }, что такое panic и recover и когда их стоит использовать.

Вывод:
Если вы сможете уверенно и без заученных формулировок ответить на эти вопросы, то уже будете выглядеть как кандидат, который понимает нюансы работы с языком.
Конечно же это не все темы, которые нужно знать для успешного прохождения собеседования, но это та база, которую знает абсолютно каждый разработчик на GO!
👍3🔥2🤔21
#полезное
🤣 В Go каждая переменная и каждый импорт в коде должны использоваться — иначе компилятор выбросит ошибку. Это помогает ускорить компиляцию, но бывают случаи, когда хочется обойти это поведение. В таких ситуациях в качестве заглушки можно использовать пустой идентификатор (_)

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😅 Logging in Go with Slog: A Practitioner’s Guide

Практическое руководство по работе с встроенным пакетом log/slog (доступен с Go 1.21), от основ до продвинутых подходов структурированного логирования. Вы научитесь создавать информативные и полезные логи, которые упростят отладку и мониторинг приложений

https://www.dash0.com/guides/logging-in-go-with-slog

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
2