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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#Собес #networks
🤔 Назовите три метода аутентификации пользователя.

Три метода аутентификации - это биометрия (например, отпечаток пальца), токен (электронное устройство или карта) и пароль. Для повышения безопасности можно использовать двухфакторную аутентификацию, комбинируя два из этих методов.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
2
#полезное
🤓 Шифрование и дешифрование в Go: практическое руководство

В этом руководстве мы подробно разберём, как работает шифрование и дешифрование в Go, на практике — с примерами кода, которые можно собрать и запустить. Мы охватим базовые темы: от симметричного до асимметричного шифрования, с понятными объяснениями и чистым кодом.


https://dev.to/shrsv/encryption-and-decryption-in-go-a-hands-on-guide-3bcl

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
#полезное
😊 Простой загрузчик конфигураций для 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