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
#Собес #map_iteration #random_order #non-deterministic
🤔 В каком порядке перебираются элементы мапы?

💬 Кратко:

Порядок обхода мапы рандомизирован и меняется при каждом запуске программы. Go не гарантирует детерминированный порядок for range m. Это сделано для безопасности и предотвращения зависимости кода от порядка.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
1
#Собес #pattern #outbox #transaction
🤔 Что такое transactional outbox и зачем он нужен?

💬 Кратко:

Transactional outbox — это способ гарантированной доставки сообщений между сервисами. Он сохраняет сообщение в БД в рамках бизнес-транзакции, а затем отправляет его асинхронно.

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

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