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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
Кубернетес для Go-разработчика: основы

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

Базовые объекты

Deployment управляет созданием и обновлением подов. В манифесте описывается образ контейнера, реплики, стратегия обновления.

Pod — минимальная единица развертывания. Один под может содержать несколько контейнеров, но обычно это один контейнер с приложением.

Service обеспечивает сетевой доступ к подам. LoadBalancer и Ingress управляют внешним доступом.

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

Практические аспекты

Liveness и Readiness пробы критически важны для Go-приложений. Liveness проверяет работоспособность, Readiness — готовность принимать трафик.

Resource requests и limits предотвращают потребление всех ресурсов ноды. Всегда устанавливайте лимиты памяти и CPU.

Horizontal Pod Autoscaler автоматически масштабирует приложение на основе нагрузки. Настройте целевой показатель использования CPU или кастомные метрики.

Сбор логов и метрик

Используйте stdout/stderr для логов. Kubernetes автоматически собирает их через драйвер логирования.

Экспортируйте метрики в формате Prometheus. Настройте ServiceMonitor для их автоматического сбора.

Для трассировки используйте OpenTelemetry. Инжектируйте агент или настройте sidecar-контейнер.

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

Minikube и Kind позволяют развернуть локальный кластер. Настройте hot-reload для ускорения разработки.

Telepresence и Skaffold упрощают отладку в облачном кластере.

kubectl — основной инструмент для взаимодействия с кластером. Изучите основные команды для диагностики проблем.

Разработчик должен понимать, как приложение работает в Kubernetes, чтобы создавать cloud-native приложения. Этого достаточно для большинства позиций.
2
#Собес #golang #channels #memory

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

Техническое собеседование. Лето 2025. Вилка 260к+. Проект: Отели и бронирования. Опыт в резюме — 3.5 года. Было много вопросов по: Go, конкурентности, работе с каналами, управлению памятью, структурам данных, работе с контекстами.

💬 Вопросы:

- Как с помощью context регулировать время ожидания в Go?

- Почему линейный поиск может быть неэффективен?

- Почему нельзя хранить context в структуре надолго?

- Когда и как стоит использовать panic в Go?

- Что такое анонимные структуры в Go и зачем они нужны?

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

📣 Хочешь больше собесов?
Подпишись на наш главный канал
2
#Собес #feature #gitflow
🤔 Что такое рабочий процесс Gitflow?

💬 Кратко:

Gitflow — это стратегия ветвления, которая делит разработку на несколько веток: main для релизов, develop для активной разработки и дополнительные ветки для новых функций, исправлений багов и релизов. Этот процесс удобен для крупных проектов с чёткими этапами разработки.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
👍1
#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