Golang Backend | YeaHub – Telegram
Golang Backend | YeaHub
842 subscribers
258 photos
21 videos
1 file
399 links
Теория, подготовка к интервью и курсы для Golang разработчиков

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#video #архитектура
📚 Чистая архитектура и как её готовить

Чистая архитектура хороша тем, что разные составляющие кода в ней разделены: если что-то поменять в одном «слое», то в другом ничего не сломается. Такие системы легче масштабировать и совершенствовать. Чтобы понять, что такое чистая архитектура и как она работает, можно прочитать какую-нибудь книгу — но видео объясняет тему не хуже.

Перейти к материалу

👉 База вопросов 👉 Новости
#Собес #server_shutdown #waitgroup #resource_cleanup
🤔 Как правильно подключить http.Server.Shutdown с воркерами и ресурсами?

💬 Кратко:

Создайте общий context.WithCancel, передайте его воркерам, а при сигнале: Shutdown(ctx) для HTTP, закройте входящие каналы, дождитесь WaitGroup, освободите ресурсы (БД/кэш), соблюдая таймаут.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
1
Docker для Go-разработчика: основы

Go-разработчику важно понимать, как создавать эффективные контейнеры для приложений.

Dockerfile для Go

Используйте многостадийную сборку для уменьшения образа. На первой стадии компилируйте приложение, на второй — запускайте из минимального образа.

Указывайте точные версии базовых образов для воспроизводимости. Для продакшена подходят alpine или distroless образы.

Копируйте только бинарник Go в финальный образ. Исходный код не нужен в контейнере.

Практические советы

Используйте .dockerignore для исключения ненужных файлов. Это ускоряет сборку и уменьшает размер образа.

Настраивайте переменные окружения для конфигурации. Не храните секреты в Dockerfile.

Запускайте приложение без привилегий. Создавайте отдельного пользователя в контейнере.

Локальная разработка

Docker Compose упрощает работу с несколькими сервисами. Описывайте приложение, базу данных и другие зависимости в одном файле.

Настраивайте hot-reload для разработки. Монтируйте исходный код как том для мгновенного обновления.

Используйте теги версий для образов. latest подходит только для разработки.

Оптимизация

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

Собирайте образы для нужной архитектуры. Go поддерживает кросскомпиляцию для разных платформ.

Проверяйте размер образа. Удаляйте временные файлы и кэш в одной команде RUN.

Для большинства задач Go-разработчику достаточно понимать основы создания и запуска контейнеров. Эффективный Dockerfile — ключ к успешному деплою приложения.
5👍2🔥1🤔1
#Собес #golang #concurrency #postgres

🤔 Middle+ Golang Backend-разработчик в Сбер

Техническое собеседование. Лето 2025. Вилка 300к+.
Проект: мультисервисная платформа, высоконагруженный backend.
Опыт в резюме — 4.5 года.
Было много вопросов по Go, конкурентности, базам данных, Kafka, архитектурным паттернам и DevOps.

💬 Вопросы:

- Что такое connection pool в базе данных и зачем он нужен?

- Как работает HTTP Keep-Alive и зачем он нужен?

- Как реализовать идемпотентность при работе с Kafka?

- Что такое race condition и как его ловить в Go?

- Как устроен Outbox-паттерн и зачем он нужен?

👉 Все вопросы из этого собеседования (15)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
1
#Собес #b-tree #index
🤔 Как B-tree индекс позволяет выполнять операции больше/меньше/равно — механизм поиска и извлечения диапазона значений?

💬 Кратко:

B-tree индекс организует данные в сбалансированное дерево, где каждый узел содержит отсортированные ключи и указатели на дочерние узлы. Для операций "равно" индекс выполняет бинарный поиск от корня к листьям. Для операций "больше/меньше" и диапазонов индекс находит начальную точку диапазона и затем последовательно читает листовые узлы в отсортированном порядке. Это позволяет эффективно находить все значения в заданном диапазоне без полного сканирования таблицы.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#documentation #микросервисы #паттерны
📚 Паттерны управления данными в микросервисной архитектуре

Microservices.io создан Крисом Ричардсоном. опытным архитектором программного обеспечения, автором книги POJOs in Action, создателем оригинальной платформы CloudFoundry.com и автором шаблонов микросервисов.

Перейти к материалу

👉 База вопросов 👉 Новости
1
#Собес #index #performance #read
🤔 Как индексы влияют на производительность?

💬 Кратко:

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

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
PostgreSQL для Go-разработчика: практические аспекты

Работа с PostgreSQL из Go требует понимания как СУБД, так и особенностей языка.

Библиотеки и драйверы

database/sql — стандартный интерфейс для работы с базами данных. Используйте вместе с драйвером pgx или lib/pq.

pgx — современный драйвер с дополнительными возможностями. Поддерживает бинарный протокол, пулы соединений и уведомления.

sqlx — надстройка над database/sql. Упрощает работу с результатами запросов и маппинг в структуры.

Эффективные запросы

Используйте подготовленные выражения для повторяющихся запросов. Это ускоряет выполнение и защищает от SQL-инъекций.

Применяйте правильные типы данных. Например, TEXT вместо VARCHAR без ограничения длины, TIMESTAMPTZ для временных меток.

Работа с JSONB полезна для гибких схем. Используйте встроенные операторы для поиска и модификации данных.

Управление соединениями

Настраивайте пул соединений в соответствии с нагрузкой. Указывайте максимальное количество соединений и таймауты.

Используйте контекст для управления временем выполнения запросов. Это особенно важно для долгих операций.

Закрывайте Rows и освобождайте соединения. Используйте defer rows.Close() сразу после выполнения запроса.

Транзакции и изоляция

Оборачивайте связанные операции в транзакции. Используйте правильный уровень изоляции для вашего сценария.

Обрабатывайте ошибки и откатывайте транзакции при необходимости. Используйте defer с проверкой ошибки.

Для сложных миграций используйте инструменты вроде golang-migrate. Храните миграции в кодовой базе.

Оптимизация производительности

Включайте детальное логирование запросов для отладки. Используйте pg_stat_statements для анализа медленных запросов.

Используйте EXPLAIN ANALYZE для понимания планов выполнения. Обращайте внимание на последовательные сканирования и отсутствие индексов.

Настройте максимальное количество соединений в Postgres под вашу нагрузку. Слишком много соединений может degrade производительность.

Для большинства приложений этих практик достаточно. Главное — понимать основы работы СУБД и уметь применять их в контексте Go.
🔥3
#Собес #scope #heap #stack

🤔 Middle Golang Backend-разработчик в Газпром.

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

💬 Вопросы:

- Что произойдёт при попытке записи в неинициализированный канал?

- В чём разница между буферизированным и небуферизированным каналом? Какой из них быстрее передаст значение?

- Как повлияет тип получателя (по значению или по ссылке) на реализацию интерфейса двумя структурами?

- Какие бывают типы интерфейсов?

- Есть ли в Go полиморфизм как принцип ООП?

👉 Все вопросы из этого собеседования (25)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
2😁1
#Собес #git_push #git_pull
🤔 Почему мы делаем git pull, а затем git push?

💬 Кратко:

Мы делаем git pull, чтобы сначала синхронизировать наш локальный репозиторий с последними изменениями из удаленного. Затем выполняем git push, чтобы отправить свои изменения. Это помогает избежать конфликтов и сохранить согласованность данных между участниками команды.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🔥21
#tool #профиль
📚 Awesome GitHub Profile: ваш профессиональный бренд в цифровом мире

Это уникальный инструмент для персонализации вашего GitHub-профиля, который поможет вам создать впечатляющее портфолио и выделиться среди других разработчиков.

Перейти к материалу

👉 База вопросов 👉 Новости
Forwarded from YeaHub
[Версия 1.2.1] - Обновление платформы

Мы продолжаем развивать YeaHub, чтобы сделать обучение ещё удобнее, эффективнее и интереснее. В этом обновлении — важные и долгожданные улучшения 👇

🔹 Аналитика платформы
Нам важно понимать, какие вопросы вызывают наибольшие сложности у тех, кто готовится к собеседованиям, поэтому мы начали собирать расширенную статистику.
Какой вопрос самый сложный в нашем тренажёре? Какие навыки наиболее востребованы? Какие темы чаще всего встречаются на реальных собеседованиях? И многое другое — всё это теперь доступно благодаря обновлённой аналитике. Аналитика (после авторизации)

🔹 Обучение и менторы
Вы должны знать героев, которые помогают делать платформу лучше. Это менторы, которые вместе со своими учениками развивают YeaHub, давая бесценный опыт работы над реальным продуктом.
А также крутые эксперты, которые повышают качество контента и помогают нам расти. Все менторы

🔹 Записи собеседований
Мы расширяем партнёрства! Нам важно собрать всё самое полезное в одном месте.
Теперь у нашего партнёра с закрытым чатом собеседований появился отдельный информативный лендинг — удобно, структурировано и всегда под рукой. Записи собесов

🔹 Исправления и улучшения
Мы учли вашу обратную связь: исправили баги, улучшили интерфейс и сделали работу с платформой ещё комфортнее 🧠

🔥 Скоро
1. Парсер навыков и ключевых слов с HH
2. Сервис Лайвкодинга с реальными задачами с собеседований

👉 Обучайтесь, общайтесь, растите вместе с https://yeahub.ru

#release #news #update #yeahub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1🔥1
#Собес #process #thread #multithreading
🤔 В чем разница процесса и потока в рамках операционной системы?

💬 Кратко:

Процесс — это независимая программа, выполняющаяся в памяти, у которой есть собственное адресное пространство. Поток — это единица выполнения внутри процесса, которая использует общее адресное пространство. Потоки легче создавать и переключать, но процессы изолированы друг от друга.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
👍2
gRPC в Go: основы для разработчика

gRPC стал стандартом для межсервисного взаимодействия в микросервисных архитектурах. Разработчику на Go важно понимать его принципы.

Протокол и контракты

Используйте Protocol Buffers для описания API. .proto-файлы определяют контракт между клиентом и сервером. Генерируйте код на Go с помощью protoc.

Определяйте сервисы, методы и сообщения в .proto-файлах. Односторонние (unary) вызовы подходят для большинства сценариев, но также доступны стриминговые методы.

Реализация сервера

Реализуйте сгенерированный интерфейс сервиса. Регистрируйте сервис в gRPC сервере. Используйте middleware для аутентификации, логирования и метрик.

Настраивайте интерцепторы для сквозной функциональности. Перехватывайте вызовы для добавления логики до или после обработки запроса.

Клиентское подключение

Создавайте клиент через grpc.Dial. Используйте пул соединений для эффективного переиспользования. Настраивайте таймауты и retry-логику.

Обрабатывайте ошибки и статусы вызовов. gRPC использует стандартные коды статусов для указания результата операции.

Производительность и безопасность

Включайте компрессию для больших сообщений.

Используйте TLS для шифрования трафика. Настраивайте keepalive для поддержания соединений.

Для потоковой передачи данных используйте bidirectional streaming. Это эффективно для чатов, уведомлений или передачи больших файлов.

Инструменты и отладка

grpcui позволяет тестировать gRPC API через веб-интерфейс. grpcurl — аналог curl для gRPC. Используйте их для отладки и exploration API.

Включайте логирование и метрики для мониторинга вызовов. Отслеживайте длительность запросов, ошибки и объем передаваемых данных.

gRPC в Go — это мощный инструмент для построения эффективных распределенных систем. Понимание его основ обязательно для современного backend-разработчика.
🔥21👍1👏1
#Собес #golang #rest #redis

🤔 Middle Golang Developer в компанию Sisoft

Техническое собеседование. Лето 2024. Вилка: 200к+. Опыт в резюме: 3+ года. Много говорили о базах данных, REST и т.д.

💬 Вопросы:

- Как обеспечить безопасность данных при передаче через API (HTTPS, шифрование, JWT)?

- Какие альтернативные технологии клиент-серверного взаимодействия вы знаете (gRPC, GraphQL)?

- Чем сокеты отличаются от брокеров сообщений (например, Kafka)?

- Что такое сокеты?

- Чем SQL отличается от NoSQL? Когда выбрать каждое решение?

👉 Все вопросы из этого собеседования (13)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
1
#Собес #git_init
🤔 Что такое репозиторий Git и как вы его инициализируете?

💬 Кратко:

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

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
👍1
Forwarded from YeaHub
[Версия 1.3.0] - Обновление платформы

Мы продолжаем развивать YeaHub, чтобы сделать обучение ещё удобнее, эффективнее и интереснее. В этом обновлении — важные и давно ожидаемые улучшения 👇

🔹 Навыки и ключевые слова из вакансий HH
Мы запустили сервис, который помогает прокачать резюме с помощью популярных навыков и ключевых слов, встречающихся в вакансиях. Это поможет вам выше ранжироваться в поиске среди кандидатов и увеличит конверсию откликов.
https://yeahub.ru/hh-analytics?page=1&mode=skills&specialization=11

🔹 Исправления и улучшения
Мы учли вашу обратную связь: исправили баги, улучшили интерфейс и сделали работу с платформой ещё комфортнее 🧠

🔥 Скоро
1. Сервис Лайвкодинга с реальными задачами с собеседований

👉 Обучайтесь, общайтесь, растите вместе с https://yeahub.ru

#release #news #update #yeahub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21