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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#Собес #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
👣 Middle Golang Backend-разработчик в Wildberries

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

Вопросы:
- Как реализовать паралельный запуск нескольких запросов к стороннему АРІ?
- Как синхронизировать параллельные вычисления в Go?
- Что делает функция таке и чем она отличается от new?
- Как устроено хранение массивов и срезов в памяти? Что такое capacity?

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

#собес #коллеции
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥31
#Собес #kubernetes
🤔 Что такое Kubernetes Operator?

💬 Кратко:
Operator - это расширение Kubernetes API, которое автоматизирует управление сложными приложениями, такими как базы данных или кэш- системы, путем внедрения специализированной логики.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1🔥1
#полезное
😎 Coze Loop — платформа для разработки AI-агентов с открытым исходным кодом. Проект предлагает полный цикл управления AI-агентами: от разработки промптов до мониторинга работы.

Инструмент имеет визуальный Playground для тестирования промптов с возможностью сравнения результатов разных языковых моделей. Для быстрого старта достаточно Docker — проект поддерживает интеграцию с OpenAI и другими LLM. Включает инструменты для оценки точности агентов и отслеживания выполнения запросов.
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Собес #kubernetes
🤔 Каковы лучшие практики развертывания приложений в Kubernetes?

💬 Кратко:
Чтобы правильно развернуть приложение в Kubernetes, следует:
- Использовать декларативный подход (Deployment, Helm).
- Разделять сервисы по разным namespace.
- Настраивать liveness и readiness probe для мониторинга состояния Pod-ов.
- Определять resource limits и requests для оптимального распределения
ресурсов.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🤯 marchat — лёгкий терминальный чат на Go

marchat — это самохостящийся чат прямо в терминале.
Он прост, кроссплатформенный и поддерживает всё, что нужно команде для быстрой и безопасной переписки.

Фишки:
🟠Устанавливается за пару минут (бинарь или Docker)
🟠 E2E-шифрование (X25519 + ChaCha20-Poly1305)
🟠 Передача файлов до 1 МБ
🟠Темы оформления и TUI-интерфейс (Bubble Tea)
🟠 Плагины: :store, :plugin install и т.д.
🟠Поддерживает админ-команды: :ban, :kick, :cleardb
Github

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